Hi Guys,
How do we delete/add a column in TableEx?
Hi Aneef,
I regret to inform you that there is no explicit way to add or delete the column in TableEx. However, as a work around, you may split the cells with same column ID by width and a new column will emerge. For your reference, I have shared the code snippet for adding the column by splitting cell with same column ID. Similiarly, the converse logic applies for deleting column, i.e. you may reset the contents of a particular column first and then merge each cell in the column with respective cells of next or previous column.
//Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx();
//Access first slide
SlideEx sld = pres.Slides[0];
//Define columns with widths and rows with heights
double[] dblCols = { 100, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
//Add table shape to slide
int idx = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
TableEx tbl = (TableEx)sld.Shapes[idx];
//Set border format for each cell
foreach (RowEx row in tbl.Rows)
foreach (CellEx cell in row)
{
cell.BorderTop.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderTop.Width = 5;
cell.BorderBottom.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderBottom.Width = 5;
cell.BorderLeft.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderLeft.Width = 5;
cell.BorderRight.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderRight.Width = 5;
}
//Now we will add a colum after 1st column by spliting
int iCol = 0;
for (int iRow = 0; iRow < tbl.Rows.Count; iRow++)
{
tbl[iCol , iRow].SplitByWidth(50);
}
//Add text to the merged cell
tbl[0, 0].TextFrame.Text = "Merged Cells";
//Write PPTX to Disk
pres.Write("d:\\Aspose Data\\TableEx.pptx");
Thanks and Regards,
Hi Mudassir,
Thanks for your reply. but in the Aspose.slides.Table class we had addColumn and deleteColumn. and our current application is working using that api. we are in the process of upgrading our APIs to support pptx.
splitting an existing cell would not do the trick as the Table.addColumn did. because splitting the cell will make my existing data cell smaller and this will cause the formatting issues. same goes to the delete also if i want to delete a column, if im just merging it with the previous column what about the data in them. this might cause a major issue in existing applications.
why isnt these features available yet in the product? if anyone who are using aspose plan to upgrade to your pptx library. they are left with no proper solution ??
Dear Aneef,
Your are very right in making your point that option for adding and deleting columns in PPT table exists. However, the same features have not yet been implemented for PPTX table. That is why, I shared the work around method for adding and deleting columns with you. An issue with ID 17324 has already been created in our issue tracking system to add this feature support in Aspose.Slides for .NET. This thread has also been linked with the issue, so that you may be automatically notified, once this feature is available.
We are sorry for your inconvenience,
Hello,
Is there any workaround for deleting a column. because our product is using Aspose extensively and these two features are used mostly. at least for creating a column i can consider double the width of the existing column, and then split it by two. but deleting a column ? how can i achieve this?
Dear Aneef,
As, I have shared with you in my earlier posts that add and delete column on PPTX table is currently unavailable and there is a workaround method that can be used to achieve goal of column deletion by using MergeCells() method. Please use the code snippet given below to serve your purpose. Again, you will face the problem of cells width getting increased.
public static void addTableEx()
{
//Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx();
//Access first slide
SlideEx sld = pres.Slides[0];
//Define columns with widths and rows with heights
double[] dblCols = { 50,50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
//Add table shape to slide
int idx = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
TableEx tbl = (TableEx)sld.Shapes[idx];
//Set border format for each cell
foreach (RowEx row in tbl.Rows)
foreach (CellEx cell in row)
{
cell.BorderTop.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderTop.Width = 5;
cell.BorderBottom.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderBottom.Width = 5;
cell.BorderLeft.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderLeft.Width = 5;
cell.BorderRight.FillFormat.FillType = FillTypeEx.Solid;
cell.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.BorderRight.Width = 5;
}
//Now we will delete a colum after 1st column by spliting
int iCol = 2;
for (int iRow = 0; iRow < tbl.Rows.Count; iRow++)
{
//Resetting the cell text
tbl[iCol, iRow].TextFrame.Text = "";
tbl.MergeCells(tbl[iCol, iRow], tbl[iCol+1, iRow ], false);
}
//Write PPTX to Disk
pres.Write("d:\\Aspose Data\\TableEx.pptx");
}
Thanks and Regards,
Hi Mudassir,
I am using Aspose.Slides.dll, File Version 5.1.0.0
Just wanted to know are we still dealing with this problem of adding new column in the way mentioned above by you. And if we are, so how can we change existing table column size.
Hi Ani,
Thanks for your quick response Mudassir.
Hi,
Have you guys found any solutions for this (not workarounds).
Thanks,
Aneef
Hi Aneef,
Hi Aneef,
The issues you have found earlier (filed as SLIDESNET-17324) have been fixed in this update.
This message was posted using Notification2Forum from Downloads module by aspose.notifier.
(1)