poi 函数 读取

这一部分是写出excel


package com.sun.function;

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class TestWrite {
	public static void main(String[] args) {
		new TestWrite().funExcel();
	}

	public void funExcel() {
		// 创建HSSFWorkbook对象(excel的文档对象)
		HSSFWorkbook wkb = new HSSFWorkbook();
		// 建立新的sheet对象(excel的表单)
		HSSFSheet sheet = wkb.createSheet("成绩表");
		// 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
		//HSSFRow row1 = sheet.createRow(0);
		// 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
		//HSSFCell cell = row1.createCell(0);
		// 设置单元格内容
		//cell.setCellValue("学员考试成绩一览表");
		// 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
		//sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
		
		
		for (int i = 0; i < 10; i++) {
			// 在sheet里创建第二行
			HSSFRow row2 = sheet.createRow(i);
				row2.createCell(0).setCellValue(i);
				row2.createCell(1).setCellValue("");
				row2.getCell(1).setCellFormula("if(A"+(i+1)+">5,\"A\",\"B\")");
				//row2.createCell(0).setCellValue(new Date());
		}

		FileOutputStream fos;
		try {
			fos = new FileOutputStream("e://fun.xls");
			wkb.write(fos);
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


这一部分是读入excel

package com.sun.function;

import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class TestRead {
	public static void main(String[] args) {
		new TestRead().funRead();
	}
	
	
	private void funRead() {
		try {
			// 创建要读入的文件的输入流
			InputStream inp = new FileInputStream("E:\\fun.xls");
			// 根据上述创建的输入流 创建工作簿对象
			Workbook wb = WorkbookFactory.create(inp);
			// 得到第一页 sheet
			// 页Sheet是从0开始索引的
			Sheet sheet = wb.getSheetAt(0);
			int rowNum = sheet.getPhysicalNumberOfRows();
			for (int i = 0; i < rowNum; i++) {
				Row row = sheet.getRow(i);
				int colNum = row.getPhysicalNumberOfCells();
				List<Object> stuList = new ArrayList<Object>();
				for (int j = 0; j < colNum; j++) {
					Cell cell = row.getCell(j);
					System.out.print(getCellFormatValue(cell)+" ");
				}
				System.out.println("");
			}
			// 关闭输入流
			inp.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	
	
	
	/**
	 * 
	 * @param cell Excel中单元格的数据
	 * @return 根据不同的类型 转换为 字符串
	 */
	
	private  String getCellFormatValue(Cell cell) {
		FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
		String cellvalue = "";
		
		if (cell != null) {
			// 判断当前Cell的Type
			switch (cell.getCellType()) {
			case HSSFCell.CELL_TYPE_NUMERIC:	//数字类型
				cellvalue = String.valueOf(cell.getNumericCellValue());
				if (HSSFDateUtil.isCellDateFormatted(cell)) {	//判断是否为日期类型
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
					Date date = HSSFDateUtil.getJavaDate(cell
							.getNumericCellValue());
					cellvalue = sdf.format(date).toString();
				}
				break;
			case HSSFCell.CELL_TYPE_BOOLEAN:	//boolean 类型
				cellvalue = String.valueOf(cell.getBooleanCellValue());
				break;
			case HSSFCell.CELL_TYPE_BLANK:	//空值
				cellvalue = "";
				break;
	        case Cell.CELL_TYPE_FORMULA: 	//公式
	            CellValue cellValue = evaluator.evaluate(cell);
			       switch (cellValue.getCellType()) {
			           case Cell.CELL_TYPE_BOOLEAN:
			               System.out.println(cellValue.getBooleanValue());
			               break;
			           case Cell.CELL_TYPE_NUMERIC:
			               System.out.println(cellValue.getNumberValue());
			               break;
			           case Cell.CELL_TYPE_STRING:
			               System.out.println(cellValue.getStringValue());
			               break;
			           case Cell.CELL_TYPE_BLANK:
			               break;
			           case Cell.CELL_TYPE_ERROR:
			               break;
			           // CELL_TYPE_FORMULA will never happen
			           case Cell.CELL_TYPE_FORMULA: 
			               break;
			       }break;
			case HSSFCell.CELL_TYPE_STRING:		// 如果当前Cell的Type为String
				// 取得当前的Cell字符串
				cellvalue = cell.getRichStringCellValue().getString();
				break;
			// 默认的Cell值
			default:
				cellvalue = " ";
			}
		}else{
			cellvalue = "";
		}
		return cellvalue;
	}
	
}


猜你喜欢

转载自blog.csdn.net/qq_25775675/article/details/77839860