java的poi技术读取和导入Excel
转http://www.cnblogs.com/hongten/archive/2012/02/22/java2poi.html
用到的Excel文件:
项目结构:
XlsMain .java 类
//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)
|
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; 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; public class XlsMain
{ public
static void main(String[]
args) throws IOException { XlsMain
xlsMain = new XlsMain(); XlsDto
xls = null ; List
list = xlsMain.readXls(); try
{ XlsDto2Excel.xlsDto2Excel(list); }
catch (Exception e) { e.printStackTrace(); } for
( int i =
0 ; i <
list.size(); i++) { xls
= (XlsDto) list.get(i); System.out.println(xls.getXh()
+ " + xls.getXm() +
" +
xls.getYxsmc() + " + xls.getKcm() +
" +
xls.getCj()); } } private
List readXls() throws IOException
{ InputStream
is = new FileInputStream( "pldrxkxxmb.xls" ); HSSFWorkbook
hssfWorkbook = new
HSSFWorkbook(is); XlsDto
xlsDto = null ; List
list = new ArrayList(); //
循环工作表Sheet for
( int numSheet
= 0 ; numSheet < hssfWorkbook.getNumberOfSheets();
numSheet++) { HSSFSheet
hssfSheet = hssfWorkbook.getSheetAt(numSheet); if
(hssfSheet == null ) { continue ; } //
循环行Row for
( int rowNum =
1 ; rowNum
<= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow
hssfRow = hssfSheet.getRow(rowNum); if
(hssfRow == null ) { continue ; } xlsDto
= new XlsDto(); //
循环列Cell //
0学号 1姓名 2学院 3课程名 4 成绩 //
for (int cellNum = 0; cellNum <=4; cellNum++) { HSSFCell
xh = hssfRow.getCell( 0 ); if
(xh == null ) { continue ; } xlsDto.setXh(getValue(xh)); HSSFCell
xm = hssfRow.getCell( 1 ); if
(xm == null ) { continue ; } xlsDto.setXm(getValue(xm)); HSSFCell
yxsmc = hssfRow.getCell( 2 ); if
(yxsmc == null ) { continue ; } xlsDto.setYxsmc(getValue(yxsmc)); HSSFCell
kcm = hssfRow.getCell( 3 ); if
(kcm == null ) { continue ; } xlsDto.setKcm(getValue(kcm)); HSSFCell
cj = hssfRow.getCell( 4 ); if
(cj == null ) { continue ; } xlsDto.setCj(Float.parseFloat(getValue(cj))); list.add(xlsDto); } } return
list; } @SuppressWarnings ( "static-access" ) private
String getValue(HSSFCell hssfCell)
{ if
(hssfCell.getCellType() ==
hssfCell.CELL_TYPE_BOOLEAN) { //
返回布尔类型的值 return
String.valueOf(hssfCell.getBooleanCellValue()); }
else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC)
{ //
返回数值类型的值 return
String.valueOf(hssfCell.getNumericCellValue()); }
else { //
返回字符串类型的值 return
String.valueOf(hssfCell.getStringCellValue()); } } } |
XlsDto2Excel.java类
//该类主要负责向Excel(2003版)中插入数据
import java.io.FileOutputStream; import java.io.OutputStream; import java.util.List; 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; public class XlsDto2Excel
{ public
static void xlsDto2Excel(List xls) throws Exception
{ //
获取总列数 int
CountColumnNum = xls.size(); //
创建Excel文档 HSSFWorkbook
hwb = new HSSFWorkbook(); XlsDto
xlsDto = null ; //
sheet 对应一个工作页 HSSFSheet
sheet = hwb.createSheet( "pldrxkxxmb" ); HSSFRow
firstrow = sheet.createRow( 0 );
// 下标为0的行开始 HSSFCell[]
firstcell = new
HSSFCell[CountColumnNum]; String[]
names = new String[CountColumnNum]; names[ 0 ]
= "学号" ; names[ 1 ]
= "姓名" ; names[ 2 ]
= "学院" ; names[ 3 ]
= "课程名" ; names[ 4 ]
= "成绩" ; for
( int j =
0 ; j <
CountColumnNum; j++) { firstcell[j]
= firstrow.createCell(j); firstcell[j].setCellValue( new
HSSFRichTextString(names[j])); } for
( int i =
0 ; i <
xls.size(); i++) { //
创建一行 HSSFRow
row = sheet.createRow(i + 1 ); //
得到要插入的每一条记录 xlsDto
= xls.get(i); for
( int colu =
0 ; colu
<= 4 ; colu++) { //
在一行内循环 HSSFCell
xh = row.createCell( 0 ); xh.setCellValue(xlsDto.getXh()); HSSFCell
xm = row.createCell( 1 ); xm.setCellValue(xlsDto.getXm()); HSSFCell
yxsmc = row.createCell( 2 ); yxsmc.setCellValue(xlsDto.getYxsmc()); HSSFCell
kcm = row.createCell( 3 ); kcm.setCellValue(xlsDto.getKcm()); HSSFCell
cj = row.createCell( 4 ); cj.setCellValue(xlsDto.getCj()); (xlsDto.getMessage()); } } //
创建文件输出流,准备输出电子表格 OutputStream
out = new FileOutputStream( "POI2Excel/pldrxkxxmb.xls" ); hwb.write(out); out.close(); System.out.println( "数据库导出成功" ); } } |
XlsDto .java类
//该类是一个实体类
public class XlsDto
{ private
Integer xkh; private
String xh; private
String xm; private
String yxsmc; private
Integer kch; private
String kcm; private
float cj; public
Integer getXkh() { return
xkh; } public
void setXkh(Integer xkh) { this .xkh
= xkh; } public
String getXh() { return
xh; } public
void setXh(String xh) { this .xh
= xh; } public
String getXm() { return
xm; } public
void setXm(String xm) { this .xm
= xm; } public
String getYxsmc() { return
yxsmc; } public
void setYxsmc(String yxsmc) { this .yxsmc
= yxsmc; } public
Integer getKch() { return
kch; } public
void setKch(Integer kch) { this .kch
= kch; } public
String getKcm() { return
kcm; } public
void setKcm(String kcm) { this .kcm
= kcm; } public
float getCj() { return
cj; } public
void setCj( float
cj) { this .cj
= cj; } } |
后台输出:
数据库导出成功
1.0
2.0
3.0
4.0
5.0