【问题标题】:C# how to read specifed cells from multiple sheet excel using interop?C#如何使用互操作从多个工作表excel中读取指定的单元格?
【发布时间】:2018-11-18 00:48:01
【问题描述】:

我需要在 Excel 文件的第一张表和第二张表中从“B2”读取到“H10”(5 行 7 列)。我下面的代码适用于从两张纸上读取每个单元格,我怎样才能从两张纸上读取我需​​要的单元格? (我看到很多使用 activeworksheet 的解决方案,但没有指定它正在阅读哪个工作表,这无法解决我的问题。)

        using Excel = Microsoft.Office.Interop.Excel;
        using System.Runtime.InteropServices;

        Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        Excel.Range range;

        string str;
        int rCnt;
        int cCnt;
        int rw = 0;
        int cl = 0;

        xlApp = new Excel.Application();

        xlWorkBook = xlApp.Workbooks.Open("PATH", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("sheetName");
        range = xlWorkSheet.UsedRange;

        rw = range.Rows.Count;
        cl = range.Columns.Count;


        for (rCnt = 1; rCnt <= rw; rCnt++)
        {

            for (cCnt = 1; cCnt <= cl; cCnt++)
            {

                str = ((range.Cells[rCnt, cCnt] as Excel.Range).Value2).ToString();
                MessageBox.Show(str);

            }

        }

【问题讨论】:

    标签: c# excel excel-interop


    【解决方案1】:

    我找到了解决办法,我的代码在下面更新了。

        using Excel = Microsoft.Office.Interop.Excel;
        using System.Runtime.InteropServices;
    
        Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        Excel.Range range, sRange;
    
        string str;
        int rCnt;
        int cCnt;
        int rw = 0;
        int cl = 0;
    
        xlApp = new Excel.Application();
    
        xlWorkBook = xlApp.Workbooks.Open("PATH", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("sheetName");
        range = xlWorkSheet.Cells;
        sRange = range.Range["B2", "H10"];
        rw = sRange.Rows.Count;
        cl = sRange.Columns.Count;
    
    
        for (rCnt = 1; rCnt <= rw; rCnt++)
        {
    
            for (cCnt = 1; cCnt <= cl; cCnt++)
            {
    
                str = ((sRange.Cells[rCnt, cCnt] as Excel.Range).Value2).ToString();
                MessageBox.Show(str);
    
            }
    
        }
    

    【讨论】:

      【解决方案2】:
      range = xlWorkSheet.Cells.get_Range("B2:H10").Select()
      

      应该做的伎俩

      更多示例可以在https://www.add-in-express.com/creating-addins-blog/2013/10/15/excel-cell-values-formulas-formatting-csharp/找到

      【讨论】:

      • 感谢您的回答,但它给出了异常 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Cannot implicitly convert type 'bool' to 'Microsoft.Office.Interop.Excel.Range' '
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多