【django】生成 excel 文件 --xlwt
上周要给内部系统要增加一个提测单下载的功能,需要实现django 生成 excel 文件。我在网上搜索到了3个模块分别是:
xlwt ,
django_excel_templates , django-excel-response .
前2 种貌似比较强大,能够 定义丰富表格和字体的样式。这里主要详细介绍xlwt
xlwt**************************************************************************************************
官方网址:http://pypi.python.org/pypi/xlwt/
虽然官方网址上没有使用说明,但是把package下载下来后,会发现里面有个examples 文件夹,很全的功能例子。。
但我也在网上找到了其他很实用的说明:http://nullege.com/codes/search/xlwt.easyxf
下面贴example:
虽然官方网址上没有使用说明,但是把package下载下来后,会发现里面有个examples 文件夹,很全的功能例子。。
但我也在网上找到了其他很实用的说明:http://nullege.com/codes/search/xlwt.easyxf
下面贴example:
#################################### 创建book
sheet
import xlwt
wb =xlwt.Workbook()
ws = wb.add_sheet('Sheetname')
########################################样式设置方式1
style_k=xlwt.easyxf('font:
bold on,colour_index green,height 360;
align: wrap
off;
borders:left 1,right 1,top 1,bottom
1;
pattern: pattern alt_bars, fore_colour gray25,
back_colour gray25')
#font: bold on,colour_index
green,height 360,family:Arial; 字体加粗,字体颜色,字体大小,字体类型
#align: wrap on; 自动折行,哈哈,这个好
#pattern:fore_colour yellow, back_colour
yellow,单元格的背景色,貌似要2个是一样的才生效
########################################样式设置方式2
#font 、 pattern 等等都为 class,赋值后,这个class 再作为
style的属性值
fnt =xlwt.Font()
fnt.name = 'Arial'
fnt.colour_index = 4
fnt.bold = True
pattern=xlwt.Pattern() ###??貌似不生效
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_back_colour=0x3A
pattern.pattern_fore_colour=0x3A
borders = xlwt.Borders()
borders.left = 1
borders.right = 1
borders.top = 1
borders.bottom = 1
borders.bottom_colour=0x3A
style = xlwt.XFStyle()
style.font = fnt
style.borders = borders
style.pattern = pattern
##########################################设置第i列
的cell单元格的宽度
for i in range(2,8):
ws.col(i).width = 0x0d00 + 2000
##########################################设置第i行 的cell单元格的高度
????
#暂时没找到直接的方法或属性,不过可以通过合并单元格的间接方式来满足
##########################################往sheet表里写入数据
#ws.write(row, col, data [,style])
ws.write(0, 0, 'Firstname',style)
ws.write(0, 0, 'Firstname')
##########################################合并单元格
ws.write_merge(0,1,0,1,'Firstname',style. )
##########################################数字格式的处理
style.num_format_str='YYYY-MM-DD'
##########################################数据超链接
n = "HYPERLINK"
attach_report=xlwt.Formula(n +'("http://www.baidu.com";"fame.pdf" )')
#??往一个单元格里写入多个超链接??暂未找到方法
##########################################定义Content-Disposition,让浏览器能识别,弹出下载框
fname = 'testfile.xls'
agent=request.META.get('HTTP_USER_AGENT')
if agent and re.search('MSIE',agent):
response =HttpResponse(mimetype="application/vnd.ms-excel") #解决ie不能下载的问题
response['Content-Disposition'] ='attachment; filename=%s' % urlquote(fname) #解决文件名乱码/不显示的问题
else:
response =HttpResponse(mimetype="application/ms-excel")#解决ie不能下载的问题
response['Content-Disposition'] ='attachment; filename=%s' % smart_str(fname) #解决文件名乱码/不显示的问题
##########################################保存
wb.save(response)
return response
相关阅读:
- Django近况及国内开发者评价 (caption, 2008-7-09)