파이썬 타사 라이브러리를 읽고 당신이 여기에서 원하는 Excel 파일 요약 쓰기!

--- --- 내용이 시작 복원

공용 라이브러리 소개

xlrd

xlrd은 Excel 파일, 지원 .XLS 및 .XLSX 파일의 데이터 및 서식 정보를 읽을 수있는 라이브러리입니다.
http://xlrd.readthedocs.io/en/latest/
. 1지지 .XLS을 xlrd하는 .XLSX 파일 읽기
가변 on_demand open_workbook () 함수를 설정함으로써 시간과 메모리 (저장만을 필요 시트를로드하도록 2 이 방법은) .XLSX 파일이 유효하지 않습니다.
3, xlrd.Book unload_sheet 오브젝트 (파일이 잘못 .XLSX이 방법)에있어서, 그것이 인덱스 또는 워크 시트의 이름으로 지정 메모리로부터 워크를 제거한다 있습니다

xlwt

xlwt 정보 Excel 파일을 (예 : .XLS)을 이전 데이터를 작성하고 서식을위한 라이브러리입니다.
https://xlwt.readthedocs.io/en/latest/
1, xlwt 지원 .xls 파일 쓰기.

xlutils

xlutils 도서관이 xlrd 및 xlwt에 따라 Excel 파일을 처리합니다.
http://xlutils.readthedocs.io/en/latest/
1, xlutils은 .XLS 파일을 지원합니다.
2, 엑셀 작업에 대한 지원을 제공합니다.

xlwings

xlwings는 엑셀에서 달성 통화 파이썬이다, 엑셀은 파이썬 라이브러리를 호출 할 수 있습니다.
http://docs.xlwings.org/en/stable/index.html
1, xlwings 읽기 지원 .XLS, .XLSX 파일 읽기 및 쓰기 지원.
2, 엑셀 작업에 대한 지원을 제공합니다.
3, VBA에 대한 지원.
도 4는, 강력한 변환기 팬더 DataFrame NumPy와의 어레이와 양방향으로 포함하는 데이터 유형의 대부분을 처리 할 수있다.

openpyxl

openpyxl 읽기 및 Excel 2010 XLSX / XLSM / XLTX / 쓰기위한 라이브러리입니다 xltm의 파일을. 파이썬 데이터와 PDF의 세트를 마무리 샤오 총통은, 파이썬 학습 자료가 그룹에 추가 할 수 있습니다 배울 필요가 : 631 441 315, 어쨌든 아이들이 유휴 상태, ~ ~ 많은 것을 배울 것이 좋습니다
https://openpyxl.readthedocs.io/en/stable/
1, 파일을 읽고 openpyxl 지원을 .XLSX 물품.
2, 엑셀 작업에 대한 지원을 제공합니다.
3, .XLSX 파일은 큰 READ_ONLY 모드를로드 할 수 있습니다.
4, 큰 .XLSX 파일은 write_only 모드를 사용하도록 쓸 수 있습니다.

xlsxwriter

xlsxwriter 엑셀 .XLSX 파일을 생성하기위한 라이브러리입니다.
https://xlsxwriter.readthedocs.io/
1, xlswriter 지원 .xlsx 파일을 작성합니다.
2, VBA에 대한 지원.
3, 큰 .XLSX 파일을 쓸 때 메모리 최적화 모드를 사용하여.

win32com

win32com pywin32 읽고 Excel 파일 및 프로세스를 작성하는 라이브러리입니다 재고있다.
http://pythonexcels.com/python-excel-mini-cookbook/
1, win32com은 .XLS, .XLSX 파일 읽기 및 쓰기, 및 .XLSX 파일에 대한 지원을 쓰기를 지원합니다.
2, 엑셀 작업에 대한 지원을 제공합니다.

Dtnitro

DataNitro는 Microsoft Excel에서 플러그인에 포함된다.
https://datanitro.com/docs/
1, DataNitro은 .XLS, 읽기 및 쓰기 .XLSX 파일을 지원합니다.
2, 엑셀 작업에 대한 지원을 제공합니다.
3, VBA에 대한 지원.
4, 요금

판다

읽기, 데이터 입력 및 출력에 대한 엑셀 파일을 작성하여 팬더
http://pandas.pydata.org/
. 1, 팬더는 파일을 읽고 쓰기 .XLSX, .XLS을 지원합니다.
(2)는, 단 하나의 작업 부하 페이지 각 테이블을 지원합니다.

구성 및 동작 환경을 달성 할 수있다

참고 : DataNitro이 플러그인 자체 소프트웨어의 사용에 의존 할 필요가있다.
참조 : https://zhuanlan.zhihu.com/p/23998083

읽기와 쓰기 테스트

컴퓨터 하드웨어 및 시스템 테스트

컴퓨터 모델 MSI MS-7846 데스크탑
운영 체제, 윈도우 7 얼티밋 64 비트 SP1 (다이렉트 X 11)
프로세서 인텔 펜티엄 (펜티엄) G3260의 @의 3.30GHz 듀얼 코어
메인 보드 MSI H81M-P32L (MS-7846) ( 인텔 하 스웰 - 살쾡이 포인트)
메모리 4기가바이트 (킹스톤 DDR3의 인 1600MHz)
주 하드 드라이브 웨스턴 디지털 WDC WD5000AZLX-00ZR6A0 (5백기가바이트 / 7200 RPM / 분)
그래픽 인텔 하 스웰 내장 그래픽 컨트롤러 (2백56메가바이트 / MSI)

테스트 케이스

예 1. (테이블, 다섯 개 개의 탭이있는 각 탭은 1,200 정수 2000 개 행이) .XLS 전체 테이블을 사용하여 파일을 읽습니다.
예 2. (테이블, 다섯 개 개의 탭이있는 각 탭은 1,200 정수 2000 개 행이) .XLSX 파일을 전체 테이블을 읽어보십시오.
예 3. (행의 정수가 2000 표 페이지 1200 탭이 있습니다) .XLS 파일이있는 전체 테이블을 읽어 보시기 바랍니다.
예 4. .XLSX 파일로 전체 테이블을 읽기 (표는 탭이, 2000 페이지 1200 행의 정수있다).
사용의 .XLS 파일 5 예 (각 탭은 1,200 정수 2000 개 행이 테이블은 다섯 개 가지 탭이 있습니다) 전체 테이블을 작성합니다.
예 6. (테이블, 다섯 개 개의 탭이있는 각 탭은 1,200 정수 2000 개 행이) .XLSX 파일로 전체 테이블을 작성합니다.
예 7. .XLS 파일이있는 전체 테이블을 쓰기 (표는 탭이, 2000 페이지 1200 행의 정수있다).
예 8. .XLSX 파일로 전체 테이블을 쓰기 (표는 탭이, 2000 페이지 1200 행의 정수있다).

테스트 결과

注1.xlwt和pandas每个工作页最多写入256列,因此测试用例修改为每页有2000行256列的整数.
注2.xlutils读写依赖于xlrd和xlwt,不单独测试。
注3.openpyxl测试两种模式,一是普通加载写入,二是read_only/write_only模式下的加载写入。
注4.DataNitro要收费,且需依托Excel使用,本次不测试。

읽기 및 성능 비교 쓰기

单从读写的性能上考虑,win32com的性能是最好的,xlwings其次。
openpyxl虽然操作Excel的功能强大,但读写性能过于糟糕,尤其是写大表时,会占用大量内存(把我的4G内存用完了),开启read_only和write_only模式后对其性能有大幅提升,尤其是对读的性能提升很大,使其几乎不耗时(0.01秒有点夸张,不过确实是加载上了)。pandas把Excel当作数据读写的容器,为其强大的数据分析服务,因此读写性能表现中规中矩,但其对Excel文件兼容性是最好的,支持读写.xls,.xlsx文件,且支持只读表中单一工作页。同样支持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库是pandas,且这两个写入的Excel文件最多只能有256列,其余库就我目前的了解均只能写入.xlsx文件),性能一般。xlsxwriter功能单一,一般用来创建.xlsx文件,写入性能中庸。win32com拥有最棒的读写性能,但该库存在于pywin32的库中,自身没有完善的文档,使用略吃力。xlwings拥有和win32com不相伯仲的读写性能,强大的转换器可以处理大部分数据类型,包括二维的numpy array和pandas DataFrame,可以轻松搞定数据分析的工作。 综合考虑,xlwings的表现最佳,正如其名,xlwings——Make Excel Fly! 

비교의 용이성

本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各库的表现难分上下,但是win32com和xlwings这两个库可以在程序运行时实时在打开的Excel文件中进行操作,实现过程的可视化,其次xlwings的数据结构转换器使其可以快速的为Excel文件添加二维数据结构而不需要在Excel文件中重定位数据的行和列,因此从读写的便捷性来比较,仍是xlwings胜出。

테스트 코드

타이밍
수입 timeit   
  
경우  __name__ == ' __main__ ' :  
     # 使用timeit计时   
    t = timeit.Timer ( ' ?? () ' , 설정 = ' __main__ 수입에서 ?? ' )  
     인쇄 (t.timeit (번호 = 1))

 

xlrd
수입 xlrd   
  
DEF test_xlrd_on_demand_false () :  
     #의 F = xlrd.open_workbook ( 'test_cases \\ read_xls.xls'on_demand = 거짓)   
    F = xlrd.open_workbook ( ' test_cases \\ read_xlsx.xlsx ' , on_demand = 거짓)   
  
DEF test_xlrd_on_demand_true () :  
     #의 F = xlrd.open_workbook ( 'test_cases \\ read_xls.xls'on_demand = TRUE)   
    F = xlrd.open_workbook ( ' test_cases \\ read_xlsx.xlsx ' , on_demand = 참)   
    f.sheet_by_index (0)

 

xlwt
수입 xlwt의   
   = xlwt.Workbook ()  
 DEF test_xlwt ()  
     에 대한 S  범위 (5 )   
        시트 = book.add_sheet (STR (S))  
         에 대한 I  영역 (2000 )  
             에 대한 J  범위 (256 ) :   
                시트 에 .write (I, J, 65536 )   
    book.save ( ' test_cases \\ write_xls.xls ' )  

 

xlwings
수입 xlwings는   
  
DEF ) (test_xlwings_read :  
     #의 F = xlwings.Book ( 'test_cases \\ read_xls.xls') 
    F = xlwings.Book ( ' test_cases \\ read_xlsx.xlsx ' )   
  
가져 순이익 NumPy와 같이   
  
F = xlwings.Book ( ''을 )   
D = np.zeros ([2000, 1200 ])   
D + = 65536   데프 test_xlwings_write ()  
     에 대한 S  범위 (1 )   
        시트 = f.sheets.add ()   
        sheet.range ( " A1 " ) = .value
 

    f.save ( ' test_cases \\ write_xlsx.xlsx ' )

 

openpyxl
수입 openpyxl   
  
DEF test_openpyxl_read () :   
    F openpyxl.load_workbook = ( ' test_cases \\ read_xlsx.xlsx ' , READ_ONLY = 참)   
  
  
C = [65536] * 1,200   
F = openpyxl.Workbook (write_only = 참)   
  
DEF test_openpyxl_write ()  
     에 대한 I  범위 (1 :)   
        시트 = f.create_sheet (제목 = STR (I))  
         에 대한 영역 (2000 )   
            sheet.append (c)   
    f.save ( ' test_cases \\ write_xlsx.xlsx ')  

 

xlsxwriter
수입 xlsxwriter의   
  
통합 문서 = xlsxwriter.Workbook ( ' test_cases \\ write_xlsx.xlsx ' )  
 DEF test_xlsxwriter ()  
     에 대한 S  범위 (1 :)   
        워크 시트 = workbook.add_worksheet ()  
         에 대한에서 범위 (2000 )  
             에 대한 J  범위 ( 1,200 )   
                worksheet.write (I, J, 65536 )   
    workbook.close ()

 

win32com
수입 win32com.client는 Win32 같이   
 
엑셀 = win32.gencache.EnsureDispatch ( ' 이 Excel.Application ' )  
 DEF test_win32com_read () :  
     #의 WB가 = excel.Workbooks.Open는 ( 'E : \\ test_cases \\ read_xls.xls 엑셀 \\')   
    WB = excel.Workbooks.Open ( ' E는 : 엑셀 \\ \\ test_cases \\ read_xlsx.xlsx ' )
     # excel.Visible = TRUE   
  
  
WB = excel.Workbooks.Add ()  
 DEF test_win32com_write ()  
     에 대한 I  범위 (1 )   
        WS = wb.Worksheets.Add ()   
        ws.Range (" A1 : ATD2000 " ) .Value = 65536   
  
    wb.SaveAs ( " E : 엑셀 \\ \\ test_cases \\ write_xlsx.xlsx ' )   
    excel.Application.Quit ()  

 

판다
수입 PD 등 팬더   
  
DEF test_pandas_read ()  
     에 대한 I  범위 (1, 6 )   
        SHEET_NAME = " 시트 " + STR (I)  
          # DF = pd.read_excel ( 'test_cases \\ read_xls.xls'SHEET_NAME) 
        DF = PD .read_excel ( ' test_cases \\ read_xlsx.xlsx ' , SHEET_NAME)   
  
  
가져 순이익 NumPy와 같이   
D = np.zeros ([2000, 255 ])   
거라고 + 65536 =   
DF = pd.DataFrame (d)  
 #의 라이터 pd.ExcelWriter = ( ' test_cases \\ write_xls.xls ')
라이터 pd.ExcelWriter = ( ' test_cases \\ write_xlsx.xlsx ' )  
 DEF test_pandas_write ()   
    df.to_excel (작가 " 시트 1 ' )   
    df.to_excel (작가, ' 시트 2 ' )   
    df.to_excel (작가, ' Sheet3의 ' )   
    df.to_excel (작가, ' Sheet4의 ' )   
    df.to_excel (작가, ' Sheet5 ' )   
    writer.save을 ()

 

--- 끝 --- 복원 내용

추천

출처www.cnblogs.com/qingdeng123/p/11567714.html