excel读写

原创 2013年12月05日 14:30:02

最近做个小工具,需要对excel进行读写,以前写过poi读取excel,但是一点印象也没有,这次记录一下,方便以后查阅。

对excel2003读写的api在包org.apache.poi.hssf.usermodel

HSSFWorkbook:表示一个excel文档

HSSFSheet:表示一个excel页签

HSSFRow:表示一个数据行

HSSFCell:表示一个单元格。

对excel2007的读写是通过另外一套api,在包org.apache.poi.xssf.usermodel

与之对应的是XSSFWorkbook

XSSFSheet

XSSFRow

XSSFCell四个类。

/**
	 * 读取数据map格式
	 * @param head
	 * @param file
	 * @return
	 * @throws Exception
	 */
	public static List<Map<String, String>> getDate(List<String> head, String file) throws Exception{
		List<Map<String, String>> data = new ArrayList<Map<String,String>>();
		String fileType = file.substring(file.lastIndexOf(".")+1).toUpperCase();
		Workbook workBook = null;
		if(EXL2003.equals(fileType)){
			workBook = new HSSFWorkbook(new FileInputStream(file));
		}else if(EXL2007.equals(fileType)){
			workBook = new XSSFWorkbook(new FileInputStream(file));
		}else{
			throw new Exception("文件不被支持");
		}
		Sheet sheet = workBook.getSheetAt(0);
		for(int i = 0, rows = sheet.getLastRowNum()+1; i < rows; i++){
			Row row = sheet.getRow(i);
			Map<String, String> rowInfo = new LinkedHashMap<String, String>();
			for(int j = 0, cols = head.size(); j < cols; j++){
				Cell cell = row.getCell(j);
				rowInfo.put(head.get(j), getCellDate(cell));
			}
			data.add(rowInfo);
		}
		return data;
	}
	
	
	@SuppressWarnings("resource")
	public static void writeDate(List<List<String>> date, String file) throws Exception{
		FileOutputStream fos = new FileOutputStream(file);
		String fileType = file.substring(file.lastIndexOf(".")+1).toUpperCase();
		Workbook workBook = null;
		if(EXL2003.equals(fileType)){
			workBook = new HSSFWorkbook();
		}else if(EXL2007.equals(fileType)){
			workBook = new XSSFWorkbook();
		}else{
			throw new Exception("文件不被支持");
		}
		Sheet sheet = workBook.createSheet("sheet1");
		for(int i = 0, rows = date.size(); i < rows; i++){
			Row row = sheet.createRow(i);
			List<String> rowInfo = date.get(i);
			for(int j = 0, cols = rowInfo.size(); j < cols; j++){
				Cell cell = row.createCell(j);
				cell.setCellValue(rowInfo.get(j));
			}
		}
		workBook.write(fos);
		fos.flush();
		fos.close();
	}
	
	
	public static String getCellDate(Cell cell){
		String value = "";
		switch (cell.getCellType()) {
		case Cell.CELL_TYPE_BLANK:
			break;
		case Cell.CELL_TYPE_BOOLEAN:{
			value = String.valueOf(cell.getBooleanCellValue());
			break;
		}
		case Cell.CELL_TYPE_ERROR:
			break;
		case Cell.CELL_TYPE_NUMERIC:{
			value = String.valueOf(cell.getNumericCellValue());
			break;
		}
		case Cell.CELL_TYPE_FORMULA:{
			if(HSSFDateUtil.isCellDateFormatted(cell)){
				 Date date = cell.getDateCellValue();
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                 value = sdf.format(date);
			}else{
				value = cell.getNumericCellValue()+"";
			}
			break;
		}
		case Cell.CELL_TYPE_STRING:
			value = cell.getStringCellValue();
		default:
			value = "";
		}
		return value;
	}




简单的万能ExcelReads读写工具

本文由博主原创,转载请注明出处 完整源码下载地址 (Star在哪里~~)[https://github.com/MatrixSeven/ExcelReads) 之前有段时间要读取Excel,而且是...
  • Seven_73
  • Seven_73
  • 2016年12月01日 09:07
  • 516

python对excel文件的读写操作

由于用c++程序处理excel文件实在太过麻烦,于是我便去寻求更为简单的方法,发现python较为简单,我在这里整合了网上的python处理excel文件模块的使用。xlrd模块,可以读取excel文...
  • fengasdfgh
  • fengasdfgh
  • 2017年05月02日 04:40
  • 683

C#对Excel的读写操作

读取Excel,首先要添加Microsoft.Office.Interop.Excel 12.0 动态库  读取工作薄中的sheetspublic ArrayList loadExcelSheets(...
  • dyyaries
  • dyyaries
  • 2011年06月29日 18:05
  • 1837

Android开发笔记(三十四)Excel文件的读写

Android中操作Excel文件的场合较少见,主要是一些专业领域导入导出报表时使用,所以处理Excel读写的开源代码也很稀缺。目前读写Excel主要采用开源库jxl,这个是韩国人写的excel操作工...
  • aqi00
  • aqi00
  • 2015年12月30日 13:46
  • 3359

VS2010 MFC 操作Excel(读写)

说到操作excel,可能用java来写更方便一些。mfc确实不太适合这种操作,个人感觉要比java复杂一点,尤其是在数据类型的转换和操作上,java简单有效。下面进入正题,环境为vs2010。 1....
  • ouyangyanlan
  • ouyangyanlan
  • 2015年09月20日 16:30
  • 8871

VC++读取,写入,查询 Excel文件

VC++,新建Excel文件,并写入默认数据,读取Excel文件数据, 已存在,Excel表格数据,添加、插入、替换操作,CSpreadSheet,Excel转指定分隔的文本文件,删除表格,获取行头数...
  • DareZhang
  • DareZhang
  • 2011年02月15日 10:28
  • 11318

使用python读写操作同一个excel(xlrd,xlwt,xlutils)

使用python读写操作同一个excel(xlrd,xlwt,xlutils) 2015-05-21 13:12:59 标签:python 读写操作 excel 最近开始学习py...
  • u013176681
  • u013176681
  • 2016年04月11日 09:31
  • 3266

JAVA中读写EXCEL

JAVA中读写EXCEL jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较...
  • peterxiaoq
  • peterxiaoq
  • 2016年03月03日 16:44
  • 4285

以OLE方式读写EXCEL的C++类【转载】

◆C++中的【L"https://msdn.microsoft.com/library"】。 这个是C++标准规定的写法。详见以下链接: http://bbs.csdn.net/topics/3906...
  • u013600225
  • u013600225
  • 2016年03月20日 08:21
  • 1388

C#读取和写入Excel文档

 Excel是Microsoft Office中一款重要的软件,有强大的数据处理功能,用户可以通过Excel方便的操作和强大的公式以及图表处理现有的数据。 在Excel文档中,数据是有明确的标...
  • u010771437
  • u010771437
  • 2014年11月17日 22:02
  • 2109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:excel读写
举报原因:
原因补充:

(最多只允许输入30个字)