Python使用xlwt、xlsxwriter生成Excel

简介: 还在发愁怎么处理大量的excel么,来看看python的方法吧

使用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)

相关文章
|
22天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
64 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
64 2
|
2月前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件
21 1
|
2月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
74 0
|
2月前
|
存储 Python
Python实战项目Excel拆分与合并——合并篇
Python实战项目Excel拆分与合并——合并篇
62 0
|
2月前
|
存储 Python 容器
Python实战项目:Excel拆分与合并
Python实战项目:Excel拆分与合并
47 0
|
2月前
|
自然语言处理 搜索推荐 程序员
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
47 0
|
7月前
|
存储 数据处理 索引
Python操作Excel常用方法汇总
Python操作Excel常用方法汇总
263 0
|
7月前
|
Python
补充python操作excel示例xlwings常用函数
补充python操作excel示例xlwings常用函数
155 0