【问题标题】:How do I merge 2 Excel files into one excel file with separated sheets?如何将 2 个 Excel 文件合并为一个带有分隔表的 Excel 文件?
【发布时间】:2011-08-28 20:38:57
【问题描述】:

我有 2 个 Excel 文件,我想用单独的表格将它们合并为 1 个文件..

我尝试与 Microsoft.Office.Interop.Excel 进行合并, 但我不明白如何使用它?

对于叶海亚:

这里是获取我想将它们与不同文件合并的范围的方法:

internal object[,] GetValues(string filename)
    {
        object[,] values = new object[0, 0];
        try
        {
            Workbook workBook = _excelApp.Workbooks.Open(filename,
                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);

            values = ExcelScanIntenal(workBook);

            workBook.Close(false, filename, null);
            Marshal.ReleaseComObject(workBook);
        }
        catch
        {
        }
        return values;
    }

    private object[,] ExcelScanIntenal(Workbook workBookIn)
    {
        object[,] valueArray = new object[0, 0];
        Worksheet sheet = (Worksheet)workBookIn.Sheets[1];

        Range excelRange = sheet.UsedRange;
        valueArray = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
        return valueArray;
    }

在这里我想合并值:

   internal void AddWorksheetToExcelWorkbook(string filename, string worksheetName, object[,] valueArray)
    {
        Microsoft.Office.Interop.Excel.Application xlApp = null;
        Workbook xlWorkbook = null;
        Sheets xlSheets = null;
        Worksheet xlNewSheet = null;

        try
        {
            xlApp = new Microsoft.Office.Interop.Excel.Application();

            if (xlApp == null)
                return;

            xlWorkbook = xlApp.Workbooks.Open(filename, 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);

            xlSheets = xlWorkbook.Sheets as Sheets;

            xlNewSheet = (Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing);
            xlNewSheet.Name = worksheetName;

            xlWorkbook.Save();
            xlWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
            xlApp.Quit();
        }
        finally
        {
            Marshal.ReleaseComObject(xlNewSheet);
            Marshal.ReleaseComObject(xlSheets);
            Marshal.ReleaseComObject(xlWorkbook);
            Marshal.ReleaseComObject(xlApp);
            xlApp = null;
        }
    }

问题是 xlNewSheet 没有任何可以获取值的属性。我该如何添加??

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    不太确定问题是什么...但是对于以编程方式合并 excel 文件,请参见起点:

    如果您需要更多信息,请显示一些代码并说明究竟是什么不起作用...

    编辑 - 根据评论:

    您可以使用xlNewSheet.Cells 获取范围并使用其Columns/Rows/Item 属性更改/添加您想要的任何值 - 即在您的情况下从valueArray...

    【讨论】:

    • 在这里我得到了我想合并到另一个文件的范围:
    • 我试过 xlNewSheet.Cells.Insert 或 xlNewSheet.Cells.set_Item 或 xlNewSheet.Cells.set_Value 但总是出错..你能解释更多吗?谢谢..
    • 当我使用“xlNewSheet.Cells.set_Value(valueArray, Type.Missing);”我得到类型不匹配。 (来自 HRESULT 的异常:0x80020005 (DISP_E_TYPEMISMATCH))
    • 哦,现在我明白了: for (int row = 1; row
    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2020-12-16
    • 2018-01-09
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多