上篇文章学习了Java读取Excel文件,这篇文章接着来简单总结Java写入Excel,话不多说,看代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.lmb.excel.bean.Employee;/*** 写入Excel文件的方法(写表头,写数据)* @author lmb* @date 2017-3-16**/
public class WriteExcel {/*** 将List集合数据写入excel(单个sheet)* @param filePath 文件路径* @param excelTitle 文件表头* @param employeeList 要写入的数据集合* @param sheetName sheet名称*/public static void writeEmployeeListToExcel(String filePath,String[] excelTitle,List<Employee> employeeList,String sheetName){System.out.println("开始写入文件>>>>>>>>>>>>");Workbook workbook = null;if (filePath.toLowerCase().endsWith("xls")) {//2003workbook = new XSSFWorkbook();}else if(filePath.toLowerCase().endsWith("xlsx")){//2007workbook = new HSSFWorkbook();}else{
//          logger.debug("invalid file name,should be xls or xlsx");}//create sheetSheet sheet = workbook.createSheet(sheetName);int rowIndex = 0;//标识位,用于标识sheet的行号//遍历数据集,将其写入excel中try{//写表头数据Row titleRow = sheet.createRow(rowIndex);for (int i = 0; i < excelTitle.length; i++) {//创建表头单元格,填值titleRow.createCell(i).setCellValue(excelTitle[i]);}System.out.println("表头写入完成>>>>>>>>");rowIndex++;//循环写入主表数据for (Iterator<Employee> employeeIter = employeeList.iterator();employeeIter.hasNext();) {Employee employee = employeeIter.next();//create sheet rowRow row = sheet.createRow(rowIndex);//create sheet coluum(单元格)Cell cell0 = row.createCell(0);cell0.setCellValue(employee.getName());Cell cell1 = row.createCell(1);cell1.setCellValue(employee.getGender());Cell cell2 = row.createCell(2);cell2.setCellValue(employee.getAge());Cell cell3 = row.createCell(3);cell3.setCellValue(employee.getDepartment());Cell cell4 = row.createCell(4);cell4.setCellValue(employee.getSalary());Cell cell5 = row.createCell(5);cell5.setCellValue(employee.getDate());rowIndex++;}System.out.println("主表数据写入完成>>>>>>>>");FileOutputStream fos = new FileOutputStream(filePath);workbook.write(fos);fos.close();System.out.println(filePath + "写入文件成功>>>>>>>>>>>");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/** * 读取Excel2003的主表数据 (单个sheet)* @param filePath * @return */  private static List<Employee> readFromXLS2003(String filePath) {  File excelFile = null;// Excel文件对象  InputStream is = null;// 输入流对象  String cellStr = null;// 单元格,最终按字符串处理  List<Employee> employeeList = new ArrayList<Employee>();// 返回封装数据的List  Employee employee = null;// 每一个雇员信息对象  try {  excelFile = new File(filePath);  is = new FileInputStream(excelFile);// 获取文件输入流  HSSFWorkbook workbook2003 = new HSSFWorkbook(is);// 创建Excel2003文件对象  HSSFSheet sheet = workbook2003.getSheetAt(0);// 取出第一个工作表,索引是0  // 开始循环遍历行,表头不处理,从1开始  for (int i = 1; i <= sheet.getLastRowNum(); i++) {  HSSFRow row = sheet.getRow(i);// 获取行对象 employee = new Employee();// 实例化Student对象  if (row == null) {// 如果为空,不处理  continue;  }  // 循环遍历单元格  for (int j = 0; j < row.getLastCellNum(); j++) {  HSSFCell cell = row.getCell(j);// 获取单元格对象  if (cell == null) {// 单元格为空设置cellStr为空串  cellStr = "";  } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理  cellStr = String.valueOf(cell.getBooleanCellValue());  } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理  cellStr = cell.getNumericCellValue() + "";} else {// 其余按照字符串处理  cellStr = cell.getStringCellValue();  }  // 下面按照数据出现位置封装到bean中  if (j == 0) {  employee.setName(cellStr);  } else if (j == 1) {  employee.setGender(cellStr);  } else if (j == 2) {  employee.setAge(new Double(cellStr).intValue());  } else if (j == 3) {  employee.setDepartment(cellStr);  } else if(j == 4){  employee.setSalary(new Double(cellStr).intValue());  }else {  employee.setDate(cellStr);  }  }  employeeList.add(employee);// 数据装入List  }  } catch (IOException e) {  e.printStackTrace();  } finally {// 关闭文件流  if (is != null) {  try {  is.close();  } catch (IOException e) {  e.printStackTrace();  }  }  }  return employeeList;  }  /*** 读取Excel2003的表头* @param filePath 需要读取的文件路径* @return*/public static String[] readHeaderFromXLS2003(String filePath){String[] excelTitle = null;FileInputStream is = null;try{File excelFile = new File(filePath);is = new FileInputStream(excelFile);HSSFWorkbook workbook2003 = new HSSFWorkbook(is);//循环读取工作表for (int i = 0; i < workbook2003.getNumberOfSheets(); i++) {HSSFSheet hssfSheet = workbook2003.getSheetAt(i);            //*************获取表头是start*************HSSFRow sheetRow = hssfSheet.getRow(i);  excelTitle = new String[sheetRow.getLastCellNum()];for (int k = 0; k < sheetRow.getLastCellNum(); k++) {HSSFCell hssfCell = sheetRow.getCell(k);excelTitle[k] = hssfCell.getStringCellValue();
//                      System.out.println(excelTitle[k] + " ");}//*************获取表头end*************}}catch (IOException e) {  e.printStackTrace();  } finally {// 关闭文件流  if (is != null) {  try {  is.close();  } catch (IOException e) {  e.printStackTrace();  }  }  }       return excelTitle;}//主函数public static void main(String[] args) {List<Employee> employeeList = readFromXLS2003("D:\\employee.xls");String[] excelTitle = readHeaderFromXLS2003("D:\\employee.xls");writeEmployeeListToExcel("D:\\writeemployee.xls",excelTitle,employeeList,"employee");}
}

程序运行效果:


【Apache POI】Java写入Excel文件相关推荐

  1. java写入excel文件poi

    java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils;import java.io.File; import jav ...

  2. java写入excel文件,并填充空单元格颜色

    java写excel文件,并填充空单元格颜色 public static void main(String[] args) throws IOException {HSSFWorkbook workb ...

  3. java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...

    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...

  4. Java写入Excel文件

    首先下载jxl.jar包,下载地址:http://download.csdn.net/detail/prstaxy/4469935 然后在工程文件上右键选Built Path-Configure Bu ...

  5. 获取excel名称java_使用Apache POI获取大型Excel文件的Excel工作表名称

    小编典典 为了显示@Gagravarr的评论可能意味着什么: 该XSSFReader包含方法XSSFReader.getSheetsData其中"返回一个迭代器,这将让你在把所有的不同的表, ...

  6. java实现Excel文件解析---apache POI以及把汉字转化为拼音

    java实现Excel文件解析----apache  POI以及把汉字转化为拼音 1.POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供给Java程序对Microso ...

  7. java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况

    首先需要导入包 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NP ...

  8. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  9. Java工具总结:将数据内容写入excel文件

    Java工具总结:将数据内容写入excel文件 文章目录 Java工具总结:将数据内容写入excel文件 一.背景 二.功能描述 三.使用该工具类:Java代码演示 四.分析代码 4.1 几个重要的J ...

最新文章

  1. Xamarin iOS教程之警告视图
  2. 【c++内存分布系列】单独一个类
  3. 关于String字符串的常用操作。(持续更新中)
  4. SQL老司机,在SQL中计算 array map json数据
  5. BC:带你温习并解读《中国区块链技术和应用发展白皮书》—概述
  6. 单链表的增删查改等基本操作C++实现
  7. 关于codeblocks插件(持续更新)
  8. Python3.7模块之re
  9. C++远航之封装篇——数据的封装
  10. 使用Istio进行多集群部署管理:单控制平面 Gateway 连接拓扑
  11. matlab动画_弹簧振子振动的matlab动画演示
  12. Docker配置国内镜像加速
  13. 如何在Mac上合并日历
  14. 深度学习笔记_搭建一个简单网络(完整版)_手写数字识别MNIST
  15. 树莓派搭建VSFTP记录---自用简记
  16. 【eNSP 华为模拟器】了解一下交换机原理和基础命令
  17. Windows快捷键
  18. 贪心——Berserk And Fireball
  19. 蓝牙协议之配对和绑定学习笔记
  20. Android从当前APP跳转到其他应用

热门文章

  1. 无法启动 MS DTC 事务管理器。LogInit 返回错误 0x2. 怎么办?
  2. 【性能优化】 之 并行执行
  3. 【Redis】13.Redis服务器配置redis.conf
  4. 10-对象实例化、内存布局与访问定位
  5. ViewGroup.LayoutParams
  6. Handler 基本用法--线程间传值
  7. 深度学习端上部署工具
  8. MonkeyRunner 实现自动点击截屏后与本地图库进行对比输出
  9. 在xcode上把你的app多语言国际化(NSLocalizedString)
  10. 贤惠限量,请妥善使用