java生成表格图片_java生成表格图片

这篇博客介绍了一个Java方法,用于生成包含表格数据的图片。该方法首先定义了图片的尺寸、行高、列宽等参数,然后使用Graphics类绘制表格线条,并设置不同单元格的内容和样式。最后,将生成的图片保存到指定路径。测试代码展示了如何使用这个方法创建包含多行多列数据的表格图片。
摘要由CSDN通过智能技术生成

主要代码:

/**

* 生成图片

* @param cellsValue 以二维数组形式存放 表格里面的值

* @param path 文件保存路径

*/

public void myGraphicsGeneration(String cellsValue[][], String path) {

// 字体大小

int fontTitileSize = 15;

// 横线的行数

int totalrow = cellsValue.length+1;

// 竖线的行数

int totalcol = 0;

if (cellsValue[0]  != null) {

totalcol = cellsValue[0].length;

}

// 图片宽度

int imageWidth = 1024;

// 行高

int rowheight = 40;

// 图片高度

int imageHeight = totalrow*rowheight+50;

// 起始高度

int startHeight = 10;

// 起始宽度

int startWidth = 10;

// 单元格宽度

int colwidth = (int)((imageWidth-20)/totalcol);

BufferedImage image = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);

Graphics graphics = image.getGraphics();

graphics.setColor(Color.WHITE);

graphics.fillRect(0,0, imageWidth, imageHeight);

graphics.setColor(new Color(220,240,240));

//画横线

for(int j=0;j

graphics.setColor(Color.black);

graphics.drawLine(startWidth, startHeight+(j+1)*rowheight, startWidth+colwidth*totalcol, startHeight+(j+1)*rowheight);

}

//画竖线

for(int k=0;k

graphics.setColor(Color.black);

graphics.drawLine(startWidth+k*colwidth, startHeight+rowheight, startWidth+k*colwidth, startHeight+rowheight*totalrow);

}

//设置字体

Font font = new Font("微软雅黑",Font.BOLD,fontTitileSize);

graphics.setFont(font);

//写标题

String title = "【指标完成进度】";

graphics.drawString(title, startWidth, startHeight+rowheight-10);

//写入内容

for(int n=0;n

for(int l=0;l

if (n == 0) {

font = new Font("微软雅黑",Font.BOLD,fontTitileSize);

graphics.setFont(font);

}else if (n > 0 && l >0) {

font = new Font("微软雅黑",Font.PLAIN,fontTitileSize);

graphics.setFont(font);

graphics.setColor(Color.RED);

} else {

font = new Font("微软雅黑",Font.PLAIN,fontTitileSize);

graphics.setFont(font);

graphics.setColor(Color.BLACK);

}

graphics.drawString(cellsValue[n][l].toString(), startWidth+colwidth*l+5, startHeight+rowheight*(n+2)-10);

}

}

// 保存图片

createImage(image, path);

}

/**

* 将图片保存到指定位置

* @param image 缓冲文件类

* @param fileLocation 文件位置

*/

public void createImage(BufferedImage image, String fileLocation) {

try {

FileOutputStream fos = new FileOutputStream(fileLocation);

BufferedOutputStream bos = new BufferedOutputStream(fos);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

encoder.encode(image);

bos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

2.测试代码

public static void main(String[] args) {

DrawTableImg cg = new DrawTableImg();

try {

String tableData1[][] = {{"8月31日","累计用户数","目标值","完成进度","时间进度", "进度差异"}, {"掌厅客户端(户)","469281","1500000","31.2%","33.6%", "-2.4%"}};

String[][] tableData2 = {{"8月31日(户)","新增用户数","日访问量","累计用户数","环比上月"},

{"合肥和巢湖","469281","1500000","31.2%","33.6%"},

{"芜湖","469281","1500000","31.2%","33.6%"},

{"蚌埠","469281","1500000","31.2%","33.6%"},

{"淮南","469281","1500000","31.2%","33.6%"},

{"马鞍山","469281","1500000","31.2%","33.6%"},

{"淮北","469281","1500000","31.2%","33.6%"}};

cg.myGraphicsGeneration(tableData2, "c:\\myPic.jpg");

} catch (Exception e) {

e.printStackTrace();

}

}

3. 效果图

9e37780b8d4079a49d72d413ae043ee1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值