使用 xlwt 仅将单元格值的文本写入 xls 文件
write only the text of cell value to xls file by using xlwt
我正在自己练习 Python 并且想从一个 xlsx 文件中读取 header 行并以完全相同的方式将它们写入一个新文件。
下面是输入文件 header 行的样子:
这是我的输出文件现在的样子:
这是我的代码:
import xlrd # to read xlsx file
import xlwt # to write new xlsx file
fileName1 = '06082015.xlsx'
f1WorkBook = xlrd.open_workbook(fileName1)
#check sheet names
sheetName = f1WorkBook.sheet_names()
# select the first sheet
f1Sheet1 = f1WorkBook.sheet_by_index(0)
#copy and paste the header lines, row 0 to 17
header = [f1Sheet1.row(r) for r in range(18)]
#header = [f1Sheet1.cell_value(row, col) for col in range(2) for row in range(18)]
print header[0]
# write header
newWorkBook = xlwt.Workbook()
newsheet = newWorkBook.add_sheet(sheetName[0])
for rowIndex, rowValue in enumerate(header):
for colIndex, cellValue in enumerate(rowValue):
newsheet.write(rowIndex, colIndex, str(cellValue))
print rowIndex
print colIndex
print cellValue
newWorkBook.save('processed_'+fileName1[0:8]+'.xls')
我认为 newsheet.write(rowIndex, colIndex, str(cellValue))
这行有问题。有人可以帮忙吗?
是的,你是对的,下面一行是错误的-
newsheet.write(rowIndex, colIndex, str(cellValue))
这会将您在迭代中获得的单元格对象直接转换为字符串,而不是您获取其值的方式。要获取值,您需要使用 cell.value
。例子-
for rowIndex, rowValue in enumerate(header):
for colIndex, cellObj in enumerate(rowValue):
newsheet.write(rowIndex, colIndex, str(cellObj.value))
print rowIndex
print colIndex
print cellObj.value
我正在自己练习 Python 并且想从一个 xlsx 文件中读取 header 行并以完全相同的方式将它们写入一个新文件。
下面是输入文件 header 行的样子:
这是我的输出文件现在的样子:
这是我的代码:
import xlrd # to read xlsx file
import xlwt # to write new xlsx file
fileName1 = '06082015.xlsx'
f1WorkBook = xlrd.open_workbook(fileName1)
#check sheet names
sheetName = f1WorkBook.sheet_names()
# select the first sheet
f1Sheet1 = f1WorkBook.sheet_by_index(0)
#copy and paste the header lines, row 0 to 17
header = [f1Sheet1.row(r) for r in range(18)]
#header = [f1Sheet1.cell_value(row, col) for col in range(2) for row in range(18)]
print header[0]
# write header
newWorkBook = xlwt.Workbook()
newsheet = newWorkBook.add_sheet(sheetName[0])
for rowIndex, rowValue in enumerate(header):
for colIndex, cellValue in enumerate(rowValue):
newsheet.write(rowIndex, colIndex, str(cellValue))
print rowIndex
print colIndex
print cellValue
newWorkBook.save('processed_'+fileName1[0:8]+'.xls')
我认为 newsheet.write(rowIndex, colIndex, str(cellValue))
这行有问题。有人可以帮忙吗?
是的,你是对的,下面一行是错误的-
newsheet.write(rowIndex, colIndex, str(cellValue))
这会将您在迭代中获得的单元格对象直接转换为字符串,而不是您获取其值的方式。要获取值,您需要使用 cell.value
。例子-
for rowIndex, rowValue in enumerate(header):
for colIndex, cellObj in enumerate(rowValue):
newsheet.write(rowIndex, colIndex, str(cellObj.value))
print rowIndex
print colIndex
print cellObj.value