.net 通过C将数据从一个excel工作簿复制到另一个excel工作簿#
请帮我输入下面的代码。我想将所有数据从“D:\data Validation\u Source Code\TestExcel\DataValidationTest.xlsx”excel工作表复制到“D:\data Validation\u SourceCode\TestExcel\DataValidationTest-updated.xlsx”excel工作表,而不是复制到新的工作手册中。请帮帮我.net 通过C将数据从一个excel工作簿复制到另一个excel工作簿#,.net,.net,请帮我输入下面的代码。我想将所有数据从“D:\data Validation\u Source Code\TestExcel\DataValidationTest.xlsx”excel工作表复制到“D:\data Validation\u SourceCode\TestExcel\DataValidationTest-updated.xlsx”excel工作表,而不是复制到新的工作手册中。请帮帮我 try { string startPath = System.IO.Path.Get
try
{
string startPath = System.IO.Path.GetDirectoryName(
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
string filePath = System.IO.Path.Combine(startPath,
"D:\\Data Validation_Source Code\\TestExcel\\DataValidationTest.xlsx");
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(filePath);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Copy(Type.Missing, Type.Missing);
xlWorkSheet = xlApp.Workbooks[2].Sheets[1];
}
finally
{
if (xlWorkBook != null)
{
xlWorkBook.Close();
}
if (xlApp != null)
{
xlWorkBook = xlApp.Workbooks.Open(
"D:\\Data Validation_SourceCode\\TestExcel\\DataValidationTest - updated.xlsx");
xlApp.Quit();
}
this.releaseObject(xlWorkSheet);
this.releaseObject(xlWorkBook);
this.releaseObject(xlApp);
}
一个问题是Path.Combine的第二个参数是完全限定的路径。在这种情况下,该方法实际上会忽略第一个参数并返回第二个参数。因此,调用
GetCurrentProcess().MainModule.FileName
无法完成任何任务
不过,您的主要问题是,您没有告诉Excel将新工作表放在哪里。如果文件名“D:\Data Validation\u SourceCode\TestExcel\DataValidationTest-updated.xlsx”直到调用Copy方法后才出现在程序中,它怎么知道放在哪里
下面是用于格式化的代码示例,添加了注释:
try
{
string startPath = System.IO.Path.GetDirectoryName( System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
string filePath = System.IO.Path.Combine(startPath, "D:\Data Validation_Source Code\TestExcel\DataValidationTest.xlsx");
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(filePath);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Copy(Type.Missing, Type.Missing); //Footnote 1
xlWorkSheet = xlApp.Workbooks[2].Sheets[1]; //Footnote 2
}
finally
{
if (xlWorkBook != null)
{
xlWorkBook.Close();
}
if (xlApp != null)
{
xlWorkBook = xlApp.Workbooks.Open( "D:\Data Validation_SourceCode\TestExcel\DataValidationTest - updated.xlsx");
xlApp.Quit();
}
this.releaseObject(xlWorkSheet);
this.releaseObject(xlWorkBook);
this.releaseObject(xlApp);
}
脚注1:阅读复制方法的帮助文件。它说“如果您没有指定之前或之后,Microsoft Excel将创建一个包含复制的工作表的新工作簿。”这解释了您看到的行为
脚注2:这项作业基本上什么也没完成,所以不清楚你希望在这里完成什么
建议:如果工作簿“D:\Data Validation\u SourceCode\TestExcel\DataValidationTest-updated.xlsx”已经存在,则需要在调用copy方法之前打开它,然后将其中一张工作表作为“before”或“after”参数传递给copy方法。如果工作簿不存在,可以按原样调用Copy,既不指定“之前”也不指定“之后”,然后用正确的名称保存新工作簿