python 解析 excel
使用python xlrd 模块来解析excel,逐个sheet解析,解析后生成csv文件,用 “|” 做分隔符隔开各列数据。
import xlrd
import datetime
def read_excel(save_path, to_csv_path):
# 打开指定路径的工作簿
workbook = xlrd.open_workbook(save_path)
number_of_sheets = workbook.nsheets
# 遍历工作簿中的每个工作表
for sheet_index in range(number_of_sheets):
# 为每个工作表构建最终的 CSV 文件名
final_csv_name = to_csv_path + '_' + str(sheet_index) + '.csv'
# 获取工作表
sheet = workbook.sheet_by_index(sheet_index)
sheet_name = sheet.name
number_of_rows = sheet.nrows
number_of_columns = sheet.ncols
# 打印工作表的详细信息
print(f"Sheet name: {sheet_name}")
print(f"Number of rows: {number_of_rows}")
print(f"Number of columns: {number_of_columns}")
# 初始化用于保存所有行的列表
rows_list = []
rows_str = ''
# 从第二行(索引1)开始遍历工作表的每一行
for row in range(1, number_of_rows):
row_str = ''
row_list = []
# 遍历当前行的每一列
for col in range(number_of_columns):
cell_value = sheet.cell_value(row, col)
cell_type = sheet.cell(row, col).ctype
# 检查单元格类型是否为日期
if cell_type == xlrd.XL_CELL_DATE:
print(cell_value, cell_type)
# 将Excel日期格式转换为Python datetime对象
cell_value = datetime.datetime(1900, 1, 1) + datetime.timedelta(days=cell_value - 2)
print(cell_value)
# 将单元格值添加到行列表中,并替换换行符和制表符为空格
row_list.append(str(cell_value).replace('\n', ' ').replace('\t', ' '))
# 将行列表中的元素用 '|' 分隔,拼接成一个字符串
row_str = '|'.join(row_list)
rows_list.append(row_str)
# 将所有行拼接成一个字符串,用换行符分隔
rows_str = '\n'.join(rows_list)
# 将最终字符串写入 CSV 文件
with open(final_csv_name, 'w+') as f:
f.write(rows_str)
f.close()
关键说明:
作者:岸边捡石头的程序猿