如何将excel工作表复制到另一个excel工作簿中,而无需在c# winforms中打开excel文件

本文关键字:excel winforms 文件 工作 复制 工作簿 另一个 | 更新日期: 2023-09-27 18:13:10

在c# windows应用程序中我有很多excel工作簿,我想要的是从excel工作簿复制工作表到单个工作簿。这是可能的,但我必须打开excel工作簿才能这样做。

        Excel.Application app = new Excel.Application();
        app.Visible = true;
        app.WindowState = XlWindowState.xlMinimized;
        app.Workbooks.Add("");
        app.Workbooks.Add(@"Path'WorkBook1.xlsx");
        app.Workbooks.Add(@"Path'WorkBook2.xlsx");
        for (int i = 2; i <= app.Workbooks.Count; i++)
        {
            int count = app.Workbooks[i].Worksheets.Count;
            app.Workbooks[i].Activate();
            for (int j = 1; j <= count; j++)
            {
                Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j];
                ws.Select(true);
                ws.Cells.Select();
                Excel.Range sel = (Excel.Range)app.Selection;
                sel.Copy(Type.Missing);
                Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing
                    );
                sheet.Paste(Type.Missing, Type.Missing);
                sheet.Name = app.Workbooks[i].Worksheets[j].Name;
            }

        }
        app.DisplayAlerts = false;
        app.Workbooks[3].Close();
        app.Workbooks[2].Close();
        app.DisplayAlerts = true;
        Cursor = Cursors.Default;
        MessageBox.Show("Successfully Generated Excel...!", "Excel Tool", MessageBoxButtons.OK, MessageBoxIcon.Information);

有没有可能不打开excel表格,复制所有的数据与他们的风格?

如何将excel工作表复制到另一个excel工作簿中,而无需在c# winforms中打开excel文件

要复制工作表及其所有内容和格式,而不选择和复制工作表本身的内容,您可以使用工作表. copy。你可以这样使用它:

Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j];
Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
                Type.Missing, Type.Missing, Type.Missing, Type.Missing
                );
ws.Copy(Before: sheet);

如果,然而,你的问题的实际意思是你想把工作簿的内容复制到一个共同的工作簿,而不打开文件,那么我不相信这是可能的。您需要打开文件才能访问数据。