I'm trying to create excel file with watermark in JAVA.
I'm using below approach: 1. using Apache POI api to create excel workbook 2. consume the poi workbook in aspose cells api for adding watermar.
When i'm trying to consume POI workbook in aspose cell i'm getting error- workbook not expected. Please help, as i'm new to spring/JAVA
PFB my code:
package com.mudassir.exceltest.testExcel;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Picture;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestExcelApplication {
private static String[] COLUMNs = {"Id", "Name", "Address", "Age"};
private static List<Customer> customers = Arrays.asList(
new Customer("1", "Jack Smith", "Massachusetts", 23),
new Customer("2", "Adam Johnson", "New York", 27),
new Customer("3", "Katherin Carter", "Washington DC", 26),
new Customer("4", "Jack London", "Nevada", 33),
new Customer("5", "Jason Bourne", "California", 36));
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook();
CreationHelper createHelper = workbook.getCreationHelper();
Sheet sheet = workbook.createSheet("Customers");
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerFont.setColor(IndexedColors.BLUE.getIndex());
CellStyle headerCellStyle = workbook.createCellStyle();
headerCellStyle.setFont(headerFont);
// Row for Header
Row headerRow = sheet.createRow(0);
// Header
for (int col = 0; col < COLUMNs.length; col++) {
if(col== 0){
Cell cell = headerRow.createCell(col);
cell.setCellValue(COLUMNs[col]);
cell.setCellStyle(headerCellStyle);
}
else{
Cell cell = headerRow.createCell(col+1);
cell.setCellValue(COLUMNs[col]);
cell.setCellStyle(headerCellStyle);
}
}
// CellStyle for Age
CellStyle ageCellStyle = workbook.createCellStyle();
ageCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("#"));
int rowIdx = 1;
for (Customer customer : customers) {
Row row = sheet.createRow(rowIdx++);
row.createCell(0).setCellValue(customer.getId());
row.createCell(2).setCellValue(customer.getName());
row.createCell(3).setCellValue(customer.getAddress());
Cell ageCell = row.createCell(4);
ageCell.setCellValue(customer.getAge());
ageCell.setCellStyle(ageCellStyle);
}
// read the image to the stream
final FileInputStream stream = new FileInputStream("image.png");
final CreationHelper helper = workbook.getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();
final ClientAnchor anchor = helper.createClientAnchor();
//anchor.setAnchorType( ClientAnchor.MOVE_AND_RESIZE );
final int pictureIndex =
workbook.addPicture(IOUtils.toByteArray(stream), Workbook.PICTURE_TYPE_PNG);
anchor.setCol1( 0 );
anchor.setRow1( 9 ); // same row is okay
anchor.setRow2( 11 );
anchor.setCol2( 2 );
final Picture pict = drawing.createPicture( anchor, pictureIndex );
//pict.resize();
Header header = sheet.getHeader();
header.setCenter("&[pict]");
header.setLeft("Left First Page Header");
header.setRight("Right First Page Header");
sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
sheet.addMergedRegion(new CellRangeAddress(1,1,0,1));
sheet.addMergedRegion(new CellRangeAddress(2,2,0,1));
sheet.addMergedRegion(new CellRangeAddress(3,3,0,1));
sheet.addMergedRegion(new CellRangeAddress(4,4,0,1));
com.aspose.cells.Workbook workbook1=new com.aspose.cells.Workbook(workbook);
FileOutputStream fileOut = new FileOutputStream("customerstest.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
}
Please assist me on how can i consume POI workbook in aspose cell workbook.
Below code statement is not working, rather throwing type mismatch error:
com.aspose.cells.Workbook workbook1=new com.aspose.cells.Workbook(workbook);
Thanks