我有一个数据表,我需要根据用户输入从 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/