【django】生成 excel 文件 --xlwt

上一篇 / 下一篇  2012-07-10 23:00:46


上周要给内部系统要增加一个提测单下载的功能,需要实现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:
#################################### 创建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(00'Firstname',style)
ws.write(00'Firstname')
##########################################合并单元格

ws.write_merge(0,1,0,1,'Firstname',style. ) 

 
##########################################数字格式的处理 
style.num_format_str='YYYY-MM-DD'

##########################################数据超链接
= "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

相关阅读:

TAG: Django django xlwt

 

评分:0

我来说两句

Open Toolbar