以下是导出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. 超全、超简单Vue微信公众号授权登录指南

    <template> <div id="app"> <h1>微信授权登陆</h1> <div> <div> ...

  2. vue实现的常见的动画效果

    本文包括的动画: zoom-in zoom-in-left zoom-in-right zoom-in-top zoom-in-bottom zoom-in-center-x zoom-in-cent ...

  3. Django——admin后台上传文件

    from django.db import models class Mytb(models.Model): file = models.FileField(upload_to='uploads/') ...

  4. Tron_CTF2024新生赛 MISC

    猿神?岂洞!! 题目: 腿短的好奇怪,难道有东西? 密码在这,好像有电!.txt 0362014324221316063736154275 还有一个压缩包. 我的解答: 036201432422131 ...

  5. S212-搜索+字典树-212. Word Search II-(Hard)

    一.题目 题目很简单,输入一个字母组成的二维数组,以某一个字母为起点,向.上下左右搜索.练成的字符看是不是在给定的字符串数组中 二.解答 通过深度优先搜索,每一步和数组中的字符串匹配是可以计算出来正确 ...

  6. Python 潮流周刊#53:我辈楷模,一个约见诺奖得主,一个成为核心开发者

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. NOIP模拟70

    T1 暴雨 解题思路 \(f_{i,j,k,0/1}\) 表示前 i 个铲平 j 个当前最高的是 k 并且当前是 奇数/偶数 的方案数. 由于只可以铲平 k 块,因此对于同一种 \(i,j\) 而言高 ...

  8. Java中GUI

    目录 1.Java GUI 概述 2.容器 2.1 窗口 2.2 弹窗和对话框 对话框 自定义弹窗 2.3 面板 普通面板 滚动面板 分隔面板 选项卡面板 3.布局 3.1.流式布局 3.2.网格布局 ...

  9. Qt OPC UA通信

    介绍 OPC UA全称Open Platform Unified Architecture,开放平台统一架构,是工业自动化领域通用的数据交换协议,它有两套主要的通信机制:1.客户端-服务器通信:2.发 ...

  10. LeetCode 719. 找出第 k 小的距离对 (Java)

    题目: 给定一个整数数组,返回所有数对之间的第 k 个最小距离.一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值. 示例 1: 输入:nums = [1,3,1]k = 1输出:0 解释 ...