在pandas和pandaslocking之外的Xlsxwriter

我正在使用xlsxwriter引擎将某些数据pandas.to_excel()一起推送到Excel表格中,但是我需要在每个表格上方标题。

以下是我希望达到的结果的一个例子: 在这里输入图像描述

我没有看到任何方式使用pandas的ExcelWriter对象来简单地操作每个单元格的内容,当我尝试这样做时,我得到:

例外:已忽略大小写的“样本”,已被使用。

我猜xlsxwriter自己locking它。 这里是一个例子:

xlsx_writer = pd.ExcelWriter( get_target_filepath(xlsx_name), engine='xlsxwriter' ) workbook = xlsx_writer.book worksheet = workbook.add_worksheet(sheet_name) worksheet.write(1, 1, 'ABC') _, sample_table = dataframe_tuples[0] sample_table.to_excel(xlsx_writer, startrow=3, startcol=2, sheet_name=sheet_name) 

我可以使用openpyxl保存dataframe并重新进行处理,但是我严重的不喜欢格式化的方式,接下来我要做的是,如果我使用xlsxwriter格式化,然后用openpyxl重新打开它,它不能正确地保存格式,openpyxl毁了它。

我不能把excel本身放到服务器上来使用VBAmacros进行样式devise。

有没有办法解决这个问题,或者我只是在做一些可怕的错误?

您可以通过从pandas获取工作表引用并调用标准的XlsxWriter方法来完成。 喜欢这个:

 import pandas as pd # Create some Pandas dataframes from some data. df1 = pd.DataFrame({'Data': [11, 12, 13, 14]}) df2 = pd.DataFrame({'Data': [21, 22, 23, 24]}) # Create a Pandas Excel writer using XlsxWriter as the engine. writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter') # Position the dataframes in the worksheet. df1.to_excel(writer, sheet_name='Sheet1', index=False, startrow=2) df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=9) # Get the worksheet object. worksheet = writer.sheets['Sheet1'] # Write some titles above the dataframes. worksheet.write(1, 0, 'Some random title 1') worksheet.write(8, 0, 'Some random title 2') # Close the Pandas Excel writer and output the Excel file. writer.save() 

另请参阅使用Python Pandas和XlsxWriter 。

输出:

在这里输入图像说明

尝试使用多级别列:

 In [137]: df Out[137]: ABC 0 1 2 3 1 4 5 6 2 7 8 9 In [138]: df.columns = pd.MultiIndex.from_product([['Caption'], df.columns]) In [139]: df Out[139]: Caption ABC 0 1 2 3 1 4 5 6 2 7 8 9 In [140]: df.to_excel('c:/temp/a.xlsx') 

结果:

在这里输入图像说明