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

时间:2015-08-18 11:27:47

标签: python excel xlrd xlwt

我试图将工作表上的所有单元格复制到新工作簿。我可以手动存储单元格值,如下面的示例代码中所示,并在各个单元格中粘贴变量,但我想自动收集单元格数据。我是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)

2 个答案:

答案 0 :(得分:1)

您可以通过使用sheet.nrowssheet.ncols作为限制来循环播放表单中的单元格。此外,请确保您没有将要创建的新工作表定义为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))

然后在您想要使用新工作表的任何地方使用newsheet代替sheet

答案 1 :(得分:0)

Anand S Kumar的回答是正确的,但您需要将i更改为r,将j更改为c。为了额外的好处,我为完整的代码示例添加了更多代码。此代码打开现有的excel文件,从第一个工作表读取所有数据,并将相同的数据写入新的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