1,需要依赖的jar包,

<!-- POI(operate excel) start -->

    <!-- the version of the following POI packages must be consistent -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<!-- the dependent jar package to create .xlsx file -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency> <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency> <!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency> <!-- POI end -->

JAR packages that need to be dependent

2,创建Excel(.xls 和 .xlsx的方法)我详细地写了如何创建.xls 文件,创建.xlsx文件就是引用的类不一样,步骤基本上是一样的。

/**
*
*/
package com.nokia.jira.utils; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Color;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; /**
* @author bpan
*
* created 2018年2月27日
*/
public class CreateExcelFile { private static HSSFWorkbook hWorkbook = null;
private static XSSFWorkbook xWorkbook = null; /**
* 判断文件是否存在.
* @param fileDir 文件路径
* @return
*/
public static boolean fileExist(String fileDir){
boolean flag = false;
File file = new File(fileDir);
flag = file.exists();
return flag;
} /**
* 判断文件的sheet是否存在.
* @param fileDir 文件路径
* @param sheetName 表格索引名
* @return boolean
*/
public static boolean XlsSheetExist(String fileDir, String sheetName){ boolean flag = false;
File file = new File(fileDir); if (file.exists()) {
//文件存在,创建workbook
try {
hWorkbook = new HSSFWorkbook(new FileInputStream(file)); HSSFSheet sheet = hWorkbook.getSheet(sheetName);
if (sheet!=null) {
//文件存在,sheet存在 flag = true;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
//文件不存在
flag = false;
}
return flag;
} /**
* 创建新excel(xls).
* @param fileDir excel的路径
* @param sheetNames 要创建的表格索引列表
* @param titleRow excel的第一行即表格头
*/
public static void createExcelXls(String fileDir, List<String> sheetNames, String titleRow[]){ //创建workbook
hWorkbook = new HSSFWorkbook();
//新建文件
FileOutputStream fileOutputStream = null;
HSSFRow row = null;
try { CellStyle cellStyle = hWorkbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.LEFT);
cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM); //添加Worksheet(不添加sheet时生成的xls文件打开时会报错)
for(int i = 0; i<sheetNames.size(); i++){
hWorkbook.createSheet(sheetNames.get(i));
hWorkbook.getSheet(sheetNames.get(i)).createRow(0);
//添加表头, 创建第一行
row = hWorkbook.getSheet(sheetNames.get(i)).createRow(0);
row.setHeight((short)(20*20));
for (short j = 0; j < titleRow.length; j++) { HSSFCell cell = row.createCell(j, CellType.BLANK);
cell.setCellValue(titleRow[j]);
cell.setCellStyle(cellStyle);
}
fileOutputStream = new FileOutputStream(fileDir);
hWorkbook.write(fileOutputStream);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally { if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} /**
* 删除文件.
* @param fileDir 文件路径
* @return 如果文件不存在返回false, 如果文件存在删除成功之后返回true
*/
public static boolean deleteExcel(String fileDir) {
boolean flag = false;
File file = new File(fileDir);
// 判断目录或文件是否存在
if (!file.exists()) { // 不存在返回 false
return flag;
} else {
// 判断是否为文件
if (file.isFile()) { // 为文件时调用删除文件方法
file.delete();
flag = true;
}
}
return flag;
} /**
* 往excel(xls)中写入(已存在的数据无法写入).
* @param fileDir 文件路径
* @param sheetName 表格索引
* @param object
* @throws Exception
*/ public static void writeToExcelXls(String fileDir, String sheetName, List<Map<String,String>> mapList) throws Exception{ //创建workbook
File file = new File(fileDir); try {
hWorkbook = new HSSFWorkbook(new FileInputStream(file)); }catch(FileNotFoundException e){
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //文件流
FileOutputStream fileOutputStream = null;
HSSFSheet sheet = hWorkbook.getSheet(sheetName);
// 获取表格的总行数
// int rowCount = sheet.getLastRowNum() + 1; // 需要加一
//获取表头的列数
int columnCount = sheet.getRow(0).getLastCellNum(); try {
// 获得表头行对象
HSSFRow titleRow = sheet.getRow(0);
//创建单元格显示样式
CellStyle cellStyle = hWorkbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.LEFT);
cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM); if(titleRow!=null){
for(int rowId = 0; rowId < mapList.size(); rowId++){
Map<String,String> map = mapList.get(rowId);
HSSFRow newRow=sheet.createRow(rowId+1);
newRow.setHeight((short)(20*20));//设置行高 基数为20 for (short columnIndex = 0; columnIndex < columnCount; columnIndex++) { //遍历表头
//trim()的方法是删除字符串中首尾的空格
String mapKey = titleRow.getCell(columnIndex).toString().trim();
HSSFCell cell = newRow.createCell(columnIndex);
cell.setCellStyle(cellStyle);
cell.setCellValue(map.get(mapKey)==null ? null : map.get(mapKey).toString());
}
}
} fileOutputStream = new FileOutputStream(fileDir);
hWorkbook.write(fileOutputStream);
} catch (Exception e) {
throw e;
} finally {
try {
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 创建Excel(xlsx)
* @param fileDir 文件名称及地址
* @param sheetName sheet的名称
* @param titleRow 表头
*/
public static void createExcelXlsx(String fileDir, String sheetName, String titleRow[]){ } public static void main(String[] args) { String fileDir = "d:\\workbook.xls"; List<String> sheetName = new ArrayList<>(); sheetName.add("A");
sheetName.add("B");
sheetName.add("C"); System.out.println(sheetName); String[] title = {"id","name","password"};
CreateExcelFile.createExcelXls(fileDir, sheetName, title); List<Map<String,String>> userList1 = new ArrayList<Map<String,String>>();
Map<String,String> map=new HashMap<String,String>();
map.put("id", "111");
map.put("name", "张三");
map.put("password", "111!@#"); Map<String,String> map2=new HashMap<String,String>();
map2.put("id", "222");
map2.put("name", "李四");
map2.put("password", "222!@#"); Map<String,String> map3=new HashMap<String,String>();
map3.put("id", "33");
map3.put("name", "王五");
map3.put("password", "333!@#");
userList1.add(map);
userList1.add(map2);
userList1.add(map3); Map<String, List<Map<String, String>>> users = new HashMap<>(); users.put("A", userList1); List<Map<String,String>> userList2 = new ArrayList<Map<String,String>>();
Map<String,String> map4=new HashMap<String,String>();
map4.put("id", "111");
map4.put("name", "张三");
map4.put("password", "111!@#"); Map<String,String> map5=new HashMap<String,String>();
map5.put("id", "222");
map5.put("name", "李四");
map5.put("password", "222!@#"); Map<String,String> map6=new HashMap<String,String>();
map6.put("id", "33");
map6.put("name", "王五");
map6.put("password", "333!@#");
userList2.add(map4);
userList2.add(map5);
userList2.add(map6); users.put("B", userList2); List<Map<String,String>> userList3 = new ArrayList<Map<String,String>>(); users.put("C", userList3); System.out.println(sheetName.size()); //删除List 集合中特定的元素
for(Iterator<String> sheeNameIterator = sheetName.iterator();sheeNameIterator.hasNext();){ String sheet = sheeNameIterator.next(); if ( users.get(sheet).size() == 0) { sheeNameIterator.remove(); }
} System.out.println(sheetName.size()); createExcelXls(fileDir, sheetName, title);
for (int j = 0; j < sheetName.size(); j++) { try {
writeToExcelXls(fileDir, sheetName.get(j), users.get(sheetName.get(j)));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
}

Create Excel File

3,至于如何设置单元格的样式,大家可以根据自己的兴趣去研究一下。

如何使用Java创建Excel(.xls 和 .xlsx)文件 并写入数据的更多相关文章

  1. C#创建Excel(.xls和.xlsx)文件的三种方法

    生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能. 方法一:利用excellibrary,http://code.google.com/p/excellibrary/ ...

  2. C# 操作 Excel(.xls和.xlsx)文件

    C#创建Excel(.xls和.xlsx)文件的三种方法 .NET 使用NPOI导入导出标准Excel C# 使用NPOI 实现Excel的简单导入导出 NET使用NPOI组件将数据导出Excel-通 ...

  3. python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)

    # python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...

  4. C# EXCEL(.xls和.xlsx)导入到数据库

    C# EXCEL(.xls和.xlsx)导入到数据库  转(http://www.cnblogs.com/bart-cai/articles/2716555.html) 原理:1.判断是否是Excel ...

  5. 使用Java创建Excel,并添加内容

    使用Java创建Excel,并添加内容 一.依赖的Jar包 jxl.jar,使用jxl操作Excel Jxl是一个开源的Java Excel API项目,通过Jxl,Java可以很方便的操作微软的Ex ...

  6. 1、创建一个空白的xls和xlsx文件

    1.创建一个空白的xls文件 Step1:先引入库NPOI.dll文件 Step2: ①:实例化一个workbook,实为在内存表中创建一个xls文件 NPOI.HSSF.UserModel.HSSF ...

  7. Android创建文件夹及文件并写入数据

    package elwin.fei.mobileaudio; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. 《Java知识应用》Java Excel读取(xls、xlsx)和写入

    第一步: 链接: https://pan.baidu.com/s/1emJpl7cpvKZyRMzWccAhJA 提取码: p3a7 复制这段内容后打开百度网盘手机App,操作更方便哦 下载jar包: ...

  9. POI读取Excel(xls、xlsx均可以)——(四)

    maven构建的项目-->pom.xml文件 eclipse提供Dependencies直接添加依赖jar包的工具:直接搜索poi以及poi-ooxml即可,maven会自动依赖需要的jar包: ...

随机推荐

  1. C# 程序集Assembly

    原谅我到目前为止一直肤浅的认为程序集就是dll,这种想法是错误的. 今天就系统的学习记录一下“程序集”的概念.原文链接https://www.cnblogs.com/czx1/p/2014131370 ...

  2. Codeforces 982 B. Bus of Characters(模拟一个栈)

    解题思路: 排序之后模拟一个栈(也可以用真的栈),时间复杂度o(n). 代码: #include <bits/stdc++.h> using namespace std; typedef ...

  3. Java中如何解决线程安全问题

    给出一个问题,如下: 解决方案如下: public class Demo_5 { public static void main(String[] args) { //创建一个窗口 TicketWin ...

  4. RocketMQ学习笔记(9)----RocketMQ的Producer 顺序消息

    1. 顺序消息原理图 2. 什么是顺序消息? 消费消息的顺序要求同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,并且发送给到 ...

  5. CentOS 6.9 CentOS 7.4 自动安装系统 kickstart

    通过ks文件 实现 CentOS 6.9 & 7.4 自动安装系统 环境: VMware 14.0 Pro版 光盘镜像: CentOS-6.9-x86_64-minimal.iso ks文件生 ...

  6. PHP通过DOM操作XML

    PHP XML操作类DOMDocument属性及方法 注意大小写一定不能弄错. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataT ...

  7. [HNOI2015]亚瑟王(期望+DP)

    题解 利用期望的线性性,可以把问题转化为求每一个卡牌造成期望的期望值. 然后我们就需要知道每一个卡牌发动技能的概率. 因为当某一张卡牌发动技能时这一轮会结束,这就很难直接计算了. 我们使用DP 设dp ...

  8. luogu P1622 释放囚犯

    题目描述 Caima王国中有一个奇怪的监狱,这个监狱一共有P个牢房,这些牢房一字排开,第i个紧挨着第i+1个(最后一个除外).现在正好牢房是满的. 上级下发了一个释放名单,要求每天释放名单上的一个人. ...

  9. 解决wps的ppt演示不能打开的问题libbz2.so.1.0

      安装 wps-office-10.1.0.5707-1.a21.x86_64 无法打开ppt 其他正常

  10. 【BZOJ 1177】 [Apio2009]Oil

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如上图. 显然如果三个正方形.只可能是上面的情况. 则可以处理一下左上角.右上角.左下角.右下角的前缀最大正方形(dp),以及以某一 ...