- 浏览: 719766 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
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 1359类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出 ... -
随记内容
2015-06-09 00:10 0public static CloseableHttpClie ... -
httpclient3.1使用小结
2017-08-18 00:08 691Jakarta的httpclient3.1是 ... -
POI
2014-05-21 16:08 574Apache POI是一个开源的Java读写Excel、WOR ... -
servlet与js 跳转
2014-05-15 17:19 851servlet跳转 1.request.getRequestD ... -
jdk各个版本下载地址
2014-05-12 17:40 986http://www.oracle.com/technetwo ... -
Jackson库
2014-04-20 13:17 980概述 Jackson库(http://jac ... -
生成Webservice客户端的4种方法
2014-04-09 15:39 11071.使用Axis生产客户端代码(另存为bat文件) 之前很多次 ... -
map遍历
2013-12-14 23:41 521Map<String, String> map = ... -
POI处理Excel
2013-12-14 22:44 8981.读取2003 InputStream stream ... -
常用数据库 JDBC URL 格式
2013-12-04 18:35 1137Microsoft SQL Server Microsoft ... -
公共查询接口
2013-12-04 15:19 1217http://www.webmasterhome.cn/ ht ... -
天气预报接口
2013-12-04 11:18 1404天气预报接口(中国天气网) 中国天气weather.com ... -
Java 判断文件夹、文件是否存在
2013-12-04 10:00 51341、判断文件是否存在,不存在创建文件 File file=ne ... -
Jakarta Commons Pool
2013-12-03 14:55 879使用Jakarta Commons Pool可以根据需要快速的 ... -
多线程读写资料利器-ReentrantReadWriteLock
2013-12-03 14:49 1313多线程读写文件利器-ReentrantReadWriteLoc ... -
保持顺序的 Java Properties 类
2013-12-02 16:21 907public class OrderedProperties ... -
科大讯飞语音识别服务
2013-09-03 17:06 14191.官方地址:http://open.voicecloud.c ... -
ibatis数据库字段带下划线(_)映射与java类不一致
2013-08-24 17:00 5343ibatis数据库字段带下划线(_)与java pojo对象映 ... -
Java Timer
2013-05-28 15:07 10601)java.util.Timer. 2)ServletC ...
相关推荐
在示例代码中,使用了Java POI读取Excel文件,并将其写入到数据库中。首先,需要创建一个Workbook对象,然后使用Workbook对象的getSheet方法获取Excel文件的Sheet对象,最后使用Sheet对象的getRow方法读取Excel文件...
JAVA使用POI(XSSFWORKBOOK)读取EXCEL文件过程解析 JAVA语言中读取EXCEL文件是非常常见的操作,通过使用POI库(Apache POI)可以轻松地实现该功能。POI库提供了两个主要的实现类:HSSFWorkbook和XSSFWorkbook,其中...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc和.docx)、Excel(.xls和.xlsx)等。在Java中使用POI进行文件转换,特别是将Word和Excel文档转换为HTML,...
Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc, .docx)、Excel(.xls, .xlsx)等。在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格...
Apache POI是Java社区开发的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Word(.doc/.docx)、Excel(.xls/.xlsx)等。 首先,让我们深入了解Java中的POI库。POI提供了HSSF和XSSF两个API,分别用于...
首先,我们需要了解Java中用于处理Excel文件的库,如Apache POI。Apache POI是一个开源项目,提供了读取和写入Microsoft Office格式文件的能力,包括Excel。通过使用POI,我们可以方便地在Java程序中创建、修改和...
Java POI库是一个强大的工具,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。在这个特定的场景中,我们利用POI将Word文档转换为HTML格式,以便于在网页上展示或者进行其他Web相关的操作。...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word、Excel和PowerPoint等。在这个场景中,我们将重点讨论如何使用Java POI读取Word文档并将其内容转换为HTML网页...
在Java编程领域,有时我们需要处理各种类型的文档,例如Word(doc和docx)和Excel(xlsx和xls)文件。为了实现这些操作,开发者通常会利用Apache POI库,这是一个强大的API,专门用于处理Microsoft Office格式的文件...
在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其内容的读取和操作经常被编程人员需求。这个“读EXL中的内容.rar”压缩包文件提供了一个程序,它能帮助我们从Excel文件中读取数据并将其...
Java Excel API 的这些方法使得在Java程序中处理Excel数据变得方便,无论是读取表格数据还是进行简单的数据修改。然而,对于更复杂的任务,比如处理图表、公式或者使用更高级的格式化,可能需要寻找其他更强大的库,...
在Unity游戏开发中,有时我们需要处理数据,例如存储角色属性、关卡设置或者游戏配置等,这时Excel表格因其直观易用的特点,常被选为数据管理工具。"Plugins+xlsx.zip"是一个压缩包,其中包含了Unity项目中读取和...
Apache POI是一个流行的开源Java库,它允许开发人员在Java应用程序中创建、修改和读取Microsoft Office文档,如Excel、Word和PowerPoint。XSSF代表“XML Spreadsheet Formula Language”,它是POI中用来处理.xlsx...
Java可以使用Apache POI库来读取Excel文件。POI允许程序访问和修改Excel文件的各个单元格,包括读取不同类型的值,如数字、字符串、日期等。 这些知识点涵盖了Swing布局的基本使用,以及如何处理数据输入/输出,...