当前位置: 首页 > news >正文

通过 pip 直接安装免费版本:

pip install Spire.Xls.Free

安装完成后,在代码中引入核心模块:

from spire.xls import * from spire.xls.common import *

核心对象包括Workbook(工作簿)、Worksheet(工作表)和CellRange(单元格区域),三者构成了 Excel 操作的基础层级。


场景1:一维列表导出单列数据

一维列表是最简单的数据结构,通常对应 Excel 中的单列数据,例如产品名称列表、员工工号序列等。

实现思路

  1. 创建工作簿并获取工作表
  2. 遍历列表,按行索引依次写入单元格
  3. 调整列宽以优化显示效果
  4. 保存文件并释放资源

完整代码

from spire.xls import * from spire.xls.common import * def list_to_single_column(data_list, output_path, sheet_name="数据"): """将一维列表导出为Excel单列数据""" # 创建工作簿 workbook = Workbook() # 清除默认工作表,新建指定名称的工作表 workbook.Worksheets.Clear() sheet = workbook.Worksheets.Add(sheet_name) # 遍历列表写入单元格,从第1行第1列开始 for index, value in enumerate(data_list): sheet.Range[index + 1, 1].Value = str(value) # 自动调整列宽 sheet.AllocatedRange.AutoFitColumns() # 保存为xlsx格式 workbook.SaveToFile(output_path, ExcelVersion.Version2016) workbook.Dispose() # 调用示例 if name == "main": products = ["笔记本电脑", "机械键盘", "无线鼠标", "27寸显示器", "外接硬盘"] list_to_single_column(products, "single_column.xlsx")

要点说明

  • 行号与列号均从 1 开始计数,这与 Excel 的原生索引方式一致
  • Value属性会自动将输入转为字符串存储,若需保留数值类型可使用NumberValue
  • AutoFitColumns()方法根据内容自动调整列宽,避免内容被截断

场景2:二维列表导出结构化表格

二维列表(列表嵌套列表)是最接近 Excel 表格结构的数据形式,每一个子列表对应一行数据,通常配合表头使用。

实现思路

  1. 分离表头与数据行,分别写入
  2. 双层循环遍历二维列表,按行列坐标写入单元格
  3. 对表头区域应用基础样式,增强可读性
  4. 批量自适应列宽

完整代码

from spire.xls import * from spire.xls.common import * def list_2d_to_excel(headers, data_rows, output_path, sheet_name="数据表"): """将二维列表导出为带表头的Excel表格""" workbook = Workbook() workbook.Worksheets.Clear() sheet = workbook.Worksheets.Add(sheet_name) # 写入表头(第1行) for col_idx, header in enumerate(headers): cell = sheet.Range[1, col_idx + 1] cell.Value = header # 表头样式:加粗、背景色 cell.Style.Font.IsBold = True cell.Style.Color = Color.get_LightBlue() cell.Style.HorizontalAlignment = HorizontalAlignType.Center # 写入数据行(从第2行开始) for row_idx, row_data in enumerate(data_rows): for col_idx, value in enumerate(row_data): # 根据数据类型选择写入方式 cell = sheet.Range[row_idx + 2, col_idx + 1] if isinstance(value, (int, float)): cell.NumberValue = float(value) else: cell.Value = str(value) # 添加边框 data_range = sheet.Range[1, 1, len(data_rows) + 1, len(headers)] data_range.BorderAround(LineStyleType.Thin) data_range.BorderInside(LineStyleType.Thin) # 自适应列宽 sheet.AllocatedRange.AutoFitColumns() workbook.SaveToFile(output_path, ExcelVersion.Version2016) workbook.Dispose() # 调用示例 if name == "main": headers = ["员工ID", "姓名", "部门", "月薪", "在职状态"] employees = [ [1001, "张明", "研发部", 15000, True], [1002, "李华", "产品部", 13500, True], [1003, "王芳", "设计部", 12800, False], [1004, "赵强", "测试部", 11500, True] ] list_2d_to_excel(headers, employees, "employee_table.xlsx")

技术细节

  • 数据类型区分:数值型数据使用NumberValue写入,可在 Excel 中参与公式计算;字符串使用Value属性
  • 区域批量操作:通过sheet.Range[行1, 列1, 行2, 列2]获取矩形区域,可一次性设置边框、对齐方式等样式
  • 布尔值处理:直接写入时会显示为 TRUE/FALSE,若需自定义显示文本需转换为字符串
http://www.jsqmd.com/news/1139139/

相关文章:

  • 2026年下半年AI量化提效,先说清真正问题
  • 企业软件选型实操手册:规避开发风险,锁定优质交付
  • 企业AI建设的终局是认知体系
  • python-LangGraph框架(3-31-LangGraph 「合并式状态管理」的原理与实践)
  • 对比进口低频ADCP,偶信ADCP 75K在采购与维保层面有哪些高性价比优势?
  • 矿石成分与酸耗的‌物料衡算(配矿均化、高压反应釜)
  • 【JAVA毕设源码分享】基于springboot元宇宙平台的房屋租赁管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • Lerobot repository解析
  • 基于SpringBoot的环保知识普及平台的设计与实现毕业设计任务书
  • 上班族备战 10 月成人高考怎么高效备考?
  • python-LangGraph框架(3-29-LangGraph 「覆盖式状态」的原理与实践)
  • HappyHorse AI 视频提示词完全指南:4步引导 + 五要素公式 + 常见坑解法
  • 【Java课程设计/毕业设计】基于 SpringBoot 的家政服务分类管理系统的设计与实现 基于前后端分离的智能化便民家政运维系统【附源码、数据库、万字文档】
  • 代码复杂度的代价远比你想象的大!
  • 字典列表导出为 Excel
  • FreeLLMAPI安装(WSL版)
  • 【HackMyVM】latestWasALie
  • 如何一键获取国家中小学智慧教育平台电子课本?这个免费工具帮你解决备课难题
  • 为什么“双触发器”不够用?
  • 国际eSIM物联卡如何远程写号切换运营商?深度适配多国物流场景解析
  • 常德本地环保装修哪家技术强
  • 2026最新实操:小白也能用游戏护航小程序,快速搭建校园电竞服务SaaS系统
  • 终极GTA5安全防护菜单:YimMenu完全使用指南
  • 一站式可观测新选择:OpenObserve 深度对标 ELK / Grafana+Prometheus / Netdata,附Docker一键部署实战
  • Python 获取 A 股 K 线、实时行情和五档盘口:QuantDash API 示例
  • ubuntu使用很久之后网络突然连不上解决方法
  • WebAssembly AI 插件热加载:运行时替换模块而不丢会话状态
  • 有什么针对新闻媒体行业的安全解决方案
  • 蔡司三坐标能否检测齿轮?完整检测方案详解
  • Copilot上下文感知提醒:基于Graph API的工作流驱动机制