python: 使用 xlrd 存储所有单元格值并使用 xlwt 写入新工作簿

python: Store all cell values with xlrd and write to new workbook using xlwt

我正在尝试将 sheet 上的所有单元格复制到新工作簿。我可以像下面的示例代码一样手动存储单元格值,并将变量粘贴到各个单元格中,但我想自动收集单元格数据。我是 python 的新手,但我可以在概念上看到一些类似的东西,但我可以使用一些帮助来完成它,谢谢!

尝试自动收集细胞

 def cell(r,c): 
   set r+=1 
    cellname = c.isalpha() + r
      if r <= sheet.nrow:  
           cellname = (r,c,sheet.cell_value) 

......我在这里迷路了,但我认为应该有一个 sheet.ncols 和 nrows

当前手动复制单元格

 cellA1 = sheet.cell_value(0,0)
 cellA2 = sheet.cell_value(1,0)
 cellA3 = sheet.cell_value(2,0)
 cellA4 = sheet.cell_value(3,0)
 cellA5 = sheet.cell_value(4,0)
 cellB1 = sheet.cell_value(0,1)
 cellB2 = sheet.cell_value(1,1)

workbook = xlwt.Workbook()
 sheet = workbook.add_sheet('ITEM DETAILS')

手动单元格粘贴

sheet.write(0, 0, cellA1)
sheet.write(1, 0, cellA2)

您可以简单地循环遍历 sheet 中的单元格,方法是使用 sheet.nrowssheet.ncols 作为循环的限制。另外,请确保您没有将正在创建的新作品 sheet 定义为 sheet 本身,使用新名称。示例:

newworkbook = xlwt.Workbook()
newsheet = newworkbook.add_sheet('ITEM DETAILS')
for r in range(sheet.nrows):
    for c in range(sheet.ncols):
        newsheet.write(r, c, sheet.cell_value(r, c))

然后在任何您想使用新 sheet 的地方使用 newsheet 而不是 sheet

A​​nand S Kumar 的回答是正确的,但您需要将 i 更改为 r,将 j 更改为 c。为了获得额外的好处,我为完整的代码示例添加了更多代码。此代码打开现有 excel 文件,从第一个 sheet 读取所有数据,并将相同数据写入新的 excel 文件。

    import os,xlrd,xlwt

    if os.path.isfile(outExcel):os.remove(outExcel)#delete file if it exists

    inExcel= (r'C:\yourpath\inFile.xls')
    outExcel= (r'C:\yourpath\outFile.xls')

    workbook = xlrd.open_workbook(inExcel)
    sheetIn = workbook.sheet_by_index(0)

    workbook = xlwt.Workbook()
    sheetOut = workbook.add_sheet('DATA')

    for r in range(sheetIn.nrows):
        for c in range(sheetIn.ncols):
            sheetOut.write(r, c, sheetIn.cell_value(r, c))

    workbook.save(outExcel)#save the result