使用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()

关键说明:

  • 导入语句:脚本导入了 `xlrd` 库以读取Excel文件,并导入 `datetime` 模块以处理日期转换。
  • 打开工作簿:使用 `xlrd.open_workbook(save_path)` 函数打开由 `save_path` 指定的Excel文件。
  • 遍历工作表:脚本通过 `for sheet_index in range(number_of_sheets)` 遍历工作簿中的每个工作表。
  • CSV 命名:每个工作表保存为一个单独的CSV文件,文件名由 `to_csv_path` 和工作表索引构成。
  • 工作表详情:脚本打印每个工作表的名称、行数和列数。
  • 行和列的遍历:脚本从第二行(索引1)开始遍历工作表的行,以跳过表头。
  • 日期处理:如果单元格包含日期(`xlrd.XL_CELL_DATE`),将Excel日期格式转换为Python的 `datetime` 对象。
  • 行构建:将每个单元格值转换为字符串,替换换行符和制表符为空格,并用 `|` 连接成一个字符串。
  • 写入 CSV:将构建的行写入一个以 `|` 为分隔符的CSV文件。
  • 作者:岸边捡石头的程序猿

    物联沃分享整理
    物联沃-IOTWORD物联网 » python 解析 excel

    发表回复