如何使用Python将.xls转换为.csv并保留小数末尾零?
XLS转CSV保留小数末尾零的解决方案
你的脚本丢失末尾零的原因是xlrd的row_values()方法会将数值型单元格自动转换为浮点数,导致格式化的末尾零被省略。要保留原始小数格式,需要直接读取单元格的显示文本而非转换后的数值。
修改后的完整代码:
import xlrd import csv def xls_to_csv_with_zeros(input_file, output_file): workbook = xlrd.open_workbook(input_file) sheet = workbook.sheet_by_index(0) with open(output_file, 'w', newline='', encoding='utf-8-sig') as csvfile: writer = csv.writer(csvfile) # 逐行逐单元格处理,获取显示文本 for row_idx in range(sheet.nrows): current_row = [] for col_idx in range(sheet.ncols): # 读取单元格的显示文本,保留Excel中设置的格式 cell_content = sheet.cell(row_idx, col_idx).text current_row.append(cell_content) writer.writerow(current_row) xls_to_csv_with_zeros('input.xls', 'output.csv')
核心修改说明:
- 替换
sheet.row_values()为逐单元格遍历:避免数值被自动转换为浮点数 - 使用
sheet.cell(row_idx, col_idx).text:直接获取Excel单元格的显示文本,完全保留原始格式(包括末尾零) - 无需额外类型转换:直接将获取到的文本写入CSV,确保内容和Excel中显示的一致
内容的提问来源于stack exchange,提问作者PDev
相关产品推荐
相关产品推荐

