Python xlrd 列问题

-3 投票
1 回答
601 浏览
提问于 2025-04-18 16:36

我是一名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')

撰写回答