Oracleデータベースのデータを取得後、直接エクセルに出力するコードを書きました。
備忘録として記録します。
以下は、C#でOracleデータベースのSQL結果を取得し、エクセルに出力するサンプルコードです。
実行には、Oracle.ManagedDataAccess NuGetパッケージとMicrosoft.Office.Interop.Excel NuGetパッケージが必要です。
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
using Oracle.ManagedDataAccess.Client; using Application = Microsoft.Office.Interop.Excel.Application; // Oracleデータベースへの接続情報を設定します。 string connectionString = "Data Source=<データベース名>;User ID=<ユーザー名>;Password=<パスワード>"; // SQLクエリを定義します。 string sqlQuery = "<SQLクエリ>"; // Oracleデータベースに接続してSQLクエリを実行し、結果を取得します。 using (OracleConnection connection = new OracleConnection(connectionString)) { connection.Open(); OracleCommand command = new OracleCommand(sqlQuery, connection); OracleDataReader reader = command.ExecuteReader(); // エクセルオブジェクトを作成します。 Application excel = new Application(); Workbook workbook = excel.Workbooks.Add(); Worksheet worksheet = workbook.ActiveSheet; // SQLクエリの結果をエクセルに出力します。 int row = 1; int column = 1; for (int i = 0; i < reader.FieldCount; i++) { worksheet.Cells[row, column] = reader.GetName(i); column++; } row++; while (reader.Read()) { column = 1; for (int i = 0; i < reader.FieldCount; i++) { worksheet.Cells[row, column] = reader.GetValue(i); column++; } row++; } // エクセルファイルを保存します。 workbook.SaveAs("<ファイル名>.xlsx"); // オブジェクトを解放します。 workbook.Close(); excel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); } |
このコードは、指定されたデータベースに接続し、指定されたSQLクエリを実行して結果を取得します。
結果は、新しいエクセルファイルに出力されます。
エクセルファイルは、指定されたファイル名で保存されます。
最後に、オブジェクトを解放して、リソースを解放します。