2016-04-22 58 views
0

我试图用excel文件插入多个记录到数据库。 Scenerio是,用户从他的硬盘驱动器中选择excel文件,然后代码读取第一行并将其显示为标题列。这些列没有排序。因此,用户通过下拉菜单匹配右列。如何多次读取httppostedfile而不保存在asp.net mvc

一切都很好,直到现在。但匹配后,我必须从另一个操作再次读取文件。但我不保存文件到服务器。有没有办法在变量或会话中读取或保存文件?

我的代码similiar这样

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

我想只是将文件保存到一个临时文件将比在会话状态下存储文件数据更稳定和有效。为什么不把文件写入文件系统? – David

+0

您应该将它暂时存储在您希望的地方,因为您需要处理文件操作,如阅读内容等。使用内存流来做所有这些可能需要更多的努力。 – ali

回答

0

如果通过“另一个行为”的意思是,你的意思是不同的HTTP请求,那么你就不能这样做,没有它坚持的地方。

+1

这是如何保持跨请求的文件? –

+0

你绝对正确。我把它看作是重复使用同一个请求中的文件。更新我的答案... –

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(); 

和存储数据集到会作进一步处理读取数据表文件。