文档章节

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
mvc导入excel到数据库(不经过JavaScript)

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

iwuio
01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
4
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
6
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部