在另一个python脚本中使用excel文件中的数据

时间:2018-03-11 18:54:20

标签: python excel excel-vba pandas numpy vba

我想编写一个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,但是当我保存它时,工作簿中的所有宏和公式都消失了,它变成了一个无用的工作簿,带有数字

1 个答案:

答案 0 :(得分:1)

我用openpyxl模块完成了一个类似的项目,可以在这里找到

  

https://openpyxl.readthedocs.io/en/stable/

因为我使用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)

公式是字符串,如果您希望保存公式,则必须将其保留为字符串格式并保存。