java查询excel数据

                                                                 Java如何查询excel表格中的数据并输入到指定的表格中

有两种方式可以实现Java查询Excel表格中的数据并输入到指定的表格中:

  1. 使用Apache POI库。
    Apache POI是一款开源的Java API,用于操作Microsoft Office格式文件,如Excel、Word、PowerPoint等。通过POI库可以方便地读取和写入Excel文件中的数据。您可以使用POI库读取Excel文件中的数据,将其存入Java数组或List集合中,然后再使用POI库将数据写入另一个Excel文件中。

这是使用Apache POI库读取Excel的基本代码示例:

FileInputStream file = new FileInputStream(new File("文件路径"));
    
// 使用文件流创建工作簿对象
Workbook workbook = new XSSFWorkbook(file);
    
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
    
// 遍历行
for (Row row : sheet) {
    // 遍历单元格
    for (Cell cell : row) {
        // 读取单元格的值并进行处理
        // 单元格的值可以是字符串、数字或日期等类型
    }
}

// 关闭工作簿和文件流
workbook.close();
file.close();

这是使用Apache POI库写入Excel的基本代码示例:

// 创建一个工作簿对象
Workbook workbook = new XSSFWorkbook();
    
// 创建一个工作表对象
Sheet sheet = workbook.createSheet("Sheet1");
    
// 创建一行,并在其中创建单元格并赋值
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello World");
    
// 创建文件输出流
FileOutputStream file = new FileOutputStream(new File("文件路径"));
    
// 将工作簿中的数据写入文件流
workbook.write(file);
    
// 关闭工作簿和文件流
workbook.close();
file.close();

您可以将这些基本代码示例结合实际情况进行修改和组合,实现Java查询Excel表格中的数据并输入到指定的表格中。

  1. 使用JDBC-ODBC桥连接Excel。
    JDBC(Java Database Connectivity)是Java语言操作数据库的一组API,开发者可以通过JDBC API与不同的关系数据库管理系统交互。使用JDBC-ODBC桥可以将Excel文件作为一个数据库使用,并使用SQL语句对其进行操作。您可以使用JDBC-ODBC桥连接Excel,并执行select语句查询数据,并使用insert语句将数据插入到另一个Excel文件中。

这是使用JDBC-ODBC桥连接Excel的基本代码示例:

// 加载ODBC桥的驱动类
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// 指定ODBC数据源的名称和Excel驱动程序
String url = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=文件路径";

// 使用用户名和密码创建连接
Connection connection = DriverManager.getConnection(url, "用户名", "密码");

// 创建一个SQL语句,查询Excel表格中的数据
String sql = "SELECT * FROM [Sheet1$]";

// 执行SQL语句,将查询结果存储在ResultSet对象中
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);

// 遍历查询结果
while (resultSet.next()) {
    // 读取每条记录中的数据,并进行处理
    // 可以使用ResultSet对象的getXXX()方法读取不同类型的数据
}

// 创建一个SQL语句,将数据插入到另一个Excel文件中
String insertSql = "INSERT INTO [Sheet1$] VALUES (1, 'Hello World', 3.14)";

// 执行SQL语句,将记录插入到Excel文件中
statement.executeUpdate(insertSql);

// 关闭连接和Statement对象
resultSet.close();
statement.close();
connection.close();

您可以将这些基本代码示例结合实际情况进行修改和组合,实现Java查询Excel表格中的数据并输入到指定的表格中。
希望楼主采纳,谢谢楼主

给你个示例:可以使用Apache POI库读取名为“input.xlsx”的Excel文件中的数据,并将其存储在字符串变量“data”中。接着,我们获取名为“Output”的工作表,并将数据写入其第一行第一列的单元格中。最后,我们将更改后的Excel文件保存到名为“output.xlsx”的文件中。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelExample {

    public static void main(String[] args) throws IOException {
        // 读取Excel文件
        FileInputStream inputStream = new FileInputStream(new File("input.xlsx"));
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

        // 获取需要读取的工作表
        Sheet sheet = workbook.getSheetAt(0);

        // 读取数据
        Row row = sheet.getRow(0);
        Cell cell = row.getCell(0);
        String data = cell.getStringCellValue();

        // 获取需要写入的工作表
        Sheet outputSheet = workbook.getSheet("Output");

        // 写入数据
        Row outputRow = outputSheet.createRow(0);
        Cell outputCell = outputRow.createCell(0);
        outputCell.setCellValue(data);

        // 保存Excel文件
        FileOutputStream outputStream = new FileOutputStream("output.xlsx");
        workbook.write(outputStream);
        workbook.close();
        inputStream.close();
        outputStream.close();
    }
}


  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/242667
  • 除此之外, 这篇博客: java模板导出excel中的 支持标签 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • if标签,如果表达式值为空,则if标签块内容不输出。eq: ~#if ${eachModel}~
    • each标签,可以嵌套配合if、foreach、pageforeach使用,迭代输出对象或map的key数据。eq: ~#each ${eachModel}~
    • foreach标签,一次性将所有数据遍历处理,将foreach块循环输出。eq: ~#foreach obj in ${forEachList}~
    • pageforeach标签,可解决内存溢出问题,分页读取数据遍历处理,将pageforeach块循环输出。eq: ~#pageforeach pageObj in ${pageForeachList}~