使用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.Sections0.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.Rows2.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.Sections0.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.Cellsj.CellFormat.WrapText = true;

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

row.Cellsj.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;

}

}

相关推荐
XiaoZhenHua981 天前
C#工业机器视觉Recipe配方系统设计:多型号、多相机、多工位参数如何统一管理
c#·软件架构·机器视觉·工业自动化·工业软件·recipe
fujisheng6611 天前
FUI 导航实践:拆开 Layer、History、Coverage 与 Cache 的组合语义
c#·unity3d
淡海水1 天前
10-05-高级-模式匹配-CSharp如何改变与数据结构的交互方式
数据结构·算法·c#·模式匹配
XiaoZhenHua981 天前
C# WinForms + 西门子S7 + SQLite + EPPlus生产数据采集系统架构设计
系统架构·sqlite·c#
Lost of 程序猿1 天前
船岸数据同步链路实战:SendFlag、单调版本号与断网三天后的续传
后端·c#·asp.net
cjp5602 天前
012.UG二次开发,UG管道服务器与WPF管道通讯,传输JSON数据
c#
jiushidt2 天前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
geovindu3 天前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
软件黑马王子3 天前
20.Resources资源加载:基本实现
开发语言·前端框架·c#
张人玉3 天前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net