- 浏览: 700156 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
cuqing:
laogao598599 写道匿名内部类不一定是局部内部类,还 ...
匿名内部类访问外部类中的局部变量必须是final属性 -
laogao598599:
匿名内部类不一定是局部内部类,还可以作为成员变量
匿名内部类访问外部类中的局部变量必须是final属性 -
stand_star:
非常给力!
struts2验证规则配置文件命名方式 -
wenlongsust:
嗯, 将返回值修改为html的确就可以了
EasyUI form ajax submit后,在IE下提示下载内容的解决办法 -
勇往直前wwt:
这样是自动增长,但每次id还得插入,如何只插入其他字段而让id ...
把主键定义为自动增长标识符类型
http://tool.oschina.net/apidocs/apidoc?api=apache-POI
处理excel可以用jxl.jar和 aphace的poi
jxl.jar停止更新了,只能用其处理2003格式 Excel
aphace的poi,可以处理2003和2007
public static List<String[]> readExcel(File file) throws IOException{
//取文件名
String filename = file.getName();
//取文件后缀
String subfix = filename.lastIndexOf(".")==-1? "" : filename.substring(filename.lastIndexOf(".")+1);
System.out.println(subfix);
//获取读取的数据
List<String[]> result = new ArrayList<String[]>();
if(subfix.equals("xls")){
result = readExcel2003(file);
}else if(subfix.equals("xlsx")){
result = readExcel2007(file);
System.out.println(result);
}else{
throw new IOException("文件格式不正确");
}
return result;
}
private static List<String[]> readExcel2007(File file) throws IOException {
//存放获取的数据
List<String[]> result = new ArrayList<String[]>();
//创建一个输入流
FileInputStream in= new FileInputStream(file);
//创建一个Excel操作对象
XSSFWorkbook workbook = new XSSFWorkbook(in);
//行大小
int rowSize = 0 ;
//工作簿个数
int sheets = workbook.getNumberOfSheets();
//工作簿对象
XSSFSheet sheet;
//工作簿中的行
XSSFRow row;
//行中的单元格
XSSFCell cell;
//循环工作簿
for(int st=0 ; st<sheets ; st++){
//获得对应的工作簿
sheet = workbook.getSheetAt(st);
//工作簿中的行数
int rowNum = sheet.getLastRowNum();
//循环行
for(int rowIndex = 1; rowIndex <=rowNum ; rowIndex++){
row = sheet.getRow(rowIndex);
if(row == null){
continue;
}
//当前行列数
int tempRowSize = row.getLastCellNum();
//始终让rowSize为最大列数
if(tempRowSize > rowSize){
rowSize = tempRowSize;
}
//单元格数据暂存
String[] values = new String[rowSize];
//标识行中是否有数据
boolean hasValue = false;
//该行中列数
int cols = row.getLastCellNum();
for(int col = 0; col < cols; col++){
//暂存党员个数据
String value = "";
//单元格
cell = row.getCell(col);
//如果为空继续下一个单元格
if(cell == null){
continue;
}
//获得对应单元格中对应格式 的数据
value = getFormatValue2007(cell);
System.out.print(value+"\t");
values[col] = value;
hasValue = true;
}
System.out.println();
//如果有值加入到result
if(hasValue){
result.add(values);
}
}
}
return result;
}
public static String getFormatValue2007(XSSFCell cell){
//暂存单元格内容
String value = "";
//匹配单元格内容
switch (cell.getCellType()) {
//数据格式类型
case XSSFCell.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 XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
//公式生成类型
case XSSFCell.CELL_TYPE_FORMULA:
//导入时如果为公式生成的数据则无值
if(!cell.getStringCellValue().equals("")){
value = cell.getStringCellValue();
}else{
value = cell.getNumericCellValue()+"";
}
break;
//空白
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
//布尔型
case XSSFCell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue()+"";
break;
//错误格式
case XSSFCell.CELL_TYPE_ERROR:
value = "";
break;
default:
value = cell.toString();
}
return value;
}
private static List<String[]> readExcel2003(File file) throws IOException {
//存放获取的数据
List<String[]> result = new ArrayList<String[]>();
//创建一个输入流
FileInputStream in = new FileInputStream(file);
//创建对Excel操作的对象
HSSFWorkbook workbook = new HSSFWorkbook(in);
//行大小
int rowSize = 0;
//工作簿的个数
int sheets = workbook.getNumberOfSheets();
//工作簿对象
HSSFSheet sheet;
//行
HSSFRow row;
//单元格
HSSFCell cell;
//对每个工作簿进行循环
for(int i = 0 ;i < sheets ; i++){
//获得工作簿
sheet = workbook.getSheetAt(i);
//工作簿中的行数
int rowNum = sheet.getLastRowNum();
for(int rowIndex = 1 ; rowIndex <= rowNum ; rowIndex++){
row = sheet.getRow(rowIndex);
if(row==null){
continue;
}
//获取当前行的列数
int tempRowSize = row.getLastCellNum();
//总是最大列数
if(tempRowSize > rowSize){
rowSize = tempRowSize;
}
//获得单元格的内容暂存
String[] values = new String[rowSize];
//标识Excel中是否有数据
boolean hasValue = false;
//该行中列数
int cols = row.getLastCellNum();
//循环对列取值
for(int col = 0 ;col < cols ; col++){
//单元格暂存
String value = "";
//获得单元格
cell = row.getCell(col);
//如果为空继续下一个单元格
if(cell == null){
continue;
}
//获得对应单元格中的格式化数据
value = getFormatValue2003(cell);
System.out.print(value+"\t");
values[col] = value;
hasValue = true;
}
System.out.println();
//有内容则加入到result中
if(hasValue){
result.add(values);
}
}
}
return result;
}
public static String getFormatValue2003(HSSFCell cell){
//暂存单元格内容
String value = "";
//匹配单元格内容
switch (cell.getCellType()) {
//数据格式类型
case XSSFCell.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 XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
//公式生成类型
case XSSFCell.CELL_TYPE_FORMULA:
//导入时如果为公式生成的数据则无值
if(!cell.getStringCellValue().equals("")){
value = cell.getStringCellValue();
}else{
value = cell.getNumericCellValue()+"";
}
break;
//空白
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
//布尔型
case XSSFCell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue()+"";
break;
//错误格式
case XSSFCell.CELL_TYPE_ERROR:
value = "";
break;
default:
value = cell.toString();
}
return value;
}
处理excel可以用jxl.jar和 aphace的poi
jxl.jar停止更新了,只能用其处理2003格式 Excel
aphace的poi,可以处理2003和2007
public static List<String[]> readExcel(File file) throws IOException{
//取文件名
String filename = file.getName();
//取文件后缀
String subfix = filename.lastIndexOf(".")==-1? "" : filename.substring(filename.lastIndexOf(".")+1);
System.out.println(subfix);
//获取读取的数据
List<String[]> result = new ArrayList<String[]>();
if(subfix.equals("xls")){
result = readExcel2003(file);
}else if(subfix.equals("xlsx")){
result = readExcel2007(file);
System.out.println(result);
}else{
throw new IOException("文件格式不正确");
}
return result;
}
private static List<String[]> readExcel2007(File file) throws IOException {
//存放获取的数据
List<String[]> result = new ArrayList<String[]>();
//创建一个输入流
FileInputStream in= new FileInputStream(file);
//创建一个Excel操作对象
XSSFWorkbook workbook = new XSSFWorkbook(in);
//行大小
int rowSize = 0 ;
//工作簿个数
int sheets = workbook.getNumberOfSheets();
//工作簿对象
XSSFSheet sheet;
//工作簿中的行
XSSFRow row;
//行中的单元格
XSSFCell cell;
//循环工作簿
for(int st=0 ; st<sheets ; st++){
//获得对应的工作簿
sheet = workbook.getSheetAt(st);
//工作簿中的行数
int rowNum = sheet.getLastRowNum();
//循环行
for(int rowIndex = 1; rowIndex <=rowNum ; rowIndex++){
row = sheet.getRow(rowIndex);
if(row == null){
continue;
}
//当前行列数
int tempRowSize = row.getLastCellNum();
//始终让rowSize为最大列数
if(tempRowSize > rowSize){
rowSize = tempRowSize;
}
//单元格数据暂存
String[] values = new String[rowSize];
//标识行中是否有数据
boolean hasValue = false;
//该行中列数
int cols = row.getLastCellNum();
for(int col = 0; col < cols; col++){
//暂存党员个数据
String value = "";
//单元格
cell = row.getCell(col);
//如果为空继续下一个单元格
if(cell == null){
continue;
}
//获得对应单元格中对应格式 的数据
value = getFormatValue2007(cell);
System.out.print(value+"\t");
values[col] = value;
hasValue = true;
}
System.out.println();
//如果有值加入到result
if(hasValue){
result.add(values);
}
}
}
return result;
}
public static String getFormatValue2007(XSSFCell cell){
//暂存单元格内容
String value = "";
//匹配单元格内容
switch (cell.getCellType()) {
//数据格式类型
case XSSFCell.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 XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
//公式生成类型
case XSSFCell.CELL_TYPE_FORMULA:
//导入时如果为公式生成的数据则无值
if(!cell.getStringCellValue().equals("")){
value = cell.getStringCellValue();
}else{
value = cell.getNumericCellValue()+"";
}
break;
//空白
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
//布尔型
case XSSFCell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue()+"";
break;
//错误格式
case XSSFCell.CELL_TYPE_ERROR:
value = "";
break;
default:
value = cell.toString();
}
return value;
}
private static List<String[]> readExcel2003(File file) throws IOException {
//存放获取的数据
List<String[]> result = new ArrayList<String[]>();
//创建一个输入流
FileInputStream in = new FileInputStream(file);
//创建对Excel操作的对象
HSSFWorkbook workbook = new HSSFWorkbook(in);
//行大小
int rowSize = 0;
//工作簿的个数
int sheets = workbook.getNumberOfSheets();
//工作簿对象
HSSFSheet sheet;
//行
HSSFRow row;
//单元格
HSSFCell cell;
//对每个工作簿进行循环
for(int i = 0 ;i < sheets ; i++){
//获得工作簿
sheet = workbook.getSheetAt(i);
//工作簿中的行数
int rowNum = sheet.getLastRowNum();
for(int rowIndex = 1 ; rowIndex <= rowNum ; rowIndex++){
row = sheet.getRow(rowIndex);
if(row==null){
continue;
}
//获取当前行的列数
int tempRowSize = row.getLastCellNum();
//总是最大列数
if(tempRowSize > rowSize){
rowSize = tempRowSize;
}
//获得单元格的内容暂存
String[] values = new String[rowSize];
//标识Excel中是否有数据
boolean hasValue = false;
//该行中列数
int cols = row.getLastCellNum();
//循环对列取值
for(int col = 0 ;col < cols ; col++){
//单元格暂存
String value = "";
//获得单元格
cell = row.getCell(col);
//如果为空继续下一个单元格
if(cell == null){
continue;
}
//获得对应单元格中的格式化数据
value = getFormatValue2003(cell);
System.out.print(value+"\t");
values[col] = value;
hasValue = true;
}
System.out.println();
//有内容则加入到result中
if(hasValue){
result.add(values);
}
}
}
return result;
}
public static String getFormatValue2003(HSSFCell cell){
//暂存单元格内容
String value = "";
//匹配单元格内容
switch (cell.getCellType()) {
//数据格式类型
case XSSFCell.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 XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
//公式生成类型
case XSSFCell.CELL_TYPE_FORMULA:
//导入时如果为公式生成的数据则无值
if(!cell.getStringCellValue().equals("")){
value = cell.getStringCellValue();
}else{
value = cell.getNumericCellValue()+"";
}
break;
//空白
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
//布尔型
case XSSFCell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue()+"";
break;
//错误格式
case XSSFCell.CELL_TYPE_ERROR:
value = "";
break;
default:
value = cell.toString();
}
return value;
}
发表评论
-
java.lang.ClassCircularityError
2015-07-27 00:39 1269类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出 ... -
随记内容
2015-06-09 00:10 0public static CloseableHttpClie ... -
httpclient3.1使用小结
2017-08-18 00:08 641Jakarta的httpclient3.1是 ... -
POI
2014-05-21 16:08 513Apache POI是一个开源的Java读写Excel、WOR ... -
servlet与js 跳转
2014-05-15 17:19 807servlet跳转 1.request.getRequestD ... -
jdk各个版本下载地址
2014-05-12 17:40 894http://www.oracle.com/technetwo ... -
Jackson库
2014-04-20 13:17 906概述 Jackson库(http://jac ... -
生成Webservice客户端的4种方法
2014-04-09 15:39 10481.使用Axis生产客户端代码(另存为bat文件) 之前很多次 ... -
map遍历
2013-12-14 23:41 477Map<String, String> map = ... -
POI处理Excel
2013-12-14 22:44 8451.读取2003 InputStream stream ... -
常用数据库 JDBC URL 格式
2013-12-04 18:35 1090Microsoft SQL Server Microsoft ... -
公共查询接口
2013-12-04 15:19 1137http://www.webmasterhome.cn/ ht ... -
天气预报接口
2013-12-04 11:18 1359天气预报接口(中国天气网) 中国天气weather.com ... -
Java 判断文件夹、文件是否存在
2013-12-04 10:00 50591、判断文件是否存在,不存在创建文件 File file=ne ... -
Jakarta Commons Pool
2013-12-03 14:55 804使用Jakarta Commons Pool可以根据需要快速的 ... -
多线程读写资料利器-ReentrantReadWriteLock
2013-12-03 14:49 1262多线程读写文件利器-ReentrantReadWriteLoc ... -
保持顺序的 Java Properties 类
2013-12-02 16:21 858public class OrderedProperties ... -
科大讯飞语音识别服务
2013-09-03 17:06 13441.官方地址:http://open.voicecloud.c ... -
ibatis数据库字段带下划线(_)映射与java类不一致
2013-08-24 17:00 5269ibatis数据库字段带下划线(_)与java pojo对象映 ... -
Java Timer
2013-05-28 15:07 10121)java.util.Timer. 2)ServletC ...
相关推荐
java读取excel 表格数据。 public static void main(String[] args) { String[][] content=POIExcelUtils.read("E:\\1.xlsx"); for(int i=0;i;i++) { if(content[i]!=null){ for(int j=0;j[i].length;j...
Java 操作Excel poi读写excel,所需要的jar包 https://blog.csdn.net/u014646662/article/details/83217382
Java利用poi导出excel表格.zipJava利用poi导出excel表格.zip
java_poi实现excel导入导出功能,有详细的注解
Java利用poi导出excel表格
JAVA通过poi对Excel进行表格的读取,含有jar包,代码可以直接用。
1.java使用poi生成excel插入图表曲线 2.demo包含完成jar包 3.主要用途是过滤数据自动生成曲线图
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
ExcelImport.zip java-poi-excel 导入导出excel表格 由java读取流进行操作
该实例集成maven开发环境,里面讲解了POI导入和导出Excel表格的基本用法
Java通过POI读取Excel遍历数据,根本word模板批量生成word文档,demo可运行,可根据需求修改
这个是使用java语言 poi导入excel到数据库中,同时使用了xml对excel的每个单元格数据进行了非空验证。经测试,导入数据库成功。
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
通过poi读取excel表格信息,可以实现对97,2003,2007,2010等excel表格的读取
利用POI读取excel写入到word 利用POI读取excel写入到word 利用POI读取excel写入到word,压缩包里包含了jar包
Java用poi读取excel文件.pdf
java读写Excel,POI.JAR,Word内容读取
java+poi+excel读取写入等操作所有jar(最新支持excel2013)Java实用源码整理learns
JAVA IO操作 POI读取excel的内容
详解JAVA_POI导出EXCEL报表的操作(包括各种格式及样式的实现),最全面的JAVA_POI导出EXCEL报表操作。