`

利用java如何读取Excel中的数据!

阅读更多

利用java读取Excel中的数据!

使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件。这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵Excel文件了。

<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->

JAVA EXCEL API简介

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

Java Excel API 文档
http://www.andykhan.com/jexcelapi/

1.应用示例
如何从Excel读取数据:

packagecom.etong.allen;

importjava.io.*;
importjava.util.*;

importcom.roger.util.StringUtil;

importjxl.Cell;
importjxl.Sheet;
importjxl.Workbook;

/***//**
*<p>Title:</p>
*<pre>Description:Excel数据导入到oracle数据库类.
*</pre>
*<p>Copyright:Copyright(c)2004</p>
*<p>Company:易通技术有限公司</p>
*
@authorAllen
*
@version1.0
*/

publicclassExcelImportOracle...{

/***//**
*用于返回三维数组的ArrayList.
*/

privatestaticArrayListsubdata=newArrayList();

/***//**
*Excel中的表名.
*/

privatestaticStringtablename;

/***//**
*文件的路径
*/

privatestaticStringfilePath;

/***//**
*该方法为完成读取Excel中的数据并将数据插入到对应的数据库表中的操作(在调用前需要先调用setFilePath(String)这个方法.).
*
@authorAdministrator
*
@paramdata:读取Excel中的数据的数组.
*
@deprecated:将读取Excel中的数据插入到对应的数据库表中.*
*/

publicstaticvoidExcelDataImportOracle(StringfilePath)throwsException...{
try...{
ArrayListal
=readExcel(filePath);
InsertData(al);
}
catch(Exceptione)...{
e.printStackTrace();
}

}


/***//**
*读取Excel中的数据.将这些数据放入到一个三维数组中.
*
@authorAdministrator
*
@paramfilePath文件路径.
*
@deprecated:读取Excel中的数据将它放入到ArrayList数组中(此为三维数组).
*/

publicstaticArrayListreadExcel(StringfilePath)...{
try...{
subdata.clear();
//将静态ArrayList数组清空.(如果不清空原数据会不断累加)
InputStreamis=newFileInputStream(filePath);
Workbookrwb
=Workbook.getWorkbook(is);
//Sheetst=rwb.getSheet(0);//这里有两种方法获取sheet表,1为名字,而为下标,从0开始
//Sheetst=rwb.getSheet("Book1");//Excel中第一页的页名称.
Sheetst[]=rwb.getSheets();//得到所有Excel中页的列表.
for(inta=0;a<st.length;a++)...{
ArrayListalList
=newArrayList();
ArrayListtablenames
=newArrayList();
ArrayListtableAndContents
=newArrayList();
tablename
=st[a].getName().trim();
intb=0;
for(inti=1;i<st[a].getRows();i++)...{
ArrayListal
=newArrayList();
for(intj=0;j<st[a].getColumns();j++)...{
Cellc00
=st[a].getCell(j,i);
//通用的获取cell值的方式,返回字符串
Stringstrc00=StringUtil.toISO(c00.getContents().trim());
//获得cell具体类型值的方式得到内容.
al.add(j,strc00);
}

alList.add(b,al);
b
++;
}

tablenames.add(tablename);
tableAndContents.add(
0,tablenames);
tableAndContents.add(
1,alList);
subdata.add(a,tableAndContents);
}

rwb.close();
//关闭
//System.out.println(subdata);//输出
}
catch(Exceptione)...{
e.printStackTrace();
}

finally
...{
//删除上传文件
Filefile=newFile(filePath);
booleanresult=false;

if(file.exists())
...{
result
=file.delete();
}

else
...{
System.out.println(
"文件没有找到,无法删除!");
}


if(result)
...{
System.out.println(
"删除成功!");
}

else
...{
System.out.println(
"删除失败!");
}

}

returnsubdata;
}


/***//**
*将读取的Excel的三维数组数据进行对应的数据库表插入操作.
*
@authorAdministrator
*
@paramdata:读取Excel中的数据的数组.
*
@deprecated:将读取Excel中的数据插入到对应的数据库表中.
*/

privatestaticvoidInsertData(ArrayListdata)...{
try...{
Stringtablename;
ArrayListContents
=newArrayList();
for(inti=0;i<data.size();i++)...{
tablename
=((ArrayList)((ArrayList)data.get(i)).get(0)).get(0).toString();
Contents
=(ArrayList)((ArrayList)data.get(i)).get(1);
WfdefineDateOperate.currecorde(tablename,Contents);
}

}
catch(Exceptione)...{
e.printStackTrace();
}

}


/***//**
*得到文件路径;
*
@returnfilePath
*/

publicStringgetFilePath()...{
returnfilePath;
}

/***//**
*设置文件路径的位置;
*
@paramfilePath
*/

publicvoidsetFilePath(StringfilePath)...{
ExcelImportOracle.filePath
=filePath;
}


/***//**
*将readExcel方法读出来的三维数组数据转换成二维数组数据.
*
@paramal
*
@return返回二维数组数据.
*/

publicstaticArrayListgetDisplayData(ArrayListal)
...{
ArrayListresult
=newArrayList();
for(inti=0;i<al.size();i++)
...{
ArrayListtmp
=(ArrayList)((ArrayList)al.get(i)).get(1);

for(intj=0;j<tmp.size();j++)
...{
result.add(tmp.get(j));
}

}


returnresult;
}


/***//**
*
@paramargs
*/

publicstaticvoidmain(String[]args)...{
}


}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics