NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写
NPOI下载地址:http://npoi.codeplex.com/
以下代码仅供参考,请根据实际需求进行修改。
public MemoryStream Export() { string filepath = Server.MapPath("/word/xmxx.docx"); using (FileStream stream = File.OpenRead(filepath)) { XWPFDocument doc = new XWPFDocument(stream); //遍历段落 foreach (var para in doc.Paragraphs) { ReplaceKey(para); } //遍历表格 var tables = doc.Tables; foreach (var table in tables) { foreach (var row in table.Rows) { foreach (var cell in row.GetTableCells()) { foreach (var para in cell.Paragraphs) { ReplaceKey(para); } } } } using (MemoryStream ms = new MemoryStream()) { doc.Write(ms); return ms; } } } private void ReplaceKey(XWPFParagraph para) { BLL.XmxxBLL XmxxBLL = new BLL.XmxxBLL(); Model.Xmxx model = new Model.Xmxx(); model = XmxxBLL.GetModel(20); string text = para.ParagraphText; var runs = para.Runs; string styleid = para.Style; for (int i = 0; i < runs.Count; i++) { var run = runs[i]; text = run.ToString(); Type t = model.GetType(); PropertyInfo[] pi = t.GetProperties(); foreach (PropertyInfo p in pi) { if (text.Contains("{$xmxx." + p.Name + "}")) { text = text.Replace("{$xmxx." + p.Name + "}", TM.Common.StringHelper.ToString(p.GetValue(model, null))); } } runs[i].SetText(text, 0); } } protected void Button1_Click(object sender, EventArgs e) { using (MemoryStream ms = Export()) { Response.ContentType = "application/vnd.ms-word"; Response.ContentEncoding = Encoding.UTF8; Response.Charset = ""; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("123.doc", Encoding.UTF8)); Response.BinaryWrite(Export().GetBuffer()); Response.End(); } }
时间: 2024-11-11 18:00:30