我有一个包含近400个excel文件的文件夹.我需要将所有这些excel文件中的工作表复制到一个excel文件中.
使用Interop和Reflection命名空间继承人是我迄今为止所取得的成就.
我使用folderBrowserDialog浏览到该文件夹并选择它,这使我能够获取文件夹中的文件的文件名并迭代它们,这是我得到的,任何帮助将不胜感激.
if (result == DialogResult.OK)
{
string path = fbd1.SelectedPath; //get the path
int pathLength = path.Length + 1;
string[] files = Directory.GetFiles(fbd1.SelectedPath);// getting the names of files in that folder
foreach (string i in files)
{
MessageBox.Show("1 " + i);
myExcel.Application excelApp = new myExcel.ApplicationClass();
excelApp.Visible = false;
MessageBox.Show("2 " + i);
myExcel.Workbook excelWorkbook = excelApp.Workbooks.Add(excelApp.Workbooks._Open(i, 0, false, 5, "", "", false, myExcel.XlPlatform.xlWindows, "", true, false, 0, true));
myExcel.Sheets excelSheets = excelWorkbook.Worksheets;
MessageBox.Show("3 " + i);
excelApp.Workbooks.Close();
excelApp.Quit();
}
MessageBox.Show("Done!");
}
如何将复制的工作表附加到目标文件.希望问题很清楚?
谢谢.
最佳答案 使用Worksheet.Copy(Before,After)并指定after作为您想要的任何主文件的最后一个工作表.请注意,您可能需要在mainApp中创建一个新的工作表,以便它在之后输入一个工作表,以便它不会引发异常.
请尝试以下方法:
Excel.Application mainApp = new Excel.ApplicationClass();
mainApp.Visible = false;
Excel.Workbook mainWorkbook = excelApp.Workbooks.Add(null);
Excel.Sheets mainWorkSheets = mainWorkbook.Worksheets;
foreach (string i in files)
{
MessageBox.Show("1 " + i);
Excel.Application exApp = new Excel.ApplicationClass();
exApp.Visible = false;
MessageBox.Show("2 " + i);
Excel.Workbook exWorkbook = exApp.Workbooks.Open(i,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
MessageBox.Show("3 " + i);
foreach(Excel.Worksheet sheet in exWorkbook.Worksheets)
{
sheet.Copy(Type.Missing, mainWorkSheets[mainWorkSheets.Count -1]);
}
}
mainApp.Save("NewExcel");