package com.ufun;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.imageio.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;
import com.mysql.jdbc.Blob;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
public class Main {
static String dbURL = "jdbc:mysql://218.213.98.132:1433/texas_cn_log";
static String userID = "texas";
static String passwd = "texas123";
public static void main(String args[]) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = (Connection) DriverManager.getConnection(dbURL,
userID, passwd);
// conn.setAutoCommit(false);
String sql2 = "SELECT id,uid,content,image ,submitTime,readStatus from feedback limit 200,300 ";
PreparedStatement stmt2 = (PreparedStatement) conn
.prepareStatement(sql2);
ResultSet rs = (ResultSet) stmt2.executeQuery();
int i = 0;
OutputStream outf = new FileOutputStream("E:\\feedback200-300.xls");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("feedback数据");
//只能创造一个这样的对象
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
while (rs.next()) {
i++;
HSSFRow row = sheet.createRow(rs.getRow() - 1);
for (int c = 0; c <= rs.getMetaData().getColumnCount(); c++) {
HSSFCell cell = row.createCell(c);
if (c < rs.getMetaData().getColumnCount()) {
if (c != 3) {
cell.setCellValue(rs.getString(c + 1));
} else {
// InputStream is = rs.getBinaryStream(3);
if (null != rs.getBlob("image") && !rs.getBlob("image").equals(null)) {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
Blob image = (Blob) rs.getBlob("image");
BufferedImage bufferImg = imgChangeBuffer(image);
// bufferImg = ImageIO.read(is);
ImageIO.write(bufferImg, "jpg", byteArrayOut);
// int dx1, int dy1, int dx2, int dy2, short
// col1, int row1, short col2, int row2)
// dx1
// dy1
// dx2
// dy2
// col1 图片的左上角放在第几个列cell
// row1图片的左上角放在第几个行cell
// col2 图片的右下角放在第几个列cell
// row2图片的右下角放在第几个行cell
HSSFClientAnchor anchor = new HSSFClientAnchor(
0, 0, 255, 255, (short) c, i-1,
(short) c, i-1);
patriarch.createPicture(anchor, wb.addPicture(
byteArrayOut.toByteArray(),
HSSFWorkbook.PICTURE_TYPE_JPEG));
}
}
}
}
/*
* String id = resultSet.getString("id");
* System.out.println(id); String uid =
* resultSet.getString("uid"); String content =
* resultSet.getString("content"); String image =
* resultSet.getString("image"); //String submitTime =
* resultSet.getString("submitTime"); //String readStatus =
* resultSet.getString("readStatus"); File image2 = new
* File("D:"+File.separator+id+".jpg"); FileOutputStream fos =
* new FileOutputStream(image2); byte[] buffer = new
* byte[100000]; InputStream is = resultSet.getBinaryStream(3);
* while (is.read(buffer) > 0) { fos.write(buffer); }
* fos.close();
*/
//}
//wb.write(outf);
//outf.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param blob
* @return
* @throws IOException
*/
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) {
e.getMessage();
}
BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
return bis;
}
}
分享到:
相关推荐
标题“poi excel转换成bean”涉及到的关键技术是使用Apache POI从Excel文件中读取数据并将其映射到Java Bean对象中。这个过程在处理大量结构化数据时特别有用,例如导入数据库或进行数据分析。 首先,我们需要理解...
9. **Eclipse运行**:在Eclipse中,创建一个Java项目,将jar包添加到项目的类路径中,将上述代码放入`client.java`,然后配置好数据库连接信息,运行这个类即可。 通过这个项目,你不仅可以学习到如何使用Java处理...
在Android Studio项目中,我们通常把静态的非代码资源,如图片、音频、文本文件等,放入res目录下的各个子目录。对于Excel文件,我们可以将其放在assets或raw目录下,这两个目录允许我们存放任意类型的文件,且在...
- **Apache POI**:Apache POI 是一个流行的开源库,它允许Java程序员读取、写入和修改Microsoft Office格式的文件,包括Excel。使用HSSF(Horrible Spreadsheet Format)处理.xls格式,XSSF处理.xlsx格式。 - **...
你可以逐行读取Excel,根据需要将单元格值放入集合中,以便后续处理。 9. **内存优化** 处理大型Excel文件时,POI可能会消耗大量内存。为了避免内存溢出,可以使用SXSSFWorkbook,这是一个低内存占用的API,它会将...
在IT行业中,自动从Excel文件生成SQL脚本是一项常见的需求,尤其在数据处理、数据库管理以及数据分析等场景中。这个“读取excel自动生成sql文的txt文件”的工具显然是为了解决这一问题而设计的。它允许用户通过Excel...
查询结果存储在 `ResultSet` 对象中,我们遍历这个结果集,将每条记录的值放入对应的单元格。 在处理完所有数据后,我们需要将工作簿写入文件。使用 `FileOutputStream` 将 `workbook` 对象写入指定的文件路径。在...
通常,这个类会有一个静态方法,接收数据集合和输出文件路径作为参数,然后创建工作簿、工作表、行和单元格,将数据填充到Excel中,最后保存文件。为了具体了解`ExcelUtil`的实现细节,你需要查看源代码。如果你遇到...
标题中的"excel导入用到jar包"指的是为了在Java程序中读取和操作Excel文件,我们需要引入特定的库,这里提及的是Apache POI项目提供的JAR文件。 Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的...
解析通过MutilpartFile导入的Excel并解析里面数据,先判断文件的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,采用Apache的POI的API来操作Excel,读取内容后保存到List中,再将List转Json(使用Linked,增删快...
在实际开发中,开发者通常会把这些JAR包放入项目的类路径(Classpath)中,以便运行时能够找到并加载这些依赖。此外,使用IDE(如Eclipse或IntelliJ IDEA)可以直接管理这些依赖,简化开发过程。 总结来说,SQL ...
在Java中,虽然Excel本身不是数据库,但可以使用JDBC-ODBC桥或特定库(如Apache POI)来读取和写入Excel数据。JDBC-ODBC桥需要在系统中配置对应的ODBC数据源。 4. **MySQL**: MySQL是一种广泛使用的开源关系型...
【Excel_To_DB】是一款基于Java开发的小型工具,主要用于将Excel表格中的数据高效地导入到数据库中。这个项目采用SpringBoot框架,结合了EasyPoi库处理Excel数据,以及Redis消息队列来实现数据的异步批量导入。下面...
本实例提供的解决方案可能是利用流式处理(Streaming)或者迭代器(Iterator)来逐条读取数据库中的数据,然后将每条数据转化为CSV格式并写入文件。这样,内存只需要保持较小的数据量,避免了一次性加载所有数据导致...
在Java中,可以将Excel表格的每一行映射为一个JSON对象,然后将所有对象放入一个JSON数组中,最终得到一个标准的JSON格式字符串。 4. **文件操作**:工具需要能够读取输入的Excel文件和写入输出的JSON文件。Java的...
3. **Apache POI**: 虽然POI主要用来处理Microsoft Office格式的文件,但它也可以用于读取和写入CSV数据,这在数据可视化时非常有用,可以将数据导出为Excel表格,便于分析和图表制作。 4. **Java Swing**: Swing是...