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')