Excel导入导出,用POI完成

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.contrib.HSSFCellUtil;
import org.apache.poi.hssf.util.Region;

//使用POI导入导出Excel文件时,要用到两个jar包:jxl.jar
/**
HSSFWorkbook:Excel的工作书册 Workbook,对应到一个excel文档
	|--createSheet():创建Excel的工作sheet 可以传入参数,给sheet命名。
	|--createCellStyle():创建一个新的单元格式样并且将它添加到工作簿的样式表
HSSFSheet:Excel的工作sheet
	|--setColumnWidth(0, 4000) 设置excel每列宽度 第一个参数是列的索引,第二个参数是宽度
HSSFRow :Excel的sheet的一行
	|--createCell(short column) :在当前HSSFRow对象中,创建单元格,参数为单元格索引值
	|--setHeight((short) 500):设定行的高度
	|--getCell(short cellnum) :获取指定单元格,第一个为0
HSSFCell:Excel的单元格
	|--setCellValue(value):设置单元格的内容
	|--getStringCellValue() :获取单元格的内容
	|--setCellStyle(HSSFCellStyle style) :设置单元格样式
Region:用来合并单元格,构造函数含有四个参数,分别代表起始行、起始列、结束行、结束列
	|--例如 Region region = new Region(0, (short) 0, 0, (short) 7);
	|--short     getColumnFrom ():get the upper left hand corner column number
	|--short     getColumnTo() :get the lower right hand corner column number
	|--int       getRowFrom() :get the upper left hand corner row number
	|--int       getRowTo()  :get the lower right hand corner row number
HSSFCellStyle:单元格样式
	|--setAlignment(short align) :设置单元格的水平对齐方式
	|--setVerticalAlignment(short align) 设置单元格垂直对齐方式
	|--setWrapText(true) 设置单元格里内容自动换行
HSSFCellUtil:工具类
	|--static HSSFRow     getRow(int rowCounter, HSSFSheet sheet) :Get a row from the spreadsheet, and create it if it doesn't exist.  根据行索引和sheet获取到某一行。
	|--static HSSFCell    getCell(HSSFRow row, int column) :Get a specific cell from a row.  根据某一行和列索引获取某一列。
*/

创建Excel:
public class CreateExcel {
	/** Excel 文件要存放的位置,假定在D盘下*/
	public static String outputFile = "D://test.xls";
	public static void main(String argv[]){
		try{
			// 创建新的Excel 工作簿
			HSSFWorkbook workbook = new HSSFWorkbook();
			// 在Excel工作簿中建一工作表,其名为缺省值
			// 如要新建一名为"效益指标"的工作表,其语句为:
			//HSSFSheet sheet = workbook.createSheet("效益指标");
			HSSFSheet sheet = workbook.createSheet();
			// 第零行
			HSSFRow row = sheet.createRow((short)0);
			//第零列
			HSSFCell cell = row.createCell((short)0);	
			// 定义单元格为字符串类型
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			// 在单元格中输入一些内容
			cell.setCellValue("增加值");
			// 新建一输出文件流
			FileOutputStream fOut = new FileOutputStream(outputFile);
			//把相应的Excel 工作簿存盘
			workbook.write(fOut);
			fOut.flush();
			//把相应的Excel 工作簿存盘
			fOut.close();
			System.out.println("文件生成...");
		}catch(Exception e) {
			System.out.println("已运行 xlCreate() : " + e );
		}
	}
}

读取Excel:
public class ReadExce {
	/** Excel文件的存放位置。注意是正斜线*/
	public static String fileToBeRead="D://鄞州区2012年1-4月区级部门固定资产投资任务完成实绩(5.16.1).xls";
	public static void main(String argv[]){ 
		try{
			// 创建对Excel工作簿文件的引用
			HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
			// 创建对工作表的引用。
			// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
			HSSFSheet sheet = workbook.getSheet("按单位排");
			// 也可用getSheetAt(int index)按索引引用,
			// 在Excel文档中,第一张工作表的缺省索引是0,
			// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
			// 读取左上端单元
			HSSFRow row = sheet.getRow(0);
			HSSFCell cell = row.getCell((short)0);
			// 输出单元内容,cell.getStringCellValue()就是取所在单元的值
			System.out.println("左上端单元是: " + cell.getStringCellValue()); 
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("已运行xlRead() : " + e );
		}
	}
}

单元格合并后设置单元格样式方法:(千万注意的是:当需要调用这个设置样式的方法时,必须在行和列创建完以后调用,而不是在sheet.addMergedRegion(region1)后调用)
private static void  setRegionStyle(HSSFSheet sheet, Region region , HSSFCellStyle cs) {
				  //左上角行索引				右下角行索引
	 for (int i = region.getRowFrom(); i <= region.getRowTo(); i ++) {
           HSSFRow row = HSSFCellUtil.getRow(i, sheet);//这个方法源码里是会进行null判断的,如果为null则创建新的一行
           		  //左上角列索引						右下角列索引
           for (int j = region.getColumnFrom(); j <= region.getColumnTo(); j++) {
           	HSSFCell cell = HSSFCellUtil.getCell(row, j);
               cell.setCellStyle(cs);
           }
       }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值