如何读取单个Excel单元格值

Doo*_*ana 47 c# excel

我有一个带有sheet1的excel文件,它有一个我需要在第2行和第10列读取的值.这是我的代码.

Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
string currentSheet = "Sheet1";
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
var cell = (Excel.Range)excelWorksheet.Cells[10, 2];
Run Code Online (Sandbox Code Playgroud)

获取Excel.Range的单元格对象后,我不知道如何读取该单元格的内容.我尝试将其转换为数组并在其上循环,我尝试转换为字符串数组等.我确信它非常简单.有没有直接的方法来获得一个字符串的单元格值?

Sys*_*own 75

您需要将其强制转换为字符串(而不是字符串数组),因为它是单个值.

var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
Run Code Online (Sandbox Code Playgroud)

  • 我尝试过你之前提到过的那种方法,但是我总是在null,而且在我做的时候在VS 2012中.Value它没有出现.Value2或Value [object]即将推出.所以我认为我使用的是某种错误,并决定在这里问.但是我发现我的行和列是通过跟踪和错误混淆的.Cell [row,column]就像数组一样.由于某种原因在互联网上不同的帖子说不然,所以让我感到困惑. (2认同)
  • `excelWorksheet.Cells[1, 1]` 是 1 索引...不是 0。 (2认同)

Dav*_*pko 16

using Microsoft.Office.Interop.Excel;

string path = "C:\\Projects\\ExcelSingleValue\\Test.xlsx ";

Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Worksheet excelSheet = wb.ActiveSheet;

//Read the first cell
string test = excelSheet.Cells[1, 1].Value.ToString();

wb.Close();
Run Code Online (Sandbox Code Playgroud)

此示例使用"Microsoft Excel 15.0对象库",但可能与早期版本的Interop和其他库兼容.


Mad*_*ter 7

 //THIS IS WORKING CODE                        
 Microsoft.Office.Interop.Excel.Range Range_Number,r2;
 Range_Number = wsheet.UsedRange.Find("smth");
 string f_number="";

 r2 = wsheet.Cells;

 int n_c = Range_Number.Column;
 int n_r = Range_Number.Row;
 var number = ((Range)r2[n_r + 1, n_c]).Value;

 f_number = (string)number;
Run Code Online (Sandbox Code Playgroud)

  • 你能为答案添加更多解释吗?我们试图避免只是代码的答案:)解释更有可能帮助未来的读者. (4认同)
  • 您可以[编辑](http://stackoverflow.com/posts/22718076/edit)您的答案以包含该信息. (2认同)

Shi*_*lpa 5

最好使用 .Value2() 而不是 .Value()。这更快,并提供单元格中的确切值。对于某些类型的数据,使用 .Value() 时可以观察到截断。