Excel类
2012-3-8 13:39| 发布者: benben| 查看: 203| 评论: 0
摘要: package com.ly.utils;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;impor ...
package com.ly.utils;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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 ExcelOpearate {
/**
* 读取Excel的内容,第一维数组储存的是一行中格列的值,二维数组中储存的是多少行
*
* @param file
* 读取数据源Excel
* @param ignoreRows
* 读取数据忽略的行数,
* @return 读出的Excel中数据的内容
* @throws IOException
*/
public static String[][] getData(File file, int ignoreRows)
throws IOException {
List result = new ArrayList();
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 = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/false;
for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
String valuehttp://www.cnblogs.com/lovexinsky/archive/2012/03/08/= "";
cell = row.getCell(columnIndex);
if (cell != null) {
// 注意:一定要設成這個。否則可能會出現亂碼
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
if (date != null) {
value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/new SimpleDateFormat("yyyy-MM-dd")
.format(date);
} else {
valuehttp://www.cnblogs.com/lovexinsky/archive/2012/03/08/= "";
}
} else {
// value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/new DecimalFormat("0").format(cell
// .getNumericCellValue());
value =http://www.cnblogs.com/lovexinsky/archive/2012/03/08/String.valueOf(cell.getNumericCellValue()+"");
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
// 导入时如果为公式生成的数据则无值
if (!cell.getStringCellValue().equals("")) {
value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/cell.getStringCellValue();
} else {
value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/cell.getNumericCellValue() +"";
}
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
valuehttp://www.cnblogs.com/lovexinsky/archive/2012/03/08/= "";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
value = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/(cell.getBooleanCellValue() == true ? "Y"
: "N");
break;
default:
valuehttp://www.cnblogs.com/lovexinsky/archive/2012/03/08/= "";
}
}
if (columnIndex == 0 && value.trim().equals("")) {
break;
}
values[columnIndex] = rightTrim(value);
hasValue = http://www.cnblogs.com/lovexinsky/archive/2012/03/08/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;
}
/**
* 去掉字符串右边的空格
*
* @param str
* 要处理的字符串
* @return 处理后的字符串
*/
public static String rightTrim(String str) {
// TODO Auto-generated method stub
if (str == "") {
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);
}
}
本文档为【Excel类】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。