我使用 APACHE POI 从 excel 文件中读取数据。现在,我想用控制台中的结果创建数据库。我的 excel 文件有 6 列和 8 行。谁能帮我?我试图找到几天的解决方案.. :(
问问题
1363 次
3 回答
0
对于一个简单的应用程序,您可以使用 JDBC 动态创建数据库并插入记录,如果这是您想要的。否则,请事先创建数据库并在从 excel 文件中读取数据时插入行。
于 2013-04-03T13:09:04.207 回答
0
您所要求的有很多解决方案,您可以使用对象模型并将其与 ORM 工具联系起来。
我会从这里开始:
使用 Apache Jakarta POI 从 Excel 电子表格生成外部表
该文章已过时,因为他们将其称为 Jakarta POI,但这些概念可能会延续。此外,即使它是基于 Oracle 的方法,您也可以进行概括。
如果您在本论坛中需要更具体的内容,则必须根据需求提供更具体的内容。
于 2013-04-03T13:16:55.347 回答
0
假设您正在以这种方式阅读内容,例如将值保存在列表中(字符串或对象,具体取决于您的目的):
//Some code of yours here
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
List data = new ArrayList();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
data.add(cell);
}
sheetData.add(data);
然后,如果您将数据保存在列表中,则指定您的数据库引擎,例如 MySQL:
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/";
static final String USER = "username";
static final String PASS = "password";
然后您继续创建数据库并插入您的记录:
Connection conn = null;
Statement stmt = null;
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("About to create a database");
stmt = conn.createStatement();
String dbName = "MyExcelDB";
String sql = "CREATE DATABASE " + dbName;
stmt.executeUpdate(sql);
System.out.println("Database created successfully...");
//Now, create a table based on what you need, maybe you can get the headers of your excel
String tableName = "TBUSER";
String createTableSQL = "CREATE TABLE" + tableName + "("
+ "USER_ID NUMBER(5) NOT NULL, "
+ "USERNAME VARCHAR(20) NOT NULL, "
+ "CREATED_BY VARCHAR(20) NOT NULL, "
+ "CREATED_DATE DATE NOT NULL, " + "PRIMARY KEY (USER_ID) "
+ ")";
Statement createTableStatement = conn.createStatement();
createTableStatement.execute(createTableSQL);
//Now insert
String insertQuery = "insert into " + dbName + "." + tableName + "(user_id,username,created_by,created_date) values (?,?,?,?)";
PreparedStatement insertStatement = conn.prepareStatement(insertQuery);
insertStatement.setInt(1,Integer.parseInt(sheetData.get(0));
insertStatement.setString(2,sheetData.get(1));
//and so on... then
insertStatement.executeUpdate();//This returns an int, if the insert works, the value must be greater than 0
我知道代码中有很多改进,但我想给你一个想法和“模板”来做这件事。此致。
于 2013-04-03T13:28:01.787 回答