使用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;

            }

        }

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值