文档章节

HSSFWorkBook本地excel导入导出

QH_C
 QH_C
发布于 2014/11/09 10:34
字数 738
阅读 56
收藏 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
152.使用ExcelUtils导出Excel

建议:使用ajax请求,因为这种发生是直接下载指定位置,使用Ajax回调函数给用户提示 原来导出Excel的方式:https://my.oschina.net/springMVCAndspring/blog/1830460 工具类及jar下载路径: h...

Lucky_Me
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis大key搜索

一、背景信息 Redis 提供了 list、hash、zset 等复杂类型的数据结构,业务在使用的时候可能由于 key 设计不合理导致某个 key 过大。由于 redis 简单的单线程模型,业务在获取或者删除大 key ...

IT--小哥
13分钟前
0
0
Tcl命令操作实验-----(5)

Vivado% proc myproc {arg} {puts $arg}Vivado% myproc mynamemynameVivado% if {2>1} {puts 2>1} else {puts 2<1}2>1...

whoisliang
29分钟前
0
0
比特币钱包RPC的PHP调用方法

当我们希望在Php开发的网站中加入比特币支付功能时,需要解决的第一个 问题,就是如何在Php程序代码中调用比特币钱包的RPC API开发接口来实现 我们期望的功能,例如比特币的支付与接收。 例如...

汇智网教程
29分钟前
0
0
crunch 練習

crunch 10 10 -t 09%%%%%%%% -o tw_mobile_number.lst

BaiyuanLab
46分钟前
0
0
Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上) Kafka设计解析...

九州暮云
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部