如何读取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;
…应该做你想要的。 试试这个,如果你有任何错误让我知道。
值可以是string
, double
, DateTime
, bool
或者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。 您检查的顺序很重要。