如何利用Aspose 取 PPT中表格的值,包括行列信息,每个单元格的宽度,高度,每个单元格中的值。

如何利用Aspose 取 PPT中表格的值,包括行列信息,每个单元格的宽度,高度,每个单元格中的值。

最近遇到需要解析PPT中表格的数据的需求。从来没有做过,第一次接触,说下实现。
主要是通过Aspose.Slides dll,Aspose.Slides 是商业的,自己研究就好。解析,拿到PPT的Shape,在Shape中,找到对应的Table。 然后遍历。先遍历行,然后再遍历每行的每个单元格的去取

        foreach (IRow row in tb.Rows)
        {
            int rowIndex = 0;
            foreach (ICell cell in row)
            {
                var tableItem = new TableItem();

                tableItem.CustomBackground = cell.BorderBottom.FillFormat.SolidFillColor.Color.Name;
                tableItem.RowIndex = rowIndex;
                tableItem.ColumnIndex = cell.FirstColumnIndex;
                tableItem.RowSpan = cell.RowSpan;
                tableItem.ItemWidth = cell.Width;
                tableItem.ItemHeight = cell.Height;
                tableItem.TextRange = new TextRange
                {
                    Text = cell.TextFrame.Text,
                };

                gb.Items.Add(tableItem);
                rowIndex++;
            }

        }

个人学习交流。

可以使用Aspose.Words来实现这个功能。具体步骤如下: 1. 获Word文档表格。 2. 获表格的列数和行数。 3. 获表格的第一行,即表头。 4. 遍历表格的每一列,获每一列的最大宽度。 5. 将表头的每一列与对应的数据列一一对齐,设置宽度为最大宽度。 以下是示例代码: ```java Document document = new Document("input.docx"); Table table = (Table) document.getChild(NodeType.TABLE, 0, true); int rowCount = table.getRows().getCount(); int colCount = table.getFirstRow().getCells().getCount(); // 获表头 Row headerRow = table.getFirstRow(); headerRow.getRowFormat().setAllowBreakAcrossPages(true); for (int i = 0; i < colCount; i++) { Cell headerCell = headerRow.getLastCell().getPreviousSibling(); headerCell.getCellFormat().setHorizontalMerge(CellMerge.NONE); headerCell.getCellFormat().setVerticalMerge(CellMerge.NONE); headerCell.getCellFormat().setPreferredWidth(PreferredWidth.AUTO); headerCell.getParagraphs().get(0).getParagraphFormat().setAlignment(ParagraphAlignment.CENTER); } // 获每一列的最大宽度 double[] columnWidths = new double[colCount]; for (int i = 0; i < colCount; i++) { double maxWidth = 0.0; for (int j = 1; j < rowCount; j++) { Cell cell = table.getRows().get(j).getCells().get(i); double cellWidth = cell.getCellFormat().getPreferredWidth().getPoints(); if (cellWidth > maxWidth) { maxWidth = cellWidth; } } columnWidths[i] = maxWidth; } // 设置每一列的宽度 for (int i = 0; i < colCount; i++) { Cell headerCell = headerRow.getCells().get(i); headerCell.getCellFormat().setPreferredWidth(new PreferredWidth(columnWidths[i], PreferredUnit.POINTS)); for (int j = 1; j < rowCount; j++) { Cell dataCell = table.getRows().get(j).getCells().get(i); dataCell.getCellFormat().setPreferredWidth(new PreferredWidth(columnWidths[i], PreferredUnit.POINTS)); } } ``` 首先,我们获Word文档表格。然后,获表格的行数和列数。接着,获表头并设置样式。然后,遍历每一列,获每一列的最大宽度。最后,设置表格每一列的宽度为最大宽度。 需要注意的是,Word文档表格可能会有合并的单元格,需要进行特殊处理,确保每一列与表头对齐。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值