将excel表格中的数据,转换为sql语句,并存储到txt文档中。
2017-01-12 14:19
344 查看
前台页面:
<form action="${ctx}/test/result" method="post" enctype="multipart/form-data"> <input type="file" value="选择文件" name="multipartFile" id="excel"/> <input type="submit" class="submit" value="导出excel" /> </form>
----------
package com.capinfo.examsystem.web; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; 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.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.Logger; /** * Created by zhuochen on 2016/10/21. */ @Controller @RequestMapping("test") public class TestController { private static final Logger logger = Logger.getLogger("TestController.class"); @RequestMapping("result") public String testController(String path, MultipartFile multipartFile) throws IOException { InputStream in = multipartFile.getInputStream(); logger.info(in+"测试样本"); /* FileInputStream fileIn = new FileInputStream(*/ /* FileInputStream fileIn = new FileInputStream("D:\\idea_workspace1\\demosign\\target\\classes\\doc\\居住证复核20161024.xls"); InputStreamReader isr = new InputStreamReader(fileIn, "GBK"); System.out.println("==============");*/ Workbook wb = new HSSFWorkbook(new POIFSFileSystem(in)); //System.out.println(wb+":wb"); int numOfSheets = wb.getNumberOfSheets(); Sheet sheet = null; Row row = null; Cell cell = null; String cellValue = ""; List<Map<String, String>> list = new ArrayList<Map<String, String>>(); Map map = null; File savefile = new File("C:\\Users\\zhuochen\\Desktop\\doc"); if (!savefile.exists()) { savefile.mkdirs(); } Date date = new Date(); String simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日mm秒").format(date); System.out.println(simpleDateFormat+"当前时间"); String s = "C:\\Users\\zhuochen\\Desktop\\doc\\小客车查询数据"+simpleDateFormat+".txt"; //System.out.println(s+"当前时间"); FileWriter fileWrite = new FileWriter(s); // 循环遍历 // System.out.println(numOfSheets+"====="); //for (int indexOfSheet=1; indexOfSheet < numOfSheets; indexOfSheet++) { System.out.println("==="+savefile); sheet = wb.getSheetAt(0); //logger.info("数据:"+sheet); //直接从内容开始。 for (int indexOfRowNum = sheet.getFirstRowNum(), rowNum = sheet .getLastRowNum(); indexOfRowNum <= rowNum; indexOfRowNum++) { //System.out.println("行" + indexOfRowNum); row = sheet.getRow(indexOfRowNum); int lastCellNum = (int) row.getLastCellNum(); //System.out.println(lastCellNum + "?short数字"); if (row != null) { if (row.getCell(0).toString().isEmpty()) { continue; } else { map = new LinkedHashMap<String, String>(); for (int indexOfCell = 0; indexOfCell < lastCellNum; indexOfCell++) { // System.out.println("列" + indexOfCell); cell = row.getCell(indexOfCell); //logger.info("每行数据:"+getCellValue(cell)); if (cell != null) { cellValue = getCellValue(cell); if (row.getCell(0).toString().equals(cellValue)) { int i = cellValue.lastIndexOf("."); String cellValueNum = cellValue.substring(0, i); fileWrite.write("select " + "\'" + cellValueNum + "\'" + " id,"); map.put(indexOfCell + "", cellValue); } else { //System.out.println("================" + cellValue + "cellValue"); //我只有四列需要转换 转换后形式是“select '1' id,'xxx' name,'xxxxxxxxxx' personcode,'201203070092' cardid from dual union all” switch (indexOfCell) { case 1: fileWrite.write("\'" + cellValue + "\'" + " name,"); break; case 2: fileWrite.write("\'" + cellValue + "\'" + " personcode,"); break; case 3: fileWrite.write("\'" + cellValue + "\'" + " cardid from dual union all"); break; case 4: break; } map.put(indexOfCell + "", cellValue); } } } fileWrite.write("\r\n"); if (!map.isEmpty()) { list.add(map); } } } } // } // DbUtil.insertDataItem(conn, list); //System.out.println(list); // 关闭流 fileWrite.flush(); fileWrite.close(); in.close(); //fileIn.close(); return "excelTest"; } public static String getCellValue(Cell cell) { int cellType = cell.getCellType(); String cellValue = ""; switch (cellType) { case HSSFCell.CELL_TYPE_NUMERIC: cellValue = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: try { cellValue = cell.getStringCellValue(); } catch (IllegalStateException e) { cellValue = String.valueOf(cell.getNumericCellValue()); } break; default: cellValue = cell.getStringCellValue(); } return cellValue.trim(); } }
相关文章推荐
- 将Excel表格多个Sheet表的数据转换为SQL存储语句
- 将Excel表格的数据转换成sql的insert语句
- 求sql查询语句(转换数据表由纵向转换成横向)
- 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程
- uniqueidentifier转换成varchar数据类型的sql语句
- 【ORACLE】一个简单实用的对数据进行行列转换并统计的SQL语句
- 将Excel中的数据转换成sql Insert语句
- 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程
- Sql语句与存储过程查询数据的性能测试
- 数据字典到SQL语句的转换(使用word与VBA)
- Sqlserver表数据转换SQL脚本存储过程
- 【ORACLE】一个简单实用的对数据进行行列转换并统计的SQL语句
- 在SQL/plus下 ,查询语句直接保存成TXT文档
- 用SQL语句将一字段的ntext数据类型,转换成Nvarchar数据类型,其他类型的方法类似
- C# 执行多条SQL语句,实现数据库事务(通过Hashtable存储数据) .
- C#实现EXCEL数据转换到TXT文档
- 利用批处理 存储过程和数据转换服务包执行sqlserver Agent下的Job
- SQL语句数据类型转换,int——string
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。
- MSSQL生成表数据SQL插入语句的存储过程