Java实现文件批量导入导出实例(兼容xls,xlsx)


Java实现文件批量导入导出实例(兼容xls,xlsx) - u013322876的博客 - CSDN博客

    
                
        
        
    
        
    





Java实现文件批量导入导出实例(兼容xls,xlsx)

Java实现文件批量导入导出实例(兼容xls,xlsx)

1、介绍

java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。

目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。

2、POI使用详解

2.1 什么是Apache POI?

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

2.2 POI的jar包导入

本次讲解使用maven工程,jar包版本使用poi-3.14和poi-ooxml-3.14。目前最新的版本是3.16。因为3.15以后相关api有更新,部分操作可能不一样,大家注意下。

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlMzBmZjQ1Y2NiNzc)

2.3 POI的API讲解

2.3.1 结构

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

2.3.2 对象

本文主要介绍HSSF和XSSF两种组件,简单的讲HSSF用来操作Office 2007版本前excel.xls文件,XSSF用来操作Office 2007版本后的excel.xlsx文件,注意二者的后缀是不一样的。

HSSF在org.apache.poi.hssf.usermodel包中。它实现了Workbook 接口,用于Excel文件中的.xls格式

常用组件:

HSSFWorkbook excel的文档对象

HSSFSheet excel的表单

HSSFRow excel的行

HSSFCell excel的格子单元

HSSFFont excel字体

HSSFDataFormat 日期格式

HSSFHeader sheet头

HSSFFooter sheet尾(只有打印的时候才能看到效果)

样式:

HSSFCellStyle cell样式

辅助操作包括:

HSSFDateUtil 日期

HSSFPrintSetup 打印

HSSFErrorConstants 错误信息表

XSSF在org.apache.xssf.usemodel包,并实现Workbook接口,用于Excel文件中的.xlsx格式

常用组件:

XSSFWorkbook excel的文档对象

XSSFSheet excel的表单

XSSFRow excel的行

XSSFCell excel的格子单元

XSSFFont excel字体

XSSFDataFormat 日期格式

和HSSF类似;

2.3.3 两个组件共同的字段类型描述

其实两个组件就是针对excel的两种格式,大部分的操作都是相同的。

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZjAwMDU2OGM2NjBmMmJkODc)

2.3.4 操作步骤

以HSSF为例,XSSF操作相同。

首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMjAwMDEyODcyMWEwMGU3NzM)

3、代码操作

3.1 效果图

惯例,贴代码前先看效果图

Excel文件两种格式各一个:

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMjAwMDEyODllMWQ3MmNiOTc)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMzAwMDExYWVhMDJhMjYyMzk)

代码结构:

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMDAwMDUyMjA4MDc2ZDgxNWU)

导入后:(我导入了两遍,没做校验)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMzAwMDExYWU5MDc1MWViOWM)

导出效果:

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZDAwMDFlMTM3ZDA1NDVhZmI)

3.2 代码详解

这里我以Spring+SpringMVC+Mybatis为基础

Controller:

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMjAwMDEyOTBmYzVjOTY3OTI)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlNDAxOWVkM2JkZGU)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQzMDAwMDUyMmUxYTRlZjQwYWI)

Service

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMDAwMDUyMzgzZmQ3MTc4N2I)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMzAwMDExYzljMzIyMjMwNjU)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZDAwMDFlMmY2ZDA4Y2UyNjk)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMDAwMDUyNDBkNWExNDhjNjA)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQzMjAwMDEyYjAwMDE2NTJlYzE)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMzAwMDExZGExZjUxMzQzYTM)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQyZjAwMDU2YzFjNDg5MGE1YTc)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQzMzAwMDExZGZkMDM3MjJiZGE)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlNmI3Zjc3ZjkyMDQ)

3.3 导出文件api补充

大家可以看到上面service的代码只是最基本的导出。

在实际应用中导出的Excel文件往往需要阅读和打印的,这就需要对输出的Excel文档进行排版和样式的设置,主要操作有合并单元格、设置单元格样式、设置字体样式等。

3.3.1 单元格合并

使用HSSFSheet的addMergedRegion()方法

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZjAwMDU2Yzg1N2YxNGJjODc)

参数CellRangeAddress 表示合并的区域,构造方法如下:依次表示起始行,截至行,起始列, 截至列

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlNzQ4MjQ1ZjRlYjA)

3.3.2 设置单元格的行高和列宽

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQyZjAwMDU2ZDE2NjBiNjg5Y2U)

3.3.3 设置单元格样式

1、创建HSSFCellStyle

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlNzYwZmE3OWI5Njg)

2、设置样式

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMTAwMDFlNzg5MjI0M2ZiOGY)

3、将样式应用于单元格

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZTAwMDU3MTlkYzczNGM4YzA)

3.3.4设置字体样式

1、创建HSSFFont对象(调用HSSFWorkbook 的createFont方法)

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZjAwMDU2ZDdiYjNmNWZhNjc)

2、设置字体各种样式

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvMjQyZDAwMDFlNTRkMzQ3YjZiZTU)

3、将字体设置到单元格样式

![Java实现文件批量导入导出实例(兼容xls,xlsx)](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvMjQzMDAwMDUyNjkzZjdkMGJmODc)

大家可以看出用poi导出文件还是比较麻烦的,等下次在为大家介绍下irport的方法。

导出的api基本上就是这些,最后也希望上文对大家能有所帮助。

        
展开阅读全文
    

POI和Java Excel Api导入导出----详细到你不敢相信

05-27 阅读数 2万+

来自:http://blog.csdn.net/jerehedu/article/details/45195359 一、介绍   当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常... 博文 来自: m0_37899388的博客

JAVA Excel 批量导入(支持Excel xlsxlsx)

01-25 阅读数 131

此例使用HSSFPOI技术代码如下util层 /***判断字符串与数字true是数字false字符串*@paramstr*@return*/publicstaticbooleanisNum(Strin... 博文 来自: 明知路难偏偏行

java导入大文件数据的解决方案

11-05 阅读数 746

2018年11月5号于南昌中海蓝域小区卧榻伴音弦最近在做项目,一个20G大小的文件,要按行读入到数据库,妈呀,有什么好方法吗?20G如果按照行读入的方式,需要20多个小时才能入库成功。主要性能瓶颈不是... 博文 来自: 极客蓝天

java使用POI实现excel文件的读取,兼容后缀名xlsxlsx

05-28 阅读数 606

首先,引入所需的jar包:如果是maven管理项目的jar包,只需在pom.xml中加上:[html] viewplain copy<!-- https://mvnrepository.... 博文 来自: water_tone的博客

poi导入导出excel,兼容xlsxlsx

08-08 阅读数 3074

项目需求导入学生成绩后,导出统计结果。所以参考网上博文用poi写了excel导入导出。相关jar的maven地址<!--excel--> <dependen... 博文 来自: feng2036的博客

JAVA CSV文件导入——代替Excel文件导入

02-26 阅读数 1857

我们经常有通过文件导入数据的需求,比如批量导入会员、导入配置、导入其他系统的数据。通过Excel方式导入会比较麻烦,要导入类库,可以考虑把Excel转成CSV文件。Excel->另存为-... 博文 来自: 疯狂的Bug


【学习笔记】如何往eclipse中导入单个java文件

03-07 阅读数 3万+

对于一些单个java文件,如果需要导入到eclipse中,可通过建立project,建立package的方法导入java文件。以下FiveChess.java为例。现一个五子棋的java文件源码。1.... 博文 来自: quickily的专栏

如何往eclipse项目中导入单个java文件

12-02 阅读数 2321

对于一些单个Java文件,如果需要导入到eclipse中,可通过建立project,建立package的方法导入java文件。以下FiveChess.java为例。现一个五子棋的java文件源码。1.... 博文 来自: 冬冬466的博客

已有java文件添加到工程中的两种方法

09-07 阅读数 3118

在学习《java编程思想》是遇到一个问题,作者创建了一个java文件,其作用是用print()代替System.out.println()以显示要打印的内容。文章中用了importstaticne... 博文 来自: kaweeee的博客

java实现excel的导入和导出

10-30 阅读数 1万+

在网上参考了很多文章,对于excel的导入导出大概看了下,详细的API没有仔细去看,只不过是实现了功能而已。这里贴上代码,一方面自己以后用得时候可以直接拿来用,另一方面有需要实现excel导入导出功能... 博文 来自: jialiang的博客

Java读取文件的几种方法

04-19 阅读数 4万+

原文:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4... 博文

Java导入导出Excel表格(xls版本、xlsx版本)

11-09 阅读数 716

自己整合成的一个专门导入导出工具类一、pom文件导包: <!--导入导出Excel表格--> <!--https://mvnrepository.com/artifact/o... 博文 来自: 小码农1996的博客

java中读取txt文档的三种方式

05-15 阅读数 6万+

1. package com.readfile; 2. 3. import java.io.BufferedReader; 4. import java.io.File; 5. i... 博文

Java之excel导入数据同时兼容.xls和.xlsx

07-27 阅读数 3576

java兼容两种版本的excel导入 博文 来自: fz_tym的博客

如何往eclipse中导入单个java文件

11-30 阅读数 1812

对于一些单个Java文件,如果需要导入到eclipse中,可通过建立project,建立package的方法导入java文件。以下FiveChess.java为例。现一个五子棋的java文件源码。1.... 博文 来自: d3soft的专栏

eclipse中导入Java文件

08-09 阅读数 2万+

eclipse中导入Java文件的方法 在eclipse中导入Java文件分两种情况:1,如果要导入的Java文件就在eclipse工作空间WorkSpace目录下,则把包含相... 博文 来自: haizilin的专栏

Java读取txt文件和写入txt文件

05-25 阅读数 20万+

原文:Java读取txt文件和写入txt文件写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂!package... 博文 来自: nickwong & nickwang

Java读取文件的四种方式

09-18 阅读数 853

按字节读取文件内容 按字符读取文件内容 按行读取文件内容 随机读取文件内容 publicclassReadFromFile{/***以字节为单位读取文件,常用于读二进制文件,如图片... 博文 来自: Java_自由人

java-文件上传到读取文件内容

05-17 阅读数 3372

1.下载文件,将文件保存到本地。(只试用excel);2.对文件的标题进行检验;3.获取导入的批次(取一个表的一个值,加1);4.循环获取文件某一个行,某一列的值,set到对象中;5.检验值的合法性;... 博文 来自: 飘在北京

java中读取文件的方法

10-07 阅读数 432

public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static ... 博文 来自: 强者的博客

Java IO 读取/写入文件 中文乱码困难解决代码

08-09 阅读数 4168

读取:BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream(Filefile)"UTF-8"));  写... 博文 来自: seelye的专栏

Java:利用I/O流读取文件内容

09-06 阅读数 7万+

要利用I/O流读取文件内容,首先要掌握InputStream的体系结构。这个体系中FileInputStream和BufferedInputStream是一定要掌握的,因为使用的频率比较高。Input... 博文 来自: xuehyunyu的博客

Java读取文件内容的几种方式

08-25 阅读数 1万+

[java]viewplaincopyprint?package com.readfile; import java.io.BufferedReader; import java.io.Fil... 博文 来自: actionzh的博客


Java实现文件的读取操作

03-20 阅读数 990

以下是用带缓存的方式实现文件的输入和输出,缓存是I/O的一种性能优化,缓存流为I/O流增加了内存缓存区,从而使得在流上执行skip(),mark(),reset()成为了可能;BufferedRead... 博文 来自: lixinxindaydayup的专栏

eclipse导入Java工程文件

04-23 阅读数 1万+

1若下载下载的工程文件中含有.project则点击菜单栏file-import,选择General-existingprojectintoworkplace,点击下一步选择需要导入的工程2若下载工程只... 博文 来自: rayaohb的专栏

Java的文件读写操作

08-20 阅读数 26万+

file(内存)----输入流---->【程序】----输出流---->file(内存)当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamRead... 博文 来自: jiangxinyu的专栏

java批量导入导出(poi)

09-18 阅读数 411

一、批量导入 1、导入时我们接参时使用MultipartFile来接受excel文件,用poi来读取文件内容 InputStreaminputStream=MultipartFile.ge... 博文 来自: 飞天神猪ll的博客

Java实现数据批量导入数据库(优化速度-2种方法)

06-27 阅读数 4175

原文转自:https://blog.csdn.net/qy20115549/article/details/52699724目录程序结构连接数据程序批量处理的两种方式main方法使用JDBC连接MyS... 博文 来自: LAMO

python图片处理类之~PIL.Image模块(ios android icon图标自动生成处理)

08-31 阅读数 13万+

1.从pyCharm提示下载PIL包nn http://www.pythonware.com/products/pil/nn nn2.解压后,进入到目录下nnncd /Users/jianan/Dow... 博文 来自: 专注于cocos+unity+node.js全栈网游开发

SpringBoot入门系列:第六篇 mybatis

06-26 阅读数 2万+

这一篇,代码折腾的时间较长,完成之后都是一些小细节,主要有三:n1、引入的依赖错误;n2、启动配置错误;n3、xml文件的mapper命名空间错误。n一、完整的pom.xmlnn... 博文 来自: lxhjh的专栏

Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。

09-14 阅读数 7万+

本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、 Esp8266之 搭建开发环境,开始一个“hellow worl... 博文 来自: 徐宏的博客。

微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用

02-02 阅读数 20万+

扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,... 博文 来自: Marswill

EasyUI - 一个简单的后台管理系统入门实例

10-20 阅读数 3万+

采用EasyUI 1.4.x 版本,默认default风格,异步加载页面,多Tab页展示,使用JSON文件模拟从后台动态获取数据。... 博文 来自: 般若

DirectX修复工具强力修复实验包

02-16 阅读数 2万+

DirectX修复工具API Sets强力修复实验包下载地址:nnhttps://pan.baidu.com/s/1sVKFCj-k0qNsWHGqtJTQWgnn密码:5y5vnnnn实验包使用说明... 博文 来自: VBcom的专栏

在Tomcat上部署Vue.js项目

07-17 阅读数 2万+

接着上次的图书管理系统rnrn修改完问题后把SpringBoot成功部署到了服务器上rn测试了下api接口,能正常访问rn那么下面就是在服务器上部署前端的vue.js了rnrnrn这里的话我们要明确一... 博文 来自: 小时的枫的博客

5G NR协议栈及功能1 - 总体架构与物理层

01-25 阅读数 3万+

  备注:本文所有图片均来自3GPP标准,包括3GPP TS 38.300 V15.0.0 (2017-12)和3GPP TS 38.202 V15.0.0 (2017-12)等。本文主要介绍截止目前... 博文 来自: Wei Xingguang

            
                        
![在这里插入图片描述](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jc2RuaW1nLmNuL3JlbGVhc2UvcGhvZW5peC9pbWFnZXMvZmVlZExvYWRpbmcuZ2lm)

没有更多推荐了,返回首页

你可能感兴趣的:(转载,文件批处理)