2016-04-22 8 views
0

私はExcelファイルを複数のレコードをデータベースに挿入しようとしています。 Scenerioは、ユーザーがハードドライブからExcelファイルを選択すると、コードは最初の行を読み取り、それをタイトル列として表示します。これらの列は順序付けられていません。したがって、ユーザーは右の列とドロップダウンを一致させます。asp.net mvcに保存せずにhttppostedfileを何度も読む方法

これまではすべて問題ありません。しかし、マッチングの後、もう一度別のアクションからファイルを読み込む必要があります。しかし、私はサーバーにファイルを保存していません。変数やセッションでファイルを読み書きする方法はありますか?あなたは、「他のアクション」で、この

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

や店舗のDataSetを使用して、データテーブル内のファイルを読み込みます。

関連する問題