如何使用Python 3.5将CSV转换为XLSX?Pandas与XlsxWriter均不可用
Python 3.5 下 CSV 转 XLSX 的可行方法
由于Pandas和XlsxWriter在Python 3.5环境下兼容性不佳,推荐使用csv模块+openpyxl旧版本的组合方案,具体步骤如下:
1. 安装兼容版本的openpyxl
Python 3.5仅支持openpyxl 2.6.x及以下版本,执行以下命令安装:
pip install openpyxl==2.6.4
2. 基础转换代码
直接读取CSV内容并写入XLSX文件,适用于无特殊格式需求的场景:
import csv from openpyxl import Workbook def csv_to_xlsx(csv_path, xlsx_path): # 创建工作簿与默认工作表 wb = Workbook() ws = wb.active # 读取CSV并逐行写入 with open(csv_path, 'r', encoding='utf-8') as f: csv_reader = csv.reader(f) for row in csv_reader: ws.append(row) # 保存XLSX文件 wb.save(xlsx_path) # 调用示例 csv_to_xlsx("source.csv", "result.xlsx")
3. 进阶格式处理(可选)
如果CSV包含数字、日期等需要特定格式的内容,可添加格式处理逻辑:
import csv from openpyxl import Workbook from openpyxl.styles import numbers def csv_to_xlsx_with_format(csv_path, xlsx_path): wb = Workbook() ws = wb.active with open(csv_path, 'r', encoding='utf-8') as f: csv_reader = csv.reader(f) for row_idx, row in enumerate(csv_reader): processed_row = [] if row_idx == 0: # 表头直接写入 ws.append(row) continue # 处理数据行,尝试转换为数字 for cell_val in row: try: num_val = float(cell_val) processed_row.append(num_val) except ValueError: processed_row.append(cell_val) ws.append(processed_row) # 设置第二列为保留两位小数的数值格式 for cell in ws['B']: cell.number_format = numbers.FORMAT_NUMBER_00 wb.save(xlsx_path)
注意事项
- 根据CSV实际编码调整
encoding参数(如GBK编码需改为encoding='gbk') - 若CSV包含分隔符转义(如逗号在单元格内),csv模块会自动处理,无需额外操作
内容的提问来源于stack exchange,提问作者Alex_Borovskii
相关产品推荐
相关产品推荐

