Python pyexcelerate库将多个工作表写入同一个工作簿?

时间:2017-09-14 18:27:22

标签: python excel pyexcelerate

我正在尝试将多个工作表写入一个工作簿,并且我正在使用pyexcelerate来利用它的优化写入时间。

这是我当前写入工作簿的代码:

def df_to_excel(df, path, sheet_name='Sheet 1'):
    data = [df.columns.tolist(), ] + df.values.tolist()
    wb = Workbook()
    wb.new_sheet(sheet_name, data=data)
    wb.save(path)

现在,如果我只需要一张纸,这种方法就可以了。但是,如果我在多张纸上书写,则只保留最后一张纸(之前生成的所有纸张都将被替换)。

我想保留所有工作表(使用diff名称为c),然后我查看了他们的github页面,但我找不到有关此类功能的信息: https://github.com/kz26/PyExcelerate

我还查看了其他一些stackoverflow帖子,但他们使用的是不同的包:

  1. Writing resutls into 2 different sheets in the same Excel file
  2. xlwt create dynamic number of worksheets based on input
  3. creating multiple excel worksheets using data in a pandas dataframe
  4. 任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

如果您想将两个不同的 DataFrame 保存在工作簿的不同工作表中(以您的代码作为参考):

df = sns.load_dataset('tips')
sns.kdeplot(data=df, x='tip', hue='day')

答案 1 :(得分:0)

如果要更快地将不同的变量保存在一个excel文件的不同表中,并且还需要excel文件中pandas.dataframe的标题和索引。您可以执行以下操作,

var libraryInfos = [];

$("#library_info_tbl tbody tr").each(function(){
  var tds = $("td", this);
  var callNo = tds.first().html();

  if(typeof libraryInfos[callNo] == 'undefined'){
    libraryInfos[callNo] = [];
  }

  libraryInfos[callNo].push({
    status: $(tds[4]).html(),
    accessionNo: parseInt($(tds[3]).html())
  });
});

$.each(libraryInfos, function(callNo, statusArr){
  if(statusArr){
    var reqData = { callno: callNo, statusarray: statusArr };

    $.ajax({
      url: 'index.php?action=savestatus',
      type: 'POST',
      dataType: 'JSON',
      data: reqData
    });

    console.log(reqData);
  }
});

'数据'是一个字典变量。 '键'数据'作为'工作表名称'每个键值的数据类型应该在pandas数据帧中。

答案 2 :(得分:0)

我们假设我们有一个列表数据结果列表,并且我们想通过使用python pyexcelerate将多个工作表写到一个工作簿中。

results = [[(0.0014, 0.0052, 0.827, 10, 'Andy'), (0.0012, 0.0063, 0.906, 11, 'Julia')]]
headers = list(['PERFORMANCE', 'SPEED', 'DEGREE', 'WINS', 'NAME'])
path = "/home/yagmurs/Downloads/" + 'Performance'
workbook = pyexcelerate.Workbook()
worksheet = workbook.new_sheet('Bench')
row = 1
for enum in range(len(headers)):
    worksheet.set_cell_value(row, enum + 1, headers[enum])
for result in results:
    for line in result:
        row = row + 1
        for col in range(len(headers)):
            val = line[col]
            worksheet.set_cell_value(row, col + 1, val)
workbook.save(path + '.xlsx')