package com.foxconn;
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.awt.image.BufferedImage;
import javax.imageio.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class AaE {
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg = null;
BufferedImage bufferImg1 = null;
try {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
//String ReturnReason = (String) model.getParam("ReturnReason");
// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
// 读入图片1
//BufferedImage bufferImg = ImageIO.read(new File("d:\\album-show_04.jpg"));
//如果是从数据库中读取的BLOB类型的图片 从 model中取得该图片 方法略
Blob blob = (Blob) model.getParam("fileContent");
BufferedImage buffer_Img = imgChangeBuffer(blob);
ImageIO.write(bufferImg, "jpg", byteArrayOut);
// 创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("test picture");
HSSFRow row = sheet1.createRow(0);
//设置默认高与宽
sheet1.setDefaultRowHeightInPoints(10);
sheet1.setDefaultColumnWidth((short) 20);
HSSFCell cell = row.createCell((short)0);
cell.setCellValue("aaa");
HSSFCell cell2 = row.createCell((short)1);
cell2.setCellValue("bbb");
HSSFCell cell3 = row.createCell((short)2);
cell3.setCellValue("ccc");
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
//控制图片显示
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255,
(short) 2, 4, (short)2, 2);
anchor.setAnchorType(3);
// 插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
fileOut = new FileOutputStream("d:/aa.xls");
// 写入excel文件
wb.write(fileOut);
fileOut.close();
} catch (IOException io) {
io.printStackTrace();
System.out.println("erorr : " + io.getMessage());
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static BufferedImage imgChangeBuffer(Blob blob) throws IOException{
byte[] data = null;
try {
InputStream inStream = blob.getBinaryStream();
long nLen = blob.length();
int nSize = (int) nLen;
data = new byte[nSize];
inStream.read(data);
inStream.close();
} catch (SQLException e) {
this.setMessage("获取图片数据失败,原因:"+e.getMessage());
}
BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
return bis;
}
}
分享到:
相关推荐
在Java编程中,将数据库查询...2) 使用Apache POI将查询结果写入Excel文件;3) 创建HTTP服务供用户下载;4) 下载完成后删除临时文件。这一过程涉及到了数据库操作、文件处理、HTTP响应以及错误处理等多个Java核心技术。
3. **批量导出图片**:导出Oracle中的图片则需要读取BLOB数据并写入文件系统。可以编写PL/SQL过程或者使用Java、C#等编程语言,调用Oracle的JDBC或ODBC驱动,获取BLOB数据并保存为图片文件。 4. **Excel数据交互**...
在业务层,Excel工具类的核心功能包括读取Excel数据和写入Excel数据。读取时,可以使用Apache POI的Sheet、Row和Cell API来遍历Excel文件。对于每个单元格,可以获取其值并进行类型转换。写入时,创建新的Sheet和Row...
然后,使用`PreparedStatement`或`Statement`对象的`setBinaryStream`方法将图片文件读取为字节流并写入BLOB字段。 ```java File file = new File("image.jpg"); FileInputStream fis = new FileInputStream(file);...
最后,将从数据库获取的字节流转回图片并显示。这一步通常在前端完成,通过HTTP响应将字节流发送给浏览器,浏览器会自动解析并显示图片。在服务器端,我们可以使用`ServletOutputStream`将字节流写入HTTP响应。 `...
// 返回ServletOutputStream,用于写入Excel数据 return response.getOutputStream(); } ``` 在前端Vue部分,通常会发送一个请求到后端的导出接口,并处理返回的二进制数据。一种常见的方法是利用`fetch` 或 `...
EasyExcel通过简单的API,可以快速地读取和写入Excel数据。它采用了内存优化的设计,即使处理大数据量的文件,也能避免内存溢出的问题。对于生成个性化表格的需求,我们可以从以下几个方面进行设置: 1. **自定义...
在涉及二进制数据的场景中,这可能用于将文件内容存储到数据库的BLOB(Binary Large Object)字段,或者从数据库检索二进制数据并将其保存为文件。JDBC驱动程序允许Java应用程序通过SQL语句与数据库进行交互,包括...
在Web开发中,文档处理通常涉及到读取、写入、转换以及展示文档,而"document-lib"提供了这样的功能,使得在浏览器环境中进行这些操作变得可能。 在JavaScript的世界里,由于其主要运行在客户端,对于文件的操作...
- 用户权限管理:控制用户对文档的读取、写入和删除权限。 - 版本控制:记录每次修改,便于回滚到先前版本。 5. **配置说明**: - 环境设置:安装必要的开发工具和库,如Node.js、npm或Git。 - 服务器配置:...