Python xlrd 列问题
我是一名Python初学者,正在尝试写一个脚本来计算Excel表格中某一列的所有数值之和,然后把这个结果写出来。我正在使用xlrd和xlwt这两个Python库。对于第一列,这个脚本运行得很好,但对于第二列到最后一列就不行了。下面是我的代码。希望有人能帮我。
import xlwt
import xlrd
workbook_page = xlrd.open_workbook('page_level.xlsx')
worksheet_page = workbook_page.sheet_by_name('Daily External Referrers')
num_rows = worksheet_page.nrows - 1
curr_row = 0`
num_cols = worksheet_page.ncols - 1`
curr_col = 1
soma = 0
while curr_col < num_cols:
curr_col = curr_col + 1
while curr_row < num_rows:
curr_row = curr_row + 1
row = (worksheet_page.cell_value(curr_row, curr_col))
if isinstance (row, float):
soma = soma + row
else:
pass
worksheet_page.write(num_rows+1, curr_col, soma)
worksheet_page.save('page_level.xlsx')
1 个回答
0
我觉得你不能直接编辑用xlrd读取的Excel工作簿,你得先把它复制到一个新的工作簿,然后再去编辑那个。
另外,我个人更喜欢用for循环,而不是while循环,这样会更简单一些。
我现在没法测试,但也许可以试试像这样做?
import xlwt, xlrd
from xlutils.copy import copy
read_workbook_page = xlrd.open_workbook('page_level.xlsx')
workbook_page = copy(read_workbook_page)
worksheet_page = workbook_page.sheet_by_name('Daily External Referrers')
num_rows = worksheet_page.nrows - 1
num_cols = worksheet_page.ncols - 1
for row in range(num_rows):
column_sum = 0
for column in range(1, num_cols):
column_sum += worksheet_page.cell_value( row, column )
worksheet_page.write(row, num_cols, column_sum )
worksheet_page.save('page_level.xlsx')