利用poi操作excel 备忘如下
写操作:
FileOutputStream fos = new FileOutputStream("d:/stock.xls");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
wb.setSheetName(0, "stock");
HSSFCell cell;
int i = 0;
HSSFCellStyle numberCellStyle = wb.createCellStyle();
HSSFDataFormat numberFormat = wb.createDataFormat();
numberCellStyle.setDataFormat(numberFormat.getFormat("0.00"));
HSSFCellStyle profitCellStyle = wb.createCellStyle();
HSSFDataFormat profitFormat = wb.createDataFormat();
profitCellStyle.setDataFormat(profitFormat.getFormat("0.00%"));
for (Iterator it = data1.iterator(); it.hasNext();) {
Map m = (Map) it.next();
HSSFRow row = s.createRow(i++);
String name = (String) m.get("NAME");
cell = row.createCell(0);
cell.setCellValue(name);
String code = (String) m.get("CODE");
cell = row.createCell(1);
cell.setCellValue(code);
BigDecimal importPrice = (BigDecimal) m.get("IMPORT_PRICE");
cell = row.createCell(2);
cell.setCellStyle(numberCellStyle);
cell.setCellValue(importPrice.doubleValue());
BigDecimal closePrice = (BigDecimal) m.get("CLOSE_PRICE");
cell = row.createCell(3);
cell.setCellStyle(numberCellStyle);
cell.setCellValue(closePrice.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
String profit = (String) m.get("PROFIT");
cell = row.createCell(4);
cell.setCellValue(profit);
cell = row.createCell(5);
cell.setCellFormula(getProfitFomulaByRowNum(row.getRowNum()));
cell.setCellStyle(profitCellStyle);
}
wb.write(fos);
fos.close();
读操作:
FileInputStream fis = new FileInputStream(
"D:/eclipse/workspaces/handworkspace/xyzq/xyzq-data/data/stockpool.xls"); // 根据excel文件路径创建文件流
POIFSFileSystem fs = new POIFSFileSystem(fis); // 利用poi读取excel文件流
HSSFWorkbook wb = new HSSFWorkbook(fs); // 读取excel工作簿
HSSFSheet sheet = wb.getSheetAt(0); // 读取excel的sheet,0表示读取第一个、1表示第二个.....
Map cateMap = cateMap();
// 获取sheet中总共有多少行数据sheet.getPhysicalNumberOfRows()
// log.info("sheet.getPhysicalNumberOfRows()="+sheet.getPhysicalNumberOfRows());
for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
HSSFRow row = sheet.getRow(i); // 取出sheet中的某一行数据
if (row != null) {
StringBuffer sb = new StringBuffer();
sb.append(row.getCell(0).getStringCellValue()).append(" ")
.append(row.getCell(1).getStringCellValue())
.append(" ").append(
row.getCell(2).getDateCellValue()).append(
" ").append(
row.getCell(3).getNumericCellValue())
.append(" ").append(
row.getCell(4).getStringCellValue())
.append(" ").append(
row.getCell(5).getStringCellValue())
.append(" ");
System.out.println(sb);
Map param = new HashMap();
param.put("CODE", row.getCell(0).getStringCellValue());
param.put("NAME", row.getCell(1).getStringCellValue());
param.put("IMPORT_TIME", row.getCell(2).getDateCellValue());
param.put("IMPORT_PRICE", new BigDecimal(row.getCell(3)
.getNumericCellValue()).setScale(2,
BigDecimal.ROUND_HALF_UP));
param.put("DESCRIPTION", row.getCell(5)
.getStringCellValue());
param.put("RISK_PROMPT", row.getCell(6)
.getStringCellValue());
param.put("POOL", new Long(STOCK_POOL_TYPE_0));
param.put("CATE_ID", cateMap.get(row.getCell(4)
.getStringCellValue()));
this.insert("TG_STOCK_POOL", param);
}
}
} catch (Exception e) {
e.printStackTrace();
}
分享到:
相关推荐
POI使用excel模板循环输出行到文件并导出的一个小例子
详细的介绍POI的使用方法,你懂的…… 列的宽和高的设置,合并单元格,添加区域等等。
poi使用的详细说明
java_POI使用设置教程
一个使用Apache的poi使用word模板循环输出表格行并导出的例子
poi 使用说明和例子文档 word和pdf
java基于poi使用excel模板导出
POI_3.8_API.CHM; POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf; poi-bin-3.9-20121203.zip; poi使用总结.txt; POI整理.doc;
poi使用方法及介绍,是个很不错的导入导出excl很不错
Apache的开源jar包poi-3.9,通过该包可以用java代码来实现对Excel的操作,功能非常强大。
通过Excel模版处理复杂表头(合并行、和并列)的excel进行导出,代码内部有完整的工程可以直接进行倒入运行
个人整理的POI解析EXCEL常用API详解 里面包括我在使用过程中的一些心得
poi使用方法 poi使用方法 poi使用方法
博文链接:https://storyxsj.iteye.com/blog/115610
poi简明教程
poi excel通过模板导出excel表格 且带有公式 导出的excel表格里面的公式均可计算 有简单的公式也有难的公司 在此例子里面都可以跟着excel一起到处并可计算
。。。
对于写入较低版本的Excel2003,POI使用了用户模式来处理,就是将整个文档加载进内存,如果数据量大的话就会出现内存溢出的问题,Excel2003Writer就是使用这种方式。据笔者的测试,如果数据量大于3万条,每条8列的话...
工具:jdk1.8+maven 知识点:反射+自定义注解+poi使用+使用了一点guava编程(膜拜下谷歌大哥) 功能:可以解析任意List对象-excel表格;解析任意的Excel的表格-》list对象 在 poi包里面
poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程poi教程