Excel表单复制与C#参考和链接

我需要从一个源Excel文件复制特定工作表到一个新创build的Excel工作表,并在你的帮助下,我能够成功。 但是,还有一个问题,我找不到解决scheme是这样的。

当选定的工作表被复制到由程序创build的新的Excel文件时,单元格到单元格的链接将保持原来的状态,如"C:[sample.xlsx]FinancingSchedule'!O266"但是我想将其更改为"C:newlycreated.xlsx]FinancingSchedule'!O266"

有没有办法做到这一点? 提前致谢

还有前面的问题和代码:

如何将选定工作表从Excel文件复制到由程序创build的新Excel文件

看到这个 我已经评论了代码,以便您不应该有任何理解它的问题。

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Excel.Application xlexcel; Excel.Workbook xlWorkBook; Excel.Workbook xlWorkBookNew; Excel.Sheets worksheets; //~~> Path to save the new file String NewPath = "C:\\"; //~~> name of the newly created file String NewFileName = "newlycreated"; object misValue = System.Reflection.Missing.Value; xlexcel = new Excel.Application(); xlexcel.Visible = true; //~~> Open a File xlWorkBook = xlexcel.Workbooks.Open("C:\\Sample.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); //~~> Specify the sheets you want to copy String[] selectedSheets = { "a", "c", "d" }; //~~> Set your worksheets worksheets = xlWorkBook.Worksheets; //~~>Copy it. This will create a new Excel file with selected sheets ((Excel.Sheets)worksheets.get_Item(selectedSheets)).Copy(); xlWorkBookNew = xlexcel.ActiveWorkbook; //~~> Save the new workbook xlWorkBookNew.SaveAs(NewPath + NewFileName + ".xlsx", Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); //~~> Loop through the sheets of the new workbook and replace "Sample.xlsx" with "newlycreated.xlsx" foreach (Excel.Worksheet xlsheet in xlWorkBookNew.Sheets) { xlsheet.Cells.Replace("Sample.xlsx", NewFileName + ".xlsx", Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByRows, false, false, false); } //~~> Close and Cleanup xlWorkBookNew.Close(true, misValue, misValue); xlWorkBook.Close(false, misValue, misValue); xlexcel.Quit(); releaseObject(worksheets); releaseObject(xlWorkBookNew); releaseObject(xlWorkBook); releaseObject(xlexcel); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); } finally { GC.Collect(); } } } } 

如果我没有错,你已经复制了一张工作表,并在你新创build的工作表中获取所有旧的工作表数据。 我的意思是,如果旧的工作表数据从cellB1开始显示,则新创build的工作表也将从cellB1开始其数据。 如果是这种情况,则必须逐个读取旧的工作表数据,并且必须明确地告诉新的工作表(来自旧工作表)的哪个单元数据进入哪个单元(新创build的工作表)。 复制工作表非常简单,而且速度要快得多,但是如果您确实需要更改新创build工作表数据的位置,则需要记住性能问题,特别是在复制大量数据的情况下。 如果您对这种方法非常感兴趣,我可以为您提供代码示例。 问候,