Line chart copy issue

Hello,


I am using Aspose Cells API (8.2.x) to copy a line chart from one sheet to another.
The copied chart is squeezed up. It is not copied as per its original size.
After analyzing, I have found that this is because of the mismatch in the cell sizes of the source sheet and target sheet.

To copy chart to another sheet, I have used code specified in this link: Copy Shapes between Worksheets|Documentation

Can you please let me know what extra needs to be done so that the chart is copied in its original size to the target sheet.

For your reference I have attached the code snippet as well the excel file being used and output.

Following is the code snippet:

Workbook workbook = new Workbook(“C:/temp/LineChartRenderingIssue.xlsx”);
WorksheetCollection ws = workbook.getWorksheets();
Worksheet sheet1 = ws.get(“Sheet1”);
Chart chart = sheet1.getCharts().get(“Chart 7”);
ChartShape cshape = chart.getChartObject();

System.out.println(chart.getHeightPercent());
System.out.println(chart.getChartArea().getWidth());
int sheetIndex = ws.add();
Worksheet worksheet = ws.get(sheetIndex);

//Setting the name of the newly added worksheet
String transientSheetName = “TransientWorksheet”;
worksheet.setName(transientSheetName);
//Copy the Chart to Second Worksheet
worksheet.getShapes().addCopy(cshape, 0, 0, 0, 0);

//Making remaining sheets invisible as the output is required for only TransientWorksheet
for (int i = 0; i < ws.getCount(); i++) {
String sheetName = ws.get(i).getName();
if(!transientSheetName.equalsIgnoreCase(sheetName)){
ws.get(i).setVisible(false);
}
}

workbook.save(“c:/temp/Out.xlsx”, SaveFormat.XLSX);

Thanks,
Neeraj

Hi,


Well, the copied chart shape is squeezed in the new sheet due to cells sizes in rows/ columns, this is expected behavior. I think you may try to add the following lines of code for your requirements.
e.g
Sample code:

//Copy the Chart to Second Worksheet
worksheet.getShapes().addCopy(cshape, 0, 0, 0, 0);

//Get the new chart and set its height and width accordingly
Chart chart1 = worksheet.getCharts().get(0);
chart1.getChartObject().setHeight(cshape.getHeight());
chart1.getChartObject().setWidth(cshape.getWidth());


Hope, this helps a bit.

Thank you.

Thanks. That worked.


–Neeraj

Hi,


Good to know that it figures out your issue now. Feel free to contact us any time if you need further help or have some other issue or queries, we will be happy to assist you soon.

Thank you.