需要從數(shù)據(jù)庫讀取日志生成相應(yīng)的 docx,,xlsx 文件做相應(yīng)的記錄 所以自然要用到docx,, xlsxwriter 庫 但是這些庫的應(yīng)用場景非常廣泛,任何需要對 word,,excel 文件執(zhí)行重復(fù)性操作的工作,,都可以使用 python 來幫我們完成
xlsxwriter 庫 文章結(jié)構(gòu): 一、xlsxwriter 基本用法,,創(chuàng)建 xlsx 文件并添加數(shù)據(jù) 二,、xlsxwriter 格式處理,將待添加數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的格式,,添加到 xlsx 文件中 三,、xlsxwriter 添加表格,,在 xlsx 文件中添加表格 四、深入理解格式(Format Class),,并運(yùn)用
一,、xlsxwriter 基本用法,創(chuàng)建 xlsx 文件并添加數(shù)據(jù) 官方文檔:http://xlsxwriter./ xlsxwriter 可以操作 xls 格式文件 注意:xlsxwriter 只能創(chuàng)建新文件,,不可以修改原有文件,。如果創(chuàng)建新文件時(shí)與原有文件同名,則會(huì)覆蓋原有文件 Linux 下安裝: sudo pip install XlsxWriter Windows 下安裝: pip install XlsxWriter 基本用法: 1 #!/usr/bin/python 2 #coding: utf-8 3 4 import xlsxwriter 5 6 #創(chuàng)建一個(gè)新的xlsx文件(如果原有同名文件會(huì)被覆蓋) 7 workbook = xlsxwriter.Workbook("Expenses01.xlsx") 8 9 #創(chuàng)建一個(gè)新的表單,,默認(rèn)名稱為 “sheet1”,輸入字符參數(shù)可指定名稱 10 worksheet = workbook.add_worksheet() 11 12 expenses = ( 13 ['Rent', 1000], 14 ['Gas' , 100], 15 ['Food', 300], 16 ['Gym' , 50], 17 ) 18 19 #worksheet 默認(rèn)是從0行,、0列開始計(jì)數(shù) 20 row = 0 21 col = 0 22 23 #worksheet.write 方法將數(shù)據(jù)寫入 xlsx 表格中 24 #參數(shù)依次為:行號,、列號、數(shù)據(jù),、[格式] 25 for item, cost in (expenses): 26 worksheet.write(row, col , item) 27 worksheet.write(row, col + 1, cost) 28 row += 1 29 30 #顯式關(guān)閉workbook,,若不顯式指定,則作用域結(jié)束后自動(dòng)關(guān)閉 31 workbook.close() 效果展示: 二,、xlsxwriter 格式處理,,將待添加數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的格式,添加到 xlsx 文件中 先設(shè)置格式,,使用方法:workbook.add_format 再指定格式寫入,,使用方法:worksheet.write_string 1 #!/usr/bin/python 2 #coding: utf-8 3 4 from datetime import datetime 5 import xlsxwriter 6 7 workbook = xlsxwriter.Workbook('Expenses02.xlsx') 8 worksheet = workbook.add_worksheet() 9 10 #設(shè)定格式,等號左邊格式名稱自定義,,字典中格式為指定選項(xiàng) 11 #bold:加粗,,num_format:數(shù)字格式 12 bold_format = workbook.add_format({'bold':True}) 13 money_format = workbook.add_format({'num_format':'$#,##0'}) 14 date_format =workbook.add_format({'num_format':'mmmm d yyyy'}) 15 16 #將二行二列設(shè)置寬度為15(從0開始) 17 worksheet.set_column(1, 1, 15) 18 19 #用符號標(biāo)記位置,例如:A列1行 20 worksheet.write('A1', 'Item', bold_format) 21 worksheet.write('B1', 'Cost', bold_format) 22 worksheet.write('C1', 'Cost', bold_format) 23 24 expenses = ( 25 ['Rent', '2016-03-11', 1000], 26 ['Gad', '2016-03-12', 100], 27 ['Food', '2016-03-13', 400], 28 ['Gym', '2016-03-14', 50], 29 ) 30 31 row = 1 32 col = 0 33 34 for item, date_str, cost in (expenses): 35 #將數(shù)據(jù)格式轉(zhuǎn)化為Python datetime.datetime 格式 36 #之后用write_datetime方法錄入日期格式 37 date = datetime.strptime(date_str, "%Y-%m-%d") 38 39 #使用write_string方法,,指定數(shù)據(jù)格式寫入數(shù)據(jù) 40 worksheet.write_string(row, col, item) 41 worksheet.write_datetime(row, col + 1, date, date_format) 42 worksheet.write_number(row, col + 2, cost, money_format) 43 row += 1 44 45 worksheet.write(row, 0, 'Total', bold_format) 46 worksheet.write(row, 1, '=SUM(B2:B5)', money_format) 47 48 workbook.close() 效果展示:
寫入日期格式時(shí),,指定對象要是 Python 的 datetime.datetime 格式 使用 workbook.add_format 綁定時(shí),可以指定如下格式
三,、xlsxwriter 添加表格,,在 xlsx 文件中添加表格 1 #!/usr/bin/python 2 #coding: utf-8 3 4 import xlsxwriter 5 6 workbook = xlsxwriter.Workbook('chart.xlsx') 7 worksheet = workbook.add_worksheet() 8 9 #新建圖標(biāo)對象 10 chart = workbook.add_chart({'type': 'column'}) 11 12 #向 excel 中寫入數(shù)據(jù),建立圖標(biāo)時(shí)要用到 13 data = [ 14 [1, 2, 3, 4, 5], 15 [2, 4, 6, 8, 10], 16 [3, 6, 9, 12, 15], 17 ] 18 19 worksheet.write_column('A1', data[0]) 20 worksheet.write_column('B1', data[1]) 21 worksheet.write_column('C1', data[2]) 22 23 #向圖表中添加數(shù)據(jù),,例如第一行為:將A1~A5的數(shù)據(jù)轉(zhuǎn)化為圖表 24 chart.add_series({'values': '=Sheet1!$A$1:$A$5'}) 25 chart.add_series({'values': '=Sheet1!$B$1:$B$5'}) 26 chart.add_series({'values': '=Sheet1!$C$1:$C$5'}) 27 28 #將圖標(biāo)插入表單中 29 worksheet.insert_chart('A7', chart) 30 31 workbook.close() 效果展示:
四,、更多可用的單元格式對象(Format Class) ecxel 中每一個(gè)單元,都有如下屬性:字體(fonts),、顏色(colors),、模式(patterns)、邊界(borders),、alignment,、number formatting 設(shè)置屬性: format = workbook.add_format() #用對象接口設(shè)置格式屬性 format.set_bold() format.set_font_color('red') #用字典設(shè)置格式屬性 property = { 'bold': True, 'font_color': 'red' } format = workbook.add_format(property) 更多相關(guān)參見:http://xlsxwriter./format.html |
|