文档章节

HSSFWorkBook本地excel导入导出

QH_C
 QH_C
发布于 2014/11/09 10:34
字数 738
阅读 56
收藏 0
点赞 0
评论 0

使用的时候要导入  poi架包

 

一、将数据库中的数据导出到指定计算家:

package com.inspur;

 

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

import javax.servlet.http.HttpServletResponse;

 

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

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

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

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

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

 

/**

 * @author WHD 2014-11-3

 */

// 导出excel到本机指定的位置

public class HssfTest {

public static void main(String[] args) throws FileNotFoundException {

// 保存的位置

File file = new File("G:/hssf.xls");

FileOutputStream output = new FileOutputStream(file);

// 工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

// 创建工作页对象

HSSFSheet sheet = workbook.createSheet();

// 通过循环创建行 创建列,通过添加数据,但是这里有个问题如果获取的数据的列数不是固定的话就要动态生成第一行

// 这里简单设定读取的是一个user对象的数所以列数是固定的,

// 创建一行是用来输出表头信息的

HSSFRow row = sheet.createRow(0);

// 创建列对象

HSSFCell cell = null;

// 数据保存在list 也就是表头信息

List<String> list = new ArrayList<>();

list.add("name");

list.add("age");

list.add("sex");

for (int i = 0; i < 3; i++) {

// 创建i

cell = row.createCell(i);

// 给这个具体的单元格赋值

cell.setCellValue(list.get(i));

}

// 数据库中查询出来的数据 即对象

List<Student> lists = new ArrayList<>();

Student st1 = new Student();

st1.setName("st1name");

st1.setAge("st1age");

st1.setSex("st1sex");

Student st2 = new Student();

st2.setName("st2name");

st2.setAge("st2age");

st2.setSex("st2sex");

lists.add(st1);

lists.add(st2);

// 一个对象就是一行

for (int j = 0; j < lists.size(); j++) {

// 获取数据

Student stu = lists.get(j);

row = sheet.createRow(j + 1);

// 因为一行有多列 而每循环一行就要创建n列所以使用列数组

HSSFCell[] celldata = new HSSFCell[3];

for (int c = 0; c < 3; c++) {

celldata[c] = row.createCell(c);

}

// 给第一列赋值

celldata[0].setCellValue(stu.getName());

celldata[1].setCellValue(stu.getAge());

celldata[2].setCellValue(stu.getSex());

 

}

try {

workbook.write(output);

output.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

}

 

}

 

 

二、将指定磁盘文件中的excel文件导入数据库

package com.inspur;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

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

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

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

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

 

/**

 *@author WHD

 *2014-11-8

 */

// 从本机指定的位置导入excel

public class HssfTestImp {

public static void main(String[]args) throws IOException{

// 指定导入文件

File  file= new File("G:/test.xls");

FileInputStream input= new FileInputStream(file);

// 获得了指定文件中的excel 文件

HSSFWorkbook  book= new HSSFWorkbook(input);

HSSFSheet  sheet= book.getSheetAt(0);

// 获取这个文件的总行数,并进行循环取值

Map<String,Object> map= new HashMap<>();

// 这里是从0开始的所以要加1不然最后一行不会被读取

for(int i=0;i<sheet.getLastRowNum()+1;i++){

// 保存行的数据

List<String > list= new ArrayList<>();

//获取当前行

HSSFRow  row=sheet.getRow(i);

//获取一行的所有列的值

for(int j=0;j<row.getLastCellNum();j++){

// 获取当前行当前列的值并进行保存

HSSFCell  cell= row.getCell(j);

//要对列进行类型的转化

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

list.add(cell.getStringCellValue());

}

map.put("name"+i, list);

list=null;

}

// map中存放了 list而一个list就是一行,所以这个map就是一个sheet页面

// 遍历取出每一行

    for(int va=0;va<map.size();va++){

            List<String > Vlist= new ArrayList<>();

             Vlist=(List)map.get("name"+va);

             // 遍历取出每一列

             for(int val=0;val<Vlist.size();val++){

                     // 获取一行数据

                     System.out.print(Vlist.get(val) +" ");

             }

             System.out.println("\n");

    }

}

}

 

© 著作权归作者所有

共有 人打赏支持
QH_C
粉丝 1
博文 75
码字总数 69153
作品 0
朝阳
程序员
java实现excel的导入导出(poi)

首先我们要知道MS excel文件由什么组成,比如说sheet(一个工作表格),表格的行,单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个类。 一个excel表格:HSSFWorkbook wb = n...

黎嘉诚
2016/07/31
720
0
poi导入数据到excel模版 如何选择下拉列表的值(数据有效性)

从数据库中导入数据到 现有的excel模版 并从浏览器输出下载 excel模版中有的列是下拉列表(即设置了数据有效性)如图 代码如下 myout=response.getOutputStream(); //读出文件到i/o流 InputS...

isme007
2015/08/26
1K
1
JSP上传文件与导出Excel表

班级编号:VIP14 学员名字:端碗吹水 课程名称:JSP上传文件与导出Excel表 上课时间:2017-12-23 JSP上传文件 我们可以通过Apache的fileupload组件来实现jsp上传文件,这样就不需要自己去写具...

ZeroOne01
2017/12/24
0
0
Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表

在上一篇博客中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式。不仅仅简单的读取office中的数据.尤其是在生产管理...

长平狐
2012/11/12
1K
0
使用ExcelUtils导出Excel

原来导出Excel的方式:https://my.oschina.net/springMVCAndspring/blog/1830460 工具类及jar下载路径: https://gitee.com/Luck_Me/ExcelUtis/tree/master 参考文档:https://www.oschina.n......

Lucky_Me
07/11
0
0
mvc导入excel到数据库(不经过JavaScript)

excel导入到数据库,这个步骤是什么? html接收到excel,后台代码接收到excel,判断格式,(xls和xlsx)。 逐行找到各个列的信息,赋值给类的字段。 进行数据库添加! 看一下html代码 //将E...

iwuio
01/14
0
0
ssm 框架下 导出Excel

1.效果 2.实现过程 2.1 导入jar <!-- 13.excel导出 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.10-FINAL</version> </de......

Lucky_Me
06/14
0
0
appache POI 导入和导出

项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) 1. import java.io.FileInputStream; 2. import java.io....

lzw_me
2014/07/31
0
0
Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)

通用excel与对象相互转换的工具类 前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善。 使用说明:...

宇的季节
02/24
0
0
mvc导出excel

导出excel,怎么导出呢?这个原理是什么呢? 首先在html页面添加单击方法,触发controllers中的方法。怎么触发controllers中导出的方法呢? 在js中的事件中可以这样写。 function xport() {...

iwuio
01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
6分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
18分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
20分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
35分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
37分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
47分钟前
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
49分钟前
0
0
Artificial Intelligence Yourself

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流...

孟飞阳
今天
0
0
press.one个人数字签名

这是我在press.one的数字签名 https://press.one/p/address/v?s=9d3d5b7ce019af357ab994775549e8f047a5b17fc9893364652fc67e4b95443b38ccb24c6655e0d252dd0154369eb9b7717c4ccf4e1835ca3596......

NateHuang
今天
1
0
Oracle 中的 SQL 分页查询原理和方法详解

本文分析并介绍 Oracle 中的分页查找的方法。 Oracle 中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是 ROWID(行标示符)和 ROWNUM(行号),即使我们使用...

举个_栗子
今天
4
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部