【问题标题】:How to add image file as Ole object in excel using java如何使用java在excel中将图像文件添加为Ole对象
【发布时间】:2020-07-09 13:06:29
【问题描述】:

我尝试使用 Aspose 单元。 但我能够正确添加 pdf 文件。 当我添加 jpg 文件时,它显示在 excel 文件中,但没有被打开。

我尝试了以下方式。

sheet.getOleObjects().get(oleObjectIndex).setImageData(binary);
            sheet.getOleObjects().get(oleObjectIndex).setLeftCM(oleObjectIndex);
            sheet.getOleObjects().get(oleObjectIndex).setDisplayAsIcon(true);

这里的图像显示为缩略图,但我不希望这样。

sheet.getOleObjects().get(oleObjectIndex).setObjectData(binary);
            //sheet.getOleObjects().get(oleObjectIndex).setFileType(oleFileType);
            sheet.getOleObjects().get(oleObjectIndex).setDisplayAsIcon(true);
            sheet.getOleObjects().get(oleObjectIndex).setLeftCM(oleObjectIndex);

此处显示文件的正确图标,但双击时文件未打开。

非常感谢社区的帮助。 谢谢。

【问题讨论】:

    标签: excel aspose createoleobject


    【解决方案1】:

    请参阅以下两行代码,您还需要添加:

    sheet.getOleObjects().get(oleObjectIndex).setFileFormatType(FileFormatType.UNKNOWN);
    sheet.getOleObjects().get(oleObjectIndex).setObjectSourceFullName(path);
    

    这是我测试过的完整示例代码,它运行良好: 例如

    示例代码

    // Get the image file.
    String path = "e:\\test\\myfile.jpg";
    File file = new File(path);
    
    // Get the picture into the streams.
    byte[] img = new byte[(int) file.length()];
    FileInputStream fis = new FileInputStream(file);
    fis.read(img);
    
    // Instantiate a new Workbook.
    Workbook wb = new Workbook();
    
    // Get the first worksheet.
    Worksheet sheet = wb.getWorksheets().get(0);
    
    // Add an Ole object into the worksheet with the image shown in MS Excel.
    int oleObjIndex = sheet.getOleObjects().add(14, 3, 200, 220, img);
    OleObject oleObj = sheet.getOleObjects().get(oleObjIndex);
    
    // Set embedded ole object data and other attributes.
    oleObj.setObjectData(img);
    oleObj.setDisplayAsIcon(true);
    oleObj.setFileFormatType(com.aspose.cells.FileFormatType.UNKNOWN);
    oleObj.setObjectSourceFullName(path);
    
    // Save the excel file
    wb.save("f:\\files\\tstoleobject1.xlsx");
    

    希望,这有点帮助。

    PS。我在 Aspose 担任支持开发人员/布道者。

    【讨论】:

    • 非常感谢阿姆贾德。该解决方案的效果与我尝试的完全一样。
    【解决方案2】:

    我只是使用相同的代码,但我发现当我打开新的 Excel 时,它显示为图像,我必须检查两次才能将其传输到 OLE。 有什么好担心的

    【讨论】:

    • 我猜这是 MS Excel 的行为,您必须双击嵌入的 ole 对象才能打开它。无论如何,你能分享你当前的 Excel 文件(包含 OLE 对象)和你期望的文件(你可以在 MS Excel 中手动创建你想要的带有 ole 对象的 Excel 文件)?我们会尽快检查。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2012-02-02
    • 2010-11-26
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多