首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# Excel 跨工作表複製儲存格:含格式與純文字兩種模式

     編輯:關於C#

報表開發常需將第一張工作表的表頭或樣板區域複製到其他工作表。Excel 物件模型提供 Range.Copy 方法可一次複製內容與格式;若僅需複製純文字,則可搭配 Windows 剪貼簿實現。本文詳細示範兩種模式的用法與差異。

模式一:完整複製(含格式、公式、樣式)

Excel.Application app = new Excel.Application();
Excel.Workbook wb = app.Workbooks.Open(@"Z:\Book1.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app.DisplayAlerts = false;

Excel.Worksheet srcSheet = (Excel.Worksheet)wb.Worksheets.get_Item(1);
Excel.Range srcRange = srcSheet.get_Range("A1", Type.Missing);
srcRange.Value = "123";

Excel.Worksheet destSheet = (Excel.Worksheet)wb.Worksheets.get_Item(2);
Excel.Range destRange = destSheet.get_Range("B1", Type.Missing);

// 核心:來源範圍呼叫 Copy,目標範圍作為參數
srcRange.Copy(destRange);

wb.SaveAs(@"Z:\Book2.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// ... 釋放資源 ...

特點:一次複製數值、公式、字型、邊框、填充、欄寬列高等所有屬性。適合複製表頭樣板、整表複製。

模式二:僅複製純文字(不含格式)

Excel.Worksheet srcSheet = (Excel.Worksheet)wb.Worksheets.get_Item(1);
Excel.Range srcRange = srcSheet.get_Range("A1", Type.Missing);
srcRange.Value = "123";

// 將數值放入剪貼簿
System.Windows.Forms.Clipboard.SetDataObject(srcRange.Value.ToString());

Excel.Worksheet destSheet = (Excel.Worksheet)wb.Worksheets.get_Item(2);
Excel.Range destRange = destSheet.get_Range("B1", Type.Missing);

// 貼上純文字
destSheet.Paste(destRange, false);

限制:Clipboard.SetDataObject 僅支援單一儲存格字串,無法一次複製多儲存格區域。適合單一數值傳遞、避免格式汙染目標工作表。

選擇建議

  • 需保留完整樣式、公式 → 使用 Range.Copy(destRange)。
  • 僅需數值、避免格式衝突 → 使用剪貼簿 Paste。
  • 大量資料搬移建議改用陣列寫入 Range.Value = object[,],效能遠優於逐儲存格或複製貼上。

掌握這兩種複製策略,能靈活應對報表開發中各式跨工作表資料佈放需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved