将数据从数据库插入电子表格的Java程序
数据库是数据和信息的持久集合,以特定方式组织以便快速访问,类似地,电子表格是另一种以表格形式存储数据的方式。有两种类型的数据库,其中结构化数据库,特别是 MySQL 数据库在此处说明,LibreOffice Calc 作为电子表格工具。将数据从 MySQL 插入电子表格非常有用,因为它使不熟悉 SQL 的每个人都可以轻松查看和检索数据。使用Java处理电子表格需要使用 APACHE POI。 Apache Poi 是用于处理 Microsoft 文档的Java API。下载下面提到的与 apache 相关的 jar 文件,这将有助于我们处理电子表格。同样,JDBC 是用于将Java连接到 MySQL 的Java API。从下面给出的链接下载 mysql-connector-java-5.1.6-bin.jar 文件。
- mysql-connector-java-5.1.6-bin.jar
- dom4j-1.6.jar
- poi-3.9.jar
- poi-ooxml-3.9.jar
- poi-ooxml-schemas-3.9.jar
- xmlbeans-2.3.0.jar
给定以下表格结构,该表格中存在的所有数据都应存储在电子表格中,表格属性作为电子表格的单元格名称。
算法:
- 使用数据库登录凭据打开与数据库的新连接。这是使用 getConnection() 方法完成的。 Connection 类的每个对象都代表一个到数据库的新连接。
- 执行 SQL 查询并存储结果。
- 创建一个新的工作簿 -> 工作表 -> 行。
- 创建与数据库表中的每一列对应的新单元格。
- 遍历存储的结果集并将值存储在相应的列中。
使用的内置函数的语法、参数和返回类型:
1. Connection getConnection(String URL, String username, String Password);
2. Statement createStatement();
3. ResultSet executeQuery(String sql_query);
4. XSSFSheet createSheet(String sheet_name);
5. XSSFRow createRow(int row_no);
6. XSSFCell createCell(int cell_no);
7. void setCellValue(String cell_name);
8. bool next();
9. void write(FileOutputStream output);
执行:
Java
// Java Program to Insert Data
// from a Database to a Spread Sheet
// Importing required modules
// File libraries
import java.io.File;
import java.io.FileOutputStream;
// Step 1: Importing Database modules
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
// Importing API modules
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
// Main (App) class shown only
// not its Connection class
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Step 2 : Load and Register drivers
// Loading drivers using forName() method
Class.forName("com.mysql.jdbc.Driver");
// Registering drivers using Driver Manager
// Step 3: Establish. a connection
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/students", "root",
"Swapnil@123");
// Step 4: Proces the statement
// Getting data from the table details
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(
"select * from details");
// Step 5: Execute a query
// Create a workbook
XSSFWorkbook workbook = new XSSFWorkbook();
// Create a spreadsheet inside a workbook
XSSFSheet spreadsheet1
= workbook.createSheet("student db");
XSSFRow row = spreadsheet1.createRow(1);
XSSFCell cell;
// Step 6: Process the results
cell = row.createCell(1);
cell.setCellValue("RollNo");
cell = row.createCell(2);
cell.setCellValue("Name");
// i=2 as we will start writing from the
// 2'nd row
int i = 2;
while (resultSet.next()) {
row = spreadsheet1.createRow(i);
cell = row.createCell(1);
cell.setCellValue(resultSet.getInt("RollNo"));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString("Name"));
i++;
}
// Local directory on computer
FileOutputStream output = new FileOutputStream(new File(
"/home/swapnil/Desktop/sem9/student_database_geeks_for_geeks.xlsx"));
// write
workbook.write(output);
// Step 7: Close the connection
output.close();
// Display message for successful compilation of
// program
System.out.println(
"exceldatabase.xlsx written successfully");
}
}
输出:内部输出: 在终端中生成的 SQL 表(Windows 的 CMD)反映了在创建的数据库中所做的更改,如图所示。
外部输出:根据Java程序中提到的本地目录,这将是一个Excel文件。