java 读取并保存excel中的图片
2010-01-25 14:40
525 查看
/*
* 保存excel中的图片(以文件形式保存,或者存入数据库)
*
* basePath:应用所在路径,附件存放路径:
* 参数:is是上传的附件文件流
*/
public void saveSheetImgByFile(String basePath,InputStream is) throws ParseException {
FileOutputStream os = null;
try {
Workbook wbk = Workbook.getWorkbook(is);
//建文件目录
File mkFile = new File(basePath);
if (!mkFile.exists() && !mkFile.isDirectory()) {
mkFile.mkdirs();
}
// 循环所有sheet
for (int k = 0; k < wbk.getNumberOfSheets(); k++) {
Sheet sheet = wbk.getSheet(k);
// 共有多少行
int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数
// 循环sheet的所有图片
for (int i = 0; i < imgNumber; i++) {
Image image = sheet.getDrawing(i);
byte[] imageData = image.getImageData();
String fileName = image.getImageFile().getName().trim()
+ ".jpg";
File file = new File(basePath+"/" + fileName);
os = new FileOutputStream(file);// 建立一个上传文件的输出流
os.write(imageData, 0, imageData.length);// 将文件写入服务器
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 将excel图片文件保存到数据库
*/
public void saveSheetImgByDB(InputStream is) throws ParseException,
ClassNotFoundException, SQLException, IOException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8", "root", "root");
String INSERT_PICTURE = "insert into t_mypicture(name, photo) values (?, ?)";
PreparedStatement ps = null;
FileOutputStream os = null;
try {
Workbook wbk = Workbook.getWorkbook(is);
// 循环所有sheet
for (int k = 0; k < wbk.getNumberOfSheets(); k++) {
Sheet sheet = wbk.getSheet(k);
// 共有多少行
int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数
// 循环sheet的所有图片
for (int i = 0; i < imgNumber; i++) {
Image image = sheet.getDrawing(i);
byte[] imageData = image.getImageData();
String fileName = image.getImageFile().getName().trim()
+ ".jpg";
conn.setAutoCommit(false);
ps = conn.prepareStatement(INSERT_PICTURE);
ps.setString(1, fileName);
ps.setBytes(2, imageData);
ps.executeUpdate();
conn.commit();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.action方法调用:
ImportExcelUtil ieu = new ImportExcelUtil();
ExcelForm excelForm = (ExcelForm) form;
FormFile file = excelForm.getExcelFile();
// 附件方式保存
String basePath = request.getSession().getServletContext().getRealPath(
"/")+"excelFile";
try {
ieu.saveSheetImgByFile(basePath,file.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 数据库方式保存
try {
ieu.saveSheetImgByDB(file.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
* 保存excel中的图片(以文件形式保存,或者存入数据库)
*
* basePath:应用所在路径,附件存放路径:
* 参数:is是上传的附件文件流
*/
public void saveSheetImgByFile(String basePath,InputStream is) throws ParseException {
FileOutputStream os = null;
try {
Workbook wbk = Workbook.getWorkbook(is);
//建文件目录
File mkFile = new File(basePath);
if (!mkFile.exists() && !mkFile.isDirectory()) {
mkFile.mkdirs();
}
// 循环所有sheet
for (int k = 0; k < wbk.getNumberOfSheets(); k++) {
Sheet sheet = wbk.getSheet(k);
// 共有多少行
int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数
// 循环sheet的所有图片
for (int i = 0; i < imgNumber; i++) {
Image image = sheet.getDrawing(i);
byte[] imageData = image.getImageData();
String fileName = image.getImageFile().getName().trim()
+ ".jpg";
File file = new File(basePath+"/" + fileName);
os = new FileOutputStream(file);// 建立一个上传文件的输出流
os.write(imageData, 0, imageData.length);// 将文件写入服务器
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 将excel图片文件保存到数据库
*/
public void saveSheetImgByDB(InputStream is) throws ParseException,
ClassNotFoundException, SQLException, IOException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8", "root", "root");
String INSERT_PICTURE = "insert into t_mypicture(name, photo) values (?, ?)";
PreparedStatement ps = null;
FileOutputStream os = null;
try {
Workbook wbk = Workbook.getWorkbook(is);
// 循环所有sheet
for (int k = 0; k < wbk.getNumberOfSheets(); k++) {
Sheet sheet = wbk.getSheet(k);
// 共有多少行
int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数
// 循环sheet的所有图片
for (int i = 0; i < imgNumber; i++) {
Image image = sheet.getDrawing(i);
byte[] imageData = image.getImageData();
String fileName = image.getImageFile().getName().trim()
+ ".jpg";
conn.setAutoCommit(false);
ps = conn.prepareStatement(INSERT_PICTURE);
ps.setString(1, fileName);
ps.setBytes(2, imageData);
ps.executeUpdate();
conn.commit();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.action方法调用:
ImportExcelUtil ieu = new ImportExcelUtil();
ExcelForm excelForm = (ExcelForm) form;
FormFile file = excelForm.getExcelFile();
// 附件方式保存
String basePath = request.getSession().getServletContext().getRealPath(
"/")+"excelFile";
try {
ieu.saveSheetImgByFile(basePath,file.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 数据库方式保存
try {
ieu.saveSheetImgByDB(file.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
相关文章推荐
- java 读取并保存excel中的图片
- 在Java中读取并保存EXCEL文件中图片
- 在Java中读取并保存EXCEL文件中图片
- Java从网络读取图片并保存至本地
- Java图片操作 --- 图片的读取、绘制、缩放、裁剪、保存
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。并读取出来。
- java IO流读取保存图片文件
- 【java】mysql+springMvc+easyui实现图片的保存和读取显示
- Java从网络读取图片并保存至本地
- java读取网络上的图片并保存到本地,图片文件名不变
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- java 保存读取图片到oracle
- Java从网络读取图片并保存至本地
- Java将图片作为二进制进行保存和读取
- Java从网络读取图片并保存至本地
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- java+pgsql实现保存图片到数据库,以及读取数据库存储的图片
- java读取excel中的多图片