python 列表写入excel文件_使用x将列表列表写入excel文件

编辑:修复了基准代码中的错误。

你可以把东西缩短一点,让它们更像Python:for i, l in enumerate(listdata):

for j, col in enumerate(l):

sheet.write(i, j, col)

但据我所知,没有像使用csv.reader那样容易编写的方法。

注意:在您提供的代码中,您从不递增row或col,因此您在嵌套for循环的每次迭代中都会覆盖(0,0)处的单元格。小心点!使用enumerate可以解决这个问题。

基准

结果是,join将每一行与一个逗号放在一起并编写它大约比使用枚举一次快3倍。

下面是一些测试代码:import xlwt

import timeit

def wrapper(fn, *args, **kwargs):

def wrapped():

return fn(*args, **kwargs)

return wrapped

def excel_writer():

xldoc = xlwt.Workbook()

sheet1 = xldoc.add_sheet("Sheet1", cell_overwrite_ok=True)

rows = [[str(y) for y in xrange(100)] for x in xrange(10000)]

fn1 = wrapper(cell_writer, rows, sheet1)

fn2 = wrapper(row_writer, rows, sheet1)

print timeit.timeit(fn1, number=10)/10

print timeit.timeit(fn2, number=10)/10

xldoc.save('myexcel.xls')

def cell_writer(rows, sheet):

for i, row in enumerate(rows):

for j, col in enumerate(row):

sheet.write(i, j, col)

def row_writer(rows, sheet):

rows = [', '.join(row) for row in rows]

for i, strrow in enumerate(rows):

sheet.write(i, 0, strrow)

if __name__ == '__main__':

excel_writer()

用number = 1(当然除以1):cell_writer: 15.2915050441

row_writer: 0.205128928987

使用number = 10:cell_writer: 17.3386430596

row_writer: 0.204951626882

我把这一巨大的时间差异归因于join比编写excel更快的速度。当然,速度方面的最大瓶颈是excel的编写。

但是,请注意,在excel中拆分单元格所需的时间可能会超过使用row_writer方法节省的时间。这也可能给最终用户带来不便;请进行判断!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值