您的位置:首页 > 编程语言 > Java开发

PIO读取excel文档,java实现

2012-05-12 13:21 369 查看
读取excel文件,然后也可以生成excel文件,用java实现,不废话了,直接贴代码和结果。补充一下这个需要引入一个包,要下载一个poi-3.0.jar(直接点击就可以下载)文件。下载完之后就加到classpath就能编译通过,然后就行了。。

  我还是说一下步骤吧。。先创建一个工作簿对象new HSSFWorkbook(new FileInputStream(filepath)),然后在创建工作表 workbook.getSheetAt(0)0表示sheet1,也可以直接用getSheet("Sheet1")这个参数可以是工作表名,然后在遍历所有的单元格,并读取数据,遍历的时候要注意单元格的格式,有两种,分为数字和字符串,所以要进行判断,额,r.getCell((short)j).getCellType() == 1,这个是字符串用getStringCellValue()获取,然后如果是getCellType()是0的话,则是数字内容,用getNumericCellValue()获取,然后读取excel文件结束了。。。。

  具体创建excel文件的方法也是差不多。。先createSheet()创建工作表,然后不断的createRow(),createCell()创建单元行和列。。然后用输出流直接输出就行了。。。

package socket;

import java.io.*;

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

public class ReaderWriterFile {

	public String readExcelFile(String filename) {
		StringBuffer result = new StringBuffer();
		String fileToBeRead = filename;

		// 创建对Excel工作簿文件的引用
		HSSFWorkbook workbook = null;
		try {
			workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

			// 创建对工作表的引用。
			HSSFSheet sheet = workbook.getSheetAt(0);
			// HSSFSheet sheet = workbook.getSheet("Sheet1");
			// 便利所有单元格,读取单元格
			int row_num = sheet.getLastRowNum();
			for (int i = 0; i < row_num; i++) {
				HSSFRow r = sheet.getRow(i);
				int cell_num = r.getLastCellNum();
				for (int j = 0; j < cell_num; j++) {
					//System.out.println(r.getCell((short)j).getCellType());
					if(r.getCell((short)j).getCellType() == 1){
						result.append(r.getCell((short) j).getStringCellValue());
					}else{
						result.append(r.getCell((short) j).getNumericCellValue());
					}
					result.append("\t");
				}
				result.append("\n");
			}
		} catch (FileNotFoundException e) {
			System.out.println("文件没找到 : " + e);
		} catch (IOException e) {
			System.out.println("已运行IO异常: " + e);
		}
		return result.toString();

	}

	public void writeExcel(String path, String content) {
		String outputFile = path;
		String data = content;

		try {
			// 创建新的Excel 工作簿
			HSSFWorkbook workbook = new HSSFWorkbook();
			// 在Excel工作簿中建一工作表,其名为缺省值
			HSSFSheet sheet = workbook.createSheet();

			String[] rows = data.split("\n");
			for (int i = 0; i < rows.length; i++) {
				HSSFRow row = sheet.createRow((short) i);
				String[] cells = rows[i].split("\t");
				for (int j = 0; j < cells.length; j++) {
					HSSFCell cell = row.createCell((short) j);
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);
					cell.setCellValue(cells[j]);
				}
			}
			// 新建一输出文件流
			FileOutputStream fOut = new FileOutputStream(outputFile);
			// 把相应的Excel 工作簿存盘
			workbook.write(fOut);
			fOut.flush();
			// 操作结束,关闭文件
			fOut.close();
			System.out.println(path + "文件生成完毕...");

		} catch (FileNotFoundException e) {
			System.out.println("文件没找到 : " + e);
		} catch (IOException e) {
			System.out.println("已运行IO异常 : " + e);
		}
	}

	public String readWordFile(String filename) {
		return "";
	}

	public static void main(String[] arg) {
		ReaderWriterFile rw = new ReaderWriterFile();
		String res = rw.readExcelFile("E:/三国将领聚类.xls");
		System.out.println(res);
		rw.writeExcel("D:\\out.xls", res);
	}

}








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: