第一篇博客
先看效果图
上代码,换一下路径就可以直接运行
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生成完了");
}
}