Python 中的xlrd 和 xlsxwriter 兩個模塊的學習總結


Python 中的xlrd 和 xlsxwriter 兩個模塊的學習總結

一,xlrd 和 xlsxwriter 的作用

  ♦python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlsxwriter是寫excel。

二,安裝

  ♦ 到python官網下載http://pypi.python.org 安裝,前提是已經安裝了python 環境。

  ♦或者在cmd窗口  pip install  xlrd 或xlsxwriter

三,導包

       #coding:utf-8

       Import xlrd

       Import xlsxwriter

四,xlsxwriter 介紹

優點:

1、功能比較強

相對而言,這是除Excel自身之外功能最強的工具了。比如我就用到了它提供的:字體設置、前景色背景色、border設置、視圖縮放(zoom)、單元格合並、autofilter、freeze panes、公式、data validation、單元格注釋、行高和列寬設置等等。

2、支持大文件寫入

如果數據量非常大,可以啟用constant memory模式,這是一種順序寫入模式,得到一行數據就立刻寫入一行,而不會把所有的數據都保持在內存中。

缺點:

1、不支持讀取和修改

作者並沒有打算做一個XlsxReader來提供讀取操作。不能讀取,也就無從修改了。它只能用來創建新的文件。我是利用xlrd把需要的信息讀入后,用XlsxWriter創建全新的文件。

另外,即使是創建到一半Excel文件,也是無法讀取已經創建出來的內容的(信息應該在,但是並沒有相應的接口)。因為它的主要方法是write而不是set。當你在某個單元格寫入數據后,除非你自己保存了相關的內容,否則還是沒有辦法讀出已經寫入的信息。從這個角度看,你無法做到讀出->修改->寫回,只能是寫入->寫入->寫入。

2.2、不支持XLS文件

XLS是Office 2013或更早版本所使用的格式,是一種二進制格式的文件。

XLSX則是用一系列XML文件組成的(最后的X代表了XML)一個壓縮包。如果非要創建低版本的XLS文件,就請移步xlwt吧。

2.3、暫時不支持透視表(Pivot Table)

基本功能使用:

#創建一個名稱為hello.xlsx的文件,文件的存放路徑為C:\Users\dell\PycharmProjects\HRM_test\result\report
workbook = xlsxwriter.Workbook(' C:\Users\dell\PycharmProjects\HRM_test\result\report\hello.xlsx')
 
#創建表單
work_sheet1 = work_book.add_worksheet()  # 添加表單,名稱默認為shhet1
work_sheet2 = work_book.add_worksheet('員工表')  # 添加表單sheet名字為員工表
work_sheet3 = work_book.add_worksheet()  # 添加表單,名稱默認為shhet3
 
# add_format() 格式化單元格
bold = workbook.add_format({ 'bold': 1,       #字體加粗
               'border ':6       #給單元格加框線
               'fg_color': 'green',  #單元格背景顏色
               'align': 'center',   #對齊方式
               'valign': 'vcenter',  #字體對齊方式
                            })
# merge_range()合並單元格
worksheet.merge_range('區域', '合並后內容', 格式化)
worksheet.merge_range('B3:D4', 'Merged Cells', bold)
# set_column()設置列寬
worksheet.set_column('B:D', 12)  #設置B-D的單元格寬度為12 
# set_row()設置行高
worksheet.set_column(3, 12)  #設置第4行的單元格行高為12
# write_row()行插入操作
Hang=['Number','Batch1','Batch2']
worksheet.write_row('行',插入內容,格式)  
worksheet.write_row('A1', hang, bold)  
# write_column()列插入操作
lie=['lie1','lie2','lie3']
worksheet.write_row('列',插入內容,格式)  
worksheet.write_row('B2', lie, bold)  
# add_chart(options)添加一個圖表對象,options 參數為一個字典類型
chart = workbook.add_chart({'type': 'line'}) #添加一個線條型的圖表對象

  常見的圖表樣式如下:

  area:面積樣式的圖表

  bar:條形圖

  column:柱狀圖

  line:線條樣式的圖表

  pie:餅形圖

  scatter:散點圖

  stock:股票樣式的圖表

  radar:雷達樣式的圖表

 
# insert_char()插入圖表對象

  #插入直方圖1

 chart1 = workbook.add_chart({'type':'column'}) #選擇豎狀圖

 chart1.add_series({ 'name': '= Sheet1!$B$1',

             'categories': '= Sheet1!$A$2:$A$7',       # X軸標值取值

            'values':   '= Sheet1!$B$2:$B$7', # Y軸標值取值

            'data_labels': {'value': True}    #顯示數字,就是直方圖上面的數字,默認不顯示

           })

  注意上面寫法 '=Sheet1!$B$2:$B$7' Sheet1是指定工作頁, $A$2:$A$7是從A2到A7數據,

 #插入直方圖2

 chart1.add_series({ 'name': '= Sheet1!$B$1',

            'categories': '= Sheet1!$A$2:$A$7',  # X軸標值取值

            'values':   '= Sheet1!$C$2:$C$7',  # Y軸標值取值

            'data_labels': {'value': True}

           })

 chart1.set_title({'name': 'Chart with Data Table'}) #直方圖標題

 chart1.set_x_axis({'name': 'Test number'}) #X軸描述

 chart1.set_y_axis({'name': 'Sample length (mm)'})#Y軸描述

 chart1.set_table() #設置x軸為數據表格式

 chart1.set_style(3)#直方圖類型

 worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) #直方圖插入到 D2位置

 workbook.save()  # 將excel文件保存

 workbook.close() # 將excel文件保存關閉,如果沒有這一行運行代碼會報錯


 
 
# write(row, col, data,cell_format)方法:是用來將普通數據寫入單元格中(行標、列標、內容、單元格格式)
write.string():寫入字符串類型數據
wirte_number():寫入數字型數據
write_blank():寫入空類型數據
write_formula():寫入公式型數據
write_datetime():寫入日期型數據
wirte_boolean():寫入邏輯型數據
write_url():寫入超鏈接型數據
# 示例:
Work_sheet1.write_string(1,1,"python操作excel", bold)  # 在單元格1行1列中寫入:“python操作excel”

 work_sheet2.write_number('A2', 123456)

 work_sheet2.write_blank('A3', None)

 work_sheet2.write_formula('B7', '=sum(b1:b5)')

 work_sheet2.write_datetime(0, 3, datetime.datetime.strptime('2019-04-18', '%Y-%m-%d'),

 work_book.add_format({'num_format': 'yyyy-mm-dd'}))

 work_sheet1.write_boolean(0, 0, True)
  work_sheet1.write_url('A2', 'http://www.baidu.com')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM