java:spire.xls导出数据和图片生成excel

这篇博客展示了如何在Java中利用Spire.XLS库来创建Excel文件,并在其中插入图片。代码示例详细说明了从数据列表生成工作表,设置单元格样式,以及如何在指定位置插入图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一篇博客

先看效果图

 

上代码,换一下路径就可以直接运行

jar包:spire.xls-4.11.3.jar

//依赖
//		<dependency>
//		    <groupId>e-iceblue</groupId>
//		    <artifactId>spire.xls</artifactId>
//		    <version>4.11.3</version>
//		</dependency>

public class ExportKBIMG{
	/** 写共通日志 */
	private static Logger logger = LoggerFactory.getLogger(ExportKBIMG.class);
	
	
	public static void main(String[] args) throws Exception {
		
		
		Map<String, Object> map;
		List<Map<String, Object>> list = new ArrayList<>();	
		
		for (int column=0; column<5; column++) {
			map = new HashMap<String, Object>();
			
			map.put("0","61607029630"+column);
			map.put("1","背番号"+column);
			map.put("2","车种"+column);
			map.put("3","部品中文名"+column);
			map.put("4","品名"+column);
			map.put("5","受入口"+column);
			map.put("6","收容数"+column);
			map.put("7","C:\\Users\\htx\\Desktop\\61214-06220.jpg");
			list.add(map);
		}
		String outputfile = "D:\\exportKanBan\\看板基础数据.xlsx";
		
		spireExport(list,outputfile);
		
	}

	/**
	 * spire 导出数据和图片并生成excel
	 * @param list
	 * @param outputfile
	 * @throws Exception
	 */
	public static void spireExport(List<Map<String, Object>> list,String outputfile)throws Exception {
		//创建Workbook实例 
        Workbook workbook = new Workbook();

        //获取第一张工作表(新建的Workbook默认包含3张工作表)
        Worksheet sheet = workbook.getWorksheets().get(0);
        //为第一张工作表设置名称
        sheet.setName("看板基础数据");
        

        //创建列头单元格样式
        CellStyle style1 = workbook.getStyles().addStyle("Header Style");
        style1.getFont().setSize(12f);
        style1.getFont().setColor(Color.BLACK);
        style1.getFont().isBold(true);
        style1.setHorizontalAlignment(HorizontalAlignType.Center);
        style1.setVerticalAlignment(VerticalAlignType.Center);

        //创建数据单元格样式
        CellStyle style2 = workbook.getStyles().addStyle("Data Style");
        style2.getFont().setSize(10f);
        style2.getFont().setColor(Color.BLACK);
        
      List<String> headlist = Arrays.asList("品番","背番号","车种","部品中文名","品名","受入口","收容数","图片");
      for (int column=0; column<headlist.size(); column++)
      {
          CellRange header =sheet.getCellRange(1,column+1);
          header.setValue(headlist.get(column));
          header.setStyle(style1);
          header.setColumnWidth(15f);
      }

        
        //为数据单元格添加数据并应用样式
        for (int row=2; row<list.size()+2; row++)
        {
            for (int column=0; column<headlist.size(); column++)
            {
                CellRange cell = sheet.getCellRange(row, column+1);
                cell.setValue((String) list.get(row-2).get(String.valueOf(column)));
                cell.setStyle(style2);
                cell.setRowHeight(90f);
                System.out.println((String) list.get(row-2).get(String.valueOf(column)));
            }

            try {
            //图片路径
            String photopath = (String) list.get(row-2).get("7");
            //添加图片到工作表的指定位置
            if(!photopath.equals("图片未上传")|| photopath != "图片未上传") {
            	ExcelPicture pic = sheet.getPictures().add(row, 8,photopath);
            	//设置图片的宽度和高度
            	pic.setHeight(100);
            	pic.setWidth(300);
            	//压缩图片
            	pic.compress(40);
            	
            }
			} catch (Exception e) {
				e.printStackTrace();
			}
            
            System.out.println("图片插入完了***********************");
        }
        
//        //设置行高、列宽为自适应(应用于整个工作表)
//        sheet.getAllocatedRange().autoFitRows();
//        sheet.getAllocatedRange().autoFitColumns();
        
//        //给工作表中已使用的单元格区域设置背景颜色
//        sheet.getAllocatedRange().getStyle().setColor(Color.green);
        //给指定单元格区域设置背景颜色
        sheet.getCellRange("A1:K1").getStyle().setColor(Color.gray);
        
        //合并单元格范围A1到C1
        sheet.getRange().get("H1:K1").merge();
        //设置 Excel 中数字格式
        sheet.getCellRange("A1:A1000").setNumberFormat("0");
        
        //保存结果文件
        workbook.saveToFile(outputfile, FileFormat.Version2013);
        System.out.println("excel生成完了");
       
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值