您的位置:首页 > 编程语言 > Java开发

Java读取Excel内容

2017-01-04 08:31 295 查看
[java] view
plain copy

借助于apathe的<a target="_blank" href="http://files.cnblogs.com/gmq/poi.rar">poi.jar</a>,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可<p>本例使用<a href="http://lib.csdn.net/base/javase" class="replace_word" title="Java SE知识库" target="_blank" style="color:#df3434; font-weight:bold;">Java</a>来读取excel的内容并展出出结果,代码如下:</p>  

[java] view
plain copy

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;  

  

importorg.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;  

  

  

publicclass ExcelOperate {  

  

  

publicstaticvoid main(String[] args)throws Exception {  

  

File file = new File("ExcelDemo.xls");  

  

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

  

int rowLength = result.length;  

  

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

  

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

  

System.out.print(result[i][j]+"\t\t");  

  

}  

  

System.out.println();  

  

}  

  

  

}  

  

/** 

 

*读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行 

 

*@paramfile读取数据的源Excel 

 

*@paramignoreRows读取数据忽略的行数,比喻行头不需要读入忽略的行数为1 

 

*@return读出的Excel中数据的内容 

 

*@throwsFileNotFoundException 

 

*@throwsIOException 

 

*/  

  

publicstatic String[][] getData(File file,int ignoreRows)  

  

throws FileNotFoundException, IOException {  

  

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

  

int rowSize = 0;  

  

BufferedInputStream in = new BufferedInputStream(new FileInputStream(  

  

file));  

  

// 打开HSSFWorkbook  

  

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 = ignoreRows; 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) {  

  

// 注意:一定要设成这个,否则可能会出现乱码  

  

cell.setEncoding(HSSFCell.ENCODING_UTF_16);  

  

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").format(cell  

  

.getNumericCellValue());  

  

}  

  

break;  

  

case HSSFCell.CELL_TYPE_FORMULA:  

  

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

  

if (!cell.getStringCellValue().equals("")) {  

  

value = cell.getStringCellValue();  

  

} else {  

  

value = cell.getNumericCellValue() + "";  

  

}  

  

break;  

  

case HSSFCell.CELL_TYPE_BLANK:  

  

break;  

  

case HSSFCell.CELL_TYPE_ERROR:  

  

value = "";  

  

break;  

  

case HSSFCell.CELL_TYPE_BOOLEAN:  

  

value = (cell.getBooleanCellValue() == true ?"Y"  

  

: "N");  

  

break;  

  

default:  

  

value = "";  

  

}  

  

}  

  

if (columnIndex == 0 && value.trim().equals("")) {  

  

break;  

  

}  

  

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;  

  

}  

  

  

/** 

 

*去掉字符串右边的空格 

 

*@paramstr要处理的字符串 

 

*@return处理后的字符串 

 

*/  

  

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

  

}  

  

}  

本文转自--http://blog.csdn.net/ygzk123/article/details/12623985
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Excel