以下是导出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. AIRIOT答疑第6期|如何使用二次开发引擎?

    ​​灵活扩展,满足客户定制化需求   AIRIOT物联网低代码平台提供丰富的前端.后台服务二次开发接口,具备灵活的组件服务部署与管理能力,对任何功能模块进行二次开发,满足客户各类二次开发需求.支持多种 ...

  2. Java JVM——1.JVM与Java体系结构

    前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! ✘ 想解决线上JVM GC问题,但却无从下手. ✘ 新项目上线,对各 ...

  3. Android 12(S) MultiMedia Learning(二)MediaPlayer Java

    Android提供了MediaPlayer这样一个简单易用的音视频java播放接口,通过几个接口调用即可实现音视频播放. 源码位置 http://aospxref.com/android-12.0.0 ...

  4. 鸿蒙极速入门(二)-开发准备和HelloWorld

    一.开发准备 本篇博客基于的系统版本:华为官方HarmonyOS版本3.1.OpenHarmony版本4.0Beta 开发语言 ArkTS语言(推荐) JS语言(支持) Java语言(已放弃支持) 从 ...

  5. 用.NET代码生成JSON Schema 验证器

    问题 对于验证复杂JSON数据是否合法的需求,通常的解决方式是标准JSON Schema,.Net下有对应的JSON Schema实现库.应用程序通常需要将标准JSON schema传入实现库,来做后 ...

  6. 音视频-YUV数据格式

    一.YUV格式 1)kCVPixelFormatType_420YpCbCr8PlanarFullRange = 'f420' 对应YUV I420格式 2)kCVPixelFormatType_42 ...

  7. 鸿蒙HarmonyOS实战-Web组件(Cookie及数据存储)

    前言 Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息.它由网站服务器发送到用户的浏览器,并存储在用户的计算机上.每当用户访问该网站时,浏览器将发送该Cookie回 ...

  8. github加速与添加ssh密钥

    part1-github加速 此处推荐Fetch GitHub Hosts,文章的中间位置有手动添加dns的内容,十分完备,此处不赘述.不知道是不是我家网络抽风,总是得代理才能进githubQAQ难受 ...

  9. sort awk 文本处理命令

    sort: 1.将文件的每一行作为一个单位,相互比较 2.默认升序 3.以字符来进行对比,从首字符开始往后,依次按ASCII码值排序 sort 显示文件内容 (类似cat) 选项: -u 去掉重复行 ...

  10. Qt_Demo_1:实现一个简易的记事本

    1  环境: 系统:windows 10 代码编写运行环境:Qt Creator 4.4.1 (community) GitHub:https://github.com/zhengcixi/Qt_De ...