从.xls和.ods文件中读取数据

时间:2012-03-22 20:48:54

标签: c# asp.net

有没有办法从excel和开放式办公电子表格中读取数据并将它们保存到临时存储中,如DataSet或数组?我遇到了ExcelDataReader(http://exceldatareader.codeplex.com/),但它只适用于用户在其计算机上安装了Excel的情况。我们的一些用户只有Open Office(其他人都没有)。

1 个答案:

答案 0 :(得分:1)

这是一个使用EPPlus(我可以热烈推荐)将手动转换为DataTable的简单方法:

DataTable tbl = new DataTable();
var pck = new OfficeOpenXml.ExcelPackage();
pck.Load(new System.IO.FileInfo(@"C:\Temp\ExcelFile.xlsx").OpenRead());
if (pck.Workbook.Worksheets.Count != 0)
{
    var sheet = pck.Workbook.Worksheets.First();
    var hasHeader = false; // adjust accordingly '
    foreach (var firstRowCell in sheet.Cells[1, 1, 1, sheet.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 <= sheet.Dimension.End.Row; rowNum++)
    {
        var wsRow = sheet.Cells[rowNum, 1, rowNum, sheet.Dimension.End.Column];
        tbl.Rows.Add(wsRow.Select(cell => cell.Text).ToArray());
    }
}

最初由我自己发布here(VB.NET)。