在内存ASP.Net中读取XLS文件

时间:2012-03-09 21:55:31

标签: c# asp.net

由于我的asp.net Web应用程序上的文件上传,我有一个xls文件位于byte []中。是否有一个库可以读入并处理xls文件作为byte []?我不想将文件保存到磁盘。

我需要做的就是能够读取单元格内容(如果我有选择,我宁愿接受csv文件)。

我发现SpreadsheetGear声称这样做,但我宁愿不花1000美元购买超出我需要的软件。

请注意,我指的是XLS文件,而不是XLSX文件,但我很感激两者的建议。

5 个答案:

答案 0 :(得分:1)

您可以结帐excellibrary。如果您正在处理OpenXML(.xlsx),可以查看Open XML SDK

答案 1 :(得分:1)

EPPlus也是一个用于处理Excel文件的可靠库。它有一些示例将显示如何与MemoryStream中的文件进行交互。

http://epplus.codeplex.com/

答案 2 :(得分:0)

NOPI有一个非常好的图书馆,它可以在EPPlus离开的地方找到它。 http://npoi.codeplex.com/

答案 3 :(得分:0)

您对XLS的引用建议使用较旧的Excel 97格式,在这种情况下,您可以使用作为Tarantino项目的一部分提供的ExcelWorkbook / ExcelWorksheet阅读器代码Tarantino Bitbucket Repository

您可以将XLS作为流传递到内存中,辅助方法将返回带有工作簿数据的DataSet和表示Sheets的Tables。您不需要整个Tarantino项目代码,只需抓住:

  • ExcelWorkbookReader.cs
  • ExcelWorksheetReader.cs
  • IExcelWorkbookReader.cs
  • IExcelWorksheetReader.cs

并将这些文件添加到您的解决方案中。

使用界面很简单:

[HttpPost]
public ActionResult Uploadfile(HttpPostedFileBase file)
{
    var reader = new ExcelWorkbookReader();
    var data = reader.GetWorkbookData(file.InputStream);

    // Do something with the data here

    return RedirectToAction("List");
}

答案 4 :(得分:-1)

您可以使用ADO.NET和OLEDB驱动程序读取没有Excel库的.xls内容。但工作表必须采用“表格”格式。如果这是真的,它的工作正常。

连接字符串应该是这样的:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ MyExcel.xls; Extended Properties =“Excel 8.0; HDR = Yes; IMEX = 1”;

问候。