package com.test.order.config;

import com.test.order.domain.HavalDO;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.*; import java.io.*;
import java.util.ArrayList;
import java.util.List; /**
* @program: TestDemo
* @Date: 2018/8/19 12:55
* @Author: Mr.Niu
* @Description:
*/
public class ExcelHelper { public List<HavalDO> excleIn() {
List<HavalDO> list = new ArrayList<HavalDO>();
HavalDO havalDO = null;
try {
InputStream is = new FileInputStream("E:\\bzk.xlsx");
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
// 获取选项卡对象 第0个选项卡 , 因为们这里只有一个选项卡,如果你每个选项卡的内容是一样,可以通过循环取出
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
// 循环取出每行的值
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
havalDO = new HavalDO();
//注意Poi读取的内容是有类型的,处理起来也jxl有所不同
String str = null;
if(xssfRow.getCell(0)!=null){
xssfRow.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
str = xssfRow.getCell(0).getStringCellValue();
}
String [] strs=str.split("-");
String append = null;
for (String s1 :strs){
append+=s1;
}
String strss = append.substring(4,append.length());
havalDO.setOem(strss);
havalDO.setName(xssfRow.getCell(1).getStringCellValue());
havalDO.setPrice(xssfRow.getCell(2).getNumericCellValue());
list.add(havalDO);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
} /**
* 针对Book类进行导出的操作
*
* @param list
*/
public void excleOut(List<HavalDO> list) {
// 创建Excel文档
XSSFWorkbook hwb = new XSSFWorkbook();
// 通过excle对象创建一个选项卡对象
XSSFSheet sheet = hwb.createSheet("sheet1");
HavalDO havalDO = null;
// 循环list创建行
// 新建一行
XSSFRow row = sheet.createRow(0);
// 设置i+1行第0列的数据
row.createCell(0).setCellValue("oem");
// 设置i+1行第1列的数据
row.createCell(1).setCellValue("name");
// 设置i+1行第2列的数据
row.createCell(2).setCellValue("price_4s");
//
for (int i = 1; i < list.size(); i++) {
// 新建一行
row = sheet.createRow(i);
havalDO = list.get(i);
// 设置i+1行第0列的数据
row.createCell(0).setCellValue(havalDO.getOem());
// 设置i+1行第1列的数据
row.createCell(1).setCellValue(havalDO.getName());
// 设置i+1行第2列的数据
row.createCell(2).setCellValue(havalDO.getPrice());
}
OutputStream out = null;
try {
out = new FileOutputStream("E:/bookPoi1.xlsx");
hwb.write(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ExcelHelper eh = new ExcelHelper();
List<HavalDO> lh = eh.excleIn();
Integer i = 0;
for (HavalDO hd : lh) {
i++;
System.out.println("第" + i + "行数据:" + hd.toString());
}
eh.excleOut(lh);
}
}

excel导入到java/导出到excel的更多相关文章

  1. java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)

    1.本工具类继承于  spring-webmvc-4.0.4jar文件心中的一个类   AbstractExcelView 2.代码如下 package com.skjd.util; import j ...

  2. 记一次 Java 导出大批量 Excel 优化

    常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...

  3. winform excel导入--自带office.interop.excel方式

    用npoi方式,遇到一个问题,有的excel用加密软件(盖章,只读等)生成的解析不了,所以换成自带的方式,可以解决. 需要引用系统自带Microsoft.office.interop.excel pu ...

  4. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  5. 用Java导出为excel表格

    导出的是最基础的excel表格,没有任何样式. <input type="button" value="输出到Excel" onclick='output ...

  6. java导出数据Excel总结

    //创建获取到JFileChooser的文件名的JTextField public JTextField getTextField(Container c){ JTextField textField ...

  7. Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框(转载)

    https://blog.csdn.net/evangel_z/article/details/7332535

  8. java动态生成带下拉框的Excel导入模板

    在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...

  9. 项目产品化——Excel数据库模板化导入(java)

    Excel导入可能是代码开发中比較常见的功能,一个项目假设有多个地方须要excel导入数据库.那么开发的工作量也将比較大,项目产品化过程中,将这么一个类似的功能进行封装合并也是必要的.封装好的代码仅仅 ...

随机推荐

  1. MySQL判断一个字段不包含中文

    中文=2个字节,英文或数字=1个字节,因此我们用mysql中两个函数比较字节和字符的长度是否相等来判断是否包含中文 select * from user where CHAR_LENGTH(name) ...

  2. HTML5 总结 (1)

    HTML5新表单 1.Input 新类型:email  url  tel number range date color date week month....... <html> < ...

  3. Java ScheduledExecutorService源码分析

    Java 定时任务可以用Timer + TimerTask来做,或者使用ScheduledExecutorService,使用ScheduledExecutorService有两个好处: 1. 如果任 ...

  4. python数据类型(数字\字符串\列表)

    一.基本数据类型——数字 1.布尔型 bool型只有两个值:True和False 之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False. (1)布尔值是False的各种情况 ...

  5. css border-radius的用法及自适应的椭圆

    我们知道border-radius允许您为元素添加圆角边框! 而border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性. 如果省略 bottom-left, ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  7. 字符串安全处理:CRT安全增强以及安全模板重载

    Secure Template Overloads :http://msdn.microsoft.com/en-us/library/ms175759(v=vs.80).aspx Security E ...

  8. 关于git stash的应用总结

    Step1 新增 git stash save -a "message" // 对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区 类似于 git ...

  9. selenium+python 连接数据库

    import MySQLdb connet=MySQLdb.connect(  host='localhost',  port='8808',  user='amdin',  password='** ...

  10. Template Pattern & Strategy Pattern

    详细见<C++设计模式 23种设计模式.pdf 55页> 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算 ...