我正在使用xlwt和xlrd与Python从某些东西中获取一些数据并将其写入xls文件,但是我需要将数据写入excel文件,只需要数据,而不需要更改(原始文件)中的格式单元格
以下是代码:***
from xlrd import open_workbook
from xlwt import easyxf
from xlutils.copy import copy
data = [['2008','2009'],['Jan','Feb','Feb'],[100,200,300]]
rb = open_workbook('this1.xls')
rs = rb.sheet_by_index(0)
wb = copy(rb)
ws = wb.get_sheet(0)
# I want write data to excel file, just the data, without changing the format cells in (original file)
for i,row in enumerate(data):
for j,cell in enumerate(row):
ws.write(j,i,cell)
答案 0 :(得分:2)
您可以尝试使用openpyxl
模块,该模块允许您使用load_workbook
选项来使用现有的Excel文档并保留格式。我正在使用xlrd和xlwt但是当我发现python 3.5中不支持xlutils时,没有其他方法可以添加到带有这些模块的电子表格中,我切换到了openpyxl。请记住,如果切换,openpyxl仅支持.xlsx文档,因此您必须将文档切换为.xlsx文件。如果您想了解有关openpyxl的更多信息,请查看此网站:https://automatetheboringstuff.com/chapter12/您将找到有关如何使用openpyxl的大量有用信息。希望这有帮助!
答案 1 :(得分:2)
写入单元格会删除其样式信息,但您可以保留它并在写入后重新分配。我过去使用未记录的内部rows
和_Row__cells
数据结构完成了此操作:
def write_with_style(ws, row, col, value):
if ws.rows[row]._Row__cells[col]:
old_xf_idx = ws.rows[row]._Row__cells[col].xf_idx
ws.write(row, col, value)
ws.rows[row]._Row__cells[col].xf_idx = old_xf_idx
else:
ws.write(row, col, value)
显然,这很容易受到版本不兼容的影响,因为它使用内部数据结构。