excel学习笔记之一

简介:

说明该读取支持97到2003


import java.io.FileInputStream;

import java.io.InputStream;

import java.text.DecimalFormat;

import java.text.SimpleDateFormat;

import java.util.Date;


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

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

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;

import org.apache.poi.ss.usermodel.CellStyle;



//excle 读取


public class Demo1 {


public static void main(String[] args) throws Exception {

InputStream is = new FileInputStream("E:\\data.xls");

POIFSFileSystem fs = new POIFSFileSystem(is);

HSSFWorkbook wb = new HSSFWorkbook(fs);//创建一个新的工作簿

HSSFSheet hssfSheet = wb.getSheetAt(0);

if (hssfSheet == null)

{

return;

}

//遍历行row

for(int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++)

{

HSSFRow hssfRow = hssfSheet.getRow(rowNum);

if(hssfRow == null)

{

continue;

}

//遍历列

for(int cellNum = 0;cellNum <= hssfRow.getLastCellNum() ; cellNum++)

{

HSSFCell hssfCell = hssfRow.getCell(cellNum);

if(hssfCell == null)

{

continue;

}

System.out.print(""+getValue(hssfCell));

}

System.out.println();

}

}

/*1)CELL_TYPE_BLANK :空值

2)CELL_TYPE_BOOLEAN :布尔型

3)CELL_TYPE_ERROR : 错误

4)CELL_TYPE_FORMULA :公式型

5)CELL_TYPE_STRING:字符串型

6)CELL_TYPE_NUMERIC:数值型

* */

//类型判断方法

private static 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 if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_FORMULA)

{

return String.valueOf(hssfCell.getDateCellValue());   //公式型

}

else

{

return String.valueOf(hssfCell.getStringCellValue());   //字符串

}


}

//poi读取excel文档判断日期格式  

public static String readCellValues(HSSFCell cell) throws Exception {       

   // 用于返回结果

   String result = new String();

    

   try {

       // 如果单元格为空,返回null

       if (cell == null) {

           result = "null";

       }

       else {

           // 判断单元格类型

           switch (cell.getCellType()) { 

           // 数字类型

           case HSSFCell.CELL_TYPE_NUMERIC:  

               // 处理日期格式、时间格式

               if (HSSFDateUtil.isCellDateFormatted(cell)) 

               {  

                   SimpleDateFormat sdf = null;  

                   if (cell.getCellStyle().getDataFormat() == HSSFDataFormat  

                           .getBuiltinFormat("h:mm")) {  

                       sdf = new SimpleDateFormat("HH:mm");  

                   } else {// 日期  

                       sdf = new SimpleDateFormat("yyyy-MM-dd");  

                   }  

                   Date date = cell.getDateCellValue();  

                   result = sdf.format(date);  

               } else if (cell.getCellStyle().getDataFormat() == 58) {  

                   // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)  

                   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  

                   double value = cell.getNumericCellValue();  

                   Date date = org.apache.poi.ss.usermodel.DateUtil  

                           .getJavaDate(value);  

                   result = sdf.format(date);  

               } else {  

                   double value = cell.getNumericCellValue();  

                   CellStyle style = cell.getCellStyle();  

                   DecimalFormat format = new DecimalFormat();  

                   String temp = style.getDataFormatString();  

                   // 单元格设置成常规  

                   if (temp.equals("General")) {  

                       format.applyPattern("#");  

                   }  

                   result = format.format(value);  

               }  

               break;  

           case HSSFCell.CELL_TYPE_STRING:// String类型  

               result = cell.getStringCellValue();  

               break;  

           case HSSFCell.CELL_TYPE_BLANK:  

               result = "";  

           default:  

               result = "";  

               break;  

           }  

       }

   }

   catch(Exception e) {

       e.printStackTrace();

   }

    

   return result;

}


}










本文转自 知止内明 51CTO博客,原文链接:http://blog.51cto.com/357712148/1982895,如需转载请自行联系原作者
目录
相关文章
|
运维 搜索推荐 前端开发
一分钟自建应用-从Excel创建|学习笔记
快速学习一分钟自建应用-从Excel创建
84 0
一分钟自建应用-从Excel创建|学习笔记
|
Python
Python学习笔记(26)-读取excel表格信息
本文目录 1. excel表格中的相关概念 2. Python中openpyxl模块对excel表格的处理 3. openpyxl模块的安装 4. openpyxl模块对.xls和.xlsx的支持 5. 读取excel表格的信息
155 0
Python学习笔记(26)-读取excel表格信息
|
Web App开发 C#
VSTO学习笔记(二)Excel对象模型
原文:VSTO学习笔记(二)Excel对象模型 上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升。从这次开始,将从VSTO 4.0开始,逐一探讨VSTO开发中方方面面,本人接触VSTO时间不长,也是一次尝试。
2024 0
VSTO学习笔记(五)批量编辑Excel 2010 x64
原文:VSTO学习笔记(五)批量编辑Excel 2010 x64 近期因为工作的需要,经常要批量处理大量的Excel文件,如果纯手工一个个修改,非常的麻烦,于是写了这么一个帮助类,希望能对你有所帮助。里面很多方法可以进一步推广,增减适当的参数,部分方法用到了C# 4.0新特性,如果需要调试,请安装Visual Studio 2010。
1054 0