我是python的新手,我正在尝试执行以下操作:
我有一个包含两列的Excel数据表。第一个包含名称,第二个包含数据。如果我有一个程序名称,它需要在电子表格中找到该名称,向右移动一个单元格(下一列)读取该值。之后,我有一个小公式来更改值,然后我想将这些数据存储在它来自的同一个单元格中。
之后,它又重新开始。
现在我知道我需要使用xlsxwriter来完成这项工作,但是我无法提出正确的代码。我找到了这个页面: https://www.datacamp.com/community/tutorials/python-excel-tutorial#gs.WWHel8Q 但它并不是我想要的。我不是要求你们给我一个代码,但是你能帮助我朝着正确的方向前进吗? (事实上,我宁愿自己编写代码,因为这是一种学习Python的好方法)。
提前致谢!
编辑:
{{1}}
我现在知道了。但它不起作用,D的值保持4.为什么会这样?
答案 0 :(得分:0)
我认为你应该尝试一下熊猫。您将能够阅读整个表格并对其进行操作。学习如何使用大熊猫并不困难,但它非常有用。
您将能够做到这样的事情:
df = pd.read_excel('filename')
df.loc[df.col1 == 'name', col2] = formula
首先,您阅读该文件。然后在第一列中找到一个值,并在第二列中修改此行中的值。
<强> UPD 强>:
以下是您案例的解决方案。正如我所说,您可以直接修改数据框中的值。代码在&#39; D&#39;中查找行。在列#34;名称&#34;并在列&#39;值&#39;。
中添加50df = pd.DataFrame(
{"Name" :['A' ,'B', 'C', 'D', 'E', 'F'],
"Value" :[1 ,2 ,3 ,4 ,5 ,6]},
)
df.loc[df.Name == 'D', 'Value'] += 50
df
Name Value
0 A 1
1 B 2
2 C 3
3 D 54
4 E 5
5 F 6
df.to_excel('Test.xlsx')
答案 1 :(得分:0)
我发现使用 openpyxl
写了一个函数import openpyxl
import os
def load_FromExcel(filepath, total_row = 999999999999):
"""Using module "openpyxl" to load data from excel file(only support '.xlsx' format)
Make sure you already install "openpyxl".
:param filepath:
Source file should be put under the path beneath the file which is calling this method.
Otherwise you'll have to change some code inside.
:return:
list_row is a list consists of list records.
For example, list_row[0] is a list consists of these cell in 1st row.
Therefore, use list_row[0][0] represent the value in 1st column in 1st row(A1).
"""
filename = os.path.join(os.path.dirname(__file__) + "/../" + filepath)
# Use "os.path.dirname(__file__)" to get a relevant path
print(filename)
# Open a workbook by name= filename in READ-ONLY mode
wb = openpyxl.load_workbook(filename, read_only=True)
# Select this worksheet
sheet = wb.get_active_sheet()
sheet_rows = tuple(sheet.rows)
# This is the total amount of rows in the excel file opened
row_count = len(sheet_rows)
print(row_count)
row_count = 0
list_row = []
for row in sheet.rows:
row_count += 1
temp_list = []
for cell in row:
# print(cell.value,end=',')
temp_list.append(cell.value)
list_row.append(temp_list)
if row_count > total_row:
break
print("Loading Complete")
return list_row
在使用您的密码之前,请务必保持自己的编码清洁。