如何下载xlsm文件并阅读python中的每张工作表?

时间:2019-05-20 18:05:15

标签: python excel python-2.7 xlrd

现在我正在执行以下操作。

import xlrd

resp = requests.get(url, auth=auth).content
output = open(r'temp.xlsx', 'wb')
output.write(resp)
output.close()
xl = xlrd.open_workbook(r'temp.xlsx')
sh = 1
try:
    for sheet in xl.sheets():
    xls.append(sheet.name)
except:
    xls = ['']

它正在提取工作表,但我不知道如何读取文件,或者不知道是否将文件另存为.xlsx对宏有效。我所知道的是代码目前无法正常工作,我需要能够捕获宏中生成的数据。请帮忙!谢谢。

2 个答案:

答案 0 :(得分:2)

如果您要打开,修改和保存.xlsm文件而不破坏它们,我强烈建议使用xlwings。我尝试了很多不同的方法(使用openpyxl之类的其他模块),这些宏总是最终被破坏。

import xlwings as xw
app = xw.App(visible=False) # IF YOU WANT EXCEL TO RUN IN BACKGROUND

xlwb = xw.Book('PATH\\TO\\FILE.xlsm')
xlws = {}
xlws['ws1'] = xlwb.sheets['Your Worksheet']

print(xlws['ws1'].range('B1').value)   # get value
xlws['ws1'].range('B1').value =  'New Value'   # change value

yourMacro = xlwb.macro('YourExcelMacro')
yourMacro()

xlwb.save()
xlwb.close()

编辑-我添加了一个选项,以根据用户要求使Excel不可见

答案 1 :(得分:0)

您可以使用熊猫轻松做到这一点

import pandas as pd

# YOU MUST PUT sheet_name=None TO READ ALL CSV FILES IN YOUR XLSM FILE
df = pd.read_excel ('YOURFILE.xlsm' , sheet_name=None)

print (df)