javaexcelmaven的简单介绍

今天给各位分享javaexcelmaven的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、如何在excel中配置maven2、java将数据导出excel计算其文件大小3、java导出数据到excel的几种方法的比较4、如何用java来将excel文件转化为html文件问题5、java 怎么从excel文件导入到oracle数据库中

如何在excel中配置maven

首先,导入jar包,会有几个,实践证明,只需要在pom.xml文件里的 dependencies /dependencies(即依赖包)写上如图所示的配置,就可以导入所有需要的jar包,效率很高。

2 /3

在命令行窗口,进入到该工程的项目文件里,如本文所用,工程名为learning,路径如下:D:\java project\learning,进入该目录后,输入mvn install,回车,那么maven会自动下载相关的jar包,安装完成后会看到BUILD SUCCESS,如图所示。同时可以在maven的本地库中查看到poi文件夹了。

3 /3

到此为止,已经可以在程序中使用poi了。在所需要用的java类里面,引入import org.apache.poi.hssf.usermodel.*;import org.apache.poi.hssf.util.HSSFColor;就可以对Excel表格进行处理了。例如创建表格,设置样式,如图所示。具体对Excel表格的操作,网上很多资料,就不再赘述了。

javaexcelmaven的简单介绍

java将数据导出excel计算其文件大小

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区

推荐频道

活动

招聘

专题

打开CSDN APP

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

打开APP

大数据导出excel大小限制_java 导出Excel 大数据量,自己经验总结! 原创

2020-12-19 01:58:16

weixin_39655377

码龄5年

关注

分析导出实现代码,XLSX支持:

/*** 生成XLSX,2007版本的excel,每个sheet无6.5W的行数限制,但是到了一定数量,可能内存溢出,

* 次方法适合在预计10W以下的数据导出时使用,本机测试,14W可以导出。列数量在8列左右

*

*@paramfileOut

* 输出流

*@paramsheetMap

* 要设置的数据信息

*@throwsSQLException*/

public static voidcreateXSLXByResultSet(OutputStream fileOut, WriteXLSBean… beans)throwsSQLException {try{//重点 Workbook

Workbook wb = newXSSFWorkbook();for (int i = 0, len = beans.length; i len; i++) {

WriteXLSBean xlsBean=beans[i];

Sheet sheet=wb.createSheet(xlsBean.getSheetName());

ResultSet rs=xlsBean.getRs();

ResultSetMetaData rsmd=rs.getMetaData();

TypeHandlerRegistry tr=BeanContext.tr;

Map th =xlsBean.getTh();int index = 0;while(rs.next()) {long t1 =System.currentTimeMillis();

org.apache.poi.ss.usermodel.Row row=sheet

.createRow(index);for (int j = 0, numberOfColumns = rsmd.getColumnCount(); j numberOfColumns; j++) {

String key= rsmd.getColumnLabel(j + 1).toLowerCase();if(th.containsKey(key)) {

TypeHandler type =tr.getTypeHandler(JdbcType

.forCode(rsmd.getColumnType(j+ 1)));

Object obj=type.getResult(rs, key);

row.createCell(j).setCellValue(obj== null ? “”: obj.toString());

}

}

System.out.println(index+ ” :”

+ (System.currentTimeMillis() -t1));

index++;

}

}//重点 Workbook

wb.write(fileOut);

}catch(IOException e) {

e.printStackTrace();throw new ServiceRunTimeException(“生产xls文档错误”, e);

}finally{

}

}

在上面 标注了重点的两处,分别是:

1.构建一个Excel对象

2.将该对象写入一个OutPutStream

而在构建过程中,没有地方写入OutPutSteam ,也就是说必须在内存中构建整个 Excel,才能进行写出操作,在大数据量情况下,这样将导致所有数据加载到内存中,而不能输出,导致最后 内存溢出。

根据运行环境不用,可能内存溢出的 情况不同

根据情况,如果数据量达到10W以上,建议使用

1、多个Excel,每个Excel一个Sheet,因为所有Sheet都是Workbook的组成部分。如果不分多个Excel,即使分Sheet也没用,

2、每个Excel中列数适中,比如: 5W行每个Excel档,实现分多次导出和分页查询原理一样

3、对多个Excel导出到一个临时目录,并通过程序压缩,然后提供给客户下载

2003版通过数据库结果存到List中,然后进行生产:Table 就是List Row 是Map

/*** 生产xls,2003版本的excel,每个sheet有6.5W的行数限制

*

*@paramfileOut

* 输出流,未关闭

*@paramsheetMap

* 要导出的数据信息*/

public static void createXSLByMap(OutputStream fileOut, MapsheetMap) {try{

HSSFWorkbook wb= newHSSFWorkbook();

Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator

.hasNext();) {

String SheetKey=iterator.next();

Sheet sheet=wb.createSheet(SheetKey);

List sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i len; i++) {

Map cellMap =sheetRows.get(i);

Set cellSet =cellMap.keySet();

org.apache.poi.ss.usermodel.Row row=sheet.createRow(i);int j = 0;for (Iterator iterCell =cellSet.iterator(); iterCell

.hasNext(); j++) {

String cellKey=iterCell.next();

Object obj=cellMap.get(cellKey);

row.createCell(j).setCellValue(obj== null ? “”: obj.toString());

}

}

}

wb.write(fileOut);

}catch(IOException e) {

e.printStackTrace();throw new ServiceRunTimeException(“生产xls文档错误”, e);

}finally{

}

}

新版本 POI+office 2007版本excel可以导出几十万条而不内存溢出,详细见:

导出大量数据到 excel 的 xlsx文件

static String src=”abcdefafslfelgtryjukjhgfdadertjDSFGHJKJGHFERTUIOabcdefafslfelgtryjukjhgfdadertjDSFGHJKdertjDSFGHJKJGHFERTUIOabcdefafslfelgtryjukjhgfdadertjDSFGHJKJGHFERTUIO”;

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

SXSSFWorkbook wb = new SXSSFWorkbook(100); //这里100是在内存中的数量,如果大于此数量时,会写到硬盘,以避免在内存导致内存溢出

Sheet sh =wb.createSheet();

for (int rownum = 0; rownum 1000000; rownum++) {

Row row =sh.createRow(rownum);

for (int cellnum = 0; cellnum 10; cellnum++) {

Cell cell =row.createCell(cellnum);

String address = newCellReference(cell).formatAsString();

cell.setCellValue(address+src.substring(rownum%10*10+1, (rownum%10+1)*10));

}

}

File file = new File(“F:/aa.xlsx”);

file.createNewFile();

FileOutputStream out = newFileOutputStream(file);

wb.write(out);

out.close();

}

内存使用情况:

根据以上前辈经验,自己在结果自身需求考虑,整合出一个工具。解决了excle表.xls格式行数65535行的限制。我实现的形式是导出一张表,里面有多页

(我是已65000为一页)

这里是用反射来使用所有传入进行的实体的属性的值。这里只针对String和基本数据类型。如有自己定义的类型需要自己加上。

packagecom.tommy.fundation.util;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;public classRelectUtil {public static List reflectEntity(T model,Class cals) throwsNoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchFieldException{

List list = new ArrayList();

Field[] field= model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组

for(int j=0 ; j

String nam = field[j].getName(); //获取属性的名字

String name =nam;

name= name.substring(0,1).toUpperCase()+name.substring(1);

String type= field[j].getGenericType().toString(); //获取属性的类型

if(type.equals(“class java.lang.String”)){ //如果type是类类型,则前面包含”class “,后面跟类名

Method m = model.getClass().getMethod(“get”+name);

String value= (String) m.invoke(model); //调用getter方法获取属性值

if(value != null){

list.add(value);

}else{

list.add(“”);

}

}if(type.equals(“class java.lang.Integer”)){

Method m= model.getClass().getMethod(“get”+name);

Integer value=(Integer) m.invoke(model);if(value != null){

list.add(value);

}else{

list.add(“”);

}

}if(type.equals(“class java.lang.Short”)){

Method m= model.getClass().getMethod(“get”+name);

Short value=(Short) m.invoke(model);if(value != null){

list.add(value);

}else{

list.add(“”);

}

}if(type.equals(“class java.lang.Double”)){

Method m= model.getClass().getMethod(“get”+name);

Double value=(Double) m.invoke(model);if(value != null){

list.add(value);

}else{

list.add(“”);

}

}if(type.equals(“class java.lang.Boolean”)){

Method m= model.getClass().getMethod(“get”+name);

Boolean value=(Boolean) m.invoke(model);if(value != null){

list.add(value);

}else{

list.add(“”);

}

}if(type.equals(“class java.util.Date”)){

Method m= model.getClass().getMethod(“get”+name);

Date value=(Date) m.invoke(model);if(value != null){

list.add(value);

}else{

list.add(“”);

}

}

}returnlist;

}

}

下面将是重点实现导出excel表

packagecom.tommy.fundation.util;importjava.io.OutputStream;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.record.formula.functions.T;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

@SuppressWarnings(“hiding”)public class ExportExcel{/*** 导出多张excel表,解决xls格式行数65535的限制

*@authorOnlyOne

*@paramresponse

*@paramlist 需要处理的list数据集合

*@throwsException*/@SuppressWarnings(“deprecation”)public void doExcel(HttpServletResponse response,List list,String fileName) throwsException {

OutputStream os= response.getOutputStream();//获取输出流

response.reset();//设置下载头部信息。Content-disposition为属性名。attachment表示以附件方式下载,如果要在页面中打开,则改为inline。filename为文件名

response.setHeader(“Content-disposition”, “attachment; filename=excell.xls”);

response.setContentType(“application/msexcel”);

Map sheetMap =daData(list);

HSSFWorkbook wb= newHSSFWorkbook();

Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator.hasNext();) {

Integer SheetKey=iterator.next();

HSSFSheet sheet= wb.createSheet((fileName+SheetKey).toString());

List sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i len; i++) {

T en=(T) sheetRows.get(i);

List dataList = RelectUtil.reflectEntity(en, en.getClass());

HSSFRow row=sheet.createRow(i);

row.createCell(0).setCellValue(String.valueOf(i));for(int m=0; m

row.createCell(m+1).setCellValue(dataList.get(m).toString());

}

}

}

wb.write(os);

}/*** 此方法将数据集合按65000个进行分割成多个子集合

*@authorOnlyOne

*@paramlist 需要处理的list数据集合

*@return

*/

public Map daData(Listlist){int count = list.size()/65000;int yu = list.size() % 65000;

Map map = new HashMap();for (int i = 0; i = count; i++) {

List subList = new ArrayList();if (i ==count) {

subList= list.subList(i * 65000, 65000 * i +yu);

}else{

subList= list.subList(i * 65000, 65000 * (i + 1)-1);

}

map.put(i, subList);

}returnmap;

}

}

在Java中调用的方式

@RequestMapping(value = “/doExcel”, method =RequestMethod.GET)public void doExcel(HttpServletResponse response,HttpServletRequest request) throwsException {

List list =enrolltgService.findAll();new ExportExcel().doExcel(response, list, “黑白淡奶”);

}

大功搞成,以后再也不会为了数据量太大而导不出来烦恼了!!!

需要的包 poi-3.2-FINAL-20081019.jar

相关资源:poi读取大文件Excel,使用xml格式解析,速度实测50mb文件13s,可指定…

打开CSDN,阅读体验更佳

POI多线程分表导出百万级大数据量EXCEL导出_Zhuo_chao的博客-CSDN博 …

由上面可知 Excel 2003及以下是无法实现单sheet百万级的数据。 ApachePOI 简介 Apache POI 是用Java编写的免费开源的跨平台的 JavaAPI,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功…

Java 使用POI导出数据到 excel,单 sheet 和多 sheet__修铁路的的博客…

单sheet 和多 sheet,用到的jar都是一样的,无非就是多创建一个 sheet的问题,以下是需要用到的jar包,在对应模块的pom.xml 中引入即可 dependency groupIdorg.apache.poi/groupId …

java导出excel超出65533行

业务背景: 列表导出,数据导出超过65533行 解决方案: 1、超出65533行,直接系统提示:本系统支持导出的最大条数为65533行 2、导出模版改为.xlsx,POI导出时用XSSFWorkbook,把所有数据都拿到内存里,可以导出超过65533行,但是上线之后,发现会内存溢出 3、导出模版改为.xlsx,POI导出时用SXSSFWorkbook,每次往内存里放一定的数据,导完之后,刷新,再次…

继续访问

Java的poi导出的excel不能超过256列的解决办法

Java的poi导出的excel不能超过256列的解决办法背景1、现在的情况2、解决办法 背景 1、现在的情况 excel文件名以.xls结尾 这个构造函数中默认采取这个类型 this.type = ExcelType.HSSF; public ExportParams(String title, String sheetName) { this.color = HSSFColorPredefined.WHITE.getIndex(); this.headerColor = HSSFC

继续访问

使用ApachePOI导出excel(多个sheet页)_我是橘子京的博客

2、设置导出excel路径 //导出的文件路径 String filePath=”D:\\excel.xls”; 1 2 3、创建excel文件 //创建Excel文件(Workbook) HSSFWorkbook workbook = new HSSFWorkbook(); 1 2 4、设置单元格样式 //设置单元格样式 HSSFCel…

POI3.8 导出大数据excel(50万左右)_咖啡加糖_的博客_poi支持最…

import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.streaming.SXSSFWorkbook; …

最新发布 【JAVA问题解决方案】01.EasyExcel导出数据超过Excel单表上限解决方案

1.了解一下Excel单表最多存储多少行数据(可以存储1048576条数据,1024的平方,2的20次方)。本文是介绍EasyExcel导出数据超过Excel单表上限解决方案。2.知道最多多少行就能以这个数为条件,如果超过则进行分表。3.分表的同时需要对数据进行分割,才能不超过最大限度。实体类(非常简单,为了导出表更快)

继续访问

java实现流输出形式导出数据(使用EasyExcel)并打包为zip包

java实现流输出形式文件下载并打包为zip包 pom.xml文件导入easyexcel dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version2.0.5/version /d…

继续访问

…到excel文件(xls格式),附实验结果(单张sheet最多可有65536行) Fi…

使用POI导出MySQL数据库数据到excel文件(xls格式) 注意事项:单张sheet最多存储65536行!否则报错! Caused by: java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535) !

使用Apache POI导出百万条EXCEL数据_橙乐果果的博客

工作中,有这么一个需求:每天凌晨00:05分定时从数据库导出大于三个月的订单流水信息,保存为excel文件。 Just do it. 1.引入POM依赖 !– excel — !– — …

Linux下读写文件操作

Linux下读写文件操作 #includestdio.h typedef struct Student { int no; char name[10]; int score; }Student; int main(int args,char *argv[]) { //打开文件 FILE *fp=fopen(“test.txt”,”w”); if(fp=NULL) { perror(“fopen”); …

继续访问

Java导出超大Excel文件,防止内存溢出

Java导出超大Excel文件,防止内存溢出1.采用Poi中的SXSSFWorkbook2.maven中引入Poi3.测试过程4.单元测试Java代码5.结论 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Poi中的SXSSFWorkbook 在实现excel导出时,在数据量过大的情况下,总是容易发生内存溢出的情况。可以使用POI提供的 SXSSFWorkbook 类来避免内存溢

继续访问

Apache Poi导出Excel多Sheet页详解!_奥鹏马的博客

apache poi是目前比较常用导出excel的方式。最近想要实现一个导出excel多sheet页的功能。 网上查了一下大多都是针对某个具体对象的导出,不能实现任意对象的导出。现在将自己研究出的代码贴出来,供大家参考。 //注意:此处实现的关键是将…

Apache poi 导出多sheet的excel表格_朋态圈的博客

导出多sheet的excel */public class ApachePoi { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub exportExcel();} @SuppressWarnings(“resource”) public static String exportExcel…

java导出excel限制大小_解决java poi导出excel2003不能超过65536行的问题

/*** 如果达到50000条数据则重新创建工作表的逻辑*/@Overridepublic void exportExcel(ListformList, ServletOutputStream outputStream){try{//工作表名后面的数字,如表1,表2int i = 0;//记录总行数int rownum = 0;//记录每个sheet的行数int tempnum = 0;//分页条…

继续访问

热门推荐 java poi 导出Excel 超大数据量解决方案

继续访问

poi导出excel,实现一个excel中多个sheet(可解决poi导出限制65536的问题…

本文章的excel实现导出多个sheet是在上一篇poi导出的基础上实现的,这么久了,对于上一篇文章的poi也作出过一些优化。 这里我只贴修改了的方法的代码,其余的和上一篇文章的一样。 /** * 导出excel.在一个页面中单独导出Excel …

基于Apache POI导出(百万级)大数据量Excel的实现_一朵风中摇曳的水仙…

支持单个 excel 的 sheet 导出100w 的数据 ApachePOI操作Excel对象 1.HSSF:操作Excel 2007之前版本(.xls)格式,生成的EXCEL不经过压缩直接导出 2.XSSF:操作Excel 2007及之后版本(.xlsx)格式,内存占用高于HSSF …

解决POI的XSSFWorkbook导入大excel的内存消耗过大问题

方式1:使用SXSSFWorkbook ,经过测试,这个情况无效,因为本质上SXSSFWorkbook 也是通过XSSFWorkbook来的,他可以解决写出excel的场景,但是解决不了我们这种用户上传且读取excel中的内容的场景 XSSFWorkbook XSSFWorkbook = new XSSFWorkbook(fileInputStream); System.gc(); SXSSFWorkbook SXSSFWorkbook = new SXSS

继续访问

导入导出

原文地址: 创建流程:(上级为 下级的载体) 1:.创建 工作簿 2.创建 sheet(可以创建多个) 3.创建行 4.创建单元格 接下来 分别说下 工作簿的常用三种形式的区别,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWork…

继续访问

NPOI导出Excel 65536限制

1 #region NPOI 导出excel数据超65535自动分表 2 /// summary 3 /// DataTable转换成Excel文档流,并输出到客户端 4 /// /summary 5 /// param name=”table”…

继续访问

java导出csv文件 为解决导出excel时每个单元格的限制(32767)

此实现方法仅供参考 因为本人导出数据量不大所采取的方法 如数据量大,会到至内存溢出请知晓 在这还提下:导出时内容自己换行 只需在内容前尾各加双引号就行。 如图 1、准备导出工具类 // An highlighted block package com.test; import java.io.BufferedWriter; import java.io.File; import java.io…

继续访问

Excel单元格数据超过32767报错问题处理

java poi 32767

继续访问

SXSSFWorkbook Excel 大量数据导出

注意 SXSSFWorkbook 用于大量数据的导出 SXSSFWorkbook是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel, SXSSFWorkbook专门处理大数据,对于大型excel的创建且不会内存溢出的,就只SXSSFWorkbook了。 它的原理很简单,用硬盘空间换内存(就像hashmap用空间换时间一样)。 SXSSFWorkbook是streami…

继续访问

EXCEL大数据量导出的解决方案

将web页面上显示的报表导出到excel文件里是一种很常见的需求。然而,当数据量较大的情况下,excel本身的支持最多65535行数据的问题便凸显出来。下面就给出大数据量导出到excel的解决方 案。 首先,对于数据超过了65535行的问题,很自然的就会想到将整个数据分块,利用excel的多sheet页的功能,将超出65535行后的数据写入到下一个sheet页中,即通过多sheet页的方式,突破了…

继续访问

几行代码,复杂Excel 导入导出,真心强大!

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达项目中使用:功能介绍IMPORT1、 ExcelHandle核心处理器;2、 ExcelWorkbookManageexcel所有工作表管理;3、 ExcelInitConfig配置文件初始化;4、 AbstractFileParser文件转换类;alanpoi import有何优势?1、 用户不需要额外引入poi…

继续访问

java中poi导出excel问题总结

java中poi导出excel问题总结

继续访问

java POI导出excel,列数限制在256列

有两篇文章写得比较好的

继续访问

apache poi导出excel最大多少个sheet

大数据导出excel大小限制

写评论

评论

收藏

点赞

分享

java导出数据到excel的几种方法的比较

Excel的两种导出入门方法(JAVA与JS)

最近在做一个小项目作为练手,其中使用到了导出到Excel表格,一开始做的是使用JAVA的POI导出的,但因为我的数据是爬虫爬出来的,数据暂时并不保存在数据库或后台,所以直接显示在HTML的table,需要下载时又要将数据传回后台然后生成Excel文件,最后再从服务器下载到本地,过程几度经过网络传输,感觉比较耗时与浪费性能,于是想着在HTML中的Table直接导到Excel中节约资源

JAVA导出EXCEL(.xls)

导出Excel用的插件是apache的poi.jar,maven地址如下

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version3.17/version/dependency

1. 简单应用

先来个简化无样式的Excel导出,由于我的数据存在JSON中,所以形参是JSONArray,朋友们根据自己的实际数据类型(Map,List,Set等)传入即可 ,代码如下

/**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {        //创建一个excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();        //创建一个sheet工作表

HSSFSheet sheet = workbook.createSheet(“学生信息”);

//创建第0行表头,再在这行里在创建单元格,并赋值

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;        for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));//设置值

}

//将主体数据填入Excel中

for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));//设置值

}

}        return workbook;

}

创建好Excel对象并填好值后(就是得到workbook),就是将这个对象以文件流的形式输出到本地上去,代码如下

/**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

至此Excel的导出其实已经做完了。

2. 添加样式后导出

但通常这并不能满足我们的需求,因为通常是需要设置Excel的一些样式的,如字体、居中等等,设置单元格样式主要用到这个类(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

现在说说HSSFCellStyle都能干些什么

HSSFCellStyle cellStyle = workbook.createCellStyle();//创建单元格样式对象1.设置字体

HSSFFont font = workbook.createFont();  //font.setFontHeight((short)12);//这个设置字体会很大

font.setFontHeightInPoints((short)12);//这才是我们平常在Excel设置字体的值

font.setFontName(“黑体”);//字体:宋体、华文行楷等等

cellStyle.setFont(font);//将该字体设置进去2.设置对齐方式

cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment参考下面给出的参数

//以下是最常用的三种对齐分别是居中,居左,居右,其余的写代码的时候按提示工具查看即可

HorizontalAlignment.CENTER

HorizontalAlignment.LEFT

HorizontalAlignment.RIGHT3.设置边框

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

//border的常用参数如下

BorderStyle.NONE 无边框

BorderStyle.THIN 细边框

BorderStyle.MEDIUM 中等粗边框

BorderStyle.THICK 粗边框//其余的我也描述不清是什么形状,有兴趣的到时可以直接测试

在经过一系列的添加样式之后,最后就会给单元格设置样式

cell.setCellStyle(cellStyle);

3. 自动调整列宽

sheet.autoSizeColumn(i);//i为第几列,需要全文都单元格居中的话,需要遍历所有的列数

4. 完整的案例

public class ExcelUtils {    /**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet(“学生信息”);

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

HSSFCellStyle cellStyle = workbook.createCellStyle();

setBorderStyle(cellStyle, BorderStyle.THIN);

cellStyle.setFont(setFontStyle(workbook, “黑体”, (short) 14));

cellStyle.setAlignment(HorizontalAlignment.CENTER);

for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));

cell.setCellStyle(cellStyle);

}

HSSFCellStyle cellStyle2 = workbook.createCellStyle();

setBorderStyle(cellStyle2, BorderStyle.THIN);

cellStyle2.setFont(setFontStyle(workbook, “宋体”, (short) 12));

cellStyle2.setAlignment(HorizontalAlignment.CENTER);        for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));

cell.setCellStyle(cellStyle2);

}

}        for (int i = 0, isize = head.size(); i isize; i++) {

sheet.autoSizeColumn(i);

}        return workbook;

}    /**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}    /**

* 设置字体样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:27:03

* @param workbook 工作簿

* @param name 字体类型

* @param height 字体大小

* @return HSSFFont

*/

private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(height);

font.setFontName(name);        return font;

}    /**

* 设置单元格样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:26:24

* @param workbook 工作簿

* @param border border样式

*/

private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

}

}

POI的功能其实还是很强大的,这里只介绍了Excel的一丁点皮毛给入门的查看,如果想对Excel进行更多的设置可以查看下面的这篇文章,有着大量的使用说明。

空谷幽澜的POI使用详解

JS导出EXCEL(.xls)

java的Excel导出提供了强大的功能,但也对服务器造成了一定资源消耗,若能使用客户端的资源那真是太好了

1. 简单应用

JS的导出Excel非常简单,只需要引用Jquery和tableExport.js并设置一个属性即可

script src=”%=basePath%/static/js/tableExport.js” type=”text/javascript”/scriptscript type=”text/javascript”

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$(‘#tableId’).tableExport({      type:’excel’

});

}/scriptbutton class=”btn btn-primary”  type=”button” style=”float: right;” onclick=”exportExcelWithJS()”下载本表格/button

JS的导出就完成了,是不是特别简单

2. 进阶应用

但上面仅仅是个简单的全表无样式的导出

这tableExport.js还有一些其他功能,忽略行,忽略列,设置样式等,属性如下

script type=”text/javascript”

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$(‘#tableId’).tableExport({      type:’excel’,//导出为excel

fileName:’2017工资表’,//文件名

worksheetName:’11月工资’,//sheet表的名字

ignoreColumn:[0,1,2],//忽略的列,从0开始算

ignoreRow:[2,4,5],//忽略的行,从0开始算

excelstyles:[‘text-align’]//使用样式,不用填值只写属性,值读取的是html中的

});

}/script

如上既是JS的进阶导出,操作简单,容易上手

但有个弊端就是分页的情况下,只能导出分页出的数据,毕竟这就是导出HTML内TABLE有的东西,数据在数据库或后台的也就无能为力,所以这个适合的是无分页的TABLE导出

3. 额外说明

tableExport.js是gitHub上的hhurz大牛的一个开源项目,需要下载该JS的可以点击链接进入gitHub下载或在我的百度网盘下载 密码:oafu

tableExport.js不仅仅是个导出Excel的JS,他还可以导出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多种格式,具体使用可以参考hhurz的使用介绍

本人在之前找了好几个导出Excel的都有各种各样的问题(乱码,无响应,无样式),这个是目前找到最好的一个了,能解决乱码问题,能有样式,非常强大

如何用java来将excel文件转化为html文件问题

可以导入spire.xls.jar(只需导入这一个jar即可),直接下载jar包,然后解压将lib文件夹下的jar文件导入java程序;如果创建的是Maven程序的话,需要在pom.xml文件中配置maven路径并指定Free Spire.XLS for Java的依赖,导入,如下配置:

repositories

repository

idcom.e-iceblue/id

url;/url

/repository

/repositories

dependencies

dependency

groupId e-iceblue /groupId

artifactIdspire.xls/artifactId

version2.2.0/version

/dependency/dependencies

完成导入后,参考如下代码将excel转为html:

import com.spire.xls.*;

public class ExcelToHtml {

public static void main(String[] args) {

//加载Excel工作表

Workbook wb = new Workbook();

wb.loadFromFile(“test.xlsx”);

//获取工作表

Worksheet sheet = wb.getWorksheets().get(0);

//调用方法将Excel保存为HTML

sheet.saveToHtml(“ToHtml.html”);

}

}

java 怎么从excel文件导入到oracle数据库中

java操作excel一般都使用poi来完成:

1、下载poi相关jar,maven的集成如下:(把${poi.version}替换成你要的版本)

                dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version${poi.version}/version

scopeprovided/scope

/dependency

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi-ooxml/artifactId

version${poi.version}/version

scopeprovided/scope

/dependency

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi-ooxml-schemas/artifactId

version${poi.version}/version

scopeprovided/scope

/dependency

2、根据poi相关api读取sheet、row、cell,获得excel的数据:

封装row的对象,即每一行数据为一个对象,每个cell为对象里的一个属性,

整个sheet的数据装进集合里;

3、处理数据,可以对数据进行验证或其他操作;

4、写数据库操作。

关于javaexcelmaven和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 10:33:48
下一篇 2024年4月3日 10:42:05

相关推荐

  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • javascriptcanvas的简单介绍

    如何使用js在画布上绘制图形 1、可以使用 drawImage()方法把一幅图像绘制到画布上。 以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML 元素,以及绘制该图像的起点的 x 和 y 坐标。 2、效果图:使用JavaScript在画布中绘制文本图形首先我们来看看要在画布上绘制文本图形,需要用到的最重要的属性和方法:font属性:定义文本的字…

    2024年5月23日
    4200
  • cortexm4linux的简单介绍

    Cortex-M4的主要功能 Cortex-M4提供了无可比拟的功能,以将[1] 32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。 Cortex-M4核心具有浮点单元(FPU)单精度,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。 主要是m4比m3多了dsp的支…

    2024年5月23日
    4300
  • 3desjavaphp的简单介绍

    php的3des加密结果与java不一致 他们的加密算法都是通用的,是可以解开的,只要你des的模式,加密长度,初始向量什么的都一样就可以。 JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关。Padding(填充)属性定义元素边框与元素内容之间的空间。padding简写属性在一个声明中设置所有内边距属性。 要…

    2024年5月23日
    4700
  • 黑客代码软件学习推荐歌曲的简单介绍

    我想自学编程代码,,目地是“黑”网站,开发出破解代码。有没有这方面的… 这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。 我认为这个问题问得本身就显得有点矛盾,想学却担心自己看不懂代码学不来,试问哪个编程人员不是从零开始的。坚定信念…

    2024年5月23日
    4700
  • java8种基本类型范围的简单介绍

    java中常用的数据类型有哪些 1、java数据类型分为基本数据类型和引用数据类型,基本数据类型有boolean 、long 、int 、char、byte、short、double、float。引用数据类型有类类型、接口类型和数组类型。 2、java中包含的基本数据类型介绍:\x0d\x0aJava共支持8种内置数据类型。内置类型由Java语言预先定义好,…

    2024年5月23日
    4700
  • linux系统与gpt的关系的简单介绍

    linux下查看分区是不是gpt 看分区会报错,比如:WARNING: GPT (GUID Partition Table) detected on /dev/sda! The util fdisk doesnt support GPT. Use GNU Parted.所以这个sda就是gpt的。 选择“管理”;在“磁盘管理”中,右键“磁盘0”,在弹出的右键…

    2024年5月23日
    5400
  • 北京黑客学习培训的简单介绍

    现在学什么好啊 包括建筑设计、服装设计、珠宝首饰设计等,选择适合自己的设计专业,好好学习,就业容易且收入高。学前教育专业:很多女生喜欢小孩子,且女生一般细心且有耐心,教育行业假期宽裕,工作环境单纯,就业机会多。 现在比较热门好就业的专业有人工智能、机械专业、电子商务专业、人力资源专业、金融学专业、小语种类专业等等。人工智能:人工智能领域的研究包括机器人、语言…

    2024年5月23日
    4100
  • javaee要学那些东西的简单介绍

    java主要学习哪些内容 1、学java最重要的是下面四个内容:掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\O技术,多线程技术、socket网络编程,XML技术。 2、Java基础:了解Java的基本语法、数据类型、控制流程、数组、字符串等基础概念。学习面向对象编程(OOP)的原则和概念…

    2024年5月23日
    4200
  • excel自杀的简单介绍

    excel表格中宏代码,具有自杀功能,密码输入错误3次就自动删除表格_百度… 我给楼主一个建议,利用excel自身的密码保护,保护此工作簿的结构,将sheet提前隐藏。这样如果有人将同一份excel打开时,如果不能输入正确的密码,就不能将sheet取消隐藏,就能达到楼主所说的保护了。 如果你还有源文件的话,可以这样试试:打开其他的excel文件,…

    2024年5月23日
    8100

发表回复

登录后才能评论



关注微信