flask中使用xlsxwriter导出excel文件

最近需要使用flask导出xlsxwriter生成的excel文件,在文件比较小的情况下,可以直接导出。

  首先,这里使用了StringIO,导出使用的模块

1 import xlsxwriter
2 import StringIO

设置好IO对象,把文件写到io流中,过程见注释

 1 @app.route('/down_excel')
 2 def down_excel():
 3     sio = StringIO.StringIO()
 4     workbook = xlsxwriter.Workbook(sio)  # 直接写到io中
 5     sheet = workbook.add_worksheet(u'sheet1')
 6     style = workbook.add_format()  # 设置风格
 7     sheet.merge_range(0, 0, 0, 5, 'aaa')  # 合并单元格
 8     sheet.write('A2', u'内容', style)
 9     for i in range(2, 10):
10         sheet.write(i, 2, 1)
11     sheet.write(11, 2, '=SUM(1:10)')  # 增加公式
12     sheet.set_column(0, 5, 10)  # 设置列宽
13     sheet.set_default_row(35)  # 设置默认行高
14     workbook.close()  # 需要关闭
15     sio.seek(0)  # 找到流的起始位置
16     resp = make_response(sio.getvalue())
17     resp.headers["Content-Disposition"] = "attachment; filename={}.xlsx".format('name')
18     resp.headers['Content-Type'] = 'application/x-xlsx'
19     return resp

如果觉得生成的excel中,格式不好看,可以设置一些默认格式,我在这里写了一个函数,可以直接在添加format时使用,如下

def xlsx_style(**kwargs):
    style = {
        'bold': kwargs.get('bold', False),  # 加粗
        'font_name': kwargs.get('font_name', 'SimSun'),  # 字体类型,默认宋体
        'font_size': kwargs.get('font_size', 12),  # 字体大小,默认12
        'font_color': kwargs.get('font_color', '#000000'),  # 字体颜色,黑色
        'align': kwargs.get('align', 'center'),  # 默认水平居中
        'valign': kwargs.get('valign', 'vcenter'),  # 默认垂直居中
        'text_wrap': kwargs.get('text_wrap', True),  # 默认自动换行
        'top': kwargs.get('top', 1),  # 上边界,线条宽度
        'bottom': kwargs.get('bottom', 1),  # 边界
        'left': kwargs.get('left', 1),  # 边界
        'right': kwargs.get('right', 1),  # 边界
        'bg_color': kwargs.get('bg_color', '#FFFFFF'),  # 背景颜色,白色
        # 其他类型设置格式可以接着写
    }

    return style

在这里使用

head_style = workbook.add_format(xlsx_style(bold=True, font_size=20))
body_style = workbook.add_format(xlsx_style(bg_color='#FFFF00'))
worksheet.write(2, 5, 'aaa', body_style)

 

转载于:https://www.cnblogs.com/qiaojushuang/p/7597935.html

PyQt5的TableWidget可以配合pandas库以及openpyxl或xlsxwriter模块将数据导出Excel文件。下面是一个简单的例子,说明如何使用xlsxwriter导出包含表头的Excel文件: 首先,你需要安装必要的库,通过pip安装: ```bash pip install pandas xlsxwriter ``` 然后,在Python,你可以这样做: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem import pandas as pd from xlsxwriter import Workbook class ExportToExcel(QWidget): def __init__(self): super().__init__() self.init_ui() def init_ui(self): # 创建TableWidget self.table = QTableWidget() self.table.setColumnCount(3) # 设定列数 self.table.setRowCount(5) # 设定行数 self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender']) # 设置表头 # 添加一些示例数据 for i in range(3): item = QTableWidgetItem(f"Row {i+1}") self.table.setItem(i, 0, item) self.table.setItem(i, 1, QTableWidgetItem(str(i*10))) self.table.setItem(i, 2, QTableWidgetItem("Male" if i % 2 == 0 else "Female")) # 函数用于保存数据到Excel def export_to_excel(): data = self.table.model().data(self.table.indexes()) # 获取数据 df = pd.DataFrame(data, columns=self.table.horizontalHeaderItem(i).text() for i in range(self.table.columnCount())) book = Workbook('output.xlsx') writer = pd.ExcelWriter(book, engine='xlsxwriter') # 创建Excel writer df.to_excel(writer, sheet_name='Sheet1') # 写入数据 writer.save() # 保存工作簿 # 按钮点击事件,导出数据 btn_export = QPushButton('Export to Excel') btn_export.clicked.connect(export_to_excel) layout = QVBoxLayout() layout.addWidget(self.table) layout.addWidget(btn_export) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) ex = ExportToExcel() ex.show() sys.exit(app.exec_()) ``` 在这个例子,当用户点击“Export to Excel”按钮时,程序会将TableWidget的数据转换成pandas DataFrame,并使用xlsxwriter将其写入名为“output.xlsx”的Excel文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值