java poi导入EXCEL

来源:互联网 发布:淘宝代码装修视频 编辑:程序博客网 时间:2024/05/17 03:13

import java.io.BufferedInputStream; 

import java.io.File; 

import java.io.FileInputStream; 

import java.io.FileNotFoundException; 

import java.io.IOException;  

import java.text.DecimalFormat; 

import java.text.SimpleDateFormat; 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Date; 

import java.util.List; 

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

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

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

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

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

import org.apache.poi.poifs.filesystem.POIFSFileSystem; 

public class TextExcel {

public static void main(String[] args) {

String path="d://model.xls";//文件路径

try {

File files = new File(path);    

String[ ][ ] result = getData(files, 1);    

if (result != null) {     

int rowLength = result.length;     

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

for (int j = 0; j < result[i].length; j++) {      

System.out.println(result[i][j]+"单元格ID:"+i+" "+j);     

  }      

System.out.println();     

}   

}   

} catch (Exception e) {    

e.printStackTrace();   

}  

}   

/**   

 * 读取EXCEL   

 *   

 * @param firstrow 从第几行开始读取  

 * @return 读取后返回数组   

*/  

@SuppressWarnings("deprecation")  

public static String[][] getData(File file, int firstrow)    throws FileNotFoundException, IOException {   

List<String[]> result = new ArrayList<String[]>();   

int rowSize = 0;   

BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));   

POIFSFileSystem fs = new POIFSFileSystem(in);   

HSSFWorkbook wb = new HSSFWorkbook(fs);  

HSSFCell cell = null;   

for (int sheetIndex = 0;sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {   

HSSFSheet st = wb.getSheetAt(sheetIndex);    

for (int rowIndex = firstrow; rowIndex <= st.getLastRowNum(); rowIndex++) {     

HSSFRow row = st.getRow(rowIndex);     

if (row == null) {      

continue;     

}     

int tempRowSize = row.getLastCellNum() + 1;     

if (tempRowSize > rowSize) {      

rowSize = tempRowSize;     

}     

String[ ] values = new String[rowSize];     

Arrays.fill(values, " ");     

boolean hasValue = false;      

for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {      

String value = " ";       

cell = row.getCell(columnIndex);      

if (cell != null) {       

switch (cell.getCellType()) {       

case HSSFCell.CELL_TYPE_STRING://读取的格式为字符串        

value = cell.getStringCellValue();        

break;       

case HSSFCell.CELL_TYPE_NUMERIC://读取的格式为数组        

//如果格式为日期格式,自定义格式输出        

if (HSSFDateUtil.isCellDateFormatted(cell)) {         

Date date = cell.getDateCellValue();         

if (date != null) {          

value = new SimpleDateFormat("yyyy-MM-dd").format(date);         

} else {          

value = " ";         

}        

} else {         

//如果格式为数值,自定义格式输出         

value = new DecimalFormat("0.00").format(cell.getNumericCellValue());        

}        

break;       

case HSSFCell.CELL_TYPE_FORMULA:        

// 导入时如果为公式生成的数据则无值        

value = " ";        

break;        

// 导入时如果为空       

case HSSFCell.CELL_TYPE_BLANK:        

break;       

case HSSFCell.CELL_TYPE_ERROR:        

value = " ";        

break;

//  导入时如果为BOOLEAN型 自定义格式输出       

case HSSFCell.CELL_TYPE_BOOLEAN:        

value = (cell.getBooleanCellValue() == true ? "Y" : "N");        

break;       

default:

value = " ";       

}       

}        

values[columnIndex] = rightTrim(value);      

hasValue = true;      

}       

if (hasValue) {      

result.add(values);     

}     

}      

in.close();    

String[ ][ ] returnArray = new String[result.size()][rowSize];    

for (int i = 0; i < returnArray.length; i++) {     

returnArray[i] = (String[]) result.get(i);    

}    

return returnArray;   

}    

return null;    

}    

/**    

 * 去掉字符串右边的空格   

 *     

 * @param str 要处理的字符串   

 * @return 处理后的字符串   

*/   

public static String rightTrim(String str) {   

if (str == null) {    

return " ";   

}   

int length = str.length();   

for (int i = length - 1; i >= 0; i--) {    

if (str.charAt(i) != 0x20) {     

break;    

}    

length--;   

}   

return str.substring(0, length);  

}   

}

0 0
原创粉丝点击