您的位置:首页 > 编程语言 > Java开发

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: