将数据从DataTable导出到Excel文件

时间:2012-08-03 14:07:10

标签: c# asp.net excel datatable

我有DataTable对象。如何将其导出到XLS文件中? 我试图通过DataGrid

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

但文件非常大,并显示OutOfMemoryException

我可以使用http://epplus.codeplex.com/。 我需要C#功能。

3 个答案:

答案 0 :(得分:2)

有很多选项,其中一个是Access OLE DB Provider,它也按照DataTables运作。

如果您希望对文档提供更细粒度的支持,我建议使用Open XML SDK 2.0,whixh仅限.xmlx。

对于原始数据,我认为Access OLE DB(也称为ACE提供程序)是最佳选择,因为它可以实现类似数据库的体验。 Open XML假定XML具有相当好的知识,并且愿意进行更多实验。另一方面,您可以应用格式,添加公式和其他高级功能。

答案 1 :(得分: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);
            }
        }

答案 2 :(得分:1)

首先,谷歌是你最好的朋友。您也可以在这个网站上搜索。

一些解决方案:

  • 您可以使用SQL编写excel文件。
  • 您可以使用对Microsoft Office库的引用来创建Excel文件
  • 您可以编写XML文件。