HSSFWorkBook本地excel導入導出

使用的時候要導入  poi架包java

 

1、將數據庫中的數據導出到指定計算家:c++

package com.inspur;數據庫

 

import java.io.File;apache

import java.io.FileNotFoundException;數組

import java.io.FileOutputStream;spa

import java.io.IOException;.net

import java.util.ArrayList;excel

import java.util.List;對象

 

import javax.servlet.http.HttpServletResponse;get

 

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();

}

 

}

 

}

 

 

2、將指定磁盤文件中的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");

    }

}

}

相關文章
相關標籤/搜索