如何在不使用python更改原始文件中的格式单元格的情况下将数据写入excel文件?

时间:2016-01-08 20:45:54

标签: python excel format export-to-excel

我正在使用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)

2 个答案:

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

显然,这很容易受到版本不兼容的影响,因为它使用内部数据结构。