|

楼主 |
发表于 2024-4-3 22:14:50
|
显示全部楼层
现有PySide6代码如下:
def data_summary(self, data_summary):
### 找到需累加数据的工作簿
for file in self.File_List:
file_path = os.path.join(self.File_Path, file)
if file.endswith('.xls') and file != self.Base_Workbook and file != '汇总表.xls':
Source_workbook = xlrd.open_workbook(file_path, formatting_info=True)
file_path2 = os.path.join(self.File_Path, '汇总表.xls')
Target_workbook = xlrd.open_workbook(file_path2, formatting_info=True)
elif file.endswith('.xlsx') and file != self.Base_Workbook and file != '汇总表.xlsx':
Source_workbook = load_workbook(file_path, formatting_info=True)
file_path2 = os.path.join(self.File_Path, '汇总表.xlsx')
Target_workbook = load_workbook(file_path2, formatting_info=True)
# 遍历源簿中sheet
for sheet_name in Source_workbook.sheet_names():
self.print_with_color02('999sheet_name:', sheet_name, 'yellow', 'red')
self.plainTextEdit.ensureCursorVisible()
## 读取目标簿sheet_name工作表
ws_target = Target_workbook.sheet_by_name(sheet_name)
# 判断目标簿是否存在同名sheet
if sheet_name in Target_workbook.sheet_names():
# 复制目标工作簿
wb_target = copy(Target_workbook)
# 读取源工作簿下的sheet_name工作表
Temp_sheet = wb_target.get_sheet(sheet_name)
SourceSheet = Source_workbook.sheet_by_name(sheet_name)
Rows = SourceSheet.nrows
Cols = SourceSheet.ncols
### 应用行(列)排除规则
for row_num in range(Rows):
if row_num not in exclude_rows:
row_add = row_num
for col_num in range(Cols):
if col_num not in exclude_cols:
col_add = col_num
### 获取目标文件中指定单元格的值
value1 = ws_target.cell(row_add, col_add).value
### 获取源文件中指定单元格的值
value2 = SourceSheet.cell(row_add, col_add).value
### 判断俩单元格值的类型并相加
if isinstance(value1, (int, float)) and isinstance(value2, (int, float)):
# 如果两个值都是数值类型
value1 = value1 + value2
elif isinstance(value1, (int, float)) or isinstance(value2, (int, float)):
# 如果只有一个值是数值类型
if isinstance(value1, (int, float)):
value1 = value1
else:
value1 = value2
else:
# 如果两个值都不是数值类型
value1 = ' '
### 更新目标文件中指定单元格的值
Temp_sheet.write(row_add, col_add, value1)
###保存目标文件
# wb_target.save('汇总表.xls')
wb_target.save(self.File_Path + '/汇总表.xls')
# if self.File_Type == 'xls':
# wb_target.save(self.File_Path + '/汇总表.xls')
# elif self.File_Type == 'xlsx':
# wb_target.save(self.File_Path + '/汇总表.xlsx')
self.print_with_color5('成功累加工作簿《', file, '》之<', sheet_name, '>(工作表)数据到《汇总表》中',
'yellow', 'blue', 'yellow', 'blue', 'yellow')
self.plainTextEdit.ensureCursorVisible()
else:
# print(f'累加表格出错:无法打开目标文件或sheet错误')
self.print_with_color1('累加表格出错:无法打开目标文件或sheet错误', 'red')
self.plainTextEdit.ensureCursorVisible()
# print('所有待统计工作簿数据已成功累加到汇总表!')
return self.data_summary
请问为什么第2个sheet的数据能够累加到汇总表中也能保存后查询得到;
但第1个sheet虽然有累加动作,但结果却没能保存下来(累加后查询汇总表的第1个sheet中单元格数据没有变化) |
|