Python写入(xlwt)到现有的Excel工作表,删除图表和格式

时间:2016-10-03 18:35:29

标签: python excel xlrd xlwt xlutils

使用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')

2 个答案:

答案 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