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.nrows
和 sheet.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
。
Anand 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
我正在尝试将 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.nrows
和 sheet.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
。
Anand 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