Image 使用coldfusion 8向excel文档中的行添加图像
使用Coldfusion 8,是否有人能够将图像嵌入excel电子表格(xlsx)或通过img src链接它们 一些背景信息:cf服务器将获取包含产品行的excel文档。基于产品id和样式等,我能够找到或创建一个图像,该图像作为第一列添加到现有excel文档中Image 使用coldfusion 8向excel文档中的行添加图像,image,excel,coldfusion,export-to-excel,Image,Excel,Coldfusion,Export To Excel,使用Coldfusion 8,是否有人能够将图像嵌入excel电子表格(xlsx)或通过img src链接它们 一些背景信息:cf服务器将获取包含产品行的excel文档。基于产品id和样式等,我能够找到或创建一个图像,该图像作为第一列添加到现有excel文档中 我知道coldfusion 9有一个名为Spreadsheet AddImage的函数,不幸的是,我使用的是cf 8,没有机会升级。我不确定您当前正在使用什么操作xlsx文件。然而,CF9中的电子表格功能利用了,显然也可以从CF8中使用。
我知道coldfusion 9有一个名为Spreadsheet AddImage的函数,不幸的是,我使用的是cf 8,没有机会升级。我不确定您当前正在使用什么操作xlsx文件。然而,CF9中的电子表格功能利用了,显然也可以从CF8中使用。它只需要多一点低级代码 先决条件: 虽然POI与CF8捆绑在一起,但它是一个旧版本。您需要更新的版本来操作.xlsx文件。您可以使用或替换
{cf_root}\lib
文件夹中的现有JAR。注意,我不知道更换罐子是否有任何负面影响
添加图像:
Excel实际上不支持
标记,只支持超链接。但是,您可以像SpreadsheetAddImage一样在工作簿中嵌入图像。如POI所述,基本流程为:
// ..
//使用javaLoader加载xlsx文件
factory=loader.create(“org.apache.poi.ss.usermodel.WorkbookFactory”);
input=loader.create(“java.io.FileInputStream”).init(“c:/path/to/someFile.xlsx”);
工作簿=工厂。创建(输入);
input.close();
//获取所需的图纸并加载辅助对象(一次)
sheet=workbook.getSheet(“您的工作表名称”);
父权制=sheet.createDrawing父权制();
helper=workbook.getCreationHelper();
//将图像添加到工作簿中
imageBytes=fileReadBinary(“c:/path/to/someImage.jpg”);
imageIndex=workbook.addPicture(imageBytes,workbook.PICTURE\u TYPE\u JPEG);
//将图片锚定到第一个单元格,即A1
anchor=helper.createClientAnchor();
setRow1(javacast(“int”,0));//第一个单元格的行(从零开始)
setCol1(javacast(“int”,0));//第一个单元格的列(从零开始)
picture=家长.createPicture(锚定,图像索引);
picture.resize();//仅支持jpg和png
//将其保存回磁盘
outstream=loader.create(“java.io.FileOutputStream”).init(“c:/path/to/outFile.xlsx”);
练习册。写(扩展);
冲水;
exptream.close();
新列
具有讽刺意味的是,插入一个新列比添加一个图像要复杂得多。上次我检查时,POI仍然缺少插入新列的内置功能。因此,在将图像插入第一列之前,您需要将所有现有单元格向右移动。棘手的部分是维护单元格格式、合并单元格等。您是如何做到的巧妙地操作xlsx?回答得很好!我正沿着这条道路前进,很高兴得到确认,这是将图像添加到excel pre-cf9的唯一解决方案。在我的搜索中,我在“cfsearching”的博客上看到了一些非常好的信息。谢谢Leigh!@John-还有其他选择(包括商业库和非基于java的产品)。但鉴于POI已经相当成熟,而且CF9也使用了它,我认为这是最简单的选择。无论如何,很高兴它帮助了大家:)
<cfscript>
// ..
// load the xlsx file with the javaLoader
factory = loader.create("org.apache.poi.ss.usermodel.WorkbookFactory");
input = loader.create("java.io.FileInputStream").init( "c:/path/to/someFile.xlsx" );
workbook = factory.create( input );
input.close();
// get the desired sheet and load helper objects (once)
sheet = workbook.getSheet("Your Sheet Name");
patriarch = sheet.createDrawingPatriarch();
helper = workbook.getCreationHelper();
// add the image to the workbook
imageBytes = fileReadBinary( "c:/path/to/someImage.jpg" );
imageIndex = workbook.addPicture( imageBytes, workbook.PICTURE_TYPE_JPEG );
// anchor the picture to the first cell ie A1
anchor = helper.createClientAnchor();
anchor.setRow1( javacast("int", 0) ); // row of first cell (zero based)
anchor.setCol1( javacast("int", 0) ); // column of first cell (zero based)
picture = patriarch.createPicture( anchor, imageIndex );
picture.resize(); // only supported for jpg and png
// save it back to disk
outstream = loader.create("java.io.FileOutputStream").init( "c:/path/to/outFile.xlsx"" );
workbook.write( outstream );
outstream.flush();
outstream.close();
</cfscript>