EPPlus와 Excel의 완벽한 결합

5679 단어 Excel
필자는 최근에 회사 프로젝트에서 비교적 복잡한 Excel 보고서를 생산해야 한다. 문제는 하나의 Excel 파일에 여러 개의 sheet를 포함해야 한다는 것이다. 이전 프로젝트의 경험에 따르면 이 상황은 MS Office 구성 요소를 사용하여 실현해야 한다.그러나 객관적인 상황은 오피스 구성 요소의 버전 호환 문제가 비교적 많다는 것이다. (엑셀 버전이 일치하지 않아 사용할 수 없고, excel 프로세스가 회수할 수 없고, w3wp 프로세스가 붕괴되는 등) 제어를 버릴 수 없다.
Codeplex에서 EPPlus 구성 요소를 보면 이 문제를 해결할 수 있을 것 같습니다.
EPPlus는 Excel 2003/2007을 지원하는 FormatOpen Office XML을 사용합니다.
프로젝트 주소: 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의 키 값을 전달합니다!

좋은 웹페이지 즐겨찾기