快速学习:使用Swing导出Excel文件到数据库。 (swing从数据库中导出excel)

快速学习:使用Swing导出Excel文件到数据库

在日常工作中,经常需要将Excel文件中的数据导入到数据库中。手动操作费时费力,因此我们需要一种简单、快速的方法来实现导出Excel文件到数据库。本文将介绍如何使用Swing实现这一功能。

一、准备工作

在使用Swing导出Excel文件到数据库之前,我们需要准备好以下工具和环境:

1. JDK:确保您已经安装了最新版本的Java Development Kit(JDK)。

2. Eclipse:Eclipse是一种广泛使用的Java IDE,可以用于开发Java应用程序。

3. MySQL数据库:在本教程中,我们将使用MySQL数据库来演示将Excel数据导入数据库。

4. poi-3.17.jar:这是Apache POI的最新版本,我们需要使用它来读取Excel文件。

二、创建GUI

我们需要创建一个Graphical User Interface(GUI)来操作我们的代码。使用Swing可以轻松创建GUI。

在Eclipse中创建一个新的Java项目,并在其中创建一个新的类,命名为ExcelToDatabase.java。在该文件中添加以下代码:

“`

import javax.swing.*;

import java.awt.*;

public class ExcelToDatabase extends JFrame {

public ExcelToDatabase() {

setTitle(“Excel To Database”);

setSize(300, 200);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setLayout(new BorderLayout());

// Add components to the frame

JLabel label1 = new JLabel(“Enter Excel file path:”);

JTextField textField1 = new JTextField();

JLabel label2 = new JLabel(“Enter database name:”);

JTextField textField2 = new JTextField();

JButton button1 = new JButton(“Export”);

JButton button2 = new JButton(“Exit”);

JPanel panel1 = new JPanel(new GridLayout(2, 2));

panel1.add(label1);

panel1.add(textField1);

panel1.add(label2);

panel1.add(textField2);

JPanel panel2 = new JPanel(new FlowLayout());

panel2.add(button1);

panel2.add(button2);

add(panel1, BorderLayout.CENTER);

add(panel2, BorderLayout.SOUTH);

setVisible(true);

}

public static void mn(String[] args) {

new ExcelToDatabase();

}

}

“`

上述代码创建了一个GUI窗口,在其上包含两个文本框和两个按钮。它的布局使用了边界布局管理器(BorderLayout)。

三、将Excel文件读入内存

在导入Excel文件之前,我们需要将其读入到内存中。为此,我们需要使用Apache POI。

我们需要将poi-3.17.jar文件添加到我们的项目中。选择File > Properties > Java Build Path > Libraries,然后点击Add JARs,在您的项目文件夹中选择poi-3.17.jar文件。现在我们可以使用POI库中的类。

在ExcelToDatabase.java文件中添加以下代码来读取Excel文件:

“`

private static void readExcel(String filePath) {

try {

FileInputStream file = new FileInputStream(new File(filePath));

// Create a workbook instance

Workbook workbook = new XSSFWorkbook(file);

// Get the first sheet

Sheet sheet = workbook.getSheetAt(0);

// Loop through rows

Iterator rowIterator = sheet.iterator();

while (rowIterator.hasNext()) {

Row row = rowIterator.next();

// Loop through cells

Iterator cellIterator = row.cellIterator();

while (cellIterator.hasNext()) {

Cell cell = cellIterator.next();

System.out.print(cell.toString() + “\t”);

}

System.out.println(“”);

}

file.close();

} catch (Exception e) {

e.printStackTrace();

}

}

“`

该方法接受Excel文件的路径作为参数,并打印出所有单元格的值。我们将在下一步中将这些值导入到数据库中。现在运行程序并输入Excel文件的路径,以确保readExcel()方法可以正常读取数据。

四、将Excel数据插入到数据库中

现在,我们已经读取了Excel文件的所有数据,并将其保存在内存中。接下来,我们需要将这些数据插入到数据库中。

在ExcelToDatabase.java文件中添加以下代码以连接到MySQL数据库:

“`

private static void insertIntoDatabase(String databaseName, List rows) {

String url = “jdbc:mysql://localhost/” + databaseName;

String username = “root”;

String password = “”;

try (Connection conn = DriverManager.getConnection(url, username, password)) {

String sql = “INSERT INTO products (name, price, quantity) VALUES (?, ?, ?)”;

PreparedStatement statement = conn.prepareStatement(sql);

for (Object[] row : rows) {

statement.setString(1, (String) row[0]);

statement.setDouble(2, (Double) row[1]);

statement.setInt(3, (Integer) row[2]);

statement.executeUpdate();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

“`

此方法需要数据库名称和行列表作为参数。我们使用MySQL服务器连接到数据库并将数据插入到名为“产品”的表中。在这种情况下,表有一个名称,一个价格和一个数量列。

我们需要将行列表传递给该方法,该列表由每个行的值组成。

五、将数据导出到数据库

现在,我们已经准备好了将Excel数据导入到MySQL数据库中的所有要素。在ExcelToDatabase.java文件中添加以下代码,将GUI组件与我们之前创建的方法相结合:

“`

public ExcelToDatabase() {

// …

button1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String filePath = textField1.getText();

String databaseName = textField2.getText();

List rows = new ArrayList();

try {

FileInputStream file = new FileInputStream(new File(filePath));

Workbook workbook = new XSSFWorkbook(file);

Sheet sheet = workbook.getSheetAt(0);

Iterator rowIterator = sheet.iterator();

while (rowIterator.hasNext()) {

Row row = rowIterator.next();

Iterator cellIterator = row.cellIterator();

List rowValues = new ArrayList();

while (cellIterator.hasNext()) {

Cell cell = cellIterator.next();

switch (cell.getCellType()) {

case STRING:

rowValues.add(cell.getStringCellValue());

break;

case NUMERIC:

rowValues.add(cell.getNumericCellValue());

break;

case BOOLEAN:

rowValues.add(cell.getBooleanCellValue());

break;

default:

rowValues.add(null);

break;

}

}

Object[] rowArray = new Object[rowValues.size()];

rowArray = rowValues.toArray(rowArray);

rows.add(rowArray);

}

insertIntoDatabase(databaseName, rows);

file.close();

} catch (Exception ex) {

ex.printStackTrace();

}

}

});

button2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

}

“`

此代码使用ActionListener监听器为按钮添加操作。单击Export按钮将读取Excel文件,将数据存储在内存中,然后将数据插入到MySQL数据库中。如果单击Exit按钮,则程序将退出。

六、结论

相关问题拓展阅读:

怎么用JAVA链接数据库ORACLE实现导出一个表

你可以用 swing 或 jsp 来做:

swing:

我写的样例:

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.*;

import java.awt.*;

import javax.swing.*;

public class data extends JFrame implements ActionListener{

JButton select,print;

JTable table;

Object body=new Object;

String title={“编号”,”用户名”,”密码”,”邮箱”};

Connection conn;

Statement stat;

ResultSet rs;

JTabbedPane tp;

public data() {

super(“用户信息”);

this.setSize(700,500);

this.setLocation(500,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel ps=new JPanel();

select=new JButton(“查询”);

print=new JButton(“打印预览”);

select.addActionListener(this);

print.addActionListener(this);

ps.add(select);

ps.add(print);

table=new JTable(body,title);

tp=new JTabbedPane();

tp.add(“t41c_user表”,new crollPane(table));

this.getContentPane().add(tp,”Center”);

this.getContentPane().add(ps,”South”);

this.setVisible(true);

this.connection();

}

public void connection(){

try {

Class.forName(“oracle.jdbc.driver.OracleDriver”);

String url=”jdbc:oracle:thin:@*.*.*.*:1521:orcl”;

conn=DriverManager.getConnection(url,”username”,”password”);

stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ON);

} catch (Exception ex) {

}

}

public static void main(String args) {

data data= new data();

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==select)

{select();}

else if(e.getSource()==print)

{print();}

}

public void print()

{}

public void select() {

try {

for(int x=0;x

body=null;

body=null;

body=null;

body=null;

}

int i=0;

rs=stat.executeQuery(“select * from t41c_user”);

while(rs.next()){

body=rs.getInt(1);

body=rs.getString(2);

body=rs.getString(3);

body=rs.getString(4);

i=i+1;

}

this.repaint();

} catch (SQLException ex) {

}

}

}

jsp:

swing从数据库中导出excel的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于swing从数据库中导出excel,快速学习:使用Swing导出Excel文件到数据库。,怎么用JAVA链接数据库ORACLE实现导出一个表的信息别忘了在本站进行查找喔。


数据运维技术 » 快速学习:使用Swing导出Excel文件到数据库。 (swing从数据库中导出excel)