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

Python 教程:快速复制 Excel 工作表

核心准备工作

在进入文章的主题之前,我们需要先搭建好开发环境。Free Spire.XLS for Python 是一个功能强大且完全独立的类库,在不安装Microsoft Excel的情况下,就能轻松完成创建、读取、编辑和转换 Excel 文件的工作。

你可以通过 pip 命令将其安装到你的 Python 环境中:

pip install Spire.Xls.Free

安装完成后,我们就可以开始构建核心的脚本了。

在同一个 Excel 工作簿中复制工作表

在处理日常报表时,我们经常需要以某个现有的数据模板为基础,在同一个 Excel 文件中快速克隆出一个或多个新的工作表。比如,从 1 月数据模板直接复制出 2 月数据的初始框架。

使用 Free Spire.XLS 提供的Workbook.Worksheets.CopyFrom()方法,我们可以快速复制工作表,并且新工作表会保留原表的格式。

完整代码示例

from spire.xls import * from spire.xls.common import * # 创建一个工作簿对象 workbook = Workbook() # 从文件中加载一个工作簿 workbook.LoadFromFile("北美人口数量前十.xlsx") # 获取源工作表 sourceSheet = workbook.Worksheets[0] # 设置目标工作表的名称为源工作表名称 + "_复制" sheetName = sourceSheet.Name + "_复制" # 在同一工作簿中添加目标工作表,并使用设置的名称 destSheet = workbook.Worksheets.Add(sheetName) # 将源工作表内容复制到目标工作表 destSheet.CopyFrom(sourceSheet) # 将工作簿保存到文件,使用2016版本的Excel格式 workbook.SaveToFile("复制工作表.xlsx", ExcelVersion.Version2016) # 释放工作簿的资源 workbook.Dispose()

关键代码解析

在上方的代码中,我们主要用到了创建和复制两个步骤:

  • workbook.Worksheets.Add():首先在工作簿中动态创建一个指定名称的全新空白工作表对象。
  • destSheet.CopyFrom():这是代码的核心方法。通过目标工作表调用CopyFrom(),并传入源工作表对象。它会在后台进行深度数据迁移,不仅能将源表中的数据、单元格样式、条件格式等复制过来,还会自动适配目标表的结构。

从另一个工作簿中复制 Excel 工作表

除了在单个文件内部进行克隆,跨跨文件的数据整合同样非常普遍。例如,将各个员工独立上报的 Excel 业绩表,汇总合并到一个总的目标工作簿中。

跨工作簿复制的核心逻辑是:同时打开源工作簿和目标工作簿,在目标文件中创建新表后进行CopyFrom()跨文件复制。同时,为了防止字体或颜色由于环境不同而走样,还需要同步两者的主题样式。

完整代码示例

from spire.xls import * from spire.xls.common import * # 创建一个工作簿对象 sourceWorkbook = Workbook() # 从文件中加载一个工作簿 sourceWorkbook.LoadFromFile("/input/北美人口数量前十.xlsx") # 获取源工作表 sourceSheet = sourceWorkbook.Worksheets[0] # 设置目标工作表的名称为源工作表名称 + "_复制" sheetName = sourceSheet.Name + "_复制" # 创建一个目标工作簿对象 destWorkbook = Workbook() # 从文件中加载另一个工作簿 destWorkbook.LoadFromFile("/input/南美人口数量前十.xlsx") # 添加目标工作表,并使用设置的名称 destSheet = destWorkbook.Worksheets.Add(sheetName) # 将源工作表内容复制到目标工作表 destSheet.CopyFrom(sourceSheet) # 复制源工作簿的主题样式到目标工作簿 destWorkbook.CopyTheme(sourceWorkbook) # 保存修改后文件 destWorkbook.SaveToFile("/output/复制不同文件的工作表.xlsx", ExcelVersion.Version2016) sourceWorkbook.Dispose() destWorkbook.Dispose()

关键代码解析

跨文件操作的关键在于处理两个不同的 Workbook 实例:

  • destSheet.CopyFrom()CopyFrom()方法非常智能,它不仅支持同一个 Excel 文件内的数据传输,也能完美支持跨越不同 Workbook 对象的表数据复制。执行时,类库会在后台自动处理跨文件的底层 XML 结构和数据映射。
  • destWorkbook.CopyTheme():Excel 的颜色、字体往往依赖于文件本身定义的主题方案。如果不调用这一步,复制过去的表格可能会因为目标工作簿的主题不同,而出现颜色变色、字体走样的情况。通过CopyTheme()可以确保两个文件的视觉效果保持一致。

复制中的高级个性化设置与样式覆盖

在执行CopyFrom()操作时,源工作表中的行列宽度、窗口冻结以及页面打印设置其实已经被默认同步克隆过来了。但在实际的应用中,我们可能需要对新生成的表格进行二次加工或样式覆盖——例如为新装载的数据动态扩充列宽,或者为汇总表定制不同的打印方向。你可以根据实际的定制化需求,灵活地将以下代码片段嵌入到上面的完整代码中:

动态调整行列宽度

虽然克隆时会带过来源表的行列宽,但由于新表格可能会用来填充不同的业务数据,某些字段长度可能会发生变化。如果新数据的长度超出了原单元格的承载范围,Excel 就会显示 ### 溢出符号,不便于阅览。

利用下面这段代码,你可以在工作表复制完成后,为指定行或列重新划定尺寸,覆盖原有的行高列宽:

# 调整特定列的列宽(例如:为容纳更长的数据,将目标表的第1列即A列宽度设为25) destSheet.SetColumnWidth(1, 25.0) # 调整特定行等行高(例如:将目标表的第1行即标题行高度设为30) destSheet.SetRowHeight(1, 30.0)

自定义页面与打印设置

当你需要为生成的新表重写打印边界,或者改变其输出方向时,可以通过操作 PageSetup 属性组进行显式覆盖:

# 将目标表显式修改为横向打印布局(Landscape),覆盖源表的纵向设置 destSheet.PageSetup.Orientation = "Landscape" # 重新规划页边距(单位:英寸) destSheet.PageSetup.TopMargin = 0.5 # 上边距 destSheet.PageSetup.BottomMargin = 0.5 # 下边距 # 重新指定针对新表的打印区域,避免打印出表格外无意义的空白单元格 destSheet.PageSetup.PrintArea = "A1:G20"

重设冻结窗格

在复制完成后,我们还可以对目标表的视图锁定状态进行调整。通过调用窗格冻结的 API,我们可以把关键的行列固定在屏幕上,极大地提升最终用户的阅读体验:

# 重新锁定窗口视图:该方法接收行索引和列索引(从1开始计数) # FreezePanes(2, 2) 意味着冻结第二行和第二列上方/左侧的内容,即固定目标表的“第一行”和“第一列” destSheet.FreezePanes(2, 2)

强制刷新全局公式计算

如果源工作表中包含了 SUM、VLOOKUP 或者其他依赖上下文的复杂计算公式,跨文件复制可能会引发公式引用关系重构。直接保存的话有些文件可能无法在打开时自动刷新数值。

在保存文件前的最后一步,我们可以调用目标工作簿的计算引擎进行强制重算,确保输出的 Excel 在任何设备上打开时,显示的都是最终正确的数值:

# 激活目标工作簿内置的计算引擎,强制更新其内部所有公式的最新计算结果 destWorkbook.CaculateAllValue()
http://www.jsqmd.com/news/1114005/

相关文章:

  • 04年老玩家的回忆,这次居然能在手机上重温,谁懂!《墨香情》这款手游最近上线,直接把我拉回了那种网吧熬夜不舍得下线的日子。
  • NUS地平线发布EventDrive:事件相机首次进入自动驾驶决策中心,打通感知到规划全链路
  • 停止内耗!这套“极简居家自律系统”,帮你重新夺回身体控制权
  • ChatGPT思维链效能跃迁公式:Step-by-step × Self-Consistency × Program-of-Thought = 89.3%任务通过率(IEEE最新基准验证)
  • CAXA CAM制造工程师下载安装教程(附安装包)2026最新版(CAXA CAM 2023)
  • 从Unity场景搭建到IoT数据驱动:我的数字孪生入门路径分享
  • UE4SS项目对Unreal Engine 5.4版本的技术适配深度分析
  • 2026年AI大模型API中转站全网硬核实测排名:五大主流平台全维度数据横对比选型指南
  • 30+单身人士高效相亲指南:核心逻辑与实战技巧
  • 重组胶原蛋白供应厂家怎么选?从评价标准到实战选型指南
  • 15款专业字体一键获取:设计师和开发者的终极字体资源宝库
  • AI工程化转型:从实验室到生产线的实践指南
  • keil multi-project workspace
  • OpenCV边缘检测与高斯模糊实战指南
  • 明略科技 Octo 平台:打破 Agent 协作困境,构建人和 AI 协作新范式
  • 企业大模型落地避坑指南:基于 80 个标杆案例的全流程决策实施框架
  • 2026青岛靠谱小儿推拿推荐,家长口碑认证这几家
  • Web安全实战:XSS漏洞利用与自动化文件上传测试环境搭建
  • OpenTabletDriver技术深度解析:跨平台数位板驱动的架构设计与实现原理
  • LIME与SHAP实战指南:让AI模型可解释、可信任、可交付
  • Selenium文件上传实战:绕过系统对话框的send_keys()方案详解
  • 如何 在vs code 中使用 Claude code
  • 为什么每年都需要对福禄克DSX8000系列进行原厂校准
  • 深入解析Roundcube安全响应机制:从漏洞披露到实战升级
  • Diffusion、GAN与VAE工业落地选型实战指南
  • 5分钟打造专属Mac桌面歌词:LyricsX让音乐更有温度
  • DeepSeek-V2大模型训练硬件选型实战:昇腾与英伟达的场景化权衡
  • Destiny 2单人模式终极指南:高效实现无干扰游戏体验
  • 】[RadiansToDegrees节点]原理解析与实际应用
  • AI编程工具怎么选?5款主流工具半年深度体验的实战建议