Java实现导入导出Excel文件的方法(poi,jxl)

目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel直接上代码:

一,POI

POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007。poi现在一直有更新。所以现在主流使用POI。

xls:

pom:

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>3.9</version>
</dependency>
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.2</version>
</dependency>

导出:

public class PoiCreateExcel {

 public static void main(String[] args) {
  // 创建表头
  String[] title = {"id","name","sex"};
  //创建Excel工作薄
  HSSFWorkbook workbook = new HSSFWorkbook();
  //创建一个工作表sheet
  HSSFSheet sheet = workbook.createSheet();
  //创建第一行
  HSSFRow row = sheet.createRow(0);
  HSSFCell cell = null;
  // 插入第一行
  for (int i = 0; i < title.length; i++) {
   cell = row.createCell(i);
   cell.setCellValue(title[i]);
  }
  // 追加数据
  for (int i = 1; i < 10; i++) {// 这里的int 起始是1 也就是第二行开始
   HSSFRow nexTrow = sheet.createRow(i);
   HSSFCell cell2 = nexTrow.createCell(0);
   cell2.setCellValue("a"+i);
   cell2 = nexTrow.createCell(1);
   cell2.setCellValue("user");
   cell2 = nexTrow.createCell(2);
   cell2.setCellValue("男");
  }
  // 创建一个文件
  File file = new File("d:/poi.xls");
  try {
   file.createNewFile();
   // 将内容存盘
   FileOutputStream stream = FileUtils.openOutputStream(file);
   workbook.write(stream);

   stream.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

导入:

public class PoiReadExcel {

 public static void main(String[] args) {

  // 引入需要解析的文件
  File file = new File("d:/poi.xls");
  try {
   // 创建Excel 读取文件内容
   HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
   /**
    * 第一种方式读取Sheet页
    */
//   HSSFSheet sheet = workbook.getSheet("Sheet0");
   /**
    * 第二种方式读取Sheet页
    */
   HSSFSheet sheet = workbook.getSheetAt(0);
   int firstRowNum = 0;// 起始行第0行
   int lasrRowNum = sheet.getLastRowNum();// 一直读到最后一行
   for (int i = 0; i < lasrRowNum; i++) {
    HSSFRow row = sheet.getRow(i);
    // 获取当前最后单元格列号
    int lastCellNum = row.getLastCellNum();
    for (int j = 0; j < lastCellNum; j++) {
     HSSFCell cell = row.getCell(j);
     String value = cell.getStringCellValue();// 注意! 如果Excel 里面的值是String 那么getStringCellValue 如果是其他类型 则需要修改
     System.out.print(value + " ");
    }
    System.out.println();
   }

  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

xlsx:

pom:

<!-- poi高版本额外包 -->
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-examples</artifactId>
	<version>3.9</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-excelant</artifactId>
	<version>3.9</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
 	<artifactId>poi-ooxml</artifactId>
	<version>3.9</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml-schemas</artifactId>
	<version>3.9</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-scratchpad</artifactId>
 	<version>3.9</version>
</dependency>

导出:

public class PoiCreateExcel {

 public static void main(String[] args) {
  // 创建表头
  String[] title = {"id","name","sex"};
  //创建Excel工作薄
  XSSFWorkbook workbook = new XSSFWorkbook();
  //创建一个工作表shheet
  Sheet sheet = workbook.createSheet();
  //创建第一行
  Row row = sheet.createRow(0);
  Cell cell = null;
  // 插入第一行
  for (int i = 0; i < title.length; i++) {
   cell = row.createCell(i);
   cell.setCellValue(title[i]);
  }
  // 追加数据
  for (int i = 1; i < 10; i++) {// 这里的int 起始是1 也就是第二行开始
   Row nexTrow = sheet.createRow(i);
   Cell cell2 = nexTrow.createCell(0);
   cell2.setCellValue("a"+i);
   cell2 = nexTrow.createCell(1);
   cell2.setCellValue("user");
   cell2 = nexTrow.createCell(2);
   cell2.setCellValue("男");
  }
  // 创建一个文件
  File file = new File("d:/poi.xlsx");// 这里可以修改成高版本的
  try {
   file.createNewFile();
   // 将内容存盘
   FileOutputStream stream = FileUtils.openOutputStream(file);
   workbook.write(stream);

   stream.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

导入:

public class PoiReadExcel {
 public List<Double> readExcels(InputStream is)throws Exception{
  List<Double> xlsxList = new ArrayList<Double>();
  try {
   if(is ==null){
    throw new IOException("文件不正确!");
   }
   Workbook workbook = WorkbookFactory.create(is);
   FormulaEvaluator fe = workbook.getCreationHelper().createFormulaEvaluator();
   //获取第一张表
   Sheet sheet = workbook.getSheetAt(0);
   if(sheet == null){
    throw new IOException("传入的excel的第一张表为空!");
   }
   for(int rowNum = 0;rowNum <= sheet.getLastRowNum(); rowNum++){
    Row row = sheet.getRow(rowNum);
    if(row != null){
     //获得当前行的开始列
     int firstCellNum = row.getFirstCellNum();
     //获得当前行的列数
     int lastCellNum = row.getPhysicalNumberOfCells();
     String result = "";
     //循环当前行
     for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){
      Cell cell = row.getCell(cellNum);
      double value = 0;
      String valueString = cell.getStringCellValue();
      if(null!=fe.evaluate(cell)){
       value = fe.evaluate(cell).getNumberValue();
      }
      //result = result + cellNum + ":"+value + "----";
      result = result + cellNum + ":"+valueString + "----";
     }
     System.out.println(result + " ");
    }
   }
   is.close();
  } catch (FileNotFoundException e) {
  throw new Exception("文件不正确!");
 }
  return xlsxList;
 }

 public static void main(String[] args) throws Exception {
  InputStream is = new FileInputStream("d:/poi.xlsx");
  PoiReadExcel re = new PoiReadExcel();
  re.readExcels(is);
 }
}

二,JXL

JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护。

pom:

<!-- jxl -->
<dependency>
	<groupId>net.sourceforge.jexcelapi</groupId>
	<artifactId>jxl</artifactId>
	<version>2.6.10</version>
</dependency>

导出:

public class JxlCreateExcel {

 public static void main(String[] args) {
  // 首先设置表格第一行 表格头名称 也就是列名
  String [] title = {"id","name","sex"};
  // 创建Excel文件 存入路径
  File file = new File("d:/jxl.xls");
  try {
   file.createNewFile();
   // 创建工作薄
   WritableWorkbook workbook = Workbook.createWorkbook(file);
   // 创建sheet
   WritableSheet sheet = workbook.createSheet("sheet1",0);
   // 添加数据
   Label label = null;
   // 第一行设置列名
   for (int i = 0; i < title.length; i++) {
    label = new Label(i,0,title[i]);
    sheet.addCell(label);
   }
   // 追加数据 从第二行开始 i从1开始
   for (int i = 1; i < 9; i++) {
    label = new Label(0,i,"id:"+i);
    sheet.addCell(label);
    label = new Label(1,i,"user");
    sheet.addCell(label);
    label = new Label(2,i,"男");
    sheet.addCell(label);
   }
   // 写入 并在最后关闭流
   workbook.write();
   workbook.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

导入:

public class JxlReadExcel {

 public static void main(String[] args) {
  try {
   // 创建 Workbook
   Workbook workbook = Workbook.getWorkbook(new File("d:/jxl.xls"));
   // 获取工作表sheet
   Sheet sheet = workbook.getSheet(0);
   // 获取数据
   for (int i = 0; i < sheet.getRows(); i++) {// 获取行
    for (int j = 0; j < sheet.getColumns(); j++) {// 获取列
     Cell cell = sheet.getCell(j,i);
     System.out.print(cell.getContents() + " ");// 得到单元格的内容
    }
    System.out.println();
   }
   workbook.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

到此,代码可直接部署运行,希望可以帮助到你~

总结

到此这篇关于Java实现导入导出Excel文件的方法(poi,jxl)的文章就介绍到这了,更多相关java实现导入导出excel文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java POI实现将导入Excel文件的示例代码

    问题描述 现需要批量导入数据,数据以Excel形式导入. POI介绍 我选择使用的是apache POI.这是有Apache软件基金会开放的函数库,他会提供API给java,使其可以对office文件进行读写. 我这里只需要使用其中的Excel部分. 实现 首先,Excel有两种格式,一种是.xls(03版),另一种是.xlsx(07版).针对两种不同的表格格式,POI对应提供了两种接口.HSSFWorkbook和XSSFWorkbook 导入依赖 <dependency> <group

  • Java中easypoi导入excel文件列名相同的处理方案

    Easypoi是什么 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出.Excel模板导出.Excel导入.Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法 开源地址:https://gitee.com/lemur/easypoi 独特的功能 基于注解的导入导出,修改注解就可以修改Excel 支持常用的样式自定义 基于map可以灵活定义的表头字段 支持一堆多的导出,导入 支持模板的导出,一些

  • Java数据导入功能之读取Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 (1)每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示

  • Java数据导出功能之导出Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java写入数据到excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 可以参见:http://www.jb51.net/article/686

  • java导出大批量(百万以上)数据的excel文件

    本文实例为大家分享了java导出百万以上数据的excel文件,供大家参考,具体内容如下 1.传统的导出方式会消耗大量的内存,2003每个sheet页最多65536条数据,2007每个sheet页可以达到100万条数据以上,2007会在生成Workbook时清理数据,所以2007导出量更大; 2.可以导出多个excel文件到某个目录中,然后打包下载; 3.导出excel格式的xml文件,这种方式可以分批导出数据,适用于大批量数据的导出,以下简单介绍这种方式: 代码如下: package com.e

  • JavaWeb导出Excel文件并弹出下载框

    一.引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 二.相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 三.关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件

  • Java实现导入导出Excel文件的方法(poi,jxl)

    目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel直接上代码: 一,POI POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007.poi现在一直有更新.所以现在主流使用POI. xls: pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi

  • JSP导出Excel文件的方法

    本文实例讲述了JSP导出Excel文件的方法.分享给大家供大家参考,具体如下: <%@page import="jxl.Workbook,com.ecc.emp.core.*,com.ecc.emp.data.*,com.ecc.emp.jdbc.ConnectionManager,jxl.format.VerticalAlignment,java.sql.*,jxl.write.*,jxl.format.UnderlineStyle,javax.sql.DataSource"%

  • Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】

    本文实例讲述了Yii框架使用PHPExcel导出Excel文件的方法.分享给大家供大家参考,具体如下: 最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: // autoloading model and component classes 'import'=>array( /*'application.modules.srbac.controllers.SBas

  • thinkphp5.1 框架导入/导出excel文件操作示例

    本文实例讲述了thinkphp5.1 框架导入/导出excel文件操作.分享给大家供大家参考,具体如下: thinkphp5.1 导入excel文件 public function importExcel() { try { //获取表格的大小,限制上传表格的大小 if ($_FILES['file']['size'] > 10 * 1024 * 1024) { //文件过大 log_debug($log_title . 'END === MSG:' . '文件过大'); parent::end

  • React实现导入导出Excel文件

    目录 表示层 业务层 核心插件xlsx excel 导入 excel 导出 excel 导出插件(js-export-excel) 实现效果 结语 表示层 这里我是使用的是antd的Upload上传组件 引用antd部分代码 import { Button,Table,Upload } from 'antd'; <Upload {...props} fileList={state.fileList}> <Button type="primary" >Excel导

  • JavaScript 中使用SpreadJS导入和导出 Excel 文件的方法

    目录 设置 JavaScript 电子表格项目 添加 Excel 导入代码 将数据添加到导入的 Excel 文件 添加迷你图 添加 Excel 导出代码 JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它.技术圈有一句很经典的话“凡是能用JavaScript实现的东西,最后都会用JavaScript实现”.Excel 电子表格自 1980 年代以来一直为各行业所广泛使用,至今已拥有超过3亿用户,大多数人都熟悉 Exc

  • SSM框架使用poi导入导出Excel的详细方法

    1.首先我们先导入poi和文件上传的依赖 <!--POI--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.14-beta1</version> </dependency> <!--文件上传依赖--> <dependency&

  • C#数据导入/导出Excel文件及winForm导出Execl总结

    一.asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,\t分隔的数据,导出execl时,等价于分列,\n等价于换行. 1.将整个html全部输出execl 此法将html中所有的内容,如按钮,表格,图片等全部输出到Execl中. 复制代码 代码如下: Response.Clear(); Response.Buffer= t

  • C#导入导出EXCEL文件的代码实例

    复制代码 代码如下: using System;using System.Data;using System.Data.OleDb; namespace ZFSoft.Joint{    public class ExcelIO    {        private int _ReturnStatus;        private string _ReturnMessage; /// <summary>        /// 执行返回状态        /// </summary&g

随机推荐