使用Python實(shí)現(xiàn)高效復(fù)制Excel行列與單元格
在日常辦公自動(dòng)化或數(shù)據(jù)處理場(chǎng)景中,復(fù)制 Excel 中的單元格、行、列是高頻需求——比如批量復(fù)用模板數(shù)據(jù)、遷移特定列數(shù)據(jù)、復(fù)制帶格式的報(bào)表內(nèi)容等。今天給大家分享一款免費(fèi)的 Python 庫(kù):Free Spire.XLS for Python,它無(wú)需依賴(lài) Microsoft Excel,就能實(shí)現(xiàn) Excel 文件的讀寫(xiě)與復(fù)制操作,支持 .xls 和 .xlsx 格式,免費(fèi)版足以滿(mǎn)足大多數(shù)個(gè)人和小型項(xiàng)目需求。本文將從環(huán)境準(zhǔn)備到實(shí)戰(zhàn)案例,詳細(xì)講解如何使用該免費(fèi)庫(kù)實(shí)現(xiàn)「單元格復(fù)制」「行復(fù)制」「列復(fù)制」。
一、環(huán)境準(zhǔn)備:安裝Free Spire.XLS for Python
首先通過(guò)pip命令安裝庫(kù),支持Python 3.6及以上版本:
pip install spire.xls.free
注意:免費(fèi)版限制單次處理最多5個(gè)工作表、每個(gè)工作表最多200行數(shù)據(jù),適用于小型文件
二、核心實(shí)戰(zhàn):復(fù)制 Excel 元素的3種場(chǎng)景
以下案例將圍繞「測(cè)試文件source.xlsx」展開(kāi),文件結(jié)構(gòu)如下(Sheet1為源數(shù)據(jù),Sheet2為目標(biāo)工作表):
| A列(姓名) | B列(年齡) | C列(城市) |
|---|---|---|
| 張三 | 25 | 北京 |
| 李四 | 30 | 上海 |
| 王五 | 28 | 廣州 |
場(chǎng)景1:復(fù)制 Excel 單元格 / 單元格范圍
對(duì)于單個(gè)單元格或連續(xù)單元格范圍,使用 CellRange.Copy()方法,支持精準(zhǔn)復(fù)制指定區(qū)域。
關(guān)鍵參數(shù)說(shuō)明:
destRange:目標(biāo)單元格 / 范圍對(duì)象(需與源范圍尺寸一致)copyOptions:復(fù)制選項(xiàng)(默認(rèn)CopyRangeOptions.All)
實(shí)戰(zhàn)代碼 :復(fù)制單個(gè)單元格
需求:將Sheet1中A1(姓名)復(fù)制到A4。
from spire.xls import *
from spire.xls.common import *
# 1. 加載Excel文件
workbook = Workbook()
workbook.LoadFromFile("source.xlsx")
# 2. 獲取源工作表(Sheet1)
worksheet = workbook.Worksheets[0] # 索引從0開(kāi)始,對(duì)應(yīng)Sheet1
# 3. 復(fù)制單元格(源單元格.Copy(目標(biāo)單元格))
# 復(fù)制A1到A4
source_cell = worksheet.Range["A1"] # 通過(guò)單元格地址獲取
target_cell = worksheet.Range["A4"]
source_cel1.Copy(target_cell, CopyRangeOptions.All)
# 4. 保存結(jié)果文件
workbook.SaveToFile("result_cell_copy.xlsx")
workbook.Dispose() # 釋放資源,避免文件占用
print("單元格復(fù)制完成!")
如需復(fù)制單元格范圍,如 A1: C3,使用 worksheet.Range["A1: C3"]。
場(chǎng)景2:復(fù)制 Excel 中的指定行
行復(fù)制適用于批量復(fù)用整行數(shù)據(jù)(如模板行、表頭行)。提供 Worksheet.CopyRow() 方法復(fù)制行,支持同步數(shù)據(jù)、格式、公式。
關(guān)鍵參數(shù)說(shuō)明:
sourceRow:源行對(duì)象(需通過(guò)Worksheet.Rows[index]獲取,索引從 0 開(kāi)始)destSheet:目標(biāo)工作表對(duì)象destRowIndex:目標(biāo)行索引(從 1 開(kāi)始,對(duì)應(yīng) Excel 實(shí)際行號(hào))copyOptions:復(fù)制選項(xiàng)(CopyRangeOptions.All表示復(fù)制所有屬性:值、格式、公式等)
實(shí)戰(zhàn)代碼:跨工作表復(fù)制行
復(fù)制 Sheet1 的第2行(李四、30、上海)到 sheet2 第1行。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("source.xlsx")
worksheet = workbook.Worksheets[0]
# 獲取源工作表與目標(biāo)工作表
source_sheet = workbook.Worksheets[0] # Sheet1(源)
target_sheet = workbook.Worksheets[1] # Sheet2(目標(biāo))
# 復(fù)制指定行
source_row = source_sheet.Rows[1]
source_sheet.CopyRow(row, target_sheet, 1, CopyRangeOptions.All)
workbook.SaveToFile("result_row_copy.xlsx")
workbook.Dispose()
場(chǎng)景3:復(fù)制 Excel 中的指定列
列復(fù)制與行復(fù)制邏輯類(lèi)似,適用于遷移特定字段。使用 Worksheet.CopyColumn() 方法復(fù)制列,參數(shù)如下:
sourceColumn:源列對(duì)象(通過(guò)Worksheet.Columns[index]獲取,索引從 0 開(kāi)始)destColIndex:目標(biāo)列索引(從 1 開(kāi)始,對(duì)應(yīng) Excel 實(shí)際列號(hào))- 其他參數(shù)與
CopyRow一致
實(shí)戰(zhàn)代碼:通工作表復(fù)制列
復(fù)制 Sheet1 的C列(城市)到同工作表的D列。
from spire.xls import Workbook
workbook = Workbook()
workbook.LoadFromFile("source.xlsx")
worksheet = workbook.Worksheets[0]
# 復(fù)制C列(第3列)到D列(第4列)
source_column = worksheet.Columns[2]
worksheet.CopyColumn(source_column, worksheet, 4, CopyRangeOptions.All)
workbook.SaveToFile("result_column_copy.xlsx")
workbook.Dispose()
注意事項(xiàng): 務(wù)必在操作完成后調(diào)用 workbook.Dispose(),或使用 with 語(yǔ)句自動(dòng)釋放資源,避免Excel文件被占用。
Free Spire.XLS for Python 是一款免費(fèi)輕量化的 Excel 處理工具,相比 openpyxl、xlrd 等庫(kù),它在「格式復(fù)制」「公式處理」上更便捷,且無(wú)需依賴(lài)Excel環(huán)境,無(wú)論是簡(jiǎn)單的數(shù)據(jù)復(fù)制還是復(fù)雜的報(bào)表模板復(fù)用,這些方法都能滿(mǎn)足高效辦公需求。
到此這篇關(guān)于使用Python實(shí)現(xiàn)高效復(fù)制Excel行列與單元格的文章就介紹到這了,更多相關(guān)Python復(fù)制Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Cron定時(shí)任務(wù)中Pytest腳本無(wú)法發(fā)送郵件的問(wèn)題
文章探討解決在 Cron 定時(shí)任務(wù)中運(yùn)行 Pytest 腳本時(shí)郵件發(fā)送失敗的問(wèn)題,先優(yōu)化環(huán)境變量,再檢查 Pytest 郵件配置,接著配置文件確保 SMTP 服務(wù)正常,包括編輯相關(guān)文件、配置認(rèn)證信息等,還提及常見(jiàn)問(wèn)題排查,如防火墻等,最終使郵件功能在定時(shí)任務(wù)中成功運(yùn)行2025-01-01
利用Python實(shí)現(xiàn)sqlite3增刪改查的封裝
在一些小的應(yīng)用中,難免會(huì)用到數(shù)據(jù)庫(kù),Sqlite數(shù)據(jù)庫(kù)以其小巧輕便,無(wú)需安裝,移植性好著稱(chēng),下面這篇文章主要給大家介紹了關(guān)于利用Python實(shí)現(xiàn)sqlite3增刪改查的封裝,需要的朋友可以參考下2021-12-12
Python爬蟲(chóng)實(shí)例——scrapy框架爬取拉勾網(wǎng)招聘信息
這篇文章主要介紹了Python爬蟲(chóng)實(shí)例——scrapy框架爬取拉勾網(wǎng)招聘信息的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
Selenium啟動(dòng)Chrome時(shí)配置選項(xiàng)詳解
這篇文章主要介紹了Selenium啟動(dòng)Chrome時(shí)配置選項(xiàng)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Django中信號(hào)signals的簡(jiǎn)單使用方法
這篇文章主要給大家介紹了關(guān)于Django中信號(hào)signals的簡(jiǎn)單使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

