快速学习:使用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按钮,则程序将退出。

六、结论


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