|

楼主 |
发表于 2023-5-5 11:52:31
|
显示全部楼层
感谢提供思路,经过您的思路和我查的信息,我用的是如下的信息,谢谢~
- import os
- import openpyxl
- from openpyxl.worksheet.datavalidation import DataValidation
- # 解析INI文件
- config = configparser.ConfigParser()
- config.read('ini文件')
- # 创建Excel工作簿
- workbook = openpyxl.Workbook()
- sheet = workbook.active
- # 遍历INI文件的sections
- row = 1
- for section in config.sections():
- # 只处理已知的sections
- if section in ['acfg', 'HDMI']:
- # 将section名写入Excel的前一行
- sheet.cell(row=row, column=1, value=section)
- # 遍历当前section的键值对,只处理第一个键值对
- kv_dict = dict(config.items(section))
- first_kv = list(kv_dict.items())[0]
- # 在第一个空单元格添加数据验证
- validation_row = row
- while sheet.cell(row=validation_row, column=2).value is not None:
- validation_row += 1
- if validation_row > row:
- validation = DataValidation(type='list', formula1='"True,False"', allow_blank=True)
- sheet.add_data_validation(validation)
- validation.add(f'B{validation_row}')
- # 将处理后的数据写入Excel,包括section名称和第一个键值对
- sheet.cell(row=validation_row, column=2, value=f"{section}.{first_kv[0]} = {first_kv[1]}")
- # 遍历当前section的其余键值对,将其添加到单元格中
- for key, value in kv_dict.items():
- # 跳过第一个键值对,因为已经处理过了
- if key == first_kv[0]:
- continue
- sheet.cell(row=row, column=2).value += f"\n{section}.{key} = {value}"
- # 设置单元格换行
- sheet.cell(row=row, column=2).alignment = openpyxl.styles.Alignment(wrap_text=True)
- # 计算行数,以便写入下一个section的数据
- row = validation_row + 1
- # 保存Excel文件
- workbook.save('output.xlsx')
复制代码 |
|