以下是导出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. docker镜像仓库管理Harbor

    一 部署Harbor 前提: Harbor需要运行在docker上面,所以首先需要在harbor部署机器上面自行部署docker和docker-compose docker-compose安装命令如下 ...

  2. 微软正式发布:.NET Aspire 云原生开发框架

    前言 2024年5月22日北京时间,微软正式发布全新的.NET云原生开发框架-.NET Aspire. .NET Aspire 是一个新的平台无关.语言无关的框架,旨在简化 .NET云原生服务的开发, ...

  3. spring boot整合maybatis plus 的 文件生成代码

    /** * 代码生成 */public class AutoGenerator_ { public static void main(String[] args) { AutoGenerator ge ...

  4. Android 13 - Media框架(9)- NuPlayer::Decoder

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder.这一节会提前讲到 M ...

  5. Opencv笔记(11)随机数发生器cv::RNG

    一个随机数对象(RNG)用来产生随机数的伪随机序列.这样做的好处是你可以方便地得到多重伪随机数流.一旦随机数发生器创建,就会开始按需提供产生随机数的"服务",无论是平均分布还是正态 ...

  6. 视图结构 wxml 列表渲染 for

    WXML是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. wxml是一个严格的标记性语言,有开始就必须有结束,单标签就一个有结束符 5.1.数据绑定 在js逻辑层中定义数据源, ...

  7. 此计算机上不存在虚拟机管理服务(VMMS)。请确保已启用“Hyper-V 服务”功能。

    此计算机上不存在虚拟机管理服务(VMMS).请确保已启用"Hyper-V 服务"功能. 解决方法: 在主板BIOS 里开启VT. Intel Virtualization Tech ...

  8. WIN8 WIN10 WIN11离线安装 .NET 3.5

    WIN8 WIN10 WIN11离线安装 .NET 3.5 以WIN10为例: 1.双击WIN10 ISO 镜像,看挂载的是哪个盘符.我这边是E:. 2.使用 WIN + X 快捷键,打开 Windo ...

  9. rabbitMq消息接收转换对象,Json解析字符串报错syntax error, expect {, actual string, pos 0, fastjson-version 1.2.62解决

    Expected BEGIN_OBJECT but was STRING at line 1 column 2 path $ syntax error, expect {, actual string ...

  10. HBase2版本的修复工具HBCK2

    一.hbase出现的问题 1.元数据表hbase:namespace 不在线 导致查询数据时 master is initing 2.一些表的region一直处于opening状态 3.region ...