Java实现读取word的中文内容并存到mysql的blob字段中
时间: 2024-05-06 19:20:27 浏览: 150
实现步骤:
1. 引入相关的jar包,包括poi和mysql-connector-java。
2. 使用poi的HWPFDocument类读取word文档,获取文档的所有段落和表格。
3. 遍历每个段落和表格,获取其中的文本内容。
4. 将文本内容转换为字节数组,使用PreparedStatement将其存入mysql的blob字段中。
示例代码:
```java
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.List;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Table;
import org.apache.poi.hwpf.usermodel.TableCell;
import org.apache.poi.hwpf.usermodel.TableRow;
public class WordToMysql {
public static void main(String[] args) {
String filename = "test.doc"; //要读取的word文件名
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
String sql = "INSERT INTO word(content) VALUES(?)"; //要执行的SQL语句
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement pstmt = conn.prepareStatement(sql);
InputStream is = new FileInputStream(filename);
HWPFDocument doc = new HWPFDocument(is);
//遍历每个段落
List<Paragraph> paragraphs = doc.getParagraphs();
for (Paragraph para : paragraphs) {
String text = para.text();
byte[] bytes = text.getBytes("UTF-8");
pstmt.setBytes(1, bytes);
pstmt.executeUpdate();
}
//遍历每个表格
int numTables = doc.getRange().numTables();
for (int i = 0; i < numTables; i++) {
Table table = doc.getRange().getTable(i);
int numRows = table.numRows();
for (int j = 0; j < numRows; j++) {
TableRow row = table.getRow(j);
int numCells = row.numCells();
for (int k = 0; k < numCells; k++) {
TableCell cell = row.getCell(k);
String text = cell.text();
byte[] bytes = text.getBytes("UTF-8");
pstmt.setBytes(1, bytes);
pstmt.executeUpdate();
}
}
}
pstmt.close();
conn.close();
is.close();
System.out.println("Done.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意事项:
1. 如果word文档中包含图片或其他非文本内容,可能无法正确读取。
2. 为了避免编码问题,建议将读取的文本内容转换为UTF-8编码的字节数组。
阅读全文