以下是导出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. 基于webapi的websocket聊天室(一)

    上一次我已经讲了在webapi主机上面加入websocket中间件. 这次就更进一步,搭建一个websocket局域网聊天室. 传送门-->webapi添加添加websocket中间件 下一篇 ...

  2. 【C#】使用WebHttpRequest调用Restful带token接口500 返回401 未授权错误

    测试对方的接口,发现单个调用对方接口是可以的,但是多个连续的调用对方接口时,会出现第一条调用一般是200,随后的调用就会报500,401未授权的错误,除了第一条后面的请求数据几乎都不得行. 我于是用f ...

  3. cmd shutdown命令:关机,重启,休眠

    一段时间后关机:shutdown -s -t 秒数效果是倒计时到该秒数后关机,例如shutdown -s -t 3600就是3600秒后关机,也就是一小时后关机 立即关机命令:shutdown -p关 ...

  4. 开发者说PaddleOCR的.NET封装与应用部署

  5. 【论文笔记】SegNet

    [深度学习]总目录 SegNet是Cambridge提出旨在解决自动驾驶或者智能机器人的图像语义分割深度网络,开放源码,基于caffe框架.SegNet运用编码-解码结构和最大池化索引进行上采样,最主 ...

  6. IDEA顺序启动多个Spring Boot微服务

    上个月公司新开发的一个项目,需要使用微服务,将单体服务拆分成多个微服务.但是每次修改代码之后都需要启动多个微服务,改个代码,都要修改五分钟,启动半小时,但是idea可以设置将多个服务依次启动,减少操作 ...

  7. php分页查询 子查询

     分页查询                 将查询结果只显示一部分                 通过两个参数:参数1 起始数据的索引下标                             参 ...

  8. 简单易懂的JSON框架

      分享一个由本人编写的JSON框架.   JSON反序列化使用递归方式来解析JSON字符串,不使用任何第三方JAR包,只使用JAVA的反射来创建对象(必须要有无参构造器),赋值,编写反射缓存来提升性 ...

  9. rest接口list参数接收

    list<String> post传参 ["1112","2222","3332"]list<Object> pos ...

  10. hibernate映射对照表

    2.3. Basic Types Basic value types usually map a single database column, to a single, non-aggregated ...