Gridviewを使用せずに、C#でデータセットまたはデータテーブルからExcelファイルにデータをエクスポートしたいとします。C#でデータセットまたはデータテーブルからExcelをエクスポートするにはどうすればよいですか?
答えて
は、より多くの方法を取得:9 Solutions to Export Data to Excel for ASP.NET
私はこのコードを持っていますが、このために、あなたがあなたのための作業を行いますエクセルCOMコンポーネント
プロジェクトでMicrosoft.Office.Interop.Excel.dll
の参照を追加します含める必要があります。
using Excel = Microsoft.Office.Interop.Excel;
public static bool ExportDataTableToExcel(DataTable dt, string filepath)
{
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oSheet;
Excel.Range oRange;
try
{
// Start Excel and get Application object.
oXL = new Excel.Application();
// Set some properties
oXL.Visible = true;
oXL.DisplayAlerts = false;
// Get a new workbook.
oWB = oXL.Workbooks.Add(Missing.Value);
// Get the Active sheet
oSheet = (Excel.Worksheet)oWB.ActiveSheet;
oSheet.Name = "Data";
int rowCount = 1;
foreach (DataRow dr in dt.Rows)
{
rowCount += 1;
for (int i = 1; i < dt.Columns.Count + 1; i++)
{
// Add the header the first time through
if (rowCount == 2)
{
oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName;
}
oSheet.Cells[rowCount, i] = dr[i - 1].ToString();
}
}
// Resize the columns
oRange = oSheet.get_Range(oSheet.Cells[1, 1],
oSheet.Cells[rowCount, dt.Columns.Count]);
oRange.EntireColumn.AutoFit();
// Save the sheet and close
oSheet = null;
oRange = null;
oWB.SaveAs(filepath, Excel.XlFileFormat.xlWorkbookNormal,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Excel.XlSaveAsAccessMode.xlExclusive,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
oWB.Close(Missing.Value, Missing.Value, Missing.Value);
oWB = null;
oXL.Quit();
}
catch
{
throw;
}
finally
{
// Clean up
// NOTE: When in release mode, this does the trick
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
return true;
}
GCを明示的に呼び出す代わりに、データテーブルやその他のExcelオブジェクトを手動で処理することはできますか?それぞれのdispose関数を呼び出すことによって? – Pankaj
dispose関数を呼び出すと、GCがどのオブジェクトを破棄することができるかを見つけるのではなく、GCキューにオブジェクトが送信されます。 – Pankaj
COMの使用が遅く、Excelをサーバーにインストールする必要があります。スプレッドシートを生成するたびに、Excelプロセスを開始する必要があります。 Webサーバー上で実行されている複数のExcelプロセスが終了する可能性があります。さらに、ライセンスが必要です。 –
あなたは "ネイティブ" Excel文書で作業する
using Microsoft.Office.Interop.Excel;
を使用することができます...
エクセル文書 http://www.codeproject.com/Articles/20228/Using-C-to-Create-an-Excel-Document
を作成するためにC#を使用したが、共通のほとんどレポートジェネレータ/デザイナは簡単にExcelにエクスポートすることができます もチェックしてくださいこのソリューションは、COM相互運用機能やDLLを必要とし、非常に高速ではありません - サービスあなたはのSQL Server
を使用している場合は、私がEPPlusをお勧めします。 Webシナリオに最適です。誰かが選択したソリューションを使用して例外「get_Rangeの定義が含まれていないオブジェクト」に遭遇念のhttp://nuget.org/packages/EPPlus
private void DumpExcel(DataTable tbl)
{
using (ExcelPackage pck = new ExcelPackage())
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(tbl, true);
//Format the header for column 1-3
using (ExcelRange rng = ws.Cells["A1:C1"])
{
rng.Style.Font.Bold = true;
rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
rng.Style.Font.Color.SetColor(Color.White);
}
//Example how to Format Column 1 as numeric
using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
{
col.Style.Numberformat.Format = "#,##0.00";
col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
//Write it back to the client
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
}
}
}
}
。ここで解決策を見つけました: Worksheet get_Range throws exception。これがあなたの時間を節約することを願っています。
- 1. ASP.NETからC#でデータテーブルをExcelにエクスポート
- 2. データセットからデータテーブルに入ってくる列を選択するにはどうすればよいですか?
- 3. ExcelスプレッドシートをXMLにエクスポートするにはどうすればよいですか?
- 4. 行を展開できるC#でデータセットからExcelにデータをエクスポートするにはどうすればいいですか?
- 5. symfony2をExcelにエクスポートするにはどうすればいいですか
- 6. DataGridviewデータをExcelにエクスポートするにはどうすればいいですか?
- 7. リストボックスからデータテーブルまたはグリッドビューにレコードを表示するにはどうすればよいですか?
- 8. データベースからビューをエクスポートするにはどうすればよいですか?
- 9. C++アドレステーブルフッキング(EAT)をエクスポートするにはどうすればよいですか?
- 10. データベースからジェネリックハンドラまたはjqueryでデータセットを取得するにはどうすればいいですか?
- 11. コンボボックスの内容をデータテーブルにエクスポートするにはどうすればよいですか?
- 12. Dynamics AX 2009からc#経由でアレイをエクスポートするにはどうすればよいですか?
- 13. 変更されたデータテーブルからSQLテーブルを更新するにはどうすればよいですか?
- 14. データセットをExcelにエクスポートする
- 15. Automapperでデータセットを使用するにはどうすればよいですか?
- 16. エクスポート属性を持たないMEFでタイプをエクスポートするにはどうすればよいですか?
- 17. C#.Netを使用してデータテーブルからマージされたデータテーブルを削除するにはどうすればよいですか?
- 18. OpenFaces DataTableをExcel/CSV形式でエクスポートするにはどうすればよいですか?
- 19. 以下のディレクトリからエクスポートされたBeanを使用するにはどうすればよいですか?
- 20. ボタンをAccessレポートに追加してExcel/PDFにエクスポートするにはどうすればよいですか?
- 21. データテーブルの行またはセルをクリック可能にするにはどうすればよいですか?
- 22. 大きなデータセットをインポートするにはどうすればよいですか?
- 23. データセットの列を削除するにはどうすればよいですか?
- 24. C#でISO週番号データテーブルをプログラムで構築するにはどうすればよいですか?
- 25. データセットまたはデータテーブルを使用せずに新しい行をdatagridviewに追加するにはどうすればよいですか?
- 26. リストをExcel互換のファイルにエクスポートするにはどうすればよいですか?
- 27. MVC詳細ビューのデータをExcelファイルにエクスポートするにはどうすればよいですか?
- 28. C++ ActiveXコントロールをExcelでうまく印刷するにはどうすればよいですか?
- 29. データテーブルからエクスポートする方法wpfのファイルをExcelにエクスポートする#
- 30. DataGridViewをReportViewerにエクスポートするにはどうすればよいですか?
@Pankaj:編集時に、「してください」、「感謝」などの感想を削除してください。我々は短くて甘いことを目指している。 :) – sarnold