这篇文章很简单,教你简单的用java代码导出Excel表。
具体工作场景就是从数据库中查出数据,然后java代码做一些其他操作,写入表中…巴拉巴拉
然后我下面就不写从数据库拿数据了,直接写进字符串,开始了
//demo类
public class excelDemo{
void exportExcel(){
try{
//1.创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//2.在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("sheet1");
//3.在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow(0);//从0开始!从0开始!从0开始
//4.创建单元格,并设置表头 这只表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //创建一个居中格式
HSSFCell cell = row.createCell(0);//又是从0开始
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("性别");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("年龄");
cell.setCellStyle(style);
//正常来说都是先设置表头,然后一行一行的插入数据
//开始第二行插入数据
row = sheet.createRow(1);//用前面同一个引用吧,节省一下栈内存,都可以的,你们想咋写就咋写
cell = row.createCell(0);//又是从0开始
cell.setCellValue("詹姆斯");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("男");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("36");
cell.setCellStyle(style);
//第三行
row = sheet.createRow(2);//用前面同一个引用吧,节省一下栈内存,都可以的,你们想咋写就咋写
cell = row.createCell(0);//又是从0开始
cell.setCellValue("浓眉哥");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("男");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("27");
cell.setCellStyle(style);
//以上是简单插入数据,一般的业务场景,这个就够了,稍微复杂的可能就是合并单元格了,具体就是拿到数据后,根据某些条件,进行合并单元格
mergeTitle(1,2,1,1,sheet);//合并的是从第1行的第1列到第2行的第1列单元格;之前是男男,现在变成男,此时合并后的单元格会取最上面那一行的值,不管你合并几个,横着还是竖着合并,都是左上的值
//数据整完之后该导出来了
// 写入
ByteArrayOutputStream bis = new ByteArrayOutputStream();
wb.write(bis);
byte[] bytes = bis.toByteArray();
InputStream by = new ByteArrayInputStream(bytes);
//具体文件放到哪,大家都不一样,有的是放到电脑里啥的,你们自行发挥吧,我的是上传到阿里云,这个我就省略了,后面我会写一篇阿里云上传的方法,简单明了,一学就废
}catch (IOException e) {
e.printStackTrace();
}
}
/**
*合并单元格的方法
*rowIndexStart 第几行开始
*rowIndexEnd 到第几行
*cellIndexStart 开始单元格
*cellIndexEnd 结束单元格
*sheet 合并的哪个sheet表
*/
private static void mergeTitle(int rowIndexStart,int rowIndexEnd,int cellIndexStart,int cellIndexEnd,HSSFSheet sheet){
CellRangeAddress region = new CellRangeAddress(rowIndexStart, rowIndexEnd, cellIndexStart , cellIndexEnd);
sheet.addMergedRegion(region);
}
}
以上,这是我用到过的,最多就是合并单元格,如果还有其他的复杂的,下面留言,一起学习讨论一下