当前位置: 首页 > news >正文

C# 使用DocX生成word文档

1、引用DocX包3.0.0版本

2、引用包

using Xceed.Words.NET;

3、生成word文档

  // 保存文档到 Streamvar stream = new MemoryStream();// 创建一个新的文档using (var doc = DocX.Create("Document")){// 添加页眉doc.AddHeaders();Header header = doc.Headers.Odd;// 在页眉中添加带有下划线格式的段落Paragraph headerParagraph = header.InsertParagraph();headerParagraph.Append("文档名").Font(new Xceed.Document.NET.Font("宋体")).FontSize(10.5).Alignment = Alignment.left;// 添加包含一行空白表格的段落来模拟横线//Table lineTable = header.InsertTable(1, 1);//lineTable.Rows[0].Height = 1;//lineTable.SetBorder(TableBorderType.Top, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));Paragraph p = doc.InsertParagraph();// 添加标题p.AppendLine("标题V1.1").FontSize(18d).Bold().Spacing(6).Alignment = Alignment.center;// 设置行高p.LineSpacingAfter = 40;// 添加正文内容// 添加报表表格var reportTable = doc.AddTable(10, 4);reportTable.Design = TableDesign.LightListAccent1;var defaultRowHeight = 40; // 按照你的需要设置行高的值// 设置表格所有行的高度 边框foreach (var row in reportTable.Rows){row.Height = defaultRowHeight; // 设置行高foreach (var reportCell in row.Cells){reportCell.VerticalAlignment = VerticalAlignment.Center;reportCell.SetBorder(TableCellBorderType.Bottom, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));reportCell.SetBorder(TableCellBorderType.Top, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));reportCell.SetBorder(TableCellBorderType.Left, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));reportCell.SetBorder(TableCellBorderType.Right, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));}}reportTable.SetBorder(TableBorderType.Bottom, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));reportTable.SetBorder(TableBorderType.Top, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));reportTable.SetBorder(TableBorderType.Left, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));reportTable.SetBorder(TableBorderType.Right, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));reportTable.Rows[0].MergeCells(0, 3);reportTable.Rows[8].Height = 100;reportTable.Rows[9].Height = 170;// 填充表格内容reportTable.Rows[0].Cells[0].Paragraphs.First().Append("一、报告概览").Font(new Xceed.Document.NET.Font("宋体")).FontSize(16).Bold().Alignment = Alignment.center;reportTable.Rows[1].Cells[0].Paragraphs.First().Append("项目编号");//项目编号reportTable.Rows[1].Cells[1].Paragraphs.First().Append(input.ProjectNumber);reportTable.Rows[1].Cells[2].Paragraphs.First().Append("申请单位");//申请单位reportTable.Rows[1].Cells[3].Paragraphs.First().Append(input.Department);reportTable.MergeCellsInColumn(2, 1, 2);var requist = reportTable.Rows[9].Cells[0];reportTable.Rows[9].MergeCells(0, 3);Paragraph repa = requist.InsertParagraph();repa.Append("段落标题:").FontSize(10.5).Bold().Alignment = Alignment.left;repa.SpacingAfter(10);Paragraph repa1 = requist.InsertParagraph();repa1.Append("1、123123123123。").FontSize(10.5).Alignment = Alignment.left;repa1.SpacingAfter(10);Paragraph repa2 = requist.InsertParagraph();repa2.Append("2、4324234322423。").FontSize(10.5).Alignment = Alignment.left;repa2.SpacingAfter(10);Paragraph repa3 = requist.InsertParagraph();repa3.Append("3、4356564557657。").FontSize(10.5).Alignment = Alignment.left;repa3.SpacingAfter(10);// 将报表概览表格添加到文档doc.InsertTable(reportTable);// 添加系统自测结果表格var testResultTable = doc.AddTable(2, 1);testResultTable.Design = TableDesign.LightListAccent1;// 设置表格所有行的高度 边框foreach (var row in testResultTable.Rows){row.Height = defaultRowHeight; // 设置行高foreach (var resultCell in row.Cells){resultCell.VerticalAlignment = VerticalAlignment.Center;resultCell.SetBorder(TableCellBorderType.Bottom, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));resultCell.SetBorder(TableCellBorderType.Top, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));resultCell.SetBorder(TableCellBorderType.Left, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));resultCell.SetBorder(TableCellBorderType.Right, new Border(BorderStyle.Tcbs_single, BorderSize.one, 5, Color.Black));}}testResultTable.SetBorder(TableBorderType.Bottom, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));testResultTable.SetBorder(TableBorderType.Top, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));testResultTable.SetBorder(TableBorderType.Left, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));testResultTable.SetBorder(TableBorderType.Right, new Border(BorderStyle.Tcbs_single, BorderSize.one, 10, Color.Black));testResultTable.Rows[0].Height = 40;testResultTable.Rows[1].Height = 360;testResultTable.Rows[0].Cells[0].Paragraphs.First().Append("二、表单二").Font(new Xceed.Document.NET.Font("宋体")).FontSize(16).Bold().Alignment = Alignment.center;Cell resultImgCell = testResultTable.Rows[1].Cells[0];resultImgCell.RemoveParagraphAt(0);// 创建一个段落Paragraph resultParagraph = resultImgCell.InsertParagraph();// 插入图片到段落中var img1 = doc.AddImage(input.Content.GetStream());Picture pic1 = img1.CreatePicture();// 设置图片大小pic1.Width = doc.PageWidth - doc.MarginLeft - doc.MarginRight; // 设置图片宽度等于页面宽度减去左右页边距pic1.Height = ((float)Math.Round((double)pic1.Height * ((double)pic1.Width / (double)pic1.Width))); // 根据宽度比例计算高度//pic1.Width = 450;//pic1.Height = 100;// 将图片添加到段落resultParagraph.AppendPicture(pic1);// 插入图片到段落中var img2 = doc.AddImage(input.Content1.GetStream());Picture pic2 = img2.CreatePicture();// 设置图片大小pic2.Width = doc.PageWidth - doc.MarginLeft - doc.MarginRight; // 设置图片宽度等于页面宽度减去左右页边距pic2.Height = ((float)Math.Round((double)pic2.Height * ((double)pic2.Width / (double)pic2.Width))); // 根据宽度比例计算高度// 将图片添加到段落resultParagraph.AppendPicture(pic2);// 将系统自测结果表格添加到文档doc.InsertTable(testResultTable);doc.InsertParagraph();doc.SaveAs(stream);// 将 Stream 位置设为起始位置stream.Position = 0;// 返回生成的 Word 文档的 Stream//return stream;}

相关文章:

  • 使用Python改变图片像素
  • 使用Python制作自己的wheel文件
  • [赛码网、牛客刷题、ACM模式] python读取输入
  • MyBatis操作数据库(SQL注入)
  • Autosar教程-Mcal教程-GPT配置教程
  • LayerNorm的图是不是画错了
  • 先缓存第二集抖音接入 ,最近加班猛,就分享简单的知识,如何使用:关于使用replace的用法正则表达式
  • Redis场景总结
  • Java算法之动态规划
  • 集合拆分Lists.partition的使用
  • Redis--线程模型详解
  • [uni-app ] createAnimation锚点旋转 及 二次失效问题处理
  • Mysql按照月份分组统计数据,当月无数据则填充0
  • STM32day2
  • 【AI视野·今日Sound 声学论文速览 第五十四期】Thu, 7 Mar 2024
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • js
  • log4j2输出到kafka
  • Python_网络编程
  • ReactNativeweexDeviceOne对比
  • 从0到1:PostCSS 插件开发最佳实践
  • 飞驰在Mesos的涡轮引擎上
  • 关于Flux,Vuex,Redux的思考
  • 记一次和乔布斯合作最难忘的经历
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 使用 QuickBI 搭建酷炫可视化分析
  • 手机端车牌号码键盘的vue组件
  • 说说动画卡顿的解决方案
  • 消息队列系列二(IOT中消息队列的应用)
  •  一套莫尔斯电报听写、翻译系统
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • !!java web学习笔记(一到五)
  • #### go map 底层结构 ####
  • #14vue3生成表单并跳转到外部地址的方式
  • #Z0458. 树的中心2
  • $(selector).each()和$.each()的区别
  • (0)Nginx 功能特性
  • (c语言)strcpy函数用法
  • (vue)页面文件上传获取:action地址
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET LINQ 通常分 Syntax Query 和Syntax Method