C#导出Excel

————————————————————————————————————————————————————

一个简单的mvc导出Excel..........................

准备工作:引用dll

HTNL

<a class="btn btn-primary dropdown-text" onclick="btn_Export()"><i class="fa fa-plus"></i>导出提单</a>

JS

 //导出
    function btn_Export() {
        $('#export').attr('action', "@Url.Action("方法(BillFile)", "控制器", "所在文件夹")").submit();
    }

后台


        /// <summary>
        ///  导出
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult BillFile(string OrgIds, string start_Time, string end_Time)//前台传过来的参数/可有可无
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();//数据流
            // 获取导出的数据
            var data = _jointSqlService.GetBillList(OrgIds, start_Time, end_Time);
            if (data.Count != 0)
            {
                var book = WriteBillExcel(data);
                book.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);
                return File(ms, "application/vnd.ms-excel", string.Format("导出Excel的名称-{0}/条.xls",data.Count));
            }
            return File(ms, "application/vnd.ms-excel", string.Format("未找到数据-{0}/条.xls", data.Count));
        }

        /// <summary>
        ///  向Excel中写信息
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private HSSFWorkbook WriteBillExcel(List<BillMonthlyStatisticsModel> list)
        {
            var filePath = Server.MapPath(@"~\Documents\XXXX.xls");//物理路径,前提所在文件夹里必须有该文件所在
            FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);//创建工作簿
            HSSFSheet sheet = hssfworkbook.GetSheetAt(0) as HSSFSheet;//创建页码

            if (null != sheet)
            {
                //这里是创建新的行,如果createRow 为null时重启一下
                var createRow = sheet.CreateRow(0);//创建行
                var createStyle = hssfworkbook.CreateCellStyle();//创建样式
                var createFont = hssfworkbook.CreateFont();//创建字体
                createFont.FontName = "宋体";
                createFont.Boldweight = (short)FontBoldWeight.Bold;//粗体
                createFont.FontHeightInPoints = 12;//字体大小
                createRow.Height = 50 * 10;//行高
                sheet.SetColumnWidth(0, 30 * 120);//行宽
                createRow.CreateCell(0).SetCellValue("XXXX");
                sheet.SetColumnWidth(1, 30 * 250);
                createRow.CreateCell(1).SetCellValue("XXXX");
                sheet.SetColumnWidth(2, 30 * 190);
                createRow.CreateCell(2).SetCellValue("XXXX");
                sheet.SetColumnWidth(3, 30 * 190);
                createRow.CreateCell(3).SetCellValue("XXXX");

                //字体居中
                createStyle.Alignment = HorizontalAlignment.Center;
                createStyle.SetFont(createFont);
                createRow.GetCell(0).CellStyle = createStyle;
                createRow.GetCell(1).CellStyle = createStyle;
                createRow.GetCell(2).CellStyle = createStyle;
                createRow.GetCell(3).CellStyle = createStyle;
                for (int i = 0; i < list.Count; i++)
                {
                    var row = sheet.CreateRow(i+1);
                    row.CreateCell(0).SetCellValue(string.IsNullOrEmpty(list[i].TRANSPORTCONTRACTDOCUMENT_ID) ? " " : list[i].TRANSPORTCONTRACTDOCUMENT_ID);
                    row.CreateCell(1).SetCellValue(string.IsNullOrEmpty(list[i].ASSOCIATEDTRANSPORTDOCUMENT_ID) ? " " : list[i].ASSOCIATEDTRANSPORTDOCUMENT_ID);
                    row.CreateCell(2).SetCellValue(string.IsNullOrEmpty((list[i].DECLARE_DATE).ToString())?"":Convert.ToDateTime(list[i].DECLARE_DATE).ToString("yyyy-MM-dd HH:mm:ss"));
                    row.CreateCell(3).SetCellValue(string.IsNullOrEmpty((list[i].REC_SENTTIME).ToString()) ? "" : Convert.ToDateTime(list[i].REC_SENTTIME).ToString("yyyy-MM-dd HH:mm:ss"));
                }
            }
            sheet.ForceFormulaRecalculation = true;
            return hssfworkbook;
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值