Java实现对execl的导入和导出

2014-11-24 07:43:11 · 作者: · 浏览: 0
完成execl的倒入和导出可以用两种方式,一个是Poi,一个是jxl,这里我选择的是poi方式完成
\
主要实现的功能是个人正对某个应用专门设计的,具体可以根据代码注释进行查看,这里不再赘述。
 
 
/** 关于poi.jar对execl的简单解析
 * @author trsli
 * 该类目前只支持对简单ececl的解析,具体操作根据个人要求设计。
 * 我要做的主要是通过某应用程序导出或者倒入execl文件,
 * 该类有部分方法属于网络借鉴,再加上个人业务需要改编。
 * */
public class PoiUtil {
	public PoiUtil() {
		// TODO Auto-generated constructor stub
	}
	private HSSFWorkbook workbook;

	public PoiUtil(File execlFile) throws IOException, FileNotFoundException {
		workbook = new HSSFWorkbook(new FileInputStream(execlFile));
	}

	/** 获取表中所有数据 */
	public List
  
    getDataSheet(int sheetNumber)
			throws FileNotFoundException {
		HSSFSheet sheet = workbook.getSheetAt(sheetNumber);
		List
   
     result = new ArrayList
    
     (); // 获取数据总行数,编号是从0开始的 int rowcount = sheet.getLastRowNum()+1; if (rowcount < 1) { return result; } // 逐行读取数据 for (int i = 0; i < rowcount; i++) { // 获取行对象 HSSFRow row = sheet.getRow(i); if (row != null) { List
      rowData = new ArrayList(); // 获取本行中单元格个数 int column = row.getLastCellNum(); // 获取本行中各单元格的数据 for (int cindex = 0; cindex < column; cindex++) { HSSFCell cell = row.getCell(cindex); // 获得指定单元格中的数据 Object cellstr = getCellString(cell); rowData.add(cellstr); } result.add(rowData); } } return result; } /** 获取单元格中的内容 ,该犯法用于解析各种形式的数据*/ private Object getCellString(HSSFCell cell) { Object result = null; if (cell != null) { int cellType = cell.getCellType(); switch (cellType) { case HSSFCell.CELL_TYPE_STRING: result = cell.getRichStringCellValue().getString(); break; case HSSFCell.CELL_TYPE_NUMERIC: result = cell.getNumericCellValue(); break; case HSSFCell.CELL_TYPE_FORMULA: result = cell.getNumericCellValue(); break; case HSSFCell.CELL_TYPE_ERROR: result = null; break; case HSSFCell.CELL_TYPE_BOOLEAN: result = cell.getBooleanCellValue(); break; case HSSFCell.CELL_TYPE_BLANK: result = null; break; default: break; } } return result; } /** 导出函数有三个参数,主内容数据,标题数组,到处文件名 */ public void createxls(Object[][] messages,String[] titles, String filename) { try { FileOutputStream fos = new FileOutputStream(new File(filename)); HSSFWorkbook book = new HSSFWorkbook();// 所有execl的父节点 HSSFSheet sheet = book.createSheet("sheet1");//此处可以随意设置 HSSFRow hssfrow = sheet.createRow(0);//创建首行标题 HSSFCell hssfcell=null; for(int i=0;i
       
         datas = poi.getDataSheet(0); String[] title=new String[datas.get(0).size()];//由于存储标题数据 for(int i=0;i
        
          datas = poi.getDataSheet(0); Object[][] p=new Object[datas.size()-1][datas.get(0).size()];//二维数组大小,即用户存储表格内容数据 for (int i = 1; i < datas.size(); i++) { List row = datas.get(i); for (int j = 0; j < row.size(); j++) { Object value = row.get(j); p[i-1][j] = String.valueOf(value); } } return p; } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println(e); return null; } catch (IOException e) { e.printStackTrace(); return null; } } public static void main(String[] args) { PoiUtil poi = new PoiUtil(); Object[][] p=poi.getmessage("E:\\Book1.xls");//倒入数据方法 String[] title=poi.gettitles("E:\\Book1.xls"); System.out.println(title.length+":"+title[0]+title[1]); System.out.println(p.length+""+p[0][0]);//这是正确的 poi.createxls(p, title,"E:\\testli.xls");//new String[]{"序号","姓名","成绩"} } 
         


测试结果:\

生成文件截屏:

整个功能简单,对于更深层次的使用java对execl进行操作,目前正在研究。

<script type="text/java script">
<script type="text/java script">BAIDU_CLB_fillSlot("771048");
点击复制链接 与好友分享! 回本站首页
<script> function copyToClipBoard(){ var clipBoardContent=document.title + '\r\n' + document.location; clipBoardContent+='\r\n'; window.clipboardData.setData("Text",clipBoardContent); alert("恭喜您!复制成功"); }
分享到: 更多
<script type="text/java script" id="bdshare_js" data="type=tools&uid=12732"> <script type="text/java script" id="bdshell_js"> <script type="text/java script"> var bds_config = {'snsKey':{'tsina':'2386826374','tqq':'5e544a8fdea646c5a5f3967871346eb8'}}; document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js cdnversion=" + Math.ceil(new Date()/3600000)
您对本文章有什么意见或着疑问吗?请到 论坛讨论您的关注和建议是我们前行的参考和动力
上一篇: java构造函数简要分析
下一篇: 最后一页
相关文章
<script type="text/java script">BAIDU_CLB_fillSlot("182716");
<script type="text/java script">BAIDU_CLB_fillSlot("517916");
图文推荐
<iframe src="http://www.2cto.com/uapi.php tid=265890&catid=85&title=SmF2Ycq1z9a21GV4ZWNstcS1vMjrus21vLP2&forward=http://www.2cto.com/kf/201312/265890.html" width="100%" height="100%" id="comment_iframe" name="comment_iframe" frameborder="0" scrolling="no">
<script type="text/java script">BAIDU_CLB_fillSlot("771057");
排行
热门
<script type="text/java script">BAIDU_CLB_fillSlot("406189");
<script type="text/java script">BAIDU_CLB_fillSlot("703749");
<iframe frameborder="0" name="Iframe1" src="http://www.2cto.com/bbsdy/index.html" width="100%" height="200"> 您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
<script type="text/java script">BAIDU_CLB_fillSlot("182692");
文章
下载
读书
<script type="text/java script">BAIDU_CLB_fillSlot("771043");
<script type="text/java script"> <script language="java script" src="http://www.2cto.com/api.php op=count&id=265890&modelid=1"> <script type="text/java script">BAIDU_CLB_fillSlot("137946");
<script type="text/java script">BAIDU_CLB_fillSlot("333829");

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站<script type="text/java script"> var _bdhmProtocol = (("https:" == document.location.protocol) " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F1898984a3d796e86ad73ad1f4bc9f240' type='text/java script'%3E%3C/script%3E"));