EPPlus 導出excel

EPPlus 是一個使用 Open Office Xml 格式(xlsx)讀取和寫入 Excel 2007/2010 文件的 .net 庫,並且免費開源。

下載地址:http://epplus.codeplex.com/

先創建一個 Excel 工作簿寫入數據之後,可以選擇保存至指定文件(新建文件)、保存爲流、獲取字節數組輸出到瀏覽器下載。

[Data]
[HttpPost]
public JsonResult ExportBankTemplate(List<BILLAPPROVEFIModel> SelectItemList)
{
    var result = new ResponseContext<BaseDto>();
    List<ExportBankTemplateModel> list = new List<ExportBankTemplateModel>();
    foreach (object obj in SelectItemList)
    {
        BILLAPPROVEFIModel model = obj as BILLAPPROVEFIModel;
        ExportBankTemplateModel exportBankTemplateModel = new ExportBankTemplateModel();

        string BackCard = this._iCOMMONEMPLOYEER.GetEmployeeByUserID(model.EmployeeCD);
        try
        {
            BackCard = this._iCOMMONEMPLOYEER.GetEmployeeByUserID(model.EmployeeCD);
        }
        catch (Exception ex)
        {
        }
        exportBankTemplateModel.UserName = model.EmployeeName;
        exportBankTemplateModel.TotalAmount = model.TotalAmount;
        exportBankTemplateModel.BankCardNumber = BackCard;
        list.Add(exportBankTemplateModel);
    }

    ExcelPackage package = new ExcelPackage();
    // 添加一個 sheet 表
    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("代發登記表");
    int rowIndex = 1;   // 起始行
    int colIndex = 0;   // 起始列
    //設置列名
    //worksheet.Cells[rowIndex, colIndex + 1].Value = "銀行賬號";
    //worksheet.Cells[rowIndex, colIndex + 2].Value = "姓名";
    //worksheet.Cells[rowIndex, colIndex + 3].Value = "金額";

    //自動調整列寬,也可以指定最小寬度和最大寬度
    //worksheet.Column(colIndex + 1).AutoFit();
    //worksheet.Column(colIndex + 2).AutoFit();
    //worksheet.Column(colIndex + 3).AutoFit();

    // 跳過第一列列名
    //rowIndex++;
    //寫入數據
    for (int i = 0; i < list.Count; i++)
    {
        worksheet.Cells[rowIndex + i, colIndex + 1].Value = list[i].BankCardNumber.ToString();
        worksheet.Cells[rowIndex + i, colIndex + 2].Value = list[i].UserName.ToString();
        worksheet.Cells[rowIndex + i, colIndex + 3].Value = list[i].TotalAmount.ToString();

        //自動調整行高
        worksheet.Row(rowIndex + i).CustomHeight = true;
        worksheet.Column(colIndex + 1).AutoFit();
        worksheet.Column(colIndex + 2).AutoFit();
        worksheet.Column(colIndex + 3).AutoFit();
    }

    #region 樣式
    //設置字體,也可以是中文,比如:宋體
    worksheet.Cells.Style.Font.Name = "Arial";

    //字體大小
    worksheet.Cells.Style.Font.Size = 12;

    //垂直居中
    worksheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;

    //水平居中
    worksheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

    //單元格是否自動換行
    worksheet.Cells.Style.WrapText = false;

    //設置單元格格式爲文本
    worksheet.Cells.Style.Numberformat.Format = "@";

    //單元格自動適應大小
    worksheet.Cells.Style.ShrinkToFit = true;
    #endregion

    try
    {

        //第二種保存方式
        string path2 = @"D:\wwwroot\";
        string filePath2 = path2 + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".xlsx";
        FileStream fileStream2 = new FileStream(filePath2, FileMode.Create);
        //寫入文件流
        package.SaveAs(fileStream2);

        ////也可以直接獲取字節數組
        //byte[] bytes = package.GetAsByteArray();

        ////調用下面的方法輸出到瀏覽器下載
        //OutputClient(bytes);


        package.Dispose();
    }
    catch (Exception ex)
    {
        result.Head.Msg = ex.Message;
    }

    result.Head.Msg = "導出成功";

    return Json(result, JsonRequestBehavior.AllowGet);
}

 public void OutputClient(byte[] bytes)
        {
            HttpResponse response =System.Web.HttpContext.Current.Response;

            response.Buffer = true;

            response.Clear();
            response.ClearHeaders();
            response.ClearContent();

            //response.ContentType = "application/ms-excel";
            response.ContentType = "application/vnd.openxmlformats - officedocument.spreadsheetml.sheet";
            response.AppendHeader("Content-Type", "text/html; charset=GB2312");
            response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xlsx", DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")));

            response.Charset = "GB2312";
            response.ContentEncoding = Encoding.GetEncoding("GB2312");

            response.BinaryWrite(bytes);
            response.Redirect("www.baidu.com");
            response.Flush();
            response.End();
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章