Exel 利用模板导出方法

    #region Exel导出方法
        [MaxuniAuthAttribute(Roles = "sysroles")]
        public void OrderExport(string id)
        {
            string strWhere = " from VOutProceExel where OProcessRequisitionId='" + id + "'";
            var obj = objBaseRepository.GetOneRecord(id);//数据库,表里的信息
            var objlist = objVOutProceExelRepository.GetAll(strWhere);//要导出的视图信息
            string path = Server.MapPath("~/exceltemplate/XX合同.xls");//模板
            FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);//用模板导出



            string suppliercontactperson1 = "";
            string supplierName = "";
            string supplierpaymentType = "";
            string suppliertel = "";
            string supplierfax = "";
            string supplierOrderNo = "";
            GetSupplierinfo(id, out  suppliercontactperson1, out  supplierName, out  supplierpaymentType, out  suppliertel, out  supplierfax, out  supplierOrderNo);

            string CompayName = "";
            string address = "";
            string tel = "";
            string fax = "";
            string homepage = "";
            string email = "";
            GetCompanyAddres(out  CompayName, out  address, out  tel, out  fax, out  homepage, out  email);

            IWorkbook hssfworkbook = WorkbookFactory.Create(file);//创建Execl
            ICellStyle style = hssfworkbook.CreateCellStyle();
            ISheet sheetk3 = hssfworkbook.GetSheet("inquiry");//导出的Execl里的工作表名称,一定要一致

            sheetk3.DefaultColumnWidth = 200 * 20;
            sheetk3.DefaultRowHeightInPoints = 1000;
            sheetk3.DisplayGridlines = true;


            style.BorderBottom = BorderStyle.THIN;
            style.BorderLeft = BorderStyle.THIN;
            style.BorderRight = BorderStyle.THIN;
            style.BorderTop = BorderStyle.THIN;
            int count = objlist.Count;
            
            //
            IRow row1 = sheetk3.GetRow(2);//.GetRow(2)代表Execl模板里的行数,2代表第二行
            row1.GetCell(0).SetCellValue("甲方(委托方):XX有限公司");//.GetCell(0)代表Execl模板里的列数,0代表第一列
            row1.GetCell(5).SetCellValue(obj.contractNO);//.GetCell(5)代表Execl模板里的列数,5代表第五列

            IRow row2 = sheetk3.GetRow(3);//代表Execl模板里的行数,3代表第三行
            row2.CreateCell(0).SetCellValue("乙方(加工方):");
            row2.CreateCell(2).SetCellValue(obj.supplierName);//

            IRow row3 = sheetk3.GetRow(6);//.GetRow(6)代表Execl模板里的行数,6代表第6行
            row3.CreateCell(0).SetCellValue("一、内容:");


            for (int i = 0; i < count; i++)
            {
                IRow row = sheetk3.CreateRow(7 + i);//添加序列号,从第7行开始加,加到i行
                row.CreateCell(0).SetCellValue(i + 1);
                row.CreateCell(1).SetCellValue(objlist[i].mouldNo);
                row.CreateCell(2).SetCellValue(objlist[i].partName);
                row.CreateCell(3).SetCellValue(objlist[i].drawingNo);
                row.CreateCell(4).SetCellValue(objlist[i].OutTypeName);
                row.CreateCell(5).SetCellValue(objlist[i].qty);
                row.CreateCell(6).SetCellValue(objlist[i].processRemark);
                row.CreateCell(7).SetCellValue(objlist[i].Price);
                row.CreateCell(8).SetCellValue(objlist[i].TotaPricel);
                row.CreateCell(9).SetCellValue(objlist[i].oendDate == null ? "" : objlist[i].oendDate.Value.ToString("yyyy-MM-dd"));

                row.Cells[0].CellStyle = style;
                row.Cells[1].CellStyle = style;
                row.Cells[2].CellStyle = style;
                row.Cells[3].CellStyle = style;
                row.Cells[4].CellStyle = style;
                row.Cells[5].CellStyle = style;
                row.Cells[6].CellStyle = style;
                row.Cells[7].CellStyle = style;
                row.Cells[8].CellStyle = style;
                row.Cells[9].CellStyle = style;

            }

            IRow row4 = sheetk3.GetRow(29);
            string strdiscount = "";
            if (obj.discount == 100)
                strdiscount = "";
            else
                strdiscount = "折扣:" + obj.discount + "%";
            row4.GetCell(8).SetCellValue(obj.discountPrice.ToString());
            row4.GetCell(9).SetCellValue(strdiscount);

            IRow row5 = sheetk3.GetRow(49);
            row5.GetCell(1).SetCellValue("付款方式:" + supplierpaymentType);

            IRow row6 = sheetk3.GetRow(56);
            row6.GetCell(2).SetCellValue(obj.outUserName);



            MemoryStream ms = new MemoryStream();
            hssfworkbook.Write(ms);//
            Response.ContentType = "application/vnd.ms-excel";
            if (obj.contractNO == null)
            {
                Response.AddHeader("Content-Disposition", string.Format("attachment;filename=inquiry.xls"));
            }
            else
            {
                Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + obj.contractNO + ".xls"));
            }
            Response.BinaryWrite(ms.ToArray());
            Response.End();
            hssfworkbook = null;
            ms.Close();
            ms.Dispose();

        }
        #endregion

        #region 公司地址及详细信息
        private void GetCompanyAddres(out string CompayName, out string address, out string tel, out string fax, out string homepage, out string email)
        {
            var model = objCompayRepositoryRepository.GetAll();
            CompayName = "";
            address = "";
            tel = "";
            fax = "";
            homepage = "";
            email = "";
            if (model.Count > 0)
            {
                CompayName = model[0].CompayName;
                address = model[0].address;
                tel = model[0].tel;
                fax = model[0].fax;
                homepage = model[0].homepage;
                email = model[0].email;
                //ViewData["companyname"] = model[0].CompayName;
                //ViewData["address"] = model[0].address;
                //ViewData["tel"] = model[0].tel;
                //ViewData["fax"] = model[0].fax;
                //ViewData["homepage"] = model[0].homepage;
                //ViewData["email"] = model[0].email;
            }
        }
        #endregion

        #region 供应商地址级详细信息 合同条约


        private void GetSupplierinfo(string id, out string suppliercontactperson1, out string supplierName, out string supplierpaymentType, out string suppliertel, out string supplierfax, out string supplierOrderNo)
        {
            OProcessRequisition objOrderApply = objBaseRepository.GetOneRecord(id);
            string strSupplierid = objOrderApply.supplierID;
            Supplier objsupplier = new Supplier();
            if (!string.IsNullOrEmpty(strSupplierid))
                objsupplier = objSupplierRepository.GetOneRecord(strSupplierid);

            suppliercontactperson1 = objsupplier.contactperson1;
            supplierName = objsupplier.supplierName;
            supplierpaymentType = objsupplier.paymentType + ";税率:" + objsupplier.taxRate;
            suppliertel = objsupplier.tel;
            supplierfax = objsupplier.fax;
            supplierOrderNo = objOrderApply.contractNO;

            IList<OrderCond> objordercond = objOrderCondRepository.GetAll("from OrderCond where  TypeNo=1").OrderBy(o => o.SortId).ToList();
            //var objplaymenthod = objordercond.FirstOrDefault(o => o.SortId ==6);
            //var obj = objplaymenthod;
            //objordercond.Remove(objplaymenthod);
            //obj.CondContent = objplaymenthod.CondContent.Replace(":", "").Replace(":", "") + ":" + objsupplier.paymentType + ";税率:" + objsupplier.taxRate;
            //objordercond.Insert(11, obj);
            ViewData["allcond"] = objordercond;
        }
        #endregion
原文地址:https://www.cnblogs.com/liuwj/p/3421409.html