開発プロセスは、多くの場合、インポートおよびエクスポートデータのニーズが発生し、このブログは、Excelでの.NETのコアのインポートおよびエクスポートにEPPlusコンポーネントを使用する方法について説明します
EPPlus:
EPPlusは、Excelの2007/2010のファイルを読み書きするためにオープンオフィスXML形式(XLSX).NET開発ライブラリを使用しているWindows、Linux、およびMac上で実行することができエクセル2007/2010ファイル、公式ウェブサイトのアドレス読み書きできる:HTTPS://アーカイブを。 codeplex.com/
.NETのコアでも、Excelを操作するNOPIを使用することができ、これは説明しません。
EPPlus操作Excelを使用します。
1、導入EPPlusパッケージは、管理コンソールのインストールパッケージの依存関係を実行します。
1 PMは、インストール・パッケージ> EPPlus.Core -Version 1.5を。4
2、輸出エクセル
①EFコア・オペレーティング・データベース、エクスポートリストを容易にするために使用されるデータセットを使用している場合。
輸出Excelファイルのパスを設定するために、サイトのルートディレクトリのパスを取得するには、コントローラのコンストラクタで②注入IHostingEnvironment。
1 公共 IActionResult OutputExcel( ) 2 { 3 // データソースのリストが設定されている 。4 VARのクエリ=(から U で_context.UserInfo 。5 SELECT 新しい新規 6 { 7 u.UId、 8 u.UName、 9 u.UPws、 10 U.をUEmail、 11 u.UTel 12は })ToListメソッド(); 13である // 指定されたエクスポートExcelファイルパス 14 文字= sWebRootFolder _hostingEnv.WebRootPath; 15 // ファイル名の 16 文字 sFileName = $ @ " テストエクスポートDateTime.Now.ToString {(" YYYYMMDDHHMMSS " )} XLSX。" ; 17 // パスに二つの文字列 18は 、VAR =パスPath.Combine(sWebRootFolder、sFileName); 19 // ファイル・オブジェクトの作成 20 のFileInfoファイル= 新しい新規のFileInfo(パス); 21 // ファイルが存在する場合は 22を IF (File.exists) 23 { 24個の // 削除ファイル 25 File.Delete(); 26である // 再作成したファイルは、オブジェクト 27 のファイル= 新しい新規のFileInfo(パス); 28 } 29 // オブジェクトExcelPackage作成 30 使用(ExcelPackageパッケージ= 新しい新しいExcelPackage(ファイル)) 31である { 32 // 新規追加しますブックにシート 33は ExcelWorksheetワークシート= package.Workbook.Worksheets.Add(「のUserInfo 」) 34は、 // ワークテーブルにロードリストのセット、プリントヘッドテーブル 35 worksheet.Cells.LoadFromCollection(クエリ、真の); 36 / / エクセル保存 37 [ package.Save(); 38がある } // 解放資源 39 リターン・ビュー(" インデックス" ); 40 }
ExcelPackage入口EPPlusクラス、クラスであるExcelファイルを解析し、ExcelWorkbook Excelを生成するオブジェクトを表します。
ExcelPackageクラスはIDisposableインターを実装して、あなたは、オブジェクトのリリースを使用して使用することができます。
ExcelWorksheetクラスは、Excelの表のスタイルに設定し、することができますが、Excelスプレッドシートのスタイルは、輸出が遅くなることがあり、メモリの負担が増加します設定します。
3、インポートエクセル
Excelをインポートするときに最初の直接ルートディレクトリに保存され、その後、インポートインポートさルートディレクトリの後に、ファイルをスプールファイルのパスを着信時にインポート、エクスポートするExcelの方法は、ブロガーは、Ajaxリクエストを使用している、fackpathパスの問題が発生しますファイル
JavaScriptコード:
。1 $( "#IExcel")をクリックします(。関数(){ 2 VARいるFormData = 新しい新しいいるFormData(); // コンストラクタによって空のオブジェクトいるFormDataを作成します 3。 formdata.append( 'ファイル'、$( "#インポート") [0] .files [0]); // データの追記()メソッドによって追加される 4。 $アヤックス({ 5。 タイプ: "POST" 、 6 URL: "/メイン/ ImportExcel" 、 図7 のcontentType:falseに、// Content-Typeヘッダを設定するように要求しないでください 8。 PROCESSDATAは:falseに、// 送信すべきデータを処理していない 9。 データ:いるFormData、 10を 成功:関数(データ){ 11 アラート(data.message)。 12 }、 13 エラー:関数(){ 14 アラート( "!失败导入" )。 15 } 16 }) 17 })
使用する場合いるFormDataオブジェクトの送信データは、データや設定要求を処理しないようにブラウザに提供されるものとそうでない場合はエラーJS、Content-Typeヘッダを送信:キャッチされない例外TypeError:不正な呼び出しを
C#コード:
1 公共IActionResult ImportExcel() 2 { 3。 試し 4。 { 5。 // ファイル最初のルートディレクトリにアップロードインポートする 6 // ファイルの前端上を通過取得 7。 VARファイル=のRequest.Form.Filesと、 図8 のvar filePathに= "" ; 9 foreachの(VARの項目にファイル) 10 { 11。 // 取得したファイル名 12である filePathに= item.FileName; 13である // 指定されたファイルのアップロード・パス 14 = + $ _hostingEnv.WebRootPath filePathに@ " \ {filePathに} " ; 15 // ストリームファイルの作成 16 使用(FS = FileStreamをSystem.IO.File.Create(filePathにする)) 17。 { 18れる // アップロードするファイルの内容をコピーしますストリームオブジェクト 19 item.CopyTo(FS) 20である // このフローのバッファをクリアして、任意のデータがバッファに書き込まれる原因 21は fs.Flush(); 22である } 23である } 24 //はファイル・オブジェクトの作成 25 のFileInfoファイル= 新しい新規のFileInfoを(filePathに); 26 IF(ファイル=!ヌル) 27 { 28 // オブジェクトを作成ExcelPackage 29 使用(ExcelPackageパッケージ= 新しい新しいExcelPackage(ファイル)) 30 { 31は、 // アクセスExcelのテーブル最初の表 32 ExcelWorksheet package.Workbook.Worksheetsワーク= [ 1 ]; 33れます // テーブル取得した行の数 34である int型をrowCount = worksheet.Dimension.Rows; 35 // テーブルの列数を取得し 36 INT COLCOUNT = worksheet.Dimension.Columns; 37 VARのユーザー= 新しい新リスト<のUserInfo> (); 38 のための(int型の列= 1、行<=をrowCount、行++ ) 39 { 40 のUserInfoユーザー情報= 新規のUserInfo()。 41 // 指定行列赋值 42 userinfo.UName = worksheet.Cells [行2 ] .Value.ToString()。 43 userinfo.UPws = worksheet.Cells [行、3 ] .Value.ToString()。 44 userinfo.UEmail = worksheet.Cells [行、4 ] .Value.ToString()。 45 = worksheet.Cells userinfo.UTel [行、5。] .Value.ToString(); 46である // エンティティにデータを保存する 47 _context.UserInfo.Add(のUserInfo); 48 _context.SaveChanges(); 49 } 50 リターン JSON (新しい新しい {メッセージ= " 成功インポート!" }); 51である } 52はである } 53で リターン NULL ; 54である } 55 キャッチ(例外EX) 56は 、{ 57が リターン(JSON新しい新しい {メッセージ= " インポートに失敗しました!" + EX}); 58 } 59 }
ExcelWorkbookクラスは、Excelの各ワークシートのシート特性に対応するExcelドキュメントを表します。ワークシートのプロパティが自動的に作成され、nullポインタ例外を心配していませんが、カウントがゼロであってもよいです。注:特定のシートを得た場合、インデックス番号は1から始まります。
終わり!