Excel poi导出
2013-11-10 03:16
204 查看
后期繁忙,对本篇有问题的地方未修复。切勿阅读。
最近接手一个做了一半的遗留游戏项目,策划弟弟不懂数据库,只会看Excel(其实我觉得没有区别啊!
),但是得配置数据啊,如果你是做过游戏的,那么你就应该知道,策划一般是把数据配置到Excel中,然后再通过工具,把数据导入到数据库中,公司是有这种工具的,但是不太对应,实在是懒得整理,想了想,反正也不是很忙,就写了个导表工具,谈到导表,肯定要解析Excel,于是我先去down了相对应的poi的jar包(不要问我为什么用poi而不用jxl,你试一下就知道了
)
这里贴上poi的地址,(有友友说不知道去哪里down jar包)我用的是3.9的,现在好像出3.10了,没太注意!
poi的3.9版本jar包
借助poi的jar包,很快就写出了解析的代码
那么通过上面这个方法得到文件的内容后,接着就是解析具体的内容了,好了,下一步
这样,我就把表中的数据完全的转成sql语句了,只要传入数据库执行就ok了,当然,现在的这个导表还不完善,明天根据具体的生产环境继续完善它!大家有建议的也提提,根据API写的,不完善的地方肯定有
最近接手一个做了一半的遗留游戏项目,策划弟弟不懂数据库,只会看Excel(其实我觉得没有区别啊!
),但是得配置数据啊,如果你是做过游戏的,那么你就应该知道,策划一般是把数据配置到Excel中,然后再通过工具,把数据导入到数据库中,公司是有这种工具的,但是不太对应,实在是懒得整理,想了想,反正也不是很忙,就写了个导表工具,谈到导表,肯定要解析Excel,于是我先去down了相对应的poi的jar包(不要问我为什么用poi而不用jxl,你试一下就知道了
)
这里贴上poi的地址,(有友友说不知道去哪里down jar包)我用的是3.9的,现在好像出3.10了,没太注意!
poi的3.9版本jar包
借助poi的jar包,很快就写出了解析的代码
public static Workbook catchExcelData(String filePath) {//读取文件内容 File file = new File(filePath); if (!file.exists()) { // 极其经典的一步判断 System.out.println("亲,您提供的路径有问题哦!"); return null; } Workbook workBook = null; // 为什么要用Workbook来声明呢? 看下面... InputStream streamOfExcel = null; try { streamOfExcel = new FileInputStream(file); if (filePath.endsWith(".xls")) {// 91-03版Excel workBook = new HSSFWorkbook(streamOfExcel); } else if (filePath.endsWith(".xlsx")) {// 2007版Excel workBook = new XSSFWorkbook(streamOfExcel); } else { System.out.println("亲,您提供的文件类型有误哦!"); return null; } return workBook; } catch (FileNotFoundException e) { System.out.println("亲,您提供的路径有问题哦!"); e.printStackTrace(); } catch (IOException e) { System.out.println("亲,解析失败了!"); e.printStackTrace(); } finally { try { streamOfExcel.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }
那么通过上面这个方法得到文件的内容后,接着就是解析具体的内容了,好了,下一步
public static List<String> createSqlByExcelData(String filePath, int sheetNum, String tableName){//filePath为文件路径,sheetNum为要读取的sheet,tableName是要表名,主要用于sql拼接 Workbook excelData = ExcelCreateSql.catchExcelData(filePath);//拿到文件数据 //注:这里Sheet导入的是 org.apache.poi.ss.usermodel.Sheet,不要导错了哦 Sheet sheet = excelData.getSheetAt(sheetNum); int rows = sheet.getLastRowNum();//获取行数 //获取最大列数,这个只是针对我做的导表,因为我导表第一列是列名,列名有多少,下面的数据也是多少 int cols = sheet.getRow(0).getPhysicalNumberOfCells(); List<String> sqlList = new ArrayList<String>(); String sql = "INSERT INTO " + tableName + " VALUES (";//准备好我的sql头部 Row rowContent; String contentTmp; //有同事问我为什么contentTmp不用StringBuilder,其实开始我也是想过的,后来发现我的表最多的就是8个字段,用StringBuilder建立的对象太多,速度上也不如这样直接连接快。 for (int r = 1; r < rows + 1; r++) { rowContent = sheet.getRow(r); contentTmp = ""; for (int c = 0; c < cols; c++) { if(rowContent.getCell(c) == null){//如果某列无值,跳过 continue; } contentTmp += contentTmp.length() > 0 ? "," : "";//对值进行判断,值之间用 “,”隔开 contentTmp += rowContent.getCell(c).toString(); } sqlList.add(sql + contentTmp + " );");//将生成好的sql存起来 } return sqlList; }
这样,我就把表中的数据完全的转成sql语句了,只要传入数据库执行就ok了,当然,现在的这个导表还不完善,明天根据具体的生产环境继续完善它!大家有建议的也提提,根据API写的,不完善的地方肯定有
相关文章推荐
- 使用Python生成Excel格式的图片
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- SQL 导入导出Excel数据的语句
- 文本、Excel、Access数据导入SQL Server2000的方法
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- 把excel表格里的数据导入sql数据库的两种方法
- access dbase excel foxpro 数据库浏览器V3.1版 下载
- SQL SERVER 与ACCESS、EXCEL的数据转换方法分享
- 页面导出为Excel的时间格式的问题
- 在 IE 中调用 javascript 打开 Excel 表
- Select data from an Excel sheet in MSSQL
- C#编程实现Excel文档中搜索文本内容的方法及思路
- Excel导入Sqlserver数据库脚本
- php操作excel文件 基于phpexcel
- ASP与Excel结合生成数据表和Chart图的代码
- 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
- javascript Excel操作知识点
- Excel数据导入Mysql数据库的实现代码
- Asp.Net数据输出到EXCEL表格中