最近在做有个业务需要Word做好模版,数据库取出业务数据在写入Word模版里面,然后生成PDF给客户端的业务人员
之前找了半天,没有找到用微软的Microsoft.Office.Interop.Word.WdExportRange 做,在调试的时候,完全没问题,但发布到服务端的时候,各种配置,组件安装的提示,最后都要崩溃了
最后不得已换了Aspose.Words 这个用起来真是爽啊
用法很简单 代码如下 :
DataTable ret_val = DataLibrary.cl_DataLibrary.ds_ExecuteReader(sqlText.ToString(), CommandType.Text, new OracleParameter[] { op_SaleDetailNo, op_ShopNo }).Tables[0]; //取出业务数据 if (ret_val.Rows.Count > 0) { Document doc = new Document(Server.MapPath("./printfiles/word模版.docx")); DocumentBuilder builder = new DocumentBuilder(doc); Bookmark bm_SaleName; if (doc.Range.Bookmarks["txt_titleuser"] != null) { bm_SaleName = doc.Range.Bookmarks["txt_titleuser"]; bm_SaleName.Text = ret_val.Rows[0]["titleuser"].ToString(); } Bookmark bm_SaleNumber; if (doc.Range.Bookmarks["txt_SaleNumber"] != null) { bm_SaleNumber = doc.Range.Bookmarks["txt_SaleNumber"]; bm_SaleNumber.Text = ret_val.Rows[0]["SaleNumber"].ToString(); } Bookmark bm_txt_v_question7_N;// if (doc.Range.Bookmarks["txt_v_question7_N"] != null) { bm_txt_v_question7_N = doc.Range.Bookmarks["txt_v_question7_N"]; bm_txt_v_question7_N.Text = ret_val.Rows[0]["v_question7_N"].ToString(); } string strPathName = ret_val.Rows[0]["titleuser"].ToString() + DateTime.Now.ToString("yyyyMMddHHmmssffff"); doc.Save(Server.MapPath("./printfiles/word模版" + strPathName + ".docx"), SaveFormat.Docx);//生成Docx doc.Save(Server.MapPath("./printfiles/word模版" + strPathName + ".pdf"), SaveFormat.Pdf);//生成PDF }
生成PDF就是这么简单
这里重点说一下Aspose.Words;
破解版的才会支持中文转换成PDF,英文默认支持 中文会出现乱码