利用NPOI 导出文件到Excel (导出合同)
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using VO; using DAL; using BLL; using System.IO; using System.Text; using NPOI; using NPOI.HPSF; using NPOI.HSSF; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.POIFS; using NPOI.Util; using NPOI.POIFS.FileSystem; using System.Collections.Generic; public partial class HT_HTSKMessage : System.Web.UI.Page { public static IList<Tb_HTMXInfo> list = new List<Tb_HTMXInfo>(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { datebinss(); } } //生成Excel protected void btntoExcel_Click(object sender, EventArgs e) { try { Tb_HTInfo info = new Tb_HTInfo(); info.Ht_id = Convert.ToInt32(lblhtid.Text); info = new Tb_HTHelper().FindSelf(info); string fileName = HttpUtility.UrlDecode(info.Ht_HTName+".xls"); Response.ContentType = "application/x-excel"; Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls"); HSSFWorkbook hssfWorkBook = new HSSFWorkbook();//1、创建一个文件对象 HSSFSheet sheet1 = hssfWorkBook.CreateSheet("合同正文");//2、创建一个工作薄 HSSFSheet sheet2 = hssfWorkBook.CreateSheet("合同附件"); HSSFSheet sheet3 = hssfWorkBook.CreateSheet("sheet1"); sheet1.SetColumnWidth(2, 26 * 256);//设置指定列的宽度 sheet1.SetColumnWidth(4, 24 * 256); sheet1.SetColumnWidth(5, 15 * 256); HSSFRow row = sheet1.CreateRow(0);//建行 HSSFCell cell = row.CreateCell(0);//建单元格 cell.SetCellValue(info.Ht_HTName);//合同名称 //单元格对齐方式 HSSFCellStyle style = hssfWorkBook.CreateCellStyle(); style.Alignment = HSSFCellStyle.ALIGN_CENTER; //文本样式 HSSFFont font = hssfWorkBook.CreateFont(); font.FontHeight = 18 * 18; style.SetFont(font); cell.CellStyle = style; //合并单元格 sheet1.AddMergedRegion(new Region(0, 0, 0, 5)); HSSFRow row1 = sheet1.CreateRow(1); HSSFCell cell2 = row1.CreateCell(4); cell2.SetCellValue("合同号:" + info.Ht_HTnumber); HSSFCellStyle style1 = hssfWorkBook.CreateCellStyle(); HSSFFont font1 = hssfWorkBook.CreateFont(); font1.Color = HSSFColor.RED.index;//设置单元格字体颜色 font1.FontHeightInPoints = 12;//设置单元格字体大小 style1.SetFont(font1); cell2.CellStyle = style1; sheet1.AddMergedRegion(new Region(1, 4, 1, 5)); sheet1.CreateRow(2).CreateCell(0).SetCellValue("甲方:"); sheet1.CreateRow(2).CreateCell(1).SetCellValue("名称:"); sheet1.CreateRow(2).CreateCell(2).SetCellValue(info.Ht_MaiF1); sheet1.CreateRow(3).CreateCell(1).SetCellValue("地址:"); sheet1.CreateRow(3).CreateCell(2).SetCellValue(""); sheet1.AddMergedRegion(new Region(3, 2, 3, 4)); sheet1.CreateRow(4).CreateCell(1).SetCellValue("电话:"); sheet1.CreateRow(4).CreateCell(2).SetCellValue(info.Ht_MF1Contact); sheet1.CreateRow(4).CreateCell(3).SetCellValue("传真:"); sheet1.CreateRow(4).CreateCell(4).SetCellValue(""); sheet1.CreateRow(5).CreateCell(0).SetCellValue("乙方:"); sheet1.CreateRow(5).CreateCell(1).SetCellValue("名称:"); sheet1.CreateRow(5).CreateCell(2).SetCellValue(info.Ht_MaiF2); sheet1.CreateRow(6).CreateCell(1).SetCellValue("地址:"); sheet1.CreateRow(6).CreateCell(2).SetCellValue(""); sheet1.AddMergedRegion(new Region(6, 2, 6, 3)); sheet1.CreateRow(7).CreateCell(1).SetCellValue("电话:"); sheet1.CreateRow(7).CreateCell(2).SetCellValue(info.Ht_MF2Contact); sheet1.CreateRow(7).CreateCell(3).SetCellValue("传真:"); sheet1.CreateRow(7).CreateCell(4).SetCellValue(""); sheet1.CreateRow(8).CreateCell(1).SetCellValue("开户行:"); sheet1.CreateRow(8).CreateCell(3).SetCellValue("账号:"); #region sheet1.CreateRow(9).CreateCell(1).SetCellValue("甲乙协商一致,就甲方向乙方购买网络产品事宜达成如下协议:"); sheet1.CreateRow(10).CreateCell(1).SetCellValue("一、产品名称、型号、数量、价格见《合同附件——购货清单》。"); sheet1.CreateRow(11).CreateCell(1).SetCellValue("二、本合同总金额(大写) 人民币:"); sheet1.CreateRow(11).CreateCell(3).SetCellValue(MoneyToString.GetCnString(info.Ht_HTmoney.ToString())); sheet1.AddMergedRegion(new Region(11, 1, 11, 2)); sheet1.AddMergedRegion(new Region(11, 3, 11, 4)); sheet1.CreateRow(12).CreateCell(1).SetCellValue("三、交货时间、地点、方式:甲乙双方初定交货时间为合同签订后三个工作日内,乙方在此日"); sheet1.CreateRow(13).CreateCell(1).SetCellValue("期前将货物运送至甲方指定地(详见附件)。乙方应当在2个工作日内将实际交货时间通知甲"); sheet1.CreateRow(14).CreateCell(1).SetCellValue("方,如实际交货时间与初定交货时间有差异的,以实际交货时间为准。"); sheet1.CreateRow(15).CreateCell(1).SetCellValue("四、运输方式及费用负担:由乙方代办托运并承担相关运输费用"); sheet1.CreateRow(16).CreateCell(1).SetCellValue("五、产品包装:以厂家包装为准;如需特殊包装见附件。"); sheet1.CreateRow(17).CreateCell(1).SetCellValue("六、验收标准、方法及提出异议期限:"); sheet1.CreateRow(18).CreateCell(1).SetCellValue("七、 质量异议:甲方对产品的质量异议应自收到产品之日起3天内书面提出,逾期视为无质量"); sheet1.CreateRow(19).CreateCell(1).SetCellValue("异议。乙方对产品提供的保修服务内容见本合同第一条。"); sheet1.CreateRow(20).CreateCell(1).SetCellValue("八、结算方式及期限:"); sheet1.CreateRow(21).CreateCell(1).SetCellValue(" 货到后30天内将全额货款以电汇方式付清。甲方付款前乙方需提供相应金额增值税发票。"); sheet1.CreateRow(22).CreateCell(1).SetCellValue("九、发票形式:17%增值税专用发票。"); sheet1.CreateRow(23).CreateCell(1).SetCellValue("十、产品的保修期及售后服务:"); sheet1.CreateRow(24).CreateCell(1).SetCellValue(" 1、 产品的售后质保服务由厂家负责。"); sheet1.CreateRow(25).CreateCell(1).SetCellValue(" 2、 出现的质量问题,乙方应积极协助联系厂家解决,具体事宜双方协商。"); sheet1.CreateRow(26).CreateCell(1).SetCellValue("十一、保密条款:甲乙双方对本合同的价格有保密义务,未经同意不得向第三方公开,"); sheet1.CreateRow(27).CreateCell(1).SetCellValue("否则视为违约"); sheet1.CreateRow(28).CreateCell(1).SetCellValue("十二、违约责任:"); sheet1.CreateRow(29).CreateCell(1).SetCellValue(" 1、所提交的产品与合同约定不符的,乙方应承担相应赔偿责任。"); sheet1.CreateRow(30).CreateCell(1).SetCellValue(" 2、乙方应按时交货,甲方应如期付款。如逾期付款或交货,应按合同违约金额的5%支付"); sheet1.CreateRow(31).CreateCell(1).SetCellValue("违约金,并按逾期金额的每天万分之三支付逾期利息。双方对违约责任的承担仅限于本合同。"); sheet1.CreateRow(32).CreateCell(1).SetCellValue(" 3、甲方拒绝收货的,甲方应赔偿因此而给乙方造成的直接损失。"); sheet1.CreateRow(33).CreateCell(1).SetCellValue("十三、不可抗力:一方因不可抗力不能履行或不能完全履行合同时,应当及时告知对方事"); sheet1.CreateRow(34).CreateCell(1).SetCellValue("由,并在合理期限内由当地政府部门提供相关证明,双方据实重新协商合同履行事项。"); sheet1.CreateRow(35).CreateCell(1).SetCellValue("十四、纠纷解决:本合同在履行过程中发生争议,由当事人双方协商解决。协商不成,任何"); sheet1.CreateRow(36).CreateCell(1).SetCellValue("一方有权向其所在地有管辖权的人民法院提起诉讼。"); sheet1.CreateRow(37).CreateCell(1).SetCellValue("十五、 本合同经双方签名盖章后生效,一式二份,双方各执一份,传真件具同等法律效力。"); sheet1.CreateRow(38).CreateCell(1).SetCellValue("甲方:"); sheet1.CreateRow(38).CreateCell(2).SetCellValue(info.Ht_MaiF1); sheet1.CreateRow(38).CreateCell(3).SetCellValue("乙方:"); sheet1.CreateRow(38).CreateCell(4).SetCellValue(info.Ht_MaiF2); sheet1.CreateRow(39).CreateCell(1).SetCellValue(""); sheet1.CreateRow(40).CreateCell(1).SetCellValue("代表:"); sheet1.CreateRow(40).CreateCell(2).SetCellValue(info.Ht_MaiF1Man); sheet1.CreateRow(40).CreateCell(3).SetCellValue("代表:"); sheet1.CreateRow(40).CreateCell(4).SetCellValue(info.Ht_MaiF2Man); sheet1.CreateRow(41).CreateCell(1).SetCellValue(""); sheet1.CreateRow(42).CreateCell(1).SetCellValue("日期:"); sheet1.CreateRow(42).CreateCell(2).SetCellValue(info.Ht_QDTime.Year + "年" + info.Ht_QDTime.Month + "月" + info.Ht_QDTime.Day + "日"); sheet1.CreateRow(42).CreateCell(3).SetCellValue("日期:"); sheet1.CreateRow(42).CreateCell(4).SetCellValue(info.Ht_QDTime.Year + "年" + info.Ht_QDTime.Month + "月" + info.Ht_QDTime.Day + "日"); #endregion sheet2.SetColumnWidth(0, 5 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(1, 13 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(2, 19 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(3, 12 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(4, 7 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(5, 10 * 256);//设置指定列的宽度 sheet2.SetColumnWidth(6, 10 * 256);//设置指定列的宽度 sheet2.DefaultRowHeight = 30 * 20;//设置默认行高 HSSFRow s2_row = sheet2.CreateRow(0);//建行 HSSFCell s2_cell = s2_row.CreateCell(0);//建单元格 s2_cell.SetCellValue("合同附件1");//标题 //单元格对齐方式 HSSFCellStyle s2_style = hssfWorkBook.CreateCellStyle(); s2_style.Alignment = HSSFCellStyle.ALIGN_CENTER; //文本样式 HSSFFont s2_font = hssfWorkBook.CreateFont(); s2_font.FontHeight = 18 * 18; s2_style.SetFont(font); s2_cell.CellStyle = s2_style; //合并单元格 sheet2.AddMergedRegion(new Region(0, 0, 0, 7)); sheet2.CreateRow(1).CreateCell(0).SetCellValue("一、购货清单"); sheet2.CreateRow(1).CreateCell(5).SetCellValue("合同编号:" + info.Ht_HTnumber); sheet2.AddMergedRegion(new Region(1, 0, 1, 1));//行、列、行、列 sheet2.AddMergedRegion(new Region(1, 4, 1, 7)); sheet2.AddMergedRegion(new Region(2, 0, 2, 7)); sheet2.CreateRow(3).CreateCell(0).SetCellValue("序"); sheet2.CreateRow(3).CreateCell(1).SetCellValue("产品名称"); sheet2.CreateRow(3).CreateCell(2).SetCellValue("产品型号"); sheet2.CreateRow(3).CreateCell(3).SetCellValue("产品编码"); sheet2.CreateRow(3).CreateCell(4).SetCellValue("数量"); sheet2.CreateRow(3).CreateCell(5).SetCellValue("产品单价"); sheet2.CreateRow(3).CreateCell(6).SetCellValue("小计"); sheet2.CreateRow(3).CreateCell(7).SetCellValue("备注"); int h = 4;//行 int number = 1;//序号 for (int i = 0; i < list.Count; i++) { sheet2.CreateRow(h).CreateCell(0).SetCellValue(number.ToString());//序 sheet2.CreateRow(h).CreateCell(1).SetCellValue(list[i].Hm_name);//产品名称 sheet2.CreateRow(h).CreateCell(2).SetCellValue(list[i].Hm_CpXHNumber);//产品编号 sheet2.CreateRow(h).CreateCell(3).SetCellValue(list[i].Hm_CpBhNumber);//产品编号 sheet2.CreateRow(h).CreateCell(4).SetCellValue(list[i].Hm_counts.ToString());//数量 sheet2.CreateRow(h).CreateCell(5).SetCellValue(list[i].Hm_price.ToString());//单价 sheet2.CreateRow(h).CreateCell(6).SetCellValue(list[i].Hm_money.ToString());//小计 sheet2.CreateRow(h).CreateCell(7).SetCellValue(list[i].Hm_beiz);//备注 h++; number++; } sheet2.CreateRow(h + 1).CreateCell(0).SetCellValue("合计"); sheet2.CreateRow(h + 1).CreateCell(7).SetCellValue(info.Ht_HTmoney.ToString()); sheet2.AddMergedRegion(new Region(h + 1, 0, h + 1, 7)); sheet2.CreateRow(h + 2).CreateCell(0).SetCellValue("二、交货地址"); sheet2.AddMergedRegion(new Region(h + 2, 0, h + 2, 7)); sheet2.CreateRow(h + 3).CreateCell(0).SetCellValue("地址:"); sheet2.AddMergedRegion(new Region(h + 3, 0, h + 3, 7)); sheet2.CreateRow(h + 4).CreateCell(0).SetCellValue("联系人:"); sheet2.AddMergedRegion(new Region(h + 4, 0, h + 4, 7)); //FileStream file = new FileStream(@"C:/" + info.Ht_HTName + ".xls", FileMode.Append); //hssfWorkBook.Write(file); //file.Close(); hssfWorkBook.Write(Response.OutputStream); //Page.ClientScript.RegisterStartupScript(this.GetType(), "key_2", "<script>alert('文件保存在c:/!');</script>"); } catch (Exception ex) { Page.ClientScript.RegisterStartupScript(this.GetType(), "key_1", "<script>alert('生成失败!');</script>"); } } }
留个笔记备忘~
找到更合理的方法再更新~~
哈哈,强大的NPOI
爱过知情重,醉过知酒浓