使用I/O流生成Excel文件

在Eclipse中新建项目GenerateExcel,并在其中创建一个GenerateExcel.java文件。在该类中首先引入org.apache.poi包,然后通过其中的hssf类来实现Excel文件的生成。核心代码如下所示:

public class GenerateExcel {								//创建Excel文件
	// 新建一个Excel文件,里面添加5行5列的内容,另外添加两个合并大单元格
	public void createExcel(String fileName) {
		File file = new File(fileName);						// 创建excel文件对象
		FileOutputStream fOut = null;
		try {		
			HSSFWorkbook workbook = new HSSFWorkbook();	// 创建一个新的HSSFWorkbook对象
			HSSFSheet sheet = workbook.createSheet("myFirstExcel");// 创建一个Excel的工作表
			HSSFFont font = workbook.createFont();			// 创建字体,红色、粗体
			font.setColor(HSSFFont.COLOR_RED);
			font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
			HSSFFont font1 = workbook.createFont();
			font1.setColor(HSSFFont.COLOR_NORMAL);		// 创建字体,黑色、非粗体
			font1.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
			HSSFCellStyle cellStyle = workbook.createCellStyle();// 创建单元格的格式,如居中、左对齐等
			cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平方向上居中对齐
			cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直方向上居中对齐
			cellStyle.setFont(font); 						// 设置字体
			HSSFCellStyle cellStyle1 = workbook.createCellStyle();
			cellStyle1.setAlignment(HSSFCellStyle.ALIGN_LEFT);
			cellStyle1.setFont(font1);
			// 下面将建立一个4行3列的表。第一行为表头
			int rowNum = 0;							// 行标
			int colNum = 0;								// 列标
			// 建立表头信息
			HSSFRow row = sheet.createRow((short) rowNum); // 在索引0的位置创建行
			HSSFCell cell = null; 						// 单元格
			for (colNum = 0; colNum < 5; colNum++) {
				cell = row.createCell((short) colNum);		// 在当前行的colNum列上创建单元格
				cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 定义单元格为字符类型
				// 定义编码方式,为了支持中文,这里使用了ENCODING_UTF_16
				cell.setCellStyle(cellStyle); // 为单元格设置格式
				cell.setCellValue("表头-第" + (colNum + 1) + "列"); // 添加内容至单元格
			}
			rowNum++;
			for (; rowNum < 5; rowNum++) {
				row = sheet.createRow((short) rowNum);		// 新建第rowNum行
				for (colNum = 0; colNum < 5; colNum++) {	
					cell = row.createCell((short) colNum);	// 在当前行的colNum位置创建单元格
					cell.setCellStyle(cellStyle1);
					cell.setCellValue("表体-第" + rowNum + "行第" + (colNum + 1) + "列");
				}
			}
			rowNum = 5;								// 合并单元格
			for (; rowNum < 9; rowNum++) {
				row = sheet.createRow((short) rowNum);
				for (colNum = 0; colNum < 5; colNum++) {
					cell = row.createCell((short) colNum); 	// 在当前行的colNum位置创建单元格
				}
			}
			rowNum = 5;								// 建立第一个大单元格,高度为2,宽度为2
			colNum = 0;
			Region region = new Region(rowNum, (short) colNum, (rowNum + 1),
					(short) (colNum + 4));
			sheet.addMergedRegion(region);
			cell = sheet.getRow(rowNum).getCell((short) colNum); // 获得第一个大单元格
			cell.setCellStyle(cellStyle);
			cell.setCellValue("合并行单元格");			
			rowNum = 7;								// 建立第二个大单元格,高度为2,宽度为3
			for (colNum = 0; colNum < 5; colNum++) {
				region = new Region(rowNum, (short) colNum, (rowNum + 1),
						(short) (colNum));
				sheet.addMergedRegion(region);				
				cell = sheet.getRow(rowNum).getCell((short) colNum);// 获得第二个大单元格
				cell.setCellStyle(cellStyle);
				cell.setCellValue("合并列单元格");
			}
			fOut = new FileOutputStream(file);				// 新建一输出文件流
			workbook.write(fOut);// 将创建的内容写到指定的Excel文件中
			fOut.flush();
			fOut.close();								// 操作结束,关闭文件
			System.out.println("Excel文件创建成功!\nExcel文件的存放路径为:"
					+ file.getAbsolutePath());
		} catch (Exception e) {
			System.out.println("Excel文件" + file.getAbsolutePath()
					+ "创建失败\n其原因为:" + e);
		} finally {
			if (fOut != null) {
				try {
					fOut.close();
				} catch (IOException e1) {
				}
			}
		}
	}
	public static void main(String[] args) throws Exception {
		GenerateExcel excel = new GenerateExcel();
		String fileName = "D://Excel.xls";					// 指定生成Excel文件名称
		excel.createExcel(fileName);
	}
}

Jakarta POI中最成熟的API就是HSSF。通过HSSF可以用Java代码来读取、写入和修改Excel文件。首先我们需要引入包:
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.Region;
接着我们就可以创建Excel文件了。把数据写入Excel中必须经过以下步骤:
(1)创建workbook对象。
HSSFWorkbook workbook=new HSSFWorkbook();
(2)通过workbook对象创建工作区对象并命名为test excel。
HSSFSheet sheet=workbook.createSheet(“test excel“);
(3)由工作区对象创建行对象。
HSSFRow row=sheet.createRow(0);
(4)由行对象创建单元格对象。
HSSFCell cell=row.createCell((short)1);
(5)把数据写入将单元格里。
Cell.setCellValue(“this is title”);
(6)保存Excel文档。
// import java.io.FileOutputStream;
FileOutputStream out=FileOutputStream(“c:\test.xls”);
workbook.write(out); //将Excel文档保存到C盘根目录下test.xls
out.close();
【知识扩展】
我们再为大家讲解一下如何设置字体和单元格样式。通过HSSFFont和HSSFCellStyle类设置数据在Excel中显示的字体、颜色、大小和单元格样式。设置过程如下:
(1)通过HSSFFont类创建字体对象。
HSSFFont font=workbook.createFont(); // 由workbook创建字体
(2)通过font来设置字体属性。
font.setFontHeightPoints((short)8); //设置字体属性
font.setFontHeight((short)HSSFFont.BOLDWEIGHT_NORMAL); // 设置字体属性
font.setColor((short)(HSSFFont.COLOR_RED)); // 设置字体属性
(3)通过HSSFCellStyle类创建单元格样式对象。
HSSFCellStyle cellstyle=workbook.createCellStyle(); // 由workbook创建单元格样式
(4)通过cellstyle来设置样式属性。
cellstyle.setFont(font); // 设置样式属性
(5)通过HSSFCell类创建单元格对象。
HSSFRow row=workbook.createRow((short)0);
HSSFCell cell=row.createCell((short)1);
(7)将样式应用于单元格对象。
cell.setCellStyle(cellstyle); // 使用已创建的样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值