发布网友 发布时间:2023-05-25 02:29
共1个回答
热心网友 时间:2024-05-02 00:25
我邮箱:qi九si六2七56@qq.com,不懂来问我,这是以前写的一个程序片段,你看看能帮助你不 =-================================== import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.DecimalFormat; import java.text.NumberFormat; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 预处理程序 填充数据库客户表(kehu.table)测试数据 * * */ public class InsertKeHuTable { Connection connection; PreparedStatement statement; ResultSet resultSet; POIFSFileSystem fileSystem; HSSFWorkbook workbook; HSSFSheet sheet; HSSFRow row; HSSFCell cell; /** 记录Excel中row行数 */ int rowNum; /** 记录Excel中cell数量 */ int cellNum; /** 临时存储Excel的cell值 */ String cellTmp; /** 存储数据库开始插入数据前的时间戳 */ long startTime; /** 数据库:姓名 */ String kxingming; /** 数据库:学校 */ String kxuexiao; /** 数据库:校区 */ String kxiaoqu; /** 数据库:宿舍楼 */ String ksushelou; /** 数据库:宿舍号 */ String ksushehao; /** 数据库:手机号 */ String kshoujihao; /** Excel原文件的存储路径 */ String excelFilePath = "C://Documents and Settings//Administrator//桌面//tmp//kehu_1_tbl.xls";// excel文件存储路径 /** * 构造 * * @throws SQLException */ public InsertKeHuTable() { try { excelMakeMth(); } catch (SQLException e) { e.printStackTrace(); } } /** * Excel操作 * */ private void excelMakeMth() throws SQLException { try { // 连接数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); connection = DriverManager .getConnection( "jdbc:microsoft:sqlserver://localhost:1433;databaseName=xol", "sa", "sa"); /** * 待插入数据库的语句 * kxingming,kxuexiao,kxiaoqu,ksushelou,ksushehao,kshoujihao; * */ String sql = "insert into kehu values(?,'',?,?,?,?,?,'','')"; startTime = System.currentTimeMillis(); statement = connection.prepareStatement(sql); // Excel操作 fileSystem = new POIFSFileSystem(new FileInputStream(new File( excelFilePath)));// 读取Excel文件 workbook = new HSSFWorkbook(fileSystem);// 工作簿 sheet = workbook.getSheetAt(0);// 获取第一sheet单元 rowNum = sheet.getLastRowNum() + 1;// 获取excel表格的行数 for (int i = 0; i < rowNum; i++) { row = sheet.getRow(i); // 游标移动到第i行 if (row == null) {// 如果某行没数据 continue;// 退出继续读取 } cellNum = row.getLastCellNum();// 游标移动到第i行的最后一列 for (int j = 0; j < cellNum; j++) { // 分别读取每一个Cell数据 if (j == 1) { // 读取第j列的数据 kxingming = readCellValueMth_KeHu(j); } else if (j == 2) { kxuexiao = readCellValueMth_KeHu(j); } else if (j == 3) { kxiaoqu = readCellValueMth_KeHu(j); } else if (j == 4) { ksushelou = readCellValueMth_KeHu(j); } else if (j == 5) { ksushehao = readCellValueMth_KeHu(j); } else if (j == 9) { kshoujihao = readCellValueMth_KeHu(j); } // 连库操作,要一次进行 statement.setString(1, kxingming); statement.setString(2, kxuexiao); statement.setString(3, kxiaoqu); statement.setString(4, ksushelou); statement.setString(5, ksushehao); statement.setString(6, kshoujihao); } statement.addBatch();// 批量添加 } statement.executeBatch();// 批量执行(更新) connection.commit(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { connection.close(); } catch (Exception e2) { e2.printStackTrace(); } } double d = (System.currentTimeMillis() - startTime); System.out.println("【数据插入完毕,耗时:" + (d) + "毫秒】"); } @SuppressWarnings("deprecation") private String readCellValueMth_KeHu(int j) { cell = row.getCell(j);// cell的值 if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_BLANK:// 空 cellTmp = "";// cell为空 break; case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔 cellTmp = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_ERROR: // 异常 cellTmp = String.valueOf(cell.getErrorCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: // 公式 if (HSSFDateUtil.isCellDateFormatted(cell)) {// 是否为日期格式 cellTmp = String.valueOf(cell.getDateCellValue() .toLocaleString()); } else { cellTmp = String.valueOf(cell.getNumericCellValue()); } break; case HSSFCell.CELL_TYPE_NUMERIC: // 数字 Double cellValue_dob = cell.getNumericCellValue();// 读取cell内数据 if (cellValue_dob.toString().length() > 11) { // 如果读取到的是手机号码,需要匹配数字格式 DecimalFormat format = (DecimalFormat) NumberFormat .getInstance(); format.applyPattern("00000000000"); cellTmp = format.format(cellValue_dob); } else { // 如果读取到的是比较短的数字,则去掉尾数(.0)后显示 cellTmp = cellValue_dob.toString().substring(0, cellValue_dob.toString().length() - 2); } break; case HSSFCell.CELL_TYPE_STRING:// 字符 cellTmp = cell.getStringCellValue(); break; default: cellTmp = cell.getStringCellValue(); break; } return cellTmp;// 返回读取到的cell数据 } else { return ""; } } public static void main(String[] args) { new InsertKeHuTable(); } }