【发布时间】:2018-07-05 06:42:10
【问题描述】:
我正在尝试在 JAVA 中创建带水印的 excel 文件。
我正在使用以下方法: 1.使用Apache POI api创建excel工作簿 2.使用aspose cells api中的poi工作簿添加watermar。
当我尝试在 aspose 单元格中使用 POI 工作簿时,我收到错误 - 工作簿不是预期的。请帮忙,因为我是 spring/JAVA 的新手
PFB 我的代码:
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();
}
}
请帮助我如何在 aspose 单元工作簿中使用 POI 工作簿。
下面的代码语句不起作用,而是抛出类型不匹配错误:
com.aspose.cells.Workbook workbook1=new com.aspose.cells.Workbook(workbook);
谢谢
【问题讨论】:
标签: java spring apache-poi aspose-cells