如何多次阅读httppostedfile而不保存在asp.net mvc

时间:2016-04-22 14:07:55

标签: c# asp.net asp.net-mvc excel

我尝试将多个包含excel文件的记录插入数据库。 Scenerio是,用户从他的硬盘驱动器中选择excel文件,然后代码读取第一行并将其显示为标题列。这些列未订购。因此,用户通过下拉列表匹配右列。

到目前为止,一切都还可以。但匹配后我必须从另一个动作再次读取该文件。但我不是将文件保存到服务器。有没有办法在变量或会话中读取或保存文件?

我的代码与此类似

public JsonResult ExcelUpload(FormCollection formCollection)
{
        if (Request != null)
        {
            HttpPostedFileBase file = Request.Files["ExcelFile"];
        }
}

2 个答案:

答案 0 :(得分:0)

如果你的意思是“另一个动作”,你的意思是一个不同的HTTP请求,那么如果没有它持续存在,你就不能这样做。

答案 1 :(得分:0)

使用库given here

更好地读取数据表中的文件
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

//1. Reading from a binary Excel file ('97-2003 format; *.xls)
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
//...
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
//...
//3. DataSet - The result of each spreadsheet will be created in the result.Tables
DataSet result = excelReader.AsDataSet();
//...
//4. DataSet - Create column names from first row
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();

//5. Data Reader methods
while (excelReader.Read())
{
    //excelReader.GetInt32(0);
}

//6. Free resources (IExcelDataReader is IDisposable)
excelReader.Close();

并将DataSet存储到会话中以供进一步处理。