我在我的电脑上安装了VS Express 2015和MS Office 2007。我需要从excel表中读取一些值。我添加了Microsoft Office 12.0对象库,但我无法使用此
using Microsoft.Office.Interop.Excel;
我收到以下错误:类型或命名空间名称' Interop'名称空间中不存在Microsoft.Office' (你错过了一个程序集引用吗?)
答案 0 :(得分:1)
当您希望从Excel工作表EPPlus中读取某些值时,可以轻松地使用Excel文件。这是Open office XML的包装器。
public static DataTable getDataTableFromExcel(string path)
{
using (var pck = new OfficeOpenXml.ExcelPackage())
{
using (var stream = File.OpenRead(path))
{
pck.Load(stream);
}
var ws = pck.Workbook.Worksheets.First();
DataTable tbl = new DataTable();
bool hasHeader = true; // adjust it accordingly( i've mentioned that this is a simple approach)
foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
{
tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = hasHeader ? 2 : 1;
for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
var row = tbl.NewRow();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
tbl.Rows.Add(row);
}
return tbl;
}
}