在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); // 使用已创建的样式