中企动力 > 商学院 > java实现excel数据导入
  • ?

    快用它,让您的Excel数据在浏览器上飞起来

    应乌

    展开

    SpreadJS在线Excel表格编辑器

    概述

    赋能开发者!为进一步帮助开发人员提高开发效率,充分发掘数据价值,葡萄城 SpreadJS 在线 Excel 表格编辑器应运而生,无需额外的学习成本,帮您快速搭建信息系统,高效提升企业数据管理水平。

    这是一款能为您的 Web 应用节省大量财力和物力的开发工具,一经推出,即备受开发人员欢迎,被誉为“专为私人定制的在线 Excel”。

    SpreadJS 在线 Excel 表格编辑器是什么?

    葡萄城推出的 SpreadJS在线Excel 表格编辑器,是类似在线 Excel 的纯前端在线表格编辑程序,在功能和外观上都与 Excel 高度接近,也是 SpreadJS 纯前端电子表格控件桌面设计器的在线版本,提供源代码,您可自由定制,任意扩展。该产品内嵌了SpreadJS,使用离线和在线方式均可进行表格编辑。

    三大亮点:

    基于 Java/HTML5 的 Web 前端应用程序,不依赖任何配置库,提供了更高的渲染性能和更快的界面操作,轻松实现跨平台、跨操作系统,帮助用户方便流畅地载入和操作海量数据。

    以“所见即所得”的设计思想,提供类 Excel 的用户体验,让用户能快速方便的设计自己的 Spread.Sheets 模板。

    提供 Excel 纯前端导入/导出功能,可实现将设计产物保存至 Excel 格式或 SpreadJS 支持的项目文件。

    SpreadJS在线Excel表格编辑器都有哪些客户在使用?

    自面世以来,SpreadJS在线Excel 表格编辑器已经广泛应用于华为、中国民航飞行学院、中国平安、中国能建、中通等知名企业的项目开发。

    SpreadJS在线Excel表格编辑器可以帮您解决什么难题?

    作为葡萄城的明星控件,SpreadJS在线Excel 表格编辑器秉承“赋能开发者”企业理念,开放、包容、可自由定制、任意扩展。以敏捷开发为前提,助力企业破解:海量表格数据管理、安全操作表格数据和更方便流畅进行表格数据交互的三大难题。面向全球市场向客户提供覆盖软件产品研发各阶段的技术服务,助力企业专注于核心业务,在全球市场赢得先机。

    关于葡萄城

    葡萄城公司成立于1980年,是全球领先的集开发工具、商业智能解决方案、管理系统设计工具于一身的软件和服务提供商。西安葡萄城是其在中国的分支机构,面向全球市场提供软件研发服务,并为中国企业的信息化提供国际先进的开发工具、软件和研发咨询服务。

  • ?

    雨沐田:数据分析之Excel数据导入方法

    浮浅

    展开

    之前的文章对数据分析基础做了归纳总结,对数据分析有了基本的识了解后,还是要多多的实践才可以,但不管怎么实践,总是需要数据才可以,没数据总是无米之炊,今天就说说数据准备。

    既然在日常的工作中,Excel能解决绝大部分的问题,那就从Excel说起:

    一、Excel导入文本数据

    由于各种原因,在工作中我们可能会拿到很多文本数据,常见的就是txt格式的,为了方便处理,一般需要导入Excel,但前提是要有一定的规律才可以,如下面的数据就无法导入Excel表格(严格说是可以导入,但导入的数据依然无规律,无法直接有效使用):

    同样表达一类信息,但有规律就可以导入Excel表格,如下格式,就可以轻松导入:

    导入方法如下:

    1、打开Excel,选择数据模块,在选择 [自文本] 子菜单:

    2、选择文件所在位置后,弹出如下窗口:

    3、保持默认选择“按分隔符号”,此时看到预览,数据并没有被切分开,点击下一步:

    4、选择分割符号为逗号,此时看到预览,数据已经被正确切分,继续点击下一步:

    5、此步骤不做修改,直接点击 [完成]。

    6、数据被导入,如下图:

    是不是非常方便,实际工作中,需要导入txt文本的情况还是比较多的,如一些系统的日志文件,或从其他库中导出的数据,或者手工按固定格式记录的数据等,通过Excel文本导入是非常方便的。

    而且从第三步中可以看到,数据值之间的分隔符不一定是逗号,可以是任意字符或空格等,只要有相同的规律,就可以导入,可以多试试。

    二、从网站导入Excel

    还有一种常见情况是导入网页数据,特别是网页上的表格,这是采集外部数据的方法之一。

    虽然网页上的数据很多是可以直接复制粘贴的,但如果网页右键被屏蔽或数据过大,直接复制总不是那么方便的,就需要如下的方法:

    如我们要导入郭嘉统计局的数据:2017年9月中国制造业采购经理指数,网址如下:http://stats.gov/tjsj/zxfb/201709/t20170930_1539436.html

    我想要导入如下图所示的表格数据:

    操作步骤如下:

    1、打开Excel,选择数据模块,再选择 [自网站] 子菜单:

    2、在地址栏录入网址后,点击【转到】按钮,如下图

    3、打开的网页中找到我们要导入的表格并选择,点击表格左上角的黄色箭头图标,并变成绿色,如下图所示:

    4、点击导入,数据被导入Excel,如下图:

    是不是非常方便呢,最最关键的是从网页导入的数据,还可以根据需要刷新,方法:点击数据模块菜单下的 [全部刷新] 按钮,就可以刷新导入的数据:

    除了可以手工刷新还,还可以自动刷新数据,点击 [全部刷新] 菜单傍边的 [属性] 菜单,就可以设置是否自动刷新,具体操作请自行尝试。

    以上2种方法,不仅仅是数据分析基础工作,也是日常工作都非常有用的方法,多多使用,让Excel这个牛X的工具发挥真真的价值!

    关注公号「大数据分析狮」,学习数据分析,免费获取大数据分析百本电子书!

  • ?

    如何把excel数据导入navicat

    卜珊珊

    展开

    在导出的Excel表中,手动的录入一些数据,然后将这个表导入到数据库中。

    步骤1:运行【导入向导】,选择导入数据的类型

    步骤2:选择文件数据源

    步骤3:跳过。

    步骤4:给源文件定义一些附加选项,前三个选项一定要填写正确,否则将不能完成正确的导入。

           [栏位名行]:数据表字段所在的行位置

           [第一个数据行]:导入的数据表中源数据是从第几行开始的

           [最后一个数据行]:导入的数据表中源数据是从第几行结束的

    步骤5:选择目标表,也可以新建一个表

    步骤6:定义源栏位和目标栏位的对应关系,如果目标栏位设置了主键,在这一步中一定要勾选,否则也将无法正常导入数据

    步骤7:选择导入模式,如果是新表,选择第一项。可以根据具体情况选择不同的选项。这里选择第三项。

    步骤8:点击【开始】执行导入命令

    执行完之后,去数据库验证一下:

    (本文内容由百度知道网友茗童贡献)

  • ?

    利用workbench将excel数据导入到MySQL中

    两相忘

    展开

    数据导入的方式(csv,txt之类)

    在MySQL中,数据导入的方式有两种方式

    通过第三方客户端导入(workbench)

    通过mysql client 方式导入

    通过mysql clinet的导入方式,相比第三方客户端导入的方式,效率会高点,但是类似workbench这种的,因为图形UI做的相对比较人性,研发人员在处理数据的过程中减少对指令的交互

    具体操作方法 准备数据(csv准备)

    当你的CSV数据准备好之后,需要有个点注意(由于导入容易碰到编码问题,所以在导入之前,需要使用notepade++将csv文件的编码转换成utf-8的编码方式[格式-->utf-8编码格式])然后保存 导入数据

    1.选中你需要导入的库的项

    2.选择需要导入的csv文件(也可以是json格式)

    3.由于csv中的字段并不是完整是所有表的字段,故此我们在这里新创建一张表(建议是先创建一张跟要同步的表一样字段属性的表先)

    4.留意导入的数据是否正确

    5.一直点NEXT即可完成

    总结

    需要注意的是:如果使用workbench导入的时候,如果数据量不大,可以使用这种方式,如果数据量比较庞大,建议直接通过命令行的方式会高效,其中一个最明显的特征就是如果导入大量数据的CSV,在workbench导入的时候,可能会卡死或者桌面终端无法操作,从而导致导入失败

  • ?

    一行代码完成Java的Excel读写

    於夜雪

    展开

    前段时间在 github 上发现了阿里的 EasyExcel 项目,觉得挺不错的,就写了一个简单的方法封装,做到只用一个函数就完成 Excel 的导入或者导。刚好前段时间更新修复了一些 BUG,就把我的这个封装分享出来,请多多指教。

    附上源码:

    https://github/HowieYuan/easyexcel-method-encapsulation

    EasyExcel

    EasyExcel 的 github 地址:

    https://github/alibaba/easyexcel

    EasyExcel 的官方介绍:

    可以看到 EasyExcel 最大的特点就是使用内存少,当然现在它的功能还比较简单,能够面对的复杂场景比较少,不过基本的读写完全可以满足。

    一. 依赖

    首先是添加该项目的依赖,目前的版本是 1.0.2。

    com.alibabaeasyexcel1.0.2

    二. 需要的类

    1. ExcelUtil

    工具类,可以直接调用该工具类的方法完成 Excel 的读或者写。

    2. ExcelListener

    监听类,可以根据需要与自己的情况,自定义处理获取到的数据,我这里只是简单地把数据添加到一个 List 里面。

    publicclassExcelListenerextendsAnalysisEventListener {//自定义用于暂时存储data。//可以通过实例获取该值private List datas = new ArrayList<>();/** * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据 */ @Overridepublicvoidinvoke(Object object, AnalysisContext context) {//数据存储到list,供批量处理,或后续自己业务逻辑处理。 datas.add(object);//根据自己业务做处理 doSomething(object); }privatevoiddoSomething(Object object) { } @OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context) { }public List getDatas() {return datas; }publicvoidsetDatas(List datas) {this.datas = datas; }}

    3. ExcelWriterFactroy

    用于导出多个 sheet 的 Excel,通过多次调用 write 方法写入多个 sheet。

    4. ExcelException

    捕获相关 Exception。

    三. 读取 Excel

    读取 Excel 时只需要调用 ExcelUtil.readExcel() 方法:

    @RequestMapping(value = "readExcel", method = RequestMethod.POST)public Object readExcel(MultipartFile excel) {return ExcelUtil.readExcel(excel, new ImportInfo());}

    其中 excel 是 MultipartFile 类型的文件对象,而 new ImportInfo() 是该 Excel 所映射的实体对象,需要继承 BaseRowModel 类,如:

    publicclass ImportInfo extends BaseRowModel {@ExcelProperty(index = 0)privateString name;@ExcelProperty(index = 1)privateString age;@ExcelProperty(index = 2)privateString email;publicString getName() {return name; }publicvoid setName(String name) {this.name = name; }publicString getAge() {return age; }publicvoid setAge(String age) {this.age = age; }publicString getEmail() {return email; }publicvoid setEmail(String email) {this.email = email; }}

    作为映射实体类,通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列,同时不可缺少 setter 方法。

    四. 导出 Excel

    1. 导出的 Excel 只拥有一个 sheet

    只需要调用 ExcelUtil.writeExcelWithSheets() 方法:

    @RequestMapping(value = "writeExcel", method = RequestMethod.GET)publicvoidwriteExcel(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName = "第一个 sheet"; ExcelUtil.writeExcel(response, list, fileName, sheetName, new ExportInfo()); }

    fileName,sheetName 分别是导出文件的文件名和 sheet 名,new ExportInfo() 为导出数据的映射实体对象,list 为导出数据。

    对于映射实体类,可以根据需要通过 @ExcelProperty 注解自定义表头,当然同样需要继承 BaseRowModel 类,如:

    publicclass ExportInfo extends BaseRowModel {@ExcelProperty(value = "姓名" ,index = 0)privateString name;@ExcelProperty(value = "年龄",index = 1)privateString age;@ExcelProperty(value = "邮箱",index = 2)privateString email;@ExcelProperty(value = "地址",index = 3)privateString address;}

    value 为列名,index 为列的序号。

    如果需要复杂一点,可以实现如下图的效果:

    对应的实体类写法如下:

    publicclass MultiLineHeadExcelModel extends BaseRowModel {@ExcelProperty(value = {"表头1","表头1","表头31"},index = 0)privateString p1;@ExcelProperty(value = {"表头1","表头1","表头32"},index = 1)privateString p2;@ExcelProperty(value = {"表头3","表头3","表头3"},index = 2)private int p3;@ExcelProperty(value = {"表头4","表头4","表头4"},index = 3)private long p4;@ExcelProperty(value = {"表头5","表头51","表头52"},index = 4)privateString p5;@ExcelProperty(value = {"表头6","表头61","表头611"},index = 5)privateString p6;@ExcelProperty(value = {"表头6","表头61","表头612"},index = 6)privateString p7;@ExcelProperty(value = {"表头6","表头62","表头621"},index = 7)privateString p8;@ExcelProperty(value = {"表头6","表头62","表头622"},index = 8)privateString p9;}

    2. 导出的 Excel 拥有多个 sheet

    调用 ExcelUtil.writeExcelWithSheets() 处理第一个 sheet,之后调用 write() 方法依次处理之后的 sheet,最后使用 finish() 方法结束。

    publicvoidwriteExcelWithSheets(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName1 = "第一个 sheet"; String sheetName2 = "第二个 sheet"; String sheetName3 = "第三个 sheet"; ExcelUtil.writeExcelWithSheets(response, list, fileName, sheetName1, new ExportInfo()) .write(list, sheetName2, new ExportInfo()) .write(list, sheetName3, new ExportInfo()) .finish();}

    write 方法的参数为当前 sheet 的 list 数据,当前 sheet 名以及对应的映射类。

    扩展阅读

    代码整洁之道|最佳实践小结

    Javascript 将 HTML 页面生成 PDF 并下载

    Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    来源:https://juejin.im/post/5ba320546fb9a05d0b14304b

    文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除

  • ?

    使用excel的数据导入功能

    经山蝶

    展开

    如果说我们需要获取计算机内的文本文件的时候,我们除了使用超链接的和复制的方法,我们可以可以使用excel的数据导入功能,可以把文本文件直接导入到excel中直接转换成表格样式。

    1、在 “客户资料统计” 工作簿中新建工作表, 并命名为 “北京永桦包装有限公司” 。

    2、切换到 【数据】 选项卡, 在 【获取外部数据】 组中单击 【自文本】 按钮。

    3、弹出【导入文本文件】对话框,找到文本文件“北京永桦包装有限公司” , 选择文件,单击【导入】按钮。

    图1

    4、弹出文本导入向导,在此可以预览文本文件,单击【下一步】按钮。

    图2

    5、选中 Tab 复选框, 单击【下一步】按钮。

    图3

    6、在弹出的 【导入文本向导-步骤 3】 对话框中单击【常规】单选按钮,单击【完成】按钮。

    图4

    7、弹出【导入数据】对话框,单击【现有工作表】单选按钮,单击【确定】按钮。

    图5

    8、txt文本信息已导入到excel工作表中。

    图6

    就通过以上的几个简单步骤我们就可以把txt转换成excel表格文件了,使用excel的数据导入功能,大大的节省了我们的工作时间,提高了我们excel工作效率。

  • ?

    整理关于java读取excel内容的例子供大家参考

    赖雪珊

    展开

    1POI简介

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

    2POI下载

    poi下载地址:https://apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz

    下载之后把压缩包解压,然后在项目里面引用解压文件夹里面的jar

    3新建java project,引入poi相关的jar

    4创建一个java类,编写代码

    package test;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.InputStream;

    import org.apache.poi.hssf.usermodel.HSSFRow;

    import org.apache.poi.hssf.usermodel.HSSFSheet;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    public class ReadExcel {

    /**

    * @param args

    */

    @SuppressWarnings("resource")

    public static void main(String[] args) {

    try {

    InputStream is = new FileInputStream(new File(

    "D:/360bizhi/0_TITLE_CODE.xls"));

    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

    // 获取每一个工作薄

    for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {

    HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);

    if (hssfSheet == null) {

    continue;

    }

    // 获取当前工作薄的每一行

    for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

    HSSFRow hssfRow = hssfSheet.getRow(rowNum);

    if (hssfRow != null) {

    String title_id = String.valueOf(hssfRow.getCell(0));

    // 读取第一列数据

    String title_name = String.valueOf(hssfRow.getCell(1));

    // 读取第二列数据

    String title_name_en = String.valueOf(hssfRow

    .getCell(2));

    System.out.println("===============title_id:"

    + title_id + ",title_name:" + title_name

    + ",title_name_en:" + title_name_en);

    } catch (Exception e) {

    e.printStackTrace();

    5运行main进行测试,查看打印结果

    打印结果和xls里面的值是一样的,说明读取excel成功

    请大家多多关注我的头条号,谢谢大家

  • ?

    集算器协助java处理多样性数据源之Excel

    夏柳

    展开

    Java程序员读取和计算excel的程序一般要使用poi或其它开源包,这些开源包对编程的支持较为底层,整体学习成本和操作复杂度都很高。使用集算器辅助java处理excel文件就可以避免这些事务。

    下面通过一个例子看一下具体作法:从Excel文件orders.xls中读取订单信息,找出2010年1月1日(含)之后,SELLERID等于18的订单。orders.xls的内容如下:

    实现的思路是:用Java程序调用集算器脚本,读取和计算excel文件中的数据,之后将结果以ResultSet的方式返回给Java程序。由于集算器支持动态表达式解析和求值,使得Java程序可以像使用sql那样,灵活的处理数据。

    首先,程序员可以将条件“2010年1月1日(含)之后,并且SELLERID等于18的订单。”作为参数where传递给esProc程序,如下图:

    where是个字串,其值为:ORDERDATE>=date(2010,1,1) && SELLERID==18。

    esProc的程序代码如下:

    A2:按照条件过滤。这里使用宏来实现动态解析表达式,其中的where就是传入参数。集算器将先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行。这个例子中最终执行的是:=A1.select(ORDERDATE>=date(2010,1,1) && SELLERID==18)。A1:定义一个file对象,导入excel数据。esProc的集成开发环境可以直观的显示出导入的数据,如上图右边部分。importxls函数也可以读写xlsx文件,它会根据文件扩展名自动判断excel的版本。

    A3:将符合条件的结果集返回给java。如果需要将结果写入另外一个excel文件,只要将A3单元格改为:=file("D:/file/orders_result.xls").exportxls@t(A2)。

    过滤条件发生变化时不用改变程序,只需改变where参数即可。例如,条件变为:2010年1月1日(含)之后,并且SELLERID等于18的订单,或者CLIENT等于PWQ的订单。Where的参数值可以写为:CLIENT=="PWQ"||ORDERDATE>=date(2010,1,1) && SELLERID==18。执行之后,A2中的结果集如下图:

    在Java程序中使用esProc JDBC调用这段程序获得结果的代码如下:(将上述esProc程序保存为test.dfx):

    //建立esProc jdbc连接

    Class.forName("com.esproc.jdbc.InternalDriver");

    con= DriverManager.getConnection("jdbc:esproc:local://");

    //调用esProc程序(存储过程),其中test是dfx的文件名

    com.esproc.jdbc.InternalCStatementst =(com.esproc.jdbc.InternalCStatement)con.prepareCall("call test(?)");

    //设置参数

    st.setObject(1,"ORDERDATE>=date(2010,1,1) && SELLERID==18 || CLIENT==\"PWQ\"");//执行esProc存储过程

    ResultSet set =st.executeQuery();

    对于代码较简单的脚本,还可以把代码直接写在调用集算器JDBC的Java程序中,而不必专门编写脚本文件(test.dfx):

    ResultSet set = st.executeQuery(

    "=file(\"D:/file/orders.xls\").importxls@t().select(ORDERDATE>=date(2010,1,1) && SELLERID==18 || CLIENT==\"PWQ\")");

    这段Java代码直接调用了集算器的一句脚本:从Excel文件中取得数据,并按照指定的条件过滤。

  • ?

    SpreadJS ExcelIO实现服务器端Excel导入导出

    慕卉

    展开

    SpreadJS在V10版本后推出了纯前端的Excel导入导出,这个功能可以很方便的实现客户端的Excel导入导出,但是如果用户需要导入导出到浏览器端又该怎么办呢?其实纯前端的Excel导入导出同样可以实现服务器端的Excel导入导出。下面让我们来看一下是如何实现的:

    本示例的后端使用JAVA语言,通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:

    从服务器端导入Excel:

    这部分使用纯前端实现,纯前端实现有一个弊端就是,浏览器没有权限访问服务器上工程目录以外的路径,所以需要将服务器端的Excel放入工程目录下。然后下载到前端直接打开,核心代码如下:

    导出Excel保存至服务器端:

    这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。

    这里有以下需要注意的地方:

    formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:

    之后js中只需要初始化一个该form的formdata实例即可:

    var fd = new FormData(document.forms.namedItem("myform"));

    以上就是核心的部分代码以及原理。

    了解更多

    SpreadJS是 Spread 表格开发系列产品之一。该产品是葡萄城公司出品的一系列功能和 Excel 类似的表格工具,支持桌面、Web 和移动平台开发,用于在应用系统中实现 Excel 导入导出、表格数据录入和编辑等交互功能,并提供灵活的定制能力和丰富的数据可视化效果。

    Spread 是目前市面上最接近 Excel 的表格开发工具,无论是界面、函数还是布局,都与 Excel 高度接近,正被华为、东软、中国平安、河海大学、中通快递、普华永道、魔方网表、思源软件等企业应用于项目开发中。

    除了纯前端的SpreadJS,该系列产品还包括 .NET 平台可用的Spread Studio,和服务器端批量操作Excel的Spread表格组件,敬请登陆官网了解更多:http://gcpowertools/

    关于葡萄城

    葡萄城成立于1980年,是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。葡萄城于1988年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

  • ?

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

    Walkom

    展开

    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有更新,部分操作可能不一样,大家注意下。

    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的两种格式,大部分的操作都是相同的。

    2.3.4 操作步骤

    以HSSF为例,XSSF操作相同。

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

    3、代码操作

    3.1 效果图

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

    Excel文件两种格式各一个:

    代码结构:

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

    导出效果:

    3.2 代码详解

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

    Controller:

    Service

    3.3 导出文件api补充

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

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

    3.3.1 单元格合并

    使用HSSFSheet的addMergedRegion()方法

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

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

    3.3.3 设置单元格样式

    1、创建HSSFCellStyle

    2、设置样式

    3、将样式应用于单元格

    3.3.4设置字体样式

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

    2、设置字体各种样式

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

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

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

    学习Java的同学注意了!!!学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群495273252,我们一起学Java!

  • java实现excel数据导入