将MS Excel工作表转换为图像

时间:2015-08-11 08:43:20

标签: java excel image powerpoint

简短问题

我正在搜索可以将工作表转换为图像的Java库。

我的用例

我有一个pptx文件。该文件在一张幻灯片上嵌入了一个excel文件。在“演示模式”(我的意思是当您不编辑excel时)时,会显示图像表示。该图像由PowerPoint生成并存储在/ppt/images/*.emf中的pptx文件中。如果excel文件的数据被更改(这是我以编程方式执行的操作),则图像不再是最新的。因此,您必须生成工作表的新图像,并用新图像替换旧图像。

已找到选项

  • 使用iText将Excel转换为pdf并转换为 pdf到图像
  • Aspose

我想知道是否有其他选择。任何提示都非常感激。

2 个答案:

答案 0 :(得分:1)

您可以将Excel文件转换为HTML(例如like this),然后将其转换为图片(例如this library)。

答案 1 :(得分:0)

另一个选项是SmartXLS,但它在java.awt.headless=true模式下无法运行,这对我们来说是不行的。

最后我们将用aspose来做 @spilymp感谢您的支持。

如果aspose链接不再起作用,以下是将执行此操作的剪切:

 public void generateImages(final String sourcePath) {  
     try {  
         Workbook workbook = new Workbook(sourcePath);  
         List<Worksheet> worksheets = getAllWorksheets(workbook);  
         if (worksheets != null) {  
             int noOfImages = 0;  
             for (Worksheet worksheet : worksheets) {  
                 if (worksheet.getCells().getCount() > 0 || worksheet.getCharts().getCount() > 0 || worksheet.getPictures().getCount() > 0) {  
                     String imageFilePath = sourcePath + "_output_" + (noOfImages++) + ".jpeg";   
                     SheetRender sr = new SheetRender(worksheet, getImageOrPrintOptions());  
                     sr.toImage(0, imageFilePath);  
                 }  
             }  
         }  
     } catch (Exception e) {  
         e.printStackTrace();  
     }  
 }  
 /**  
  * Returns all worksheets present in given workbook.  
  *   
  * @param workbook  
  * @return all worksheets present in given workbook.  
  */  
 private List<Worksheet> getAllWorksheets(final Workbook workbook) {  
     List<Worksheet> worksheets = new ArrayList<Worksheet>();  
     WorksheetCollection worksheetCollection = workbook.getWorksheets();  
     for (int i = 0; i < worksheetCollection.getCount(); i++) {  
         worksheets.add(worksheetCollection.get(i));  
     }  
     return worksheets;  
 }  
 /**  
  * Returns ImageOrPrintOptions for png images  
  *   
  * @return  
  */  
 private ImageOrPrintOptions getImageOrPrintOptions() {  
     ImageOrPrintOptions imgOptions = new ImageOrPrintOptions();  
     imgOptions.setImageFormat(ImageFormat.getJpeg());  
     imgOptions.setOnePagePerSheet(true);  
     return imgOptions;  
 }