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);
}
}
}
Excel导入导出,用POI完成
最新推荐文章于 2021-11-02 09:38:38 发布