用java读取Excel并依据模板图生成对应的图片

package test; import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import javax.imageio.ImageIO; public class Testpoi { public static void main(String[] args) {
String a = "E:\\Desktop files\\工作文档\\pic\\photo.png";
String b = "E:\\Desktop files\\工作文档\\test\\";
String c = null;
String d = null;
String e = null; Workbook wb =null;
Sheet sheet = null;
Row row = null;
List<Map<String,String>> list = null;
// String cellData = null;
String filePath = "E:\\Desktop files\\工作文档\\wps\\a.xlsx";
// String columns[] = {"name","names","code"};
wb = readExcel(filePath);
if(wb != null){
//用来存放表中数据
list = new ArrayList<Map<String,String>>();
//获取第一个sheet
sheet = wb.getSheetAt(0);
//获取最大行数
int rownum = sheet.getPhysicalNumberOfRows();
//获取第一行
row = sheet.getRow(0);
//获取最大列数
int colnum = row.getPhysicalNumberOfCells();
// DecimalFormat df = new DecimalFormat("0.00");
// String whatYouWant = df.format(1234567890.666);
for (int i = 1; i<rownum; i++) {
// Map<String,String> map = new LinkedHashMap<String,String>();
row = sheet.getRow(i);
c = (String) getCellFormatValue(row.getCell(0));
d = (String) getCellFormatValue(row.getCell(1));
e = (String) getCellFormatValue(row.getCell(2));
DecimalFormat df = new DecimalFormat("0");
String code = df.format(Double.parseDouble(e));
ImgYin(c,d,code,a,b+code+".png");
// if(row !=null){
// for (int j=0;j<colnum;j++){
// cellData = (String) getCellFormatValue(row.getCell(j));
// System.out.println(cellData);
//// map.put(columns[j], cellData);
// }
// }else{
// break;
// }
// list.add(map);
}
}
//遍历解析出来的list
// for (Map<String,String> map : list) {
// for (Entry<String,String> entry : map.entrySet()) {
//
// System.out.print(entry.getKey()+entry.getValue()+"...");
// }
// System.out.println();
// }
// ImgYin("1111111","2222222","33333333",a,b+"1.png");
}
//读取excel
public static Workbook readExcel(String filePath){
Workbook wb = null;
if(filePath==null){
return null;
}
String extString = filePath.substring(filePath.lastIndexOf("."));
InputStream is = null;
try {
is = new FileInputStream(filePath);
if(".xls".equals(extString)){
return wb = new HSSFWorkbook(is);
}else if(".xlsx".equals(extString)){
return wb = new XSSFWorkbook(is);
}else{
return wb = null;
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return wb;
}
public static Object getCellFormatValue(Cell cell){
Object cellValue = null;
if(cell!=null){
//判断cell类型
switch(cell.getCellType()){
case Cell.CELL_TYPE_NUMERIC:{
cellValue = String.valueOf(cell.getNumericCellValue());
break;
}
case Cell.CELL_TYPE_FORMULA:{
//判断cell是否为日期格式
if(DateUtil.isCellDateFormatted(cell)){
//转换为日期格式YYYY-mm-dd
cellValue = cell.getDateCellValue();
}else{
//数字
cellValue = String.valueOf(cell.getNumericCellValue());
}
break;
}
case Cell.CELL_TYPE_STRING:{
cellValue = cell.getRichStringCellValue().getString();
break;
}
default:
cellValue = "";
}
}else{
cellValue = "";
}
return cellValue;
}
public static void ImgYin(String s1, String s2,String s3, String ImgName,String outName){
try{
File file = new File(ImgName);
Image src = ImageIO.read(file);
int wideth=src.getWidth(null);
int height=src.getHeight(null);
BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
Graphics g=image.createGraphics();
g.drawImage(src,0,0,wideth,height,null);
//设置字体颜色
g.setColor(Color.BLACK);
//size字体大小
g.setFont(new Font("宋体",Font.PLAIN,50));
//wideth控制字体距离右侧边缘距离 height控制字体距离底部距离 1831 2569
g.drawString(s1,wideth-1500,height-1250);
g.drawString(s2,wideth-1450,height-970);
g.drawString(s3,wideth-1150,height-970);
g.dispose();
FileOutputStream out=new FileOutputStream(outName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
catch(Exception e){
System.out.println(e);
}
}
}
用java读取Excel并依据模板图生成对应的图片的更多相关文章
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- Java读取excel表格
Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...
- java读取excel文件的代码
如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...
- Java读取Excel数据
Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...
- 关于解决java读取excel文件遇空行抛空指针的问题 !
关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...
- 第四篇:java读取Excel简单模板
场景:对于经常需要导入Excel模板或数据来解析后加以应用的,使用频率非常之高,做了一个比较稳定的版本,体现在这些地方工具:org.apache.poi使用前必须了解这些:1.要解析,那肯定先判断是不 ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- java读取excel文件数据
package com.smp.server.Ctrl; import java.io.File;import java.io.FileInputStream;import java.io.FileN ...
- JAVA读取EXCEL文件异常Unable to recognize OLE stream
异常: jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl.read.biff.CompoundFile.<in ...
- java 读取excel 正常 xls
package com.sun.test; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInpu ...
随机推荐
- 对象有时候打印出来的日志可能是以map的格式存在,转成json格式
package com.example.mybatiscodehelper.demo;import org.springframework.boot.configurationprocessor.js ...
- G1 垃圾回收详解
引用: https://www.cnblogs.com/ciel717/p/16190562.html
- h5 json 生成excel
引入库文件 创建下载按钮 Download Demo Excel 实现转换 var data = [ ["Joa Doe", "joa@doe.com"], [ ...
- Zookeeper ZAB协议-Leader&Followe 对象创建和启动源码解析
这篇博客主要是解析了Leader,Follower 对象的创建,相对来说比较简单,主要是了解一下在实例化的时候创建了哪些对象,这些对象会在数据传输的过程中发挥比较打的作用,如果有了解过的,可以直接跳过 ...
- source 跳过登录账号的方法
1 安装 git windows 选择版本为 Git-2.29.2.2-64-bit 2 启动sourcetree 的安装 选择版本为 SourceTreeSetup-2.5.5 2.1 第一次启动 ...
- MySQL的架构与历史1.5MySQL的存储引擎
1.5 MySQL的存储引擎 1.5.1 InnoDB存储引擎 InnoDB是 MySQL的默认事务型引,也是最重要.使用最广泛的存储引擎.它被设计用来处理大量的短期 (short-lived)事务, ...
- Python 面试题整理
一.语言特性 1.什么是Python?使用Python有什么好处?Python和其他语言的区别? Python是一种编程语言,它有对象,模块,线程,异常处理和自动内存管理. 好处:开源.简洁.简单.方 ...
- django项目中使用swagger来实现接口文档自动生成
一.Swagger 一般我们在对接前后端的时候,都需要提供相应的接口文档.对于后端来说,编写接口文档即费时费力,还会经常因为没有及时更新,导致前端对接时出现实际接口与文档不一致.而且手写接口文档还容易 ...
- MySQL之中文数据问题
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- JavaScript严格模式(use strict)
一.什么是严格模式(strict mode) JavaScript严格模式即在严格模式下运行.严格模式下,你将不能使用未声明的变量. 注意,严格模式需要浏览器的支持:Internet explorer ...