C# 如何使用c从excel工作表中读取键值对?
我是C语言的新手。我使用下面的代码从Excel读取数据,但我需要帮助修改它以读取键值对C# 如何使用c从excel工作表中读取键值对?,c#,excel,C#,Excel,我是C语言的新手。我使用下面的代码从Excel读取数据,但我需要帮助修改它以读取键值对 public String getData(int row, int col, String var) { Excel.Application excelApp = new Excel.Application(); if (excelApp != null) { List<string> prop = new List<string>(var.S
public String getData(int row, int col, String var)
{
Excel.Application excelApp = new Excel.Application();
if (excelApp != null)
{
List<string> prop = new List<string>(var.Split(new string[] {"."}, StringSplitOptions.None));
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(@"D:\\test.xlsx", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorkbook.Sheets[prop[0]];
excelWorksheet.Select(Type.Missing);
Excel.Range range = (excelWorksheet.Cells[row, col] as Excel.Range);
string cellValue = range.Value.ToString();
excelWorkbook.Close();
excelApp.Quit();
return cellValue;
}
return null;
}
这是一个例子;它假定您有一个using子句
using Excel = Microsoft.Office.Interop.Excel;
…并准备访问工作表:
Excel.Application xl = new Excel.Application();
xl.Workbooks.Open(filename);
Excel.Worksheet ws = xl.Workbooks[1].Worksheets[1]; // pick your sheet!
int keyColum = 3;
现在,您可以获取一系列单元格:
..或整个栏目:
Excel.Range keyRange= ws.Range["C:C"];
并搜索搜索字符串的所有出现项:
Excel.Range keysFound = keyRange.Find(textBox1.Text);
然后您可以访问找到的单元格范围,如下所示:
string msg1 = keysFound.Count + " records found.";
string msg2 = "1st in row " + keysFound.Row;
string msg3 = "value from next column is "
+ ws.Cells[keysFound.Row + 1, keyColum + 1].value;
注:
索引在c中以0开始,但在excel中不以0开始,因此[keysFound.Row+1,
“我的值”列是键右侧的一列。最好使用命名索引!
如果未找到任何内容,keysFound将为null!请添加检查!
由于要匹配整个密钥,因此需要进行精确搜索:
Excel.Range keysFound=keyRange.FindtextBox1.Text,LookAt:Excel.XlLookAt.xlother
我仍然认为,获取所有数据并将其填入字典将是最干净、最快的解决方案,除非你只需要进行一次查找。它们在excel工作表中的外观如何?第一列包含所有键,第二列包含相关值。那么,问题是什么:读取一个单元格、读取两个单元格或读取一系列pai单元格的rs?它真的应该和读取任何其他数据没有什么区别,就像在很多例子中一样。我不想传递行和列,而是想在键作为参数传递时读取值,好的。我不会在excel中进行查找,而是将所有数据都放在一个字典中,但这实际上取决于有多少数据以及需要多长时间进行查询访问它们。用于直接访问或可能有帮助。。
string msg1 = keysFound.Count + " records found.";
string msg2 = "1st in row " + keysFound.Row;
string msg3 = "value from next column is "
+ ws.Cells[keysFound.Row + 1, keyColum + 1].value;