C# 使用 Microsoft.Office.Interop.Excel 读取数据

标签 c# arrays excel

我有一个数据表,我需要根据用户输入从 excel 中读取它并将其作为数组存储在 VS 中。

如果用户输入C1,搜索并获取关联数据:

数组[0]: X1E1M101

数组[1]:F2G1M202

如果用户输入C2:

数组[0]:X1E1M105

数组[1]:F1G2M304


我的数据:

     A      B      C     D     E
1   C1
2
3   X1     E1     M1     01 
4   F2     G1     M2     02
5
6   C2
7
8   X1     E1     M1     05 
9   F1     G2     M3     04
10

我的代码:

//I declared the Interop
using Excel = Microsoft.Office.Interop.Excel;


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

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Open(ManufacturingFile);
        //xlWorkSheet = ("Default Value");  // i get an error here when trying to define the worksheet name i want to select. "Cannot impicitly convert type string to ... excel.worksheet'

        xlWorkSheet = ((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[1]).Select(); // This method also I get an error.
        xlWorkSheet.Activate(); 

由于我是 Interop 的新手,所以我在完成这一部分后被卡住了。 希望有人能帮助我,我是 C# 的初学者,非常感谢你的帮助。

最佳答案

你必须打开你的工作簿和工作表,有很多例子解释了如何做到这一点,这里是一个例子

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

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

        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Open("testone.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);


        range = xlWorkSheet.UsedRange;

        Microsoft.Office.Interop.Excel.Range xlFound =range.EntireRow.Find("C2",misValue, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,Excel.XlSearchOrder.xlByColumns,Excel.XlSearchDirection.xlNext,true, misValue, misValue);

        if (!(xlFound == null))
        {
            int ID_Number = xlFound.Column;
            int rownum = xlFound.Row;
            Console.WriteLine(ID_Number);
            Console.WriteLine(rownum);
            Console.Read();
        }

您可以首先获取搜索的范围值,例如,如果“C1”位于 a1,则您必须从 a(n+2) 读取整行,并在找到空行时停止。

以上代码未编译,取自here

关于C# 使用 Microsoft.Office.Interop.Excel 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587312/

相关文章:

c# - 如何使用 protoBuf 进行结构序列化

C# - 将 EventArgs 转换为通用事件类型

使用 VBA 将未修改的 Excel 工作簿检入 SharePoint 时 Excel 崩溃

.net - 导出到 Excel 不适用于 Excel 2013

c# - 返回 Task<string> 的方法

c# xamarin forms - 具有属性的自定义控件上的自定义事件

PHP:许多连接还是一个内爆?

python |如何从二维数组中删除子数组

php - 序列化数组中的mysql选择查询

c# - 下载文件时如何设置文件名?