C# で Excel ファイルをインポート、エクスポート、処理する方法
OleDB は、さまざまなデータ ソースへの Microsoft の戦略的な低レベル アプリケーション プログラミング インターフェイスです。このクライアントでは、さまざまな種類のデータベースがサポートされており、DBF ファイルの入出力にもこのデータベース API が使用されます。 OleDB を使用する場合は、必ず名前空間を追加してください:
using System.Data.OleDb;
xlsx ファイルの入力:
private void inputXlsx() { string strConn2; string filePath = inPath; FileInfo fileInfo = new FileInfo(filePath); string directory = fileInfo.DirectoryName; strConn2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;';"; string strConnection = string.Format(strConn2, inPath); OleDbConnection conn = new OleDbConnection(strConnection); try { conn.Open(); String tableName = null; DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); tableName = dt.Rows[0][2].ToString().Trim(); OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + tableName + "]", strConnection); oada.Fill(dtOld); conn.Close(); } catch (Exception ex) { conn.Close(); } }
xlsx ファイルの中間処理は必要に応じて異なるため、ここでは処理方法については説明しません。入力処理中に、ファイル内のデータは Datatable データ型形式に変換され、データを一時的に保存するための非常に便利なグリッド仮想テーブルです。
xlsx ファイルのエクスポート: xlsx ファイルの出力プロセスはあまりスムーズではなく、3 つの方法が使用されます。
最初の方法は当然 OleDB であり、始まりと終わりがあります。しかし、実際に使ってみると、この方法はプログラムを実行するためにコンピューターに Excel がインストールされている必要があるだけでなく、Excel のバージョンに対する要件も非常に高く、レジストリを削除すると自滅してしまいます。レジストリを変更するとExcelが直接破壊されてしまいます。実際、対応するバージョンの Excel が顧客のマシンにインストールされている必要があることは保証できません。そのため、OleDB を使用してファイルを出力する場合、このクライアントの互換性は非常に低くなります。
いくつかのコミュニケーションと格闘の後、方法を変更し、サードパーティのコンポーネントを使用することにしました。 JAVA 側は POI を使用するため、ここでは POI プロジェクトの .NET バージョンである NPOI が直接使用されます。オンライン チュートリアルが多数あり、実装は簡単ですが、テストした結果、この方法は大きなファイルの入出力をあまりサポートしていません。デモ ファイルの処理には問題ありませんが、10 万または 100 万ものファイルに置き換えられます。実際の顧客から提供されたレベル ファイルを使用すると、クライアントは出力プロセス中に直接クラッシュします。
情報を確認した後、ネチズンは大きなファイルにはEPPlusを使用することを推奨しました。チュートリアルも多数あり、テストのためにファイル サイズを増やすことはしませんでしたが、お客様から提供された数十のファイルはすべてテストに合格し、基本的には 100 万未満でした。
コードに移動します:
private void outputXlsx() { FileInfo newFile = new FileInfo(dtNew.TableName + ".xlsx"); if (newFile.Exists) { newFile.Delete(); newFile = new FileInfo(dtNew.TableName + ".xlsx"); } using (ExcelPackage package = new ExcelPackage(newFile)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dtNew.TableName);//创建worksheet for (int m = 0; m < dtNew.Columns.Count; m++) { worksheet.Cells[1, m + 1].Value = dtNew.Columns[m]; } int i = 1; foreach (DataRow dr in dtNew.Rows) { for (int j = 0; j < dtNew.Columns.Count; j++) { worksheet.Cells[i + 1, j + 1].Value = dr[j]; } i++; } package.Save();//保存excel } }

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
