python 数据生成excel导出(xlwt,wlsxwrite)
话不多说,看代码:
from xlwt import * import StringIO from apps.song.models import Song def excel_ktvsong(request): """ 导出excel表格 """ _id = request.GET.get('id', 0) list_obj = Song.objects.filter(is_delete__exact=False) # django orm if list_obj: # 创建工作薄 ws = Workbook(encoding='utf-8') w = ws.add_sheet(u"歌曲列表") w.write(0, 0, u"歌曲名称") w.write(0, 1, u"歌手") # 写入数据 excel_row = 1 for obj in list_obj: data_song = obj.song data_singer_name = obj.singer_name w.write(excel_row, 0, data_song) w.write(excel_row, 1, data_singer_name) excel_row += 1 sio = StringIO.StringIO() ws.save(sio) sio.seek(0) response = HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment;filename=%s.xls' % time.strftime('%Y%m%d%H%M%S') response.write(sio.getvalue()) return response else: return HttpResponse("无数据")
上边我也是盗的,只不过当时有需求,数据量大只能用xlsxwriter,然后下边是我用xlsxwriter写的,边学边写,还请多多关照:
import xlsxwriter,StringIO output = StringIO.StringIO() workbook = Workbook(output) if id: sheet_name = _(u"vvv") w = workbook.add_worksheet(sheet_name) else: sheet_name = _(u"vvvvvvv") w = workbook.add_worksheet(sheet_name) """ 表格单元格样式""" head_cell_xf = workbook.add_format({ 'font_name': 'SimSun', 'bold': True, 'text_wrap': True, 'valign': 'vcenter', 'align': 'left', 'bg_color': 'gray', 'pattern': 1, 'bottom': 1, 'left': 1, 'right': 1, 'top': 1, }) body_cell_xf = workbook.add_format({ 'font_name': 'SimSun', 'text_wrap': True, 'valign': 'vcenter', 'align': 'left', 'bg_color': 'gray', 'pattern': 1, 'bottom': 1, 'left': 1, 'right': 1, 'top': 1, }) w.write(0, 0, 'xxxx', head_cell_xf) w.write(0, 1, u'xxxx', head_cell_xf) w.set_column(1, 0, 18) w.set_column(1, 1, 100) excel_row = 1 # cve_id = set() # i18n_name = set() data={} if id: res = xx.objects.get(id=id) res = res.vuls.split(';') for re in res: re = xx.objects.get(pk=xx) data[re.cve_id]=re.i18n_name[1] # w.write(excel_row, 0, re.cve_id,body_cell_xf) # w.write(excel_row, 1, re.i18n_name[1], body_cell_xf) # cve_id.add(re.cve_id) # cve_id.add(re.i18n_name[1]) excel_row += 1 progress_status = excel_row*100/len(res) # 获取进度 else: res = xx.objects.get(pk=xx) res = res.white_list.split(',') for re in res: re = Vuln.objects.get(vul_id=re) data[re.cve_id] = re.i18n_name[1] excel_row += 1 progress_status = excel_row * 100 / len(res) # 获取进度 w.write_column('A2', data.keys(), body_cell_xf) w.write_column('B2', data.values(), body_cell_xf) workbook.close() response = HttpResponse(output.getvalue(), content_type='application/octet-stream') response['Content-Disposition'] = 'attachment;filename=%s.xlsx' % xxx response.write(output.getvalue()) progress_status = 0 return response
本文来自博客园,作者:南鱼羁荒渡,转载请注明原文链接:https://www.cnblogs.com/nanyu/p/9984800.html
分类:
python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~