zoukankan      html  css  js  c++  java
  • EPPlus与Excel完美的结合

    本文转载:http://www.cnblogs.com/olartan/archive/2012/07/14/2591711.html

    笔者近期在公司项目中需要生产比较复杂的Excel报表, 问题点是单个Excel文件中必须能包含多个sheet, 按照以前项目的经验, 此情况需要使用MS Office组件实现。但是客观情况是office组件其版本兼容问题比较多(Excel版本不一致导致无法使用、excel进程无法回收、导致w3wp 进程崩溃等), 无法把控摒弃之。

    在codeplex上看到EPPlus组件, 好像可以解决上述问题。

    EPPlus使用的是Open Office XML Format, 其读写支持Excel 2003/2007。

    项目地址:http://epplus.codeplex.com/

    在asp.net页面上导出Excel代码如下:

    复制代码
    public static void DumpExcel(HttpContext context,string flieName,IDictionary<string,DataTable> dict)
            {
                using (ExcelPackage pck = new ExcelPackage())
                {
                    foreach (var kp in dict)
                    {
                        //Create the worksheet
                        ExcelWorksheet ws = pck.Workbook.Worksheets.Add(kp.Key);
    
                        //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
                        ws.Cells["A1"].LoadFromDataTable(kp.Value, 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
                    var data = pck.GetAsByteArray();
                    context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    context.Response.AddHeader("content-disposition", "attachment;  filename=" + flieName + ".xlsx");
                    context.Response.AddHeader("Content-Length", data.Length.ToString());
                    context.Response.BinaryWrite(data);
                }
            }
    复制代码

    参数dict传递的是sheetname和DataTable的键值对!

  • 相关阅读:
    Robot Framework-资源文件的使用方法(7)
    Robot Framework-用户关键字的使用方法(6)
    robotframework 新建UI自动化测试用例实例一(2)
    robotframework--登录接口,post传递多个参数、及获取content中指定属性的值(5)
    robotframework基础知识(2)
    win7如何打开防火墙某个端口的tcp连接
    外观模式
    享元模式
    代理模式
    模板模式
  • 原文地址:https://www.cnblogs.com/51net/p/3917444.html
Copyright © 2011-2022 走看看