java解析excel生成sql文件
2017-09-14 21:29
656 查看
序:需求是往服务器数据库导入ip、数量较多。用java直接生成sql文件会省太多事。(本文会有同一个地址。对应多个ip的情况。生成为:key:ip1;ip2;ip3...)
public class Test { public static void insertEnvInfo() throws IOException{ String filePath = "D:/stg2ip/env_stg.xls"; //指定本地的数据目录 String slqPath = "D:/stg2ip/sql/evn_stg.sql"; //指定生成文件目录 try { InputStream in = new FileInputStream(filePath); Workbook wb = new HSSFWorkbook(in); in.close(); int numberOfSheets = wb.getNumberOfSheets(); String sql = ""; Sheet sheetAt = wb.getSheetAt(0); int lastRowNum = sheetAt.getLastRowNum(); int firstRowNum = sheetAt.getFirstRowNum(); List<Map> list = new ArrayList<>(); Map map = new HashMap(); sql = ""; List<ExcelBean> excelBean = getExcelBean(sql, sheetAt, lastRowNum); Map<String,String> map1 =new HashMap<>(); for(ExcelBean bean :excelBean){ if(StringUtils.isBlank(map1.get(bean.getAppnickname()))) map1.put(bean.getAppnickname(), bean.getServerhost()); else{ map1.put(bean.getAppnickname(), map1.get(bean.getAppnickname())+";"+bean.getServerhost()); //map的value进行合并 } } Iterator<Map.Entry<String, String>> it = map1.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); sql += String.format("INSERT IGNORE INTO `appautotest`.`app_sys_env_info` (`app_nick_name`, `scope`, `key`, `value`, `createtime`, `updatetime`) VALUES ('%s', 'BXSTG5', 'server_host', '%s', now(), now());\n", entry.getKey(), entry.getValue()); } System.out.println(map1); System.out.println(map1.size()); File file = new File(slqPath); if(!file.exists()){ file.createNewFile(); } byte[] bytes = sql.getBytes(); OutputStream os = new FileOutputStream(slqPath); os.write(bytes); os.flush(); os.close(); System.out.println("sheets"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static List<ExcelBean> getExcelBean(String sql, Sheet sheetAt, int lastRowNum) { List<ExcelBean> list = new ArrayList<>(); for (int rowNum=0; rowNum <= lastRowNum; rowNum++){ ExcelBean bean = new ExcelBean(); //创建一个单独ExcelBean、用于要合并的列(本文只取用了app_nick_name、server_host两个列) System.out.println("rowNum = "+rowNum); Row row = sheetAt.getRow(rowNum); String app_nick_name = ""; String server_host = ""; String war_name = ""; String manager = ""; if (row != null){ Cell cell = row.getCell(2); if (cell != null) { app_nick_name = cell.getStringCellValue(); bean.setAppnickname(app_nick_name); } cell = row.getCell(1); if (cell != null) { server_host = cell.getStringCellValue(); bean.setServerhost(server_host); } cell = row.getCell(3); if (cell != null) { war_name = cell.getStringCellValue(); } cell = row.getCell(4); if (cell != null) { manager = cell.getStringCellValue(); } } list.add(bean); } return list; } public static void main(String args[]) throws IOException{ insertEnvInfo(); } }
相关文章推荐
- Java基础系列19:使用JXL或者POI生成和解析Excel文件
- JXL包大解析;Java程序生成excel文件和解析excel文件内容
- Java读取Excel文件,生成SQL语句
- JXL包大解析;Java程序生成excel文件和解析excel文件内容
- 【Java】使用Apache POI生成和解析Excel文件
- Java+Flex+POI 解析Excel文件(读取文件中想要的内容)
- JAVA解析文件pdf、word、excel
- 一个简单生成Excel文件格式的java包。
- Java代码生成和解析xls文件
- java通过poi解析Excel文件,直接读取客户端文件
- Java数据导入(读)Excel文件 解析
- java生成Excel文件
- JAVA处理Excel文件---生成简单的Excel文件
- 使用Java泛型和反射机制编写Excel文件生成和解析的通用工具类
- java 生成excel文件例子
- 对xsd文件的操作 生成java实体并解析生成的xml
- Java编译后生成的若干个class文件名称解析
- java生成Excel文件 xls
- Java解析Excel文件
- JXL生成的excel文件+JAVA文件下载功能