使用C#进行Excel自动化

我有一个包含近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");
点赞