1.引入jar包依赖

org.apache.poi

poi

3.9

org.apache.poi

poi-ooxml

3.8

View Code

2.编写代码测试

1 packagetestweb;2

3 importjava.io.File;4 importjava.io.FileNotFoundException;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.OutputStream;8 importjava.util.LinkedList;9 importjava.util.List;10

11 importorg.apache.poi.hssf.usermodel.HSSFCell;12 importorg.apache.poi.hssf.usermodel.HSSFCellStyle;13 importorg.apache.poi.hssf.usermodel.HSSFFont;14 importorg.apache.poi.hssf.usermodel.HSSFRichTextString;15 importorg.apache.poi.hssf.usermodel.HSSFRow;16 importorg.apache.poi.hssf.usermodel.HSSFSheet;17 importorg.apache.poi.hssf.usermodel.HSSFWorkbook;18 importorg.apache.poi.hssf.util.HSSFColor;19

20

21 public classTestExcel {22

23 public static voidmain(String[] args) {24 List l=new LinkedList<>();25 l.add("zs");26 l.add("ls");27 l.add("we");28 l.add("mz");29 String[] headers=new String[]{"tou1","tou2","tou3","tou4"};30 try{31 OutputStream o= new FileOutputStream(new File("C:/Users/yanan/Desktop/yanantest.xls"));32 exportDataExcel("nihao",headers,l,o);33 } catch(FileNotFoundException e) {34 e.printStackTrace();35 }36 }37

38 protected static void exportDataExcel(String title,String[] headers,ListmapList,OutputStream out){39 //声明一个工作簿

40 HSSFWorkbook workbook = newHSSFWorkbook();41 //生成一个表格

42 HSSFSheet sheet =workbook.createSheet(title);43 //设置表格默认列宽度字符

44 sheet.setDefaultColumnWidth(20);45 //生成一个样式,用来设置标题样式

46 HSSFCellStyle style =workbook.createCellStyle();47 //设置这些样式

48 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);49 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);50 style.setBorderBottom(HSSFCellStyle.BORDER_THIN);51 style.setBorderLeft(HSSFCellStyle.BORDER_THIN);52 style.setBorderRight(HSSFCellStyle.BORDER_THIN);53 style.setBorderTop(HSSFCellStyle.BORDER_THIN);54 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);55 //生成一个字体

56 HSSFFont font =workbook.createFont();57 font.setColor(HSSFColor.VIOLET.index);58 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);59 //把字体应用到当前的样式

60 style.setFont(font);61 //生成并设置另一个样式,用于设置内容样式

62 HSSFCellStyle style2 =workbook.createCellStyle();63 style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);64 style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);65 style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);66 style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);67 style2.setBorderRight(HSSFCellStyle.BORDER_THIN);68 style2.setBorderTop(HSSFCellStyle.BORDER_THIN);69 style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);70 style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);71 //生成另一个字体

72 HSSFFont font2 =workbook.createFont();73 font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);74 //把字体应用到当前的样式

75 style2.setFont(font2);76 //产生表格标题行

77 HSSFRow row = sheet.createRow(0);78 for (int i = 0; i < headers.length; i++) {79 HSSFCell cell =row.createCell(i);80 cell.setCellStyle(style);81 HSSFRichTextString text = newHSSFRichTextString(headers[i]);82 cell.setCellValue(text);83 }84 for (int i = 0; i < mapList.size(); i++) {85 row = sheet.createRow(i + 1);86 int j = 0;87 HSSFCell cell = row.createCell(j++);88 cell.setCellValue("循环获得值1");89 cell.setCellStyle(style2);90 row.createCell(j++).setCellValue("循环获得值2");91 row.createCell(j++).setCellValue("循环获得值3");92 row.createCell(j++).setCellValue("循环获得值4");93 }94 try{95 workbook.write(out);96 } catch(IOException e) {97 e.printStackTrace();98 }99 }100 }

View Code

packagetestweb;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.text.DecimalFormat;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.poi.hssf.usermodel.HSSFDateUtil;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.poifs.filesystem.POIFSFileSystem;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;public classTestExcel {public static voidmain(String[] args) {try{

FileInputStream file= new FileInputStream("C:/Users/yanan/Desktop/yanan.xls");

List> yanantest =duquexcel(file);for (Mapitem : yanantest) {

System.out.println(item.get("id") + "," + item.get("name") + "," + item.get("gendar")+","+item.get("time"));

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}

}public static List>duquexcel(InputStream fis) {

List> resultList = new ArrayList>();

HSSFWorkbook wb;try{

wb= new HSSFWorkbook(newPOIFSFileSystem(fis));

Sheet sheet= wb.getSheetAt(0);//日期格式化

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/dd");//数字格式化

DecimalFormat df = new DecimalFormat("##");//循环xls中的每个表格

Row firstRow = sheet.getRow(0);for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) {

Row row=sheet.getRow(i);

Map rowMap = new HashMap();for (int k = 0; k < row.getLastCellNum(); k++) {

Cell cell=row.getCell(k);if (null ==cell) {continue;

}switch(cell.getCellType()) {caseCell.CELL_TYPE_NUMERIC:if(HSSFDateUtil.isCellDateFormatted(cell)){

rowMap.put(firstRow.getCell(k).getStringCellValue(),sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())) );break;

}double value_d =cell.getNumericCellValue();long value_l = (long) cell.getNumericCellValue();//cell.getCellStyle()获取样式

if (value_d ==value_l)

rowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_l));elserowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_d));break;caseCell.CELL_TYPE_STRING:

rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.getStringCellValue());break;caseCell.CELL_TYPE_BLANK:break;default:

rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.toString());break;

}

}//是否空行

if (rowMap.size() > 0) {

resultList.add(rowMap);

}

}

}catch(IOException e) {

e.printStackTrace();

}returnresultList;

}

}

View Code

20200606之前的写法有些啰嗦,来个简单点的@参考博客,@官方文档,@参考地址3,@参考博客4

引入依赖

org.apache.poi

poi

4.1.2

View Code

代码:

//得到Excel工作簿对象

HSSFWorkbook wb=newHSSFWorkbook ();//得到Excel工作表对象

HSSFSheet sheet =wb.createSheet("sheet名称");//创建行

HSSFRow row0 =sheet.createRow(0);//创建单元格

row0.createCell(0).setCellValue("单元格值");

View Code

POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));//得到Excel工作簿对象

HSSFWorkbook wb = newHSSFWorkbook(fs);//得到Excel工作表对象

HSSFSheet sheet = wb.getSheetAt(0);//得到Excel工作表的行

HSSFRow row =sheet.getRow(i);//得到Excel工作表指定行的单元格

HSSFCell cell = row.getCell((short) j);

cellStyle= cell.getCellStyle();//得到单元格样式

View Code

导出excel

//application/octet-stream

response.setCharacterEncoding("UTF-8");

response.setContentType("application/vnd.ms-excel");//生成xls的

response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("文件名称", "UTF-8")+".xls"); response.addHeader("Pargam", "no-cache");

response.addHeader("Cache-Control", "no-cache");

OutputStream os=response.getOutputStream();

wb.write(os);

os.flush();

os.close();

wb.close();

View Code

java.net.URLEncoder.encode("文件名称", "UTF-8")是为了防止文件名中文乱码

仅靠上述代码是文件有可能乱码,即便进行了如下设置(测试发现,这样写也是没起任何作用)

response.setContentType("application/ms-excel;charset=utf-8");

经验证,在controller中添加produces属性即可

@RequestMapping(value = { "/" }, produces = "application/octet-stream")

如果需要生成xlsx格式的代码,需要调整一下。增加poi-ooxml依赖

org.apache.poi

poi

4.1.2

org.apache.poi

poi-ooxml

4.1.2

View Code

更改相关类

@RequestMapping(value = { "/exportAnswerExcel2" }, method = {RequestMethod.GET },produces = "application/octet-stream")

@ResponseBodypublic voidexportAnswerExcel2(HttpServletRequest req,HttpServletResponse res) {//得到Excel工作簿对象

Workbook wb= newXSSFWorkbook();//得到Excel工作表对象

Sheet sheet= wb.createSheet("工作簿名称");//创建行

Row row0 = sheet.createRow(0);//创建单元格并赋值

row0.createCell(0).setCellValue("单元格值");

res.setCharacterEncoding("UTF-8");

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//生成xlsx的

res.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("excel文件名" "UTF-8")+".xlsx");

res.addHeader("Pargam", "no-cache");

res.addHeader("Cache-Control", "no-cache");

OutputStream os=res.getOutputStream();

wb.write(os);

os.flush();

os.close();

wb.close();

}

View Code

区别是

newHSSFWorkbook ();是用来生成xls的,newXSSFWorkbook();是用来生成xlsx的

20200702:生成word,参考博客:

java导出代码:

public static void main(String[] args) throwsIOException {

XWPFDocument document= newXWPFDocument();//添加标题

XWPFParagraph titleParagraph =document.createParagraph();//设置段落居中

titleParagraph.setAlignment(ParagraphAlignment.CENTER);//标题

XWPFRun titleParagraphRun =titleParagraph.createRun();//然后把你查出的数据插入到document中去就可以了

titleParagraphRun.setText("AAA");//设置字体颜色

titleParagraphRun.setColor("000000");//设置字体大小

titleParagraphRun.setFontSize(15);

titleParagraphRun.setFontFamily("宋体");//段落

XWPFParagraph firstParagraph =document.createParagraph();

XWPFRun run=firstParagraph.createRun();

run.setText("BBB");

run.setColor("000000");

run.setFontSize(10);

run.setText("\tCCC☑○⊙");

run.setColor("000000");

run.setFontSize(12);//换行

XWPFParagraph paragraph1 =document.createParagraph();

XWPFRun paragraphRun1=paragraph1.createRun();

paragraphRun1.setText("\r");

paragraph1.setPageBreak(true);//段落

XWPFParagraph firstParagraph2 =document.createParagraph();

XWPFRun run2=firstParagraph2.createRun();

run2.setText("BBB");

run2.setColor("000000");

run2.setFontSize(10);

run2.setText("\tCCC☑");

run2.setColor("000000");

run2.setFontSize(12);

OutputStream os=new FileOutputStream("D:/2.docx");

document.write(os);

os.flush();

os.close();

document.close();

}

View Code

接口返回参考上面execl的改造一下就行了,不赘述了

java excel转word表格_java利用poi生成/读取excel表格、生成word相关推荐

  1. java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...

    首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...

  2. java hssfcell 单元格样式_Java使用poi进行对Excel的操作

    Java使用poi进行对Excel的操作 废话不多说,直接进入正题 先看看目录结构 一.将Excel表中的数据通过List集合打印在就控制台 二.将数据库中的数据导入的Excel表中 上述两条在这里统 ...

  3. java读取excel2010文件_java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 你也可以在 : 下面是本文的项目结构: ...

  4. JAVA怎么才能强制换行_Java利用POI生成Excel强制换行(转载)

    使用POI创建一个简单的 myXls.xls 文件 常用的包为 org.apache.poi.hssf.usermodel.*; 例子: import java.io.*; import org.ap ...

  5. java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : 项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABL ...

  6. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  7. mvc npoi导出excel ajax,ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// /// 批 ...

  8. poi excel mysql_java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 :java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 : ...

  9. 利用openpyxl来读取Excel数据

    利用openpyxl来读取Excel数据 第二篇博客就这样开始啦. 今天我们来讲如何利用openpyxl来读取Excel当中的数据. 首先,来说一下变更的运行环境 添加 openpyxl 插件 关于插 ...

最新文章

  1. 源码级深挖AQS队列同步器
  2. 360浏览器登录_360安全浏览器12下载-360安全浏览器12最新版下载
  3. CV绿色的上限和下限
  4. Windows核心编程 第十七章 -内存映射文件(下)
  5. 计算机ai听课记录,ai ei ui评课稿听课记录
  6. 【项目管理】成本管理
  7. 央视曝光!朋友圈八大骗局正在瞄准你的个人信息 看看你中招没?
  8. word如何设置上标形式_如何在word里设置删除线、添加着重号、上标和下标?戳这里...
  9. dll编译为html,如何为MSHTML v9编译.dll。我目前正在获取“MIDL 2035:预期的常量表达式”的100个错误...
  10. CCF NOI1049 旋转图像
  11. 阿里云服务器使用命令行上发送邮件
  12. java 取系统当前时间_java获取当前系统时间方法
  13. linux fat get entry,操作系统--主引导程序控制权的转移
  14. [转载]Geronimo 叛逆者: 使用 Spring 框架轻松解决数据访问和配置问题
  15. BQB认证CE认证介绍
  16. python控制电脑蜂鸣器
  17. 旧款Mac开启随航(sideCar)功能
  18. 港科夜闻|香港科技大学委任郑光廷教授为副校长(研究与发展)
  19. 关联规则与购物篮分析实战
  20. 分数求和、数9的个数、乘法口诀表

热门文章

  1. tf.placeholder函数的用法
  2. 力扣:12正数转罗马数字(python) 简单粗暴解决方法
  3. PhotoShop常用的功能汇总
  4. dotnetcore Http服务器研究(一)
  5. 《Android游戏开发详解》一3.1 构造方法
  6. 服务器端与客户端TCP连接入门(三:多线程)
  7. 桌面支持--电脑出现临时账户--解决办法
  8. 12月中国域名服务商Top20市场份额解析(图)
  9. Linux的Mysql安装CMakeList.txt找不到
  10. Mysql的存储过程修改表的数据:项目上一个小练习