java excel转word表格_java利用poi生成/读取excel表格、生成word
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相关推荐
- java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...
首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...
- java hssfcell 单元格样式_Java使用poi进行对Excel的操作
Java使用poi进行对Excel的操作 废话不多说,直接进入正题 先看看目录结构 一.将Excel表中的数据通过List集合打印在就控制台 二.将数据库中的数据导入的Excel表中 上述两条在这里统 ...
- java读取excel2010文件_java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 你也可以在 : 下面是本文的项目结构: ...
- JAVA怎么才能强制换行_Java利用POI生成Excel强制换行(转载)
使用POI创建一个简单的 myXls.xls 文件 常用的包为 org.apache.poi.hssf.usermodel.*; 例子: import java.io.*; import org.ap ...
- java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : 项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABL ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- mvc npoi导出excel ajax,ASP.Net MVC利用NPOI导入导出Excel
因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// /// 批 ...
- poi excel mysql_java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 :java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 : ...
- 利用openpyxl来读取Excel数据
利用openpyxl来读取Excel数据 第二篇博客就这样开始啦. 今天我们来讲如何利用openpyxl来读取Excel当中的数据. 首先,来说一下变更的运行环境 添加 openpyxl 插件 关于插 ...
最新文章
- 源码级深挖AQS队列同步器
- 360浏览器登录_360安全浏览器12下载-360安全浏览器12最新版下载
- CV绿色的上限和下限
- Windows核心编程 第十七章 -内存映射文件(下)
- 计算机ai听课记录,ai ei ui评课稿听课记录
- 【项目管理】成本管理
- 央视曝光!朋友圈八大骗局正在瞄准你的个人信息 看看你中招没?
- word如何设置上标形式_如何在word里设置删除线、添加着重号、上标和下标?戳这里...
- dll编译为html,如何为MSHTML v9编译.dll。我目前正在获取“MIDL 2035:预期的常量表达式”的100个错误...
- CCF NOI1049 旋转图像
- 阿里云服务器使用命令行上发送邮件
- java 取系统当前时间_java获取当前系统时间方法
- linux fat get entry,操作系统--主引导程序控制权的转移
- [转载]Geronimo 叛逆者: 使用 Spring 框架轻松解决数据访问和配置问题
- BQB认证CE认证介绍
- python控制电脑蜂鸣器
- 旧款Mac开启随航(sideCar)功能
- 港科夜闻|香港科技大学委任郑光廷教授为副校长(研究与发展)
- 关联规则与购物篮分析实战
- 分数求和、数9的个数、乘法口诀表