Python使用xlwt、xlsxwriter生成Excel
使用xlwt
-
示例
def excel_(headers, result, file_name, horizontal=True): f = xlwt.Workbook() default_easyxf = xlwt.easyxf(num_format_str='0.00') sheet1 = f.add_sheet('sheet1') # 标红加粗 # style = "font:colour_index 10, bold False" # style = xlwt.easyxf(style) if horizontal: for i in range(0, len(headers)): if isinstance(headers[i], tuple): sheet1.write(0, i, headers[i][0], xlwt.easyxf(headers[i][1])) continue sheet1.write(0, i, headers[i]) row_index = 0 else: r = [] for k, v in zip(headers, result): r.append([k, v]) result = r row_index = -1 for rows in result: row_index += 1 for j in range(0, len(rows)): try: if not rows[j]: r = '' elif '.' in str(rows[j]): r = float(rows[j]) else: r = int(rows[j]) except ValueError: r = rows[j] if isinstance(r, (int, float)): # 数值格式 if r < 10000000000: sheet1.write(row_index, j, r, default_easyxf) else: sheet1.write(row_index, j, str(r)) else: sheet1.write(row_index, j, str(r)) # 保存到本地 # f.save("/User/name/{}".format(file_name)) excel_stream = io.BytesIO() # BytesIO流(在内存中读写) f.save(excel_stream) res = excel_stream.getvalue() excel_stream.close() response = HttpResponse(content_type='application/vnd.ms-excel') from urllib import parse response['Content-Disposition'] = 'attachment;filename=' + parse.quote(file_name) response.write(res) return response headers = ["姓名", ("手机号", "font:colour_index 10, bold False")] results = [["李白", "1888888888"], ["杜甫", "19999999999"]] file_name = "test.xlsx" excel_(headers, results, file_name)
使用xlsxwriter
-
示例
# excel下拉列表导出,数据校验 def xlsx_excel(headers, results, filename): excel_stream = io.BytesIO() workbook = xlsxwriter.Workbook(excel_stream) worksheet = workbook.add_worksheet() # 数字格式 header_format = workbook.add_format({ 'num_format': '@', }) # 下拉列表校验格式 data_validate = {'validate': 'list', 'source': ['是', '否']} data_validate1 = {'validate': 'list', 'source': ['有', '无']} # 日期格式校验 date_validate = {'validate': 'date', 'criteria': 'between', 'minimum': date(2018, 1, 1), 'maximum': date(9999, 12, 12)} for i in range(len(headers)): # 写入校验规则 if isinstance(headers[i], tuple): # 写入计算公式 if "自动计算" in headers[i][0]: worksheet.write(0, i, headers[i][0]) worksheet.write_formula(1, i, headers[i][1], header_format) # 使用之前定义的header_format数字格式 elif "text" in headers[i][1]: r = headers[i][1].replace('text', '') worksheet.write(0, i, headers[i][0], workbook.add_format({'font_color': 'red'})) worksheet.set_column("{}:{}".format(r, r), None, header_format) # 使用之前定义的date_validate日期格式 elif "date" in headers[i][1]: r = headers[i][1].replace('date', '') worksheet.write(0, i, headers[i][0], workbook.add_format({'font_color': 'red'})) worksheet.data_validation('{}2:{}1048576'.format(r, r), date_validate) # 使用之前定义的data_validate下拉规则 else: worksheet.write(0, i, headers[i][0], workbook.add_format({'font_color': 'red'})) worksheet.data_validation('{}2:{}1048576'.format(headers[i][1], headers[i][1]), data_validate) else: worksheet.write(0, i, headers[i], workbook.add_format({'font_color': 'red'})) # 整行写入数据 for x in range(len(results)): worksheet.write_row("A{}".format(x + 2), results[x]) workbook.close() xlsx_data = excel_stream.getvalue() response = HttpResponse(content_type='application/ms-excel') response['Content-Disposition'] = 'attachment; filename=%s.xlsx' % filename response.write(xlsx_data) return response headers = [("日期", 'dateA'), "姓名", ("手机号", "textC"), "数字一", "数字二", ("合计(自动计算)", "=D2+E2")] results = [["2019/1/1", "张三", "18888888888", "1000", 1000]] filename = "test_excel" xlsx_excel(headers, results, filename)
- 参考链接:python生成Excel的两种方式
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
API接口开发(一):接口开发返回结果解决方案
摘要 采用前后端分离的方式进行项目开发,那么前后端交互比较好的方式是采用HTTP+JSON。如何接口返回结果更加简洁,更加优雅,也更加合理,并且让前端开发人员看得明白,后端开发者也并不会因此而增加工作量呢? 正文开始 Hello,各位,好久不见了。一直在筹划个人网站2020版本改版的事情,所以,本篇文章,也是2019年最后一篇了,当然,也得花一些心思,争取把我想要说的话,都一一说出来,说明白,说透彻。 采用前后端分离的方式进行项目开发,那么前后端交互比较好的方式是采用HTTP+JSON。如何接口返回结果更加简洁,更加优雅,也更加合理,并且让前端开发人员看得明白,后端开发者也并不会因此而增加工作量呢? 为此,我写了一套关于API接口开发返回结果解决方案, api-result,已将其开源,并上传到中央仓库,欢迎各位批评和指正。 API讲解 实体类 提供了满足各场景使用的实体类,如下: ResultModel 这个类是基础实体类,有如下属性: success:返回结果标识,是一个布尔值,true / false(成功 / 失败) message:描述信息,错误时,可以在这里填写错误的详细信...
- 下一篇
Python从入门到精通最佳学习路线
Python从入门到精通最佳学习路线,随着人工智能时代的来临,Python开始崭露头角并迅速吸引了人们的广泛关注。很多人想要从事Python开发,但需要学什么内容、怎么快速学习呢?接下来小编就给大家分享Python最佳学习路线。 第一阶段Python基础与Linux数据库。这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模块、函数、异常处理、MySQL使用、协程等知识点。 学习目标:掌握Python基础语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。 第二阶段WEB全栈。这一部分主要学习Web前端相关技术,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web开发基础、VUE、Flask Views、Flask模板、 数据库操作、Flask配置等知识。 学习目标:掌握WEB前端技术内容,掌握WEB后端框架,熟练使用Flask、Tornado、Dja...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长