| /******************************************************************************* | 
 |  * You may amend and distribute as you like, but don't remove this header! | 
 |  *  | 
 |  * All rights reserved. | 
 |  *  | 
 |  * EPPlus is an Open Source project provided under the  | 
 |  * GNU General Public License (GPL) as published by the  | 
 |  * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 
 |  *  | 
 |  * See http://epplus.codeplex.com/ for details | 
 |  *  | 
 |  * The GNU General Public License can be viewed at http://www.opensource.org/licenses/gpl-license.php | 
 |  * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html | 
 |  *  | 
 |  * The code for this project may be used and redistributed by any means PROVIDING it is  | 
 |  * not sold for profit without the author's written consent, and providing that this notice  | 
 |  * and the author's name and all copyright notices remain intact. | 
 |  *  | 
 |  * All code and executables are provided "as is" with no warranty either express or implied.  | 
 |  * The author accepts no liability for any damage or loss of business that this product may cause. | 
 |  * | 
 |  * Code change notes: | 
 |  *  | 
 |  * Author							Change						Date | 
 |  ******************************************************************************* | 
 |  * Jan Källman		Added		23-MAR-2010 | 
 |  *******************************************************************************/ | 
 | using System; | 
 | using System.Collections.Generic; | 
 | using System.Web; | 
 | using System.Web.UI; | 
 | using System.Web.UI.WebControls; | 
 | using OfficeOpenXml; | 
 | using System.IO; | 
 | using OfficeOpenXml.Style; | 
 | using System.Drawing; | 
 | using System.Text; | 
 | namespace EPPlusWebSample | 
 | { | 
 |     public partial class GetSample : System.Web.UI.Page | 
 |     { | 
 |         protected void Page_Load(object sender, EventArgs e) | 
 |         { | 
 |             switch (Request.QueryString["Sample"]) | 
 |             { | 
 |                 case "1": | 
 |                     Sample1(); | 
 |                     break; | 
 |                 case "2": | 
 |                     Sample2(); | 
 |                     break; | 
 |                 case "3": | 
 |                     Sample3(); | 
 |                     break; | 
 |                 case "4": | 
 |                     Sample4(); | 
 |                     break; | 
 |                 default: | 
 |                     Response.Write("<script>javascript:alert('Invalid querystring');</script>"); | 
 |                     break; | 
 |  | 
 |             } | 
 |         } | 
 |  | 
 |         /// <summary> | 
 |         /// Sample 1  | 
 |         /// Demonstrates the SaveAs method | 
 |         /// </summary> | 
 |         private void Sample1() | 
 |         { | 
 |             ExcelPackage pck = new ExcelPackage(); | 
 |             var ws = pck.Workbook.Worksheets.Add("Sample1"); | 
 |  | 
 |             ws.Cells["A1"].Value = "Sample 1"; | 
 |             ws.Cells["A1"].Style.Font.Bold = true; | 
 |             var shape = ws.Drawings.AddShape("Shape1", eShapeStyle.Rect); | 
 |             shape.SetPosition(50, 200); | 
 |             shape.SetSize(200, 100); | 
 |             shape.Text = "Sample 1 saves to the Response.OutputStream"; | 
 |  | 
 |             pck.SaveAs(Response.OutputStream); | 
 |             Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; | 
 |             Response.AddHeader("content-disposition", "attachment;  filename=Sample1.xlsx"); | 
 |         } | 
 |         /// <summary> | 
 |         /// Sample 2 | 
 |         /// Demonstrates the GetAsByteArray method | 
 |         /// </summary> | 
 |         private void Sample2() | 
 |         { | 
 |             ExcelPackage pck = new ExcelPackage(); | 
 |             var ws = pck.Workbook.Worksheets.Add("Sample2"); | 
 |  | 
 |             ws.Cells["A1"].Value = "Sample 2"; | 
 |             ws.Cells["A1"].Style.Font.Bold = true; | 
 |             var shape = ws.Drawings.AddShape("Shape1", eShapeStyle.Rect); | 
 |             shape.SetPosition(50, 200); | 
 |             shape.SetSize(200, 100); | 
 |             shape.Text = "Sample 2 outputs the sheet using the Response.BinaryWrite method"; | 
 |  | 
 |             Response.BinaryWrite(pck.GetAsByteArray()); | 
 |             Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; | 
 |             Response.AddHeader("content-disposition", "attachment;  filename=Sample2.xlsx"); | 
 |         } | 
 |         /// <summary> | 
 |         /// Sample 3 | 
 |         /// Uses a cached template | 
 |         /// </summary> | 
 |         private void Sample3() | 
 |         { | 
 |             if (Application["Sample3Template"] == null) //Check if the template is loaded | 
 |             { | 
 |                 //Here we create the template.  | 
 |                 //As an alternative the template could be loaded from disk or from a resource. | 
 |                 ExcelPackage pckTemplate = new ExcelPackage(); | 
 |                 var wsTemplate = pckTemplate.Workbook.Worksheets.Add("Sample3"); | 
 |  | 
 |                 wsTemplate.Cells["A1"].Value = "Sample 3"; | 
 |                 wsTemplate.Cells["A1"].Style.Font.Bold = true; | 
 |                 var shape = wsTemplate.Drawings.AddShape("Shape1", eShapeStyle.Rect); | 
 |                 shape.SetPosition(50, 200); | 
 |                 shape.SetSize(200, 100); | 
 |                 shape.Text = "Sample 3 uses a template that is stored in the application cashe."; | 
 |                 pckTemplate.Save(); | 
 |  | 
 |                 Application["Sample3Template"] = pckTemplate.Stream; | 
 |             } | 
 |  | 
 |             //Open the new package with the template stream. | 
 |             //The template stream is copied to the new stream in the constructor | 
 |             ExcelPackage pck = new ExcelPackage(new MemoryStream(), Application["Sample3Template"] as Stream); | 
 |             var ws = pck.Workbook.Worksheets[1]; | 
 |             int row = new Random().Next(10) + 10;   //Pick a random row to print the text | 
 |             ws.Cells[row,1].Value = "We make a small change here, after the template has been loaded..."; | 
 |             ws.Cells[row, 1, row, 5].Style.Fill.PatternType = ExcelFillStyle.Solid; | 
 |             ws.Cells[row, 1, row, 5].Style.Fill.BackgroundColor.SetColor(Color.LightGoldenrodYellow); | 
 |  | 
 |             Response.BinaryWrite(pck.GetAsByteArray()); | 
 |             Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; | 
 |             Response.AddHeader("content-disposition", "attachment;  filename=Sample3.xlsx"); | 
 |         } | 
 |         private void Sample4() | 
 |         { | 
 |              ExcelPackage pck = new ExcelPackage(); | 
 |  | 
 |             //Add a worksheet. | 
 |             var ws=pck.Workbook.Worksheets.Add("VBA Sample"); | 
 |             ws.Drawings.AddShape("VBASampleRect", eShapeStyle.RoundRect); | 
 |              | 
 |             //Create a vba project              | 
 |             pck.Workbook.CreateVBAProject(); | 
 |  | 
 |             //Now add some code that creates a bubble chart... | 
 |             var sb = new StringBuilder(); | 
 |  | 
 |             sb.AppendLine("Private Sub Workbook_Open()"); | 
 |             sb.AppendLine("    [VBA Sample].Shapes(\"VBASampleRect\").TextEffect.Text = \"This text is set from VBA!\""); | 
 |             sb.AppendLine("End Sub"); | 
 |             pck.Workbook.CodeModule.Code = sb.ToString(); | 
 |  | 
 |             Response.BinaryWrite(pck.GetAsByteArray()); | 
 |             Response.ContentType = "application/vnd.ms-excel.sheet.macroEnabled.12";            //.xlsm files uses a different contenttype than .xlsx | 
 |             Response.AddHeader("content-disposition", "attachment;  filename=Sample4.xlsm"); | 
 |  | 
 |         } | 
 |  | 
 |     } | 
 | } |