#!/usr/bin/env python
# -*- coding: utf-8 -*-
import  warnings
warnings.filterwarnings('ignore')
import openpyxl
from openpyxl.cell import MergedCell
import os
import  re

def read_excel(FileName,SheetName,ColLength=None,StartRowCol=(2,1)):
    try:
        #读excel
        if not os.path.exists(FileName):
            print("[%s] 文件不存在"%(FileName))
            return []
        wb= openpyxl.load_workbook(filename =FileName, data_only = True)
        ws =wb[SheetName]
        RowId = StartRowCol[0]
        StartCol = StartRowCol[1]
        ColLength = ColLength if ColLength else ws.max_column
        ColLength = StartCol-1 + ColLength
        #MaxRow = int(RowEnd) if RowEnd and int(RowEnd)<ws.max_row else ws.max_row
        MaxRow = ws.max_row
        ExcelData =[]
        while MaxRow >= RowId:
            ColId=StartCol
            RowData =[]
            while ColId<=ColLength:
                cell = ws.cell(row=RowId,column=ColId)
                if isinstance(cell,MergedCell):#判断该单元格是否合并单元格
                    for merged_range in ws.merged_cell_ranges:  # 循环查找该单元格所属的合并区域
                        if cell.coordinate in merged_range:
                            # 获取合并区域左上角的单元格作为该单元格的值返回
                            cell = ws.cell(row=merged_range.min_row, column=merged_range.min_col)
                            break
                value =str(cell.value) if str(cell.value)!='None'  else ''
                RowData.append(value)
                ColId+=1

            if len(set(RowData))<2 and RowData[0] == '':
                pass
            else:
                ExcelData.append(RowData)
            RowId+=1
        wb.close()
        print('读取 [%s]文件 [%s]表数据完成...'%(FileName,SheetName))
        return ExcelData
    except Exception as e:
        print(e)
        return []
if __name__ == '__main__':
    read_excel("test.xlsx",'Sheet1',ColLength=None,StartRowCol=(2,1))

  

 posted on 2022-09-27 18:30  boye169  阅读(33)  评论(0编辑  收藏  举报