以下是导出EXCEL确保表头左右两列显示正确值的代码示例:

from openpyxl import Workbook
from openpyxl.styles import Alignment # 创建一个新的工作簿和工作表
wb = Workbook()
ws = wb.active # 模拟订单头信息(替换为您的实际数据获取方法)
order_header = {
'od_no': 'SO001',
'od_date': '2024-07-16',
'cu_no': {'cu_name': '客户A'},
'cu_bil': {'cu_name': '账款归属A'},
'po_no': 'PO001',
'pa_no': {'pa_name': '业务员A'},
'sales_class': {'code': '内外销'},
'checkout_no': {'code': '结账方式A'},
'checkout_days': 30,
'payment': {'code': '付款方式A'},
'currency': {'code': 'USD'},
'cny': 1.2,
'tax': {'code': '税别A'},
'vat': 0.15,
'ts': {'code': '交易条件A'},
'frt': {'code': '货运方式A'},
'ship_to': {'cu_name': '收货方A'},
'ship_address': {'cu_address': '收货地址A'},
'od_amount': 1000.0,
'od_taxAmount': 150.0,
'rmk': '备注信息'
} # 添加左侧表头信息
left_header = [
['销售订单单号', order_header['od_no']],
['单据时间', order_header['od_date']],
['客户', order_header['cu_no']['cu_name']],
['账款归属', order_header['cu_bil']['cu_name']],
['客户PO', order_header['po_no']],
['业务员', order_header['pa_no']['pa_name']],
['内外销别', order_header['sales_class']['code']],
['结账方式', order_header['checkout_no']['code']],
['结账天数', order_header['checkout_days']],
['付款方式', order_header['payment']['code']]
] # 添加右侧表头信息
right_header = [
['交易货币', order_header['currency']['code']],
['汇率', order_header['cny']],
['税别', order_header['tax']['code']],
['税率', order_header['vat']],
['交易条件', order_header['ts']['code']],
['货运方式', order_header['frt']['code']],
['收货方', order_header['ship_to']['cu_name']],
['收货地址', order_header['ship_address']['cu_address']],
['总金额', order_header['od_amount']],
['总税额', order_header['od_taxAmount']],
['备注', order_header['rmk']]
] # 添加左侧表头到工作表
for index, item in enumerate(left_header, start=1):
ws.cell(row=index, column=1, value=item[0])
ws.cell(row=index, column=2, value=item[1])
ws.merge_cells(start_row=index, start_column=1, end_row=index, end_column=2)
ws.cell(row=index, column=1).alignment = Alignment(horizontal='center') # 添加右侧表头到工作表
for index, item in enumerate(right_header, start=1):
ws.cell(row=index, column=3, value=item[0])
ws.cell(row=index, column=4, value=item[1])
ws.merge_cells(start_row=index, start_column=3, end_row=index, end_column=4)
ws.cell(row=index, column=3).alignment = Alignment(horizontal='center') # 保存工作簿到文件
wb.save('sales_order.xlsx')

在这段代码中:

  • order_header 模拟了订单头信息的字典结构,您需要根据实际情况从数据库或其他数据源中获取正确的订单头信息。
  • 使用 enumerate 函数来迭代 left_headerright_header 列表,并将每个值填充到对应的单元格中。
  • 每次迭代时,通过 ws.cell(row, column) 方法指定行和列来设置单元格的值,并使用 merge_cells 方法将左右两列的单元格合并。
  • 最后,保存工作簿到文件。

确保 order_header 中的字段和属性名称与您的实际数据模型一致,并根据需要进行调整。

Django导出EXCEL并确保表头左右两列显示的更多相关文章

  1. 润乾报表新功能–导出excel支持锁定表头

     在以往的报表设计中,锁定表头是会经常被用到的一个功能,这个功能不仅能使浏览的页面更加直观,信息对应的更加准确,而且也提高了报表的美观程度.但是,很多客户在将这样的报表导出excel时发现exce ...

  2. RS导出Excel交叉表角对应的列占用多列问题

    在Cognos报表展示的时候,很多用户为了计算会把数据报表导出成excel然后再做统计,于是乎我做的一张报表导出成Excel的时候就出现了这样的问题 从上图可以看出交叉表角对应的列 ‘一级手术’和‘二 ...

  3. 如何将文章列表用<li>分两列显示

    我们平时用ul或ol标签来罗列文章列表时默认是一列,为了美观起见,想把它们两列显示要如何操作呢?怎么用css定义它们? 其实相对比较简单,用几行css样式定义一下就够了,可以用div + css来控制 ...

  4. poi导出Excel报表多表头双层表头、合并单元格

    效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @ ...

  5. 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题

    这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...

  6. EasyPoi 导出Excel(ExcelExportEntity生成表头)

    [引入依赖] <!--easypoi--> <dependency> <groupId>cn.afterturn</groupId> <artif ...

  7. saiku导出excel单元格格式与中文列宽自动适应

    在saiku导出excel后打开发现单元格的整数也显示为小数,并且含有中文的列宽没有自动适应,解决办法如下: 打开ExcelWorksheetBuilder.java文件,找到applyCellFor ...

  8. django导出excel

    # coding:utf-8 from django.http import HttpResponse from xlwt import * import StringIO, os from test ...

  9. django 导出excel react下载 --- 导出并下载

    Dajngo查询数据,查询出来之后生成Excel保存本地 class ExportExcel(APIView): def post(self, request, *args, **kwargs): e ...

  10. Django导出excel中文乱码解决方案

    Django官方文档有关于怎么生成csv文件的方法 import csv from django.http import HttpResponse def some_view(request): # ...

随机推荐

  1. 线程安全使用 HashMap 的四种技巧

    这篇文章,我们聊聊线程安全使用 HashMap 的四种技巧. 1方法内部:每个线程使用单独的 HashMap 如下图,tomcat 接收到到请求后,依次调用控制器 Controller.服务层 Ser ...

  2. .net Mvc5Webapi接口接收参数为null的一种情况分享

    同样的前后端项目,其他接口用post接收自定义对象形式的参数,是能成功接收的.在这个前提下,出现某个接口接收的参数为null或值全是默认值,可能的原因是这样: 前端定义的参数的字段比后台定义的dto对 ...

  3. pidstat 命令查看nginx上下文切换

    pidstat -w -p 711 1 [root@leilei ~]# ps -ef|grep nginx root 13974 1 0 14:23 ? 00:00:00 nginx: master ...

  4. Qt-FFmpeg开发-实现录屏功能(10)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-实现录屏功能 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-实现录屏功能 1.概述 2.实现效果 3.FFmpeg录屏代码流程️‍️ ...

  5. ReplayKit2:声音回调时间戳问题

    一.ReplayKit2 框架回调中 视频.micphone声音.系统声音三路回调 - (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffe ...

  6. test(爱测试) 开源接口测试,敏捷测试管理平台10.2.7发布

    一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...

  7. 在 Excel 中使用 Python 自动填充公式

    安转Python包的国内镜像源 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 阿里云 https://mirrors.aliyun.com/pypi/si ...

  8. #9134.反转eehniy

    blog 题面 yinhee 去面试 Google 总裁. 面试官给他了一个长度为 \(n\) 的 \(01\) 串. 面试官给他以下两种操作是的这个序列前 \(n-m\) 个数字与后 \(n-m\) ...

  9. thinkpad-内置电池关闭方法

    -- -- 进入BIOS- Power- Disable Built-in Battery - 选择yes是关闭 (No打开内置电池)

  10. restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法

    restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法 1.JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰.具体返 ...