java项目中Excel文件导入后日期数据解析变成数字的解决方法

问题描述:springboot项目,Excel 文件导入后日期数据解析变成数字。在项目开发过程中,若使用POI读取Excel 文件中的日期数据,可能会出现日期数据解析变成数字的情况。

我的项目问题:需要的是Date,却获取到了Number类型。

在解析Excel 文件时,会发现表格中显示的日期会变成数字,实际上Excel 表格中存储日期数据的格式就是数字,但我们看到的是日期数据,所以直接从Excel 的 Cell中读取数据后就会出现 日期变成数字的假象。

由于Excel 中的时间是以1900年为起点,读取得到的数字则是自1900年以来经过的天数差值,所以会得到一个数字的日期,要保存到数据库中Date类型只能进行转换。、

        Calendar calendar = new GregorianCalendar(1900,0,-1);
        Date date = DateUtils.addDays(calendar.getTime(),填入提取出来的数字日期);

我的项目代码:

 Calendar calendar = new GregorianCalendar(1900,0,-1);
            Date updatedTime = DateUtils.addDays(calendar.getTime(),updatedDateValue.intValue());

            Date createdTime = DateUtils.addDays(calendar.getTime(),createdDateValue.intValue());
            //对日期格式化操作
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
            simpleDateFormat.format(updatedTime);
            simpleDateFormat.format(createdTime);

这样得到的date就是正常的日期了。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用 Apache POI 库来解析 Excel数据,并使用 JDBC 将数据导入数据库。是一个简单的 Java 代码示: 首先,确保你已经将 POI 和 JDBC 相关的 JAR 文件添加到你的项目。 ```java import java.FileInputStream; import java.sql; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; 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.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelImporter { public static void main(String[] args) { String excelFilePath = "path/to/your/excel/file.xlsx"; try (FileInputStream inputStream = new FileInputStream(excelFilePath); Workbook workbook = new XSSFWorkbook(inputStream)) { Sheet sheet = workbook.getSheetAt(0); int rowCount = 0; for (Row row : sheet) { if (rowCount == 0) { rowCount++; continue; } String column1 = row.getCell(0).getStringCellValue(); int column2 = (int) row.getCell(1).getNumericCellValue(); // 获取其他列的数据 // 将数据插入数据库 insertToDatabase(column1, column2); rowCount++; } System.out.println("数据导入成功!"); } catch (Exception e) { e.printStackTrace(); } } private static void insertToDatabase(String column1, int column2) { String url = "jdbc:mysql://localhost:3306/your_database"; String username = "your_username"; String password = "your_password"; try (Connection connection = DriverManager.getConnection(url, username, password)) { String sql = "INSERT INTO your_table (column1, column2) VALUES (?, ?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, column1); statement.setInt(2, column2); statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上面的示例,你需要将 `path/to/your/excel/file.xlsx` 替换为你实际的 Excel 文件路径。此外,你还需要根据你的数据库设置更新 `url`、`username`、`password`、`your_database` 和 `your_table`。 这个示例假设 Excel 表的第一行为标题,从第二行开始是数据。你可以根据需要调整代码以适应不同的表格结构。同时,你可以根据你的数据库表结构调整 `insertToDatabase()` 方法的 SQL 语句和参数设置。 请确保你已正确引入所需的库和驱动程序,并在执行代码之前设置好数据库连接信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值