如何读取Excel单元格的值?

寻找如何从Excel读取一些单元格值的帮助。 我以为我会从一个开始。

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[1, 1]; 

虽然我没有运气。 我希望能够读取单元格的值并将其存储在某处,然后每隔几秒钟检查一次该值。

你真的想看看EPPLus: http ://epplus.codeplex.com/

NuGet可以在您的项目中使用它。 这是迄今为止C#和excel文档之间最简单,最简单的连接方式。 这也是免费的,顺便说一句。

教程: http : //www.codeproject.com/Articles/680421/Create-Read-Edit-Advance-Excel-Report-in#1

 private DataTable WorksheetToDataTable(ExcelWorksheet oSheet) { int totalRows = oSheet.Dimension.End.Row; int totalCols = oSheet.Dimension.End.Column; DataTable dt = new DataTable(oSheet.Name); DataRow dr = null; for (int i = 1; i <= totalRows; i++) { if (i > 1) dr = dt.Rows.Add(); for (int j = 1; j <= totalCols; j++) { if (i == 1) dt.Columns.Add(oSheet.Cells[i, j].Value.ToString()); else dr[j - 1] = oSheet.Cells[i, j].Value.ToString(); } } return dt; 

}

这将读取EPPLus中的所有列和行。

就像是:

 Worksheet sheet = excelWorkbook.Worksheets["Sheet1"] as Worksheet; Range rng = sheet.Cells[1,1] as Range; object value = rng.Value; 

…应该做你想要的。 试试这个,如果你有任何错误让我知道。

值可以是stringdoubleDateTimebool或者int值。

除了int ,这些都是不言自明的。 int值表示可能的不同错误代码,例如#VALUE!

(顺便说一下,我不推荐使用Excel PIA,而是build议使用可通过NuGet免费获得的NetOffice来引用Excel对象模型,优点是在部署时不受特定版本的Excel绑定)

您需要检索单元格的.Value.Value2属性:

 if (cell.Value2 == null) // cell is blank else if(cell.Value2 is string) // cell is text else if (cell.Value is double) // cell is number; else if (cell.Value2 is double) // cell is date 

注意最后两个if是。 .Value2会为数字和date返回一个double,但是.Value只会返回一个double。 您检查的顺序很重要。