Java读取Excel文件并写入数据库

该博客介绍如何使用Java读取Excel文件,然后将数据写入Oracle数据库。通过示例代码展示了主流程控制类中的关键步骤,包括配置文件和数据库表的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路: 
   1.加载配置文件,进行对 数据库的相关初始化及其他相关参数

   2.尝试打开指定的xls文件开始对数据库表写入


相关资源

  ,比如配置文件,创建数据库表的sql 语句及readme.txt见 本人的上传资源具体地址为:

点我下载对应的代码及创建数据库表的sql语句 和 配置文件


具体代码展示:

 1.Main <主流程控制类>

/*
 * Copyright 2007 - 2014 RollStone
 *
 * All Rights Reserved.
 */
package csi;

import csi.file.FileBase;
import csi.file.FileDelay;
import csi.file.FileFail;
import csi.file.FileFirewall;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @brief
 * @author RollStone
 * @created Jul 9, 2014 5:05:19 PM
 */
public class Main {

    public static void main(String[] args) {
        //确定日期,若是无参数则取值为昨天的yyyymmdd
        String dateStr;
        if (args.length == 1) {
            dateStr = args[0];
        } else {
            dateStr = getYesterday();
        }
        Config config = new Config();
        config.load();
        FileBase[] fbs = new FileBase[]{new FileFirewall(), new FileFail(), new FileDelay()};
        try {
            Connection conn = new DBConnector().getConnection();
            conn.setAutoCommit(false); //以防止分割的时候只进行了部分插入
            for (FileBase base : fbs) {
                base.setMsgMaxLength(config.getMsgMaxLength());
                base.setExcelFilename(config.getProvinceCode(), dateStr);
                String excelfilename = base.getExcelFilename();
                int existRecordNums = base.checkData(conn, excelfilename);
                String efWithPath = config.getExcelPath() + excelfilename;
                base.writeExcelContentToTable(conn, efWithPath, existRecordNums + 1);
            }            
            conn.close();
        } catch (SQLException e) {
        }
    }

    public static String getYesterday() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Calendar c = Calendar.getInstance();
        c.add(Calendar.DATE, -1);
        return sdf.format(c.getTime());
    }
}

 2.Config <通过load函数加载配置文件中的除Database信息相关的其他配置参数的内容>

/*
 * Copyright 2000 - 2014 RollStone 
 * All Rights Reservered.
 */
package csi;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @brief
 *
 * @author RollStone
 * @created 2014-07-24 03:34:39
 */
public class Config {

    private static final String DEFAULT_CONFIG = "pax.properties";
    private String configFile;
    protected Properties properties = new Properties();

    public Config(String cfg) {
        configFile = cfg;
        initOthers();
    }

    public Config() {
        configFile = DEFAULT_CONFIG;
        initOthers();
    }
    ///////////////////// Database part /////////////////////////
    //This section be extends by class DBConnector

    ///////////////////// Config others /////////////////////////
    private String msgMaxLenth;
    private String excelPath;
    private String provinceCode;
    private boolean isLinux;
    private boolean isTest;

    private void initOthers() {
        msgMaxLenth = null;
        excelPath = null;
        provinceCode = null;
  
Java中,你可以通过一些流行的库如Apache POI来处理Excel文件,然后利用JDBC连接数据库来存储数据。以下是基本步骤: 1. **添加依赖**: 首先需要在项目中引入Apache POI用于操作Excel(HSSF或XSSF),以及JDBC驱动(如MySQL、Oracle等对应的jar包)。 ```java // Maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <!-- 或者 poi-hssf 如果处理的是xls格式 --> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` 2. **读取Excel文件**: 使用`XSSFWorkbook`(或`HSSFWorkbook`)打开工作簿,`Sheet`代表工作表,`Row`表示行,`Cell`表示单元格。 ```java Workbook workbook = new XSSFWorkbook(new FileInputStream("path_to_your_excel.xlsx")); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { String value = cell.getStringCellValue(); // 处理cell值... } } workbook.close(); ``` 3. **将数据写入数据库**: 创建JDBC连接创建PreparedStatement来插入数据,避免SQL注入风险。 ```java Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password"); String sql = "INSERT INTO your_table (column1, column2) VALUES (?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, dataFromExcel); pstmt.setString(2, otherData); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } ``` 4. **错误处理**: 为了保证程序健壮,记得添加适当的异常处理,关闭资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值