使用aspose.Words更新表格列宽

public static bool UpdateTableStyle(string filePath)

        {

            try

            {

                Document doc = new Document();

                //样式

                Style style = doc.Styles.Add(StyleType.Paragraph, "cellStyle");

                style.Font.Name = "simsun";

                PageSetup pageSet = doc.Sections[0].PageSetup;

                pageSet.PaperSize = PaperSize.A4;

                pageSet.LeftMargin = ConvertUtil.MillimeterToPoint(5);

                pageSet.RightMargin = ConvertUtil.MillimeterToPoint(5);

                //pageSet.PageStartingNumber = 1;

                //pageSet.PageNumberStyle = NumberStyle.Arabic;

                DocumentBuilder builder = new DocumentBuilder(doc);

                builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);

                builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

                //builder.InsertField("PAGE", "");

                //builder.Write("/");

                //builder.InsertField("NUMPAGES", "");

                double cellWidth = 18;

                double portraitMinWidth = ConvertUtil.MillimeterToPoint(cellWidth);//纵向最小列宽

                double pageWidth = 200d;//A4纵向可编辑区域宽度200毫米//A4横向向可编辑区域宽度290毫米

                List<Document> docItemList = new List<Document>();

                bool IsLandscape = false;//是否为横向

                //先计算是使用横向还是纵向的A4

                if (File.Exists(filePath))

                {

                    Document docItem = new Document(filePath);

                    docItemList.Add(docItem);

                    var tableList = docItem.GetChildNodes(NodeType.Table, true);

                    bool isExist = false;

                    foreach (Table table in tableList)

                    {

                        if(table.Range != null && table.Range.Bookmarks != null)

                        {

                            foreach (Bookmark bkName in table.Range.Bookmarks)

                            {

                                if (bkName.Name == aa)

                                {

                                    isExist = true;

                                    break;

                                }

                            }

                        }

                        if (isExist)

                        {

                            //先计算是否符合纵向A4纸要求的列宽

                            double width = ConvertUtil.MillimeterToPoint(200d / table.Rows[2].Cells.Count);

                            if (width < portraitMinWidth)

                            {

                                portraitMinWidth = width;

                            }

                        }

                    }

                    //不包含指标书签时,退出

                    if (!isExist)

                        return false;

                }

                //如果列宽小于一定宽度那么就将文档变为横向cellWidth

                if (portraitMinWidth < ConvertUtil.MillimeterToPoint(cellWidth))

                {

                    IsLandscape = true;

                    pageWidth = 150d;

                }

                else

                {

                    IsLandscape = false;

                    pageWidth = 120d;

                }

                int i = 1;

                foreach (Document docItem in docItemList)

                {

                    builder.MoveToDocumentEnd();

                    // Document docItem = new Document(path);

                    PageSetup pageSet1 = docItem.Sections[0].PageSetup;

                    pageSet1.PaperSize = PaperSize.A4;

                    pageSet1.LeftMargin = ConvertUtil.MillimeterToPoint(20);

                    pageSet1.RightMargin = ConvertUtil.MillimeterToPoint(20);

                    var tableList = docItem.GetChildNodes(NodeType.Table, true);

                    foreach (Table table in tableList)

                    {

                        table.AutoFit(AutoFitBehavior.FixedColumnWidths);

                        foreach (Row row in table.Rows)

                        {

                            if (table.Range != null && table.Range.Bookmarks != null)

                            {

                                foreach (Bookmark bkName in table.Range.Bookmarks)

                                {

                                    if (bkName.Name == aa)

                                    {

                                        for (int j = 0; j < row.Cells.Count; j++)

                                        {

                                            row.Cells[j].CellFormat.WrapText = true;

                                            double width = ConvertUtil.MillimeterToPoint((pageWidth) / row.Cells.Count);

                                            row.Cells[j].CellFormat.Width = width;

                                        }

                                        break;

                                    }

                                }

                            }

                        }

                    }

                    docItem.FirstSection.HeadersFooters.LinkToPrevious(true);

                    builder.InsertDocument(docItem, ImportFormatMode.UseDestinationStyles);

                    i++;

                }

                if (IsLandscape)

                {

                    //文档变为横向

                    pageSet.Orientation = Aspose.Words.Orientation.Landscape;

                }

                //重新整理页面布局

                doc.UpdatePageLayout();

                doc.Save(filePath);

                return true;

            }

            catch (Exception ex)

            {

                LogHelper.WriteLog("更新表格列宽异常,", ex);

                return false;

            }

        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scss是什么?安装使用的步骤是?有哪几大特性?

SCSS是一种层叠样式表语言的扩展&#xff0c;它引入了变量、嵌套规则、混合、继承等功能&#xff0c;使得样式表的编写更加简洁、有组织和可维护。 安装SCSS的步骤如下&#xff1a; 首先&#xff0c;你需要安装Node.js环境。可以从Node.js官网下载并按照指引进行安装。 安装完…

java面试题18

什么是Java中的数据库连接池&#xff08;Database Connection Pool&#xff09;&#xff1f;它有什么作用&#xff1f; 答案&#xff1a;数据库连接池是一种管理和重用数据库连接的机制&#xff0c;用于提高数据库访问的性能和可扩展性。Java中的数据库连接池可以通过使用开源的…

全面解析 I2C 通信协议

全面解析 I2C 通信协议 lvy 嵌入式学习规划 2023-12-22 21:20 发表于陕西 嵌入式学习规划 嵌入式软件、C语言、ARM、Linux、内核、驱动、操作系统 80篇原创内容 公众号 点击左上方蓝色“嵌入式学习规划”&#xff0c;选择“设为星标” 1、什么是I2C协议 I2C 协议是一个允许…

【2023年12月18日-12月25日】一周AI咨询更新

上周&#xff0c;关于Google的Bard和Midjourney v6的讨论异常火热。 接下来&#xff0c;让我们回顾一下上周那些引人注目的AI新闻。 ① 已近乎真实拍摄&#xff1a;Midjourney v6的画质令人惊叹 由Midjourney v6制作的图片&#xff0c;质量之高&#xff0c;媲美电影级别&…

C语言中的Do While循环:深度解析与实践应用

各位少年&#xff0c; 在C语言编程中&#xff0c;循环语句是实现重复任务的关键构造块。今天&#xff0c;我们将深入探讨C语言中的一种特殊循环结构——Do While循环。 一、理解Do While循环 Do While循环是一种后测试循环&#xff0c;这意味着它首先执行循环体内的语句&…

关于使用Selenium获取网页控制台的数据

背景&#xff1a; 需要获取网页的控制台的数据&#xff0c;如下图 在此文章将使用到 Pycharm 和 Selenium4 Pycharm安装 Selenium安装 from selenium import webdriver from selenium.webdriver.common.by import By import time# 创建浏览器对象 browser webdriver.Chro…

二叉树-遍历-重写

文章目录 是否可以通过遍历一遍二叉树得到答案寻找任意一个节点与f(T)的关系需要判断哪些是1!2视频页面强化训练01 257. 二叉树的所有路径02 129. 求根节点到叶节点数字之和03 199. 二叉树的右视图04 298. 二叉树最长连续序列&#x1f512;05 988. 从叶结点开始的最小字符串*06…

【Recruitment Mercedes Benz】

Network I) JDII) IPv4与IPv6之间的区别是什么III) was advices3.1&#xff09; 防火墙&#xff0c;配置&#xff0c;数据的in/out (data flow in or flow out)3.2&#xff09; 域名&#xff0c;网址&#xff0c;端口3.3) 三次握手&#xff0c;四次挥手3.4) TCP/IP, 几层协议&a…

Ubuntu 22.04 安装ftp实现与windows文件互传

Ubuntu 22.04 安装ftp实现与windows文件互传 1、配置安装 安装&#xff1a; sudo apt install vsftpd -y使能开机自启&#xff1a; sudo systemctl enable vsftpd 启动&#xff1a; sudo systemctl start vsftpd创建ftp工作目录&#xff1a; sudo mkdir -p /home/ftp/uftp…

PHP的Laravel的数据库迁移

1.默认迁移文件 2.数据库迁移 在终端输入以下代码 php artisan migrate 我的报错啦&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 数据库里面只有两张表&#xff0c;实际上应该有四张的&#xff01;&#xff01;&#xff01; 解决方法&#xff1a; 反正表已…

企业如何正确的云迁移,云迁移过程中需要注意哪几个点?

如今的企业比以往任何时候都能访问更多的数据。这些数据正在以惊人的速度增长&#xff0c;无论是数量还是变化量。无论是传统的分析还是机器学习和人工智能等前沿技术&#xff0c;将这些信息从所有信息源集中到云存储库对业务至关重要。 为什么进行迁移&#xff1f; 企业将数…

项目接口性能优化方案

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅&#xff0c;闭关学习中 &#x1f60…

模拟算法 蓝桥杯备赛系列 acwing

文章目录&#xff1a; 基础知识 什么是模拟&#xff1f; 例题 一、错误票据 1.解题思路 2.代码 二、移动距离 1.解题思路 2.代码 三、航班时间 1.解题思路 2.代码 四、外卖优先级 1.解题思路 2.代码 前面为了目录好看大家就当个玩笑看吧哈哈哈。下面上正文。 正文 基础知识 什…

LeetCode刷题---合并区间

解题思路&#xff1a; 一次遍历&#xff0c;首先按照每个元素区间的start来排序&#xff0c;之后定义一个列表将第一个元素添加进去&#xff0c;依次遍历数组的每个元素&#xff0c;如果第二个元素区间的start小于或者等于第一个元素区间的end&#xff0c;则证明两个区间是重叠…

第27关 在K8s集群上使用Helm3部署最新版本v2.10.0的私有镜像仓库Harbor

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 在前面的几十关里面&#xff0c;博哥在k8s上部署服务一直都是用的docker hub上的公有镜像&#xff0c;对于企业服务来说&#xff0c;有些我们是不想把服务镜像放在公网上面的&#xff1b; 同时…

Jmeter接口工具大全使用—响应断言

断言的作用&#xff1a;一个HTTP请求发出去&#xff0c;怎么判断执行的任务是否成功呢&#xff1f;通过检查服务器响应数据&#xff0c;是否返回预期想要的数据&#xff0c;如果是&#xff0c;判断任务成功&#xff0c;反之任务失败。 1.添加断言 选中一个取样器&#xff0c;…

Python爬虫实战案例

Python实战演练通常包括以下几个步骤&#xff1a; 1. 确定目标&#xff1a;首先&#xff0c;你需要明确你要解决的问题或实现的功能。这将帮助你确定需要学习的技能和知识。 2. 学习基本知识&#xff1a;在开始实战演练之前&#xff0c;确保你已经掌握了Python的基本语法、数…

java基础-回忆性记录

java基础 Java概括 jaava是一种计算机交流的高级编程语言&#xff0c;1995年java衍生&#xff0c;詹姆斯高斯林被世人称之为java之父。 java语言具有跨平台性 java程序并非可以直接运行的&#xff0c;在java程序编译完成后会形成与编译无关的class文件。Java具有跨平台性&a…

智慧监控平台/AI智能视频EasyCVR接口调用编辑通道详细步骤

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;GB28181视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c…

Python关键字之旅:一步步掌握Python的奥秘

文章目录 一、前言二、关键字1.总表&#xff08;共35个&#xff09;2.拆分2.1 False None True2.2 and not or2.3 as from import2.4 assert2.5 async await2.6 break continue2.7 class def2.8 del2.9 if elif else2.10 try except finally raise2.11 for in while2.12 global…