1

私は DataTable オブジェクトを持っています。XLSファイルにエクスポートするにはどうすればよいですか? DataGrid経由でレンダリングしようとしました

DataGrid dgGrid = new DataGrid();
dgGrid.DataSource = dt;
dgGrid.DataBind();
dgGrid.RenderControl(hw);

しかし、ファイルは非常に大きく、OutOfMemoryException表示されます。

http://epplus.codeplex.com/を使用できます。C# 関数が必要です。

4

3 に答える 3

2

いくつかのオプションがありますが、そのうちの 1 つは、DataTable に関しても動作するAccess OLE DB Providerです。

ドキュメントに対してよりきめ細かいサポートが必要な場合は、Open XML SDK 2.0をお勧めします。これは .xmlx のみです。

生データについては、Access OLE DB (ACE プロバイダーとも呼ばれます) がデータベースのようなエクスペリエンスを可能にするため、最良の選択だと思います。Open XML は、XML に関する十分な知識と、もう少し実験する意欲があることを前提としています。一方、フォーマットを適用したり、数式を追加したり、その他の高度な機能を追加したりできます。

于 2012-08-03T14:14:14.637 に答える
2

わかりました、ここで解決策を見つけてください: http://bytesofcode.hubpages.com/hub/Export-DataSet-and-DataTable-to-Excel-2007-in-C

epplus ライブラリをダウンロードしてメソッドを呼び出すだけです。

private void GenerateExcel(DataTable dataToExcel, string excelSheetName)
        {
            string fileName = "ByteOfCode";
            string currentDirectorypath = Environment.CurrentDirectory;
            string finalFileNameWithPath = string.Empty;

            fileName = string.Format("{0}_{1}", fileName, DateTime.Now.ToString("dd-MM-yyyy"));
            finalFileNameWithPath = string.Format("{0}\\{1}.xlsx", currentDirectorypath, fileName);

            //Delete existing file with same file name.
            if (File.Exists(finalFileNameWithPath))
                File.Delete(finalFileNameWithPath);

            var newFile = new FileInfo(finalFileNameWithPath);

            //Step 1 : Create object of ExcelPackage class and pass file path to constructor.
            using (var package = new ExcelPackage(newFile))
            {
                //Step 2 : Add a new worksheet to ExcelPackage object and give a suitable name
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(excelSheetName);

                //Step 3 : Start loading datatable form A1 cell of worksheet.
                worksheet.Cells["A1"].LoadFromDataTable(dataToExcel, true, TableStyles.None);

                //Step 4 : (Optional) Set the file properties like title, author and subject
                package.Workbook.Properties.Title = @"This code is part of tutorials available at http://bytesofcode.hubpages.com";
                package.Workbook.Properties.Author = "Bytes Of Code";
                package.Workbook.Properties.Subject = @"Register here for more http://hubpages.com/_bytes/user/new/";

                //Step 5 : Save all changes to ExcelPackage object which will create Excel 2007 file.
                package.Save();

                MessageBox.Show(string.Format("File name '{0}' generated successfully.", fileName)
                    , "File generated successfully!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
于 2012-08-03T14:37:10.643 に答える
1

まず第一に、Google はあなたの親友です。こちらのサイトでも検索できます。

いくつかの解決策:

  • SQLでExcelファイルを書くことができます。
  • Microsoft Office ライブラリへの参照を使用して、Excel ファイルを作成できます
  • XML ファイルを作成できます。
于 2012-08-03T14:11:44.480 に答える