遇到问题

excel文件中,字段为日期格式: image.png

使用pandas处理转换成txt文件,发现变成了数字: image.png

也就是变成了常规: image.png

代码:

import csv
import xlrd

# 定义Excel文件路径
excel_file = '花生好车还款计划_48期_无本息月供4495_还款日20231110-新.xls'

# 打开Excel文件
workbook = xlrd.open_workbook(excel_file)
sheet = workbook.sheet_by_index(0)  # 通过索引获取第一个工作表

# 将表头和内容写入文本文件
text_file = 'repayPlan.txt'
with open(text_file, 'w', newline='') as file:
    writer = csv.writer(file)

    # 写入表头
    writer.writerow(sheet.row_values(0))

    # 写入内容
    for row in range(1, sheet.nrows):  # 从第二行开始遍历,因为第一行是表头
        writer.writerow(sheet.row_values(row))

print("转换完成!")

解决方法

bito提问

以下代码: 
import csv 
import xlrd 
# 定义Excel文件路径 
excel_file = '花生好车还款计划_48期_无本息月供4495_还款日20231110-新.xls' 
# 打开Excel文件 
workbook = xlrd.open_workbook(excel_file) 
sheet = workbook.sheet_by_index(0)  # 通过索引获取第一个工作表 
# 将表头和内容写入文本文件 
text_file = 'repayPlan.txt' 
with open(text_file, 'w', newline='') as file: 
    writer = csv.writer(file) 
    # 写入表头 
    writer.writerow(sheet.row_values(0)) 
    # 写入内容 
    for row in range(1, sheet.nrows):  # 从第二行开始遍历,因为第一行是表头 
        writer.writerow(sheet.row_values(row)) 
    # excel日期格式需要按字符串处理 
print("转换完成!") 
在writer.writerow(sheet.row_values(row))写入时,判断excel内容是不是日期格式,日期格式要将其当成字符串写入,请你优化代码

bito回答

import csv
import xlrd
import datetime

# 定义Excel文件路径
excel_file = '花生好车还款计划_48期_无本息月供4495_还款日20231110-新.xls'
# 打开Excel文件
workbook = xlrd.open_workbook(excel_file)
sheet = workbook.sheet_by_index(0)  # 通过索引获取第一个工作表
# 将表头和内容写入文本文件
text_file = 'repayPlan.txt'
with open(text_file, 'w', newline='') as file:
    writer = csv.writer(file)
    # 写入表头
    writer.writerow(sheet.row_values(0))
    # 写入内容
    for row in range(1, sheet.nrows):  # 从第二行开始遍历,因为第一行是表头
        row_values = []
        for col in range(sheet.ncols):
            cell = sheet.cell(row, col)
            if cell.ctype == xlrd.XL_CELL_DATE:
                # 处理日期格式单元格
                date_value = xlrd.xldate.xldate_as_datetime(cell.value, workbook.datemode)
                date_str = date_value.strftime('%Y-%m-%d')  # 格式化日期为字符串
                row_values.append(date_str)
            else:
                row_values.append(cell.value)
        writer.writerow(row_values)
print("转换完成!")

结果符合预期: image.png