我想编写一个python脚本,它从一个excel文件中获取数据并使用这些数据并将其输入另一个excel文件以获取输出。例如,如果我有input.csv,它从那里获取数据,并替换output.csv的某些单元格并获取基于计算的值
import pandas as pd
import numpy as np
data=pd.read_excel("Data.xlsx")
Depth=data["Depth (D):"];
ID=data["Tubing inner diameter (dti):"];
API=data["Oil gravity (API):"];
oilvisc=data["Oil viscosity (cp):"];
这是我目前的脚本,这些是输入。
import xlwt
import xlrd
from xlutils.copy import copy
rb=xlrd.open_workbook("hagedornbrowncorrelation.xls")
wb=copy(rb)
w_sheet=wb.get_sheet(0)
w_sheet.write(4,2,700)
wb.save("hagedornbrowncorrelation.xls")
工作簿“hagedornbrowncorrelation.xls”是我的计算器,我用700替换C5,但是当我保存它时,工作簿中的所有宏和公式都消失了,它变成了一个无用的工作簿,带有数字
答案 0 :(得分:1)
我用openpyxl模块完成了一个类似的项目,可以在这里找到
因为我使用Tkinter构建了一个UI,所以我打开了一个文件,你可能不想像我那样使用全局变量,这是一个快速入侵。
def getFilecurrent():
global path
# open dialog box to select file
path = filedialog.askopenfilename(initialdir="/", title="Select file")
然后你可以使用
存储它ref_workbook = openpyxl.load_workbook("filevariable")
然后通过选择正确的单元格来处理数据,还记得选择正确的工作表。
weeklyengagement = ws['B18'].value
然后,为粘贴到
的文件创建一个新模板template = openpyxl.load_workbook("Section12Grades.xlsx") #Add file name
temp_sheet = template.get_sheet_by_name("Sheet1") #Add Sheet name
最后,复制范围并使用循环粘贴范围。有太多的资源我不会粘贴我的代码,因为它有一些自定义设置,它只会让你感到困惑。
编辑:如果您希望使用宏保存,则可以执行以下操作:
wb = load_workbook(filename =' filename.xlsm',read_only = False,keep_vba = True)
公式是字符串,如果您希望保存公式,则必须将其保留为字符串格式并保存。