using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.XWPF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Web; namespace FangYar.Common { /// /// NPOIWordHelper 的摘要说明 /// public class NPOIWordHelper { /// /// 导出word /// /// /// public static void ExportByWeb(DataTable dtSource, string HeaderText, Dictionary cellHeard, string filename) { //创建document对象 XWPFDocument doc = new XWPFDocument(); //创建段落对象 XWPFParagraph p1 = doc.CreateParagraph(); p1.Alignment = ParagraphAlignment.CENTER;//字体居中 XWPFRun runTitle = p1.CreateRun(); runTitle.IsBold = true; runTitle.SetText("" + HeaderText); runTitle.FontSize = 24; runTitle.SetFontFamily("宋体", FontCharRange.None);//设置雅黑字体 //XWPFParagraph p2 = doc.CreateParagraph(); //XWPFRun run1 = p2.CreateRun(); //run1.SetText(" 军检项目号:"); //run1.FontSize = 12; //run1.SetFontFamily("华文楷体", FontCharRange.None);//设置雅黑字体 #region 检验要素列表部分(数据库读取循环显示) /* 打印1页:小于8行数据,创建9行; * 打印2页:大于8小于26行数据,创建27行。增加18 * 打印3页:大于26小于44行数据,创建45行。增加18 */ int columns = dtSource.Columns.Count; int rows = dtSource.Rows.Count + 1; XWPFTable tableContent = doc.CreateTable(rows, columns); tableContent.Width = 1000 * columns; tableContent.Width = 1000 * 5; foreach (DataColumn column in dtSource.Columns) { string ColumnName = column.ColumnName; tableContent.SetColumnWidth(column.Ordinal, 1000);/* 设置列宽 */ try { if (cellHeard != null && cellHeard[ColumnName] != "") { ColumnName = cellHeard[ColumnName]; } } catch { } tableContent.GetRow(0).GetCell(column.Ordinal).SetParagraph(SetCellText(doc, tableContent, ColumnName)); } for (int i = 0; i < dtSource.Rows.Count; i++) { for (int n = 0; n < dtSource.Columns.Count; n++) { tableContent.GetRow(i + 1).GetCell(n).SetParagraph(SetCellText(doc, tableContent, dtSource.Rows[i][n].ToString(), ParagraphAlignment.CENTER, 50)); } } #endregion //保存文件到磁盘WinForm //string docPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "DocxWord"); //if (!Directory.Exists(docPath)) { Directory.CreateDirectory(docPath); } //string fileName = string.Format("{0}.doc", HttpUtility.UrlEncode("jjysd" + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff"), System.Text.Encoding.UTF8)); //FileStream out1 = new FileStream(Path.Combine(docPath, fileName), FileMode.Create); //doc.Write(out1); //out1.Close(); #region 保存导出WebForm //Response.Redirect(ResolveUrl(string.Format(@"~\DocxWord\{0}", fileName))); HttpContext curContext = HttpContext.Current; System.IO.MemoryStream ms = new System.IO.MemoryStream(); doc.Write(ms); curContext.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.doc", HttpUtility.UrlEncode(filename + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff"), System.Text.Encoding.UTF8))); curContext.Response.BinaryWrite(ms.ToArray()); curContext.Response.End(); ms.Close(); ms.Dispose(); //using (MemoryStream ms = new MemoryStream()) //{ // doc.Write(ms); // Response.ClearContent(); // Response.Buffer = true; // Response.ContentType = "application/octet-stream"; // Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.doc", HttpUtility.UrlEncode("军检验收单" + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff"), System.Text.Encoding.UTF8))); // Response.BinaryWrite(ms.ToArray()); // //Response.End(); // Response.Flush(); // doc = null; // ms.Close(); // ms.Dispose(); //} #endregion } /// /// 设置字体格式 /// /// /// /// /// public static XWPFParagraph SetCellText(XWPFDocument doc, XWPFTable table, string setText) { //table中的文字格式设置 CT_P para = new CT_P(); XWPFParagraph pCell = new XWPFParagraph(para, table.Body); pCell.Alignment = ParagraphAlignment.CENTER;//字体居中 pCell.VerticalAlignment = TextAlignment.CENTER;//字体居中 XWPFRun r1c1 = pCell.CreateRun(); r1c1.SetText(setText); r1c1.FontSize = 12; r1c1.SetFontFamily("华文楷体", FontCharRange.None);//设置雅黑字体 //r1c1.SetTextPosition(20);//设置高度 return pCell; } /// /// 设置单元格格式 /// /// doc对象 /// 表格对象 /// 要填充的文字 /// 文字对齐方式 /// rows行的高度 /// public static XWPFParagraph SetCellText(XWPFDocument doc, XWPFTable table, string setText, ParagraphAlignment align, int textPos) { CT_P para = new CT_P(); XWPFParagraph pCell = new XWPFParagraph(para, table.Body); //pCell.Alignment = ParagraphAlignment.LEFT;//字体 pCell.Alignment = align; XWPFRun r1c1 = pCell.CreateRun(); r1c1.SetText(setText); r1c1.FontSize = 12; r1c1.SetFontFamily("华文楷体", FontCharRange.None);//设置雅黑字体 //r1c1.SetTextPosition(textPos);//设置高度 r1c1.TextPosition = textPos; return pCell; } } }