工作中需要導出數據為excel格式,使用了xlwt模塊,在此記錄一下用到的內容。
1. 創建一個表,設置一個sheet
1 import xlwt 2 3 workbook = xlwt.Workbook(encoding='utf8') 4 worksheet = workbook.add_sheet(u'sheet1')
2. 設置列寬,cols_num是列的數目,可以通過修改12這個值,修改列的寬度
1 for c in range(cols_num): 2 worksheet.col(c).width = 256 * 12
3.設置行高,修改800為別的值,可以修改行的高度
1 worksheet.row(0).height_mismatch = True 2 worksheet.row(0).height = 800 # 設置行高
4.設置單元格風格,寫成了一個函數。如注釋所示,Font()用來設置單元格字體內容,如字體類型、大小等;borders()設置單元格邊框線粗細;partern()設置單元格背景顏色;XFStyle()設置風格類型;alignment()用來設置了字體水平居中、垂直居中、自動換行。
1 def body_style(pattern=None): 2 # 設置excel單元格風格 3 font = xlwt.Font() # Create Font 4 font.name = "SimSun" # 宋體 5 font.height = 20 * 12 # 字體大小 6 style = xlwt.XFStyle() # Create Style 7 style.alignment.horz = 2 # 字體居中 8 style.alignment.vert = 1 9 style.alignment.wrap = 1 10 if pattern: 11 pat = xlwt.Pattern() 12 pat.pattern = xlwt.Pattern.SOLID_PATTERN # 設置背景顏色 13 pat.pattern_fore_colour = pattern 14 style.pattern = pat 15 borders = xlwt.Borders() 16 borders.left = 1 17 borders.right = 1 18 borders.top = 1 19 borders.bottom = 1 20 style.font = font 21 style.borders = borders 22 return style
5. falsk導出excel
1 def down(): 2 excel = excel() 3 sio = StringIO.StringIO() 4 excel.save(sio) 5 resp = make_response(sio.getvalue()) 6 filename = (u'表hh-' + u'-' + time.strftime("%Y-%m-%d", time.localtime(time.time()))) 7 resp.headers["Content-Disposition"] = "attachment; filename={}.xls".format(filename) 8 resp.headers['Content-Type'] = 'application/x-xls' 9 return resp
6. 往單元格內寫入數據,合並單元格
1 worksheet.write(m_row, m_col, u'內容', body_style()) 2 # 合並單元格,前四個參數分別是起止的行列位置 3 worksheet.write_merge(1, 2, m_col, m_col+3, u'還好', body_style())
7. 在設置字體顏色或者單元格背景顏色的時候,可以使用源碼中0x0D參數來代表不同的顏色,也可以用0-127來表示不同的顏色,寫了以下代碼來測試了一下,方便之后使用
1 # coding=utf-8 2 import xlwt 3 4 workbook = xlwt.Workbook(encoding='utf-8') 5 worksheet = workbook.add_sheet('sheet1') 6 7 for i in range(0, 128): 8 stylei = xlwt.XFStyle() 9 patterni = xlwt.Pattern() 10 patterni.pattern = 1 11 # 設置底紋的圖案索引,1為實心,2為50%灰色,對應為excel文件單元格格式中填充中的圖案樣式 12 patterni.pattern_fore_colour = i # 設置底紋的前景色,對應為excel文件單元格格式中填充中的背景色 13 patterni.pattern_back_colour = 35 # 設置底紋的背景色,對應為excel文件單元格格式中填充中的圖案顏色 14 stylei.pattern = patterni # 為樣式設置圖案 15 worksheet.write(i, 0, i, stylei) 16 17 workbook.save('file.xls')
8. 待續,后面根據一些使用的屬性進行補充,此外,目前對於wookbook類的屬性還沒有搞明白怎么使用。