将数据导出到asp.net应用程序中的excel文件

时间:2012-04-02 08:01:10

标签: c# asp.net export-to-excel

有人可以提供一个链接,教程是关于在asp.net web应用程序中使用c#将数据导出到excel文件。我搜索了互联网,但我找不到任何可以解释他们如何做的教程。

5 个答案:

答案 0 :(得分:1)

有一种简单的方法可以使用npoi.mapper只有2行

var mapper = new Mapper();
mapper.Save("test.xlsx",  objects, "newSheet");

答案 1 :(得分:1)

将列表传递给下面的方法,将列表转换为缓冲区,然后返回缓冲区,下载文件。

List<T> resultList = New List<T>();
  byte[] buffer = Write(resultList, true, "AttendenceSummary");
            return File(buffer, "application/excel", reportTitle + ".xlsx");
public static byte[] Write<T>(IEnumerable<T> list, bool xlsxExtension = true, string sheetName = "ExportData")
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            XSSFWorkbook hssfworkbook = new XSSFWorkbook();
            int Rowspersheet = 15000;
            int TotalRows = list.Count();
            int TotalSheets = TotalRows / Rowspersheet;

            for (int i = 0; i <= TotalSheets; i++)
            {
                ISheet sheet1 = hssfworkbook.CreateSheet(sheetName + "_" + i);
                IRow row = sheet1.CreateRow(0);
                int index = 0;
                foreach (PropertyInfo property in typeof(T).GetProperties())
                {
                    ICellStyle cellStyle = hssfworkbook.CreateCellStyle();
                    IFont cellFont = hssfworkbook.CreateFont();

                    cellFont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;
                    cellStyle.SetFont(cellFont);

                    ICell cell = row.CreateCell(index++);
                    cell.CellStyle = cellStyle;
                    cell.SetCellValue(property.Name);
                }

                int rowIndex = 1;
                // int rowIndex2 = 1;

                foreach (T obj in list.Skip(Rowspersheet * i).Take(Rowspersheet))
                {

                    row = sheet1.CreateRow(rowIndex++);
                    index = 0;

                    foreach (PropertyInfo property in typeof(T).GetProperties())
                    {
                        ICell cell = row.CreateCell(index++);
                        cell.SetCellValue(Convert.ToString(property.GetValue(obj)));
                    }

                }
            }

            MemoryStream file = new MemoryStream();
            hssfworkbook.Write(file);
            return file.ToArray();

        }

答案 2 :(得分:0)

您可以使用互操作http://www.c-sharpcorner.com/UploadFile/Globalking/datasettoexcel02272006232336PM/datasettoexcel.aspx

或者,如果您不想在Web服务器上安装Microsoft Office 我建议使用CarlosAg.ExcelXmlWriter,可在此处找到:http://www.carlosag.net/tools/excelxmlwriter/

ExcelXmlWriter的代码示例:

using CarlosAg.ExcelXmlWriter;

class TestApp {
    static void Main(string[] args) {
        Workbook book = new Workbook();
        Worksheet sheet = book.Worksheets.Add("Sample");
        WorksheetRow row =  sheet.Table.Rows.Add();
        row.Cells.Add("Hello World");
        book.Save(@"c:\test.xls");
    }
}

答案 3 :(得分:0)

答案 4 :(得分:0)

我写了一个C#类,它允许你编写你的DataSet,DataTable或List&lt;&gt;使用OpenXML库将数据直接导入Excel .xlsx文件。

http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

完全免费下载,非常 ASP.Net友好。

只需传递我的C#函数要写入的数据,要创建的文件的名称,以及页面的“响应”变量,它将为您创建Excel文件,并将其直接写入页面,为用户准备好保存/打开。

class Employee;
List<Employee> listOfEmployees = new List<Employee>();


// The following ASP.Net code gets run when I click on my "Export to Excel" button.
protected void btnExportToExcel_Click(object sender, EventArgs e)
{
    // It doesn't get much easier than this...
    CreateExcelFile.CreateExcelDocument(listOfEmployees, "Employees.xlsx", Response);
}

(我为一家金融公司工作,我们在每个应用程序中都没有这个功能而迷失了!)