手把手教你系列之java导出Excel表

这篇博客介绍了如何使用Java代码从数据库中获取数据并创建Excel表格,包括创建工作簿、设置表头、插入数据以及合并单元格等基本步骤。示例代码详细展示了如何创建一个简单的Excel文件,包含姓名、性别和年龄等字段,并演示了如何合并单元格以优化数据展示。适合初学者了解Java处理Excel的基础知识。
摘要由CSDN通过智能技术生成

这篇文章很简单,教你简单的用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);
    }
	
}

以上,这是我用到过的,最多就是合并单元格,如果还有其他的复杂的,下面留言,一起学习讨论一下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值