使用python自动执行某些任务并最终写入现有的电子表格。我使用的是xlwt,xlrd和xlutils模块。
所以我设置它的方法是打开文件,复制,写入,然后将其保存回同一文件。当我执行最后一步时,将删除所有excel格式,例如注释和图表。有办法吗?我认为它与excel对象有关。
谢谢
示例代码
import xlwt
import os
import xlrd, xlutils
from xlrd import open_workbook
from xlutils.copy import copy
style1 = xlwt.easyxf('font: name Calibri, color-index black, bold off; alignment : horizontal center', num_format_str ='###0')
script_dir = os.path.dirname('_file_')
Scn1 = os.path.join(script_dir, "\sample\Outlet.OUT")
WSM_1V = []
infile = open (Scn1, "r")
for line in infile.readlines():
WSM_1V.append(line [-10:-1])
infile.close()
Existing_xls = xlrd.open_workbook(r'\test\test2.xls', formatting_info=True, on_demand=True)
wb = xlutils.copy.copy(Existing_xls)
ws = wb.get_sheet(10)
for i,e in enumerate(WSM_1V,1):
ws.write (i,0, float(e),style1)
wb.save('test2.xls')
答案 0 :(得分:1)
使用这些软件包,无法丢失评论和图表,以及许多其他工作簿功能。 xlrd
包只是不读取它们,而xlwt
包根本就不会写它们。 xlutils
只是其他两个包之间的桥梁;它无法读取xlrd
无法读取的任何内容,也无法写出xlwt
无法写入的任何内容。
要实现您想要实现的目标,可能最好的选择是自动运行Excel的实例;最好的Python包是xlwings,适用于Windows或Mac。
答案 1 :(得分:0)
你能用win32com吗?
from win32com import client
...
xl = client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open(r'\test\test2.xls')
ws = wb.Worksheets[10]
for i,e in enumerate(WSM_1V,1):
ws.Cells[i][0].Value = float(e)
wb.save
wb.Close()
xl.Quit()
xl = None