java导出图片到excel
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
格
篇一:java生成excel图表
需要导包:jfreechart-1.0.8a.jar和jcommon-1.0.12.jar
建一个java类 CreateChartServiceImpl 类定义如下
单独运行此类在e:\test下看图片效果
剩下的自己改吧
package Excel.tools;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
1
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import
org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import
org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import
org.jfree.chart.renderer.category.LineAndShapeRenderer;
import
org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
/**
* 实际取色的时候一定要16位的,这样比较准确
*
2
* @author new
*/
public class CreateChartServiceImpl {
private static final String CHART_PATH = E:/test/;
public static void main(String[] args) {
} // TODO Auto-generated method stub
CreateChartServiceImpl pm = new
CreateChartServiceImpl(); // 生成饼状图
pm.makePieChart(); // 生成单组柱状图
pm.makeBarChart(); // 生成多组柱状图
pm.makeBarGroupChart(); // 生成堆积柱状图
pm.makeStackedBarChart(); // 生成折线图
pm.makeLineAndShapeChart(); /** * 生成折线图 */
public void makeLineAndShapeChart() { double[][] data = new double[][] { { 672, 766, 223, 540, 126 }, { 325, 521, 210,
340, 106 }, { 332, 256, 523, 240, 526 } }; String[] rowKeys =
{ 苹果, 梨子, 葡萄 }; String[] columnKeys = { 北京, 上
海, 广州, 成都, 深圳 }; CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);
createTimeXYChar(折线图, x轴, y轴, dataset,
lineAndShap.jpg); } /** * 生成分组的柱状图 */ public
void makeBarGroupChart() { double[][] data = new
3
double[][] { { 672, 766, 223, 540, 126 }, { 325, 521, 210, 340, 106 }, { 332, 256, 523, 240, 526 } }; String[] rowKeys = { 苹
果, 梨子, 葡萄 }; String[] columnKeys = { 北京, 上海,
广州, 成都, 深圳 }; CategoryDataset dataset =
getBarData(data, rowKeys, columnKeys);
createBarChart(dataset, x坐标, y坐标, 柱状图,
barGroup.png); } /** * 生成柱状图 */ public void
makeBarChart() { double[][] data = new double[][] { { 672, 766, 223, 540, 126 } };
} String[] rowKeys = { 苹果 }; String[] columnKeys =
{ 北京, 上海, 广州, 成都, 深圳 }; CategoryDataset dataset
= getBarData(data, rowKeys, columnKeys);
createBarChart(dataset, x坐标, y坐标, 柱状图, bar.png);
/** * 生成堆栈柱状图 */ public void
makeStackedBarChart() { double[][] data = new double[][] { { 0.21, 0.66, 0.23, 0.40, 0.26 }, { 0.25, 0.21, 0.10, 0.40, 0.16 } };
String[] rowKeys = { 苹果, 梨子 }; String[] columnKeys =
{ 北京, 上海, 广州, 成都, 深圳 }; CategoryDataset
dataset = getBarData(data, rowKeys, columnKeys); createStackedBarChart(dataset, x坐标, y坐标, 柱状图,
stsckedBar.png); } /** * 生成饼状图 */ public void
makePieChart() { double[] data = { 9, 91 }; String[] keys
4
= { 失败率, 成功率 };}
createValidityComparePimChar(getDataPieSetByUtil(data, keys), 饼状图,pie2.png, keys); // 柱状图,折线图 数据集
public CategoryDataset getBarData(double[][] data, String[] rowKeys,String[] columnKeys) { return
DatasetUtilities .createCategoryDataset(rowKeys, columnKeys, data); } // 饼状图 数据集 public PieDataset
getDataPieSetByUtil(double[] data,String[] datadescription) { if (data != null && datadescription != null) { if (data.length == datadescription.length) {DefaultPieDataset dataset = new DefaultPieDataset();
for (int i = 0; i < data.length; i++) {
dataset.setValue(datadescription[i], data[i]);
}
return dataset;
}
}
return null;
}
/**
* 柱状图
*
5
*@param dataset
*数据集
* @param xName
*x轴的说明(如种类,时间等)
* @param yName
*y轴的说明(如速度,时间等)
* @param chartTitle
*图标题
* @param charName
*生成图片的名字
* @return
*/
public String createBarChart(CategoryDataset dataset,
String xName,
String yName, String chartTitle, String charName) {
JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题
xName, // 目录轴的显示标签
yName, // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
6
false, // 是否生成工具
false // 是否生成URL链接
);
Font labelFont = new Font(SansSerif, Font.TRUETYPE_FONT, 12);
/*
* VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯
齿关闭,
* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体
字,这样文字最清晰好看 */
//
chart.getRenderingHints().put(RenderingHints.KEY_TEXT
_ANTIALIASING,RenderingHints.V
ALUE_TEXT_ANTIALIAS_OFF);
chart.setTextAntiAlias(false);
chart.setBackgroundPaint(Color.white);
// create plot
CategoryPlot plot = chart.getCategoryPlot();
// 设置横虚线可见
plot.setRangeGridlinesVisible(true);
// 虚线色彩
7
plot.setRangeGridlinePaint(Color.gray);
// 数据轴精度
NumberAxis vn = (NumberAxis) plot.getRangeAxis();
// vn.setAutoRangeIncludesZero(true);
DecimalFormat df = new DecimalFormat(#0.00);
vn.setNumberFormatOverride(df); // 数据轴数据标签的
显示格式
// x轴设置
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值
// Lable(Math.PI/3.0)度倾斜
//
domainAxis.setCategoryLabelPositions(CategoryLabelPositions
// .createUpRotationLabelPositions(Math.PI / 3.0));
domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示
// 设置距离图片左端距离
domainAxis.setLowerMargin(0.1);
// 设置距离图片右端距离
8
domainAxis.setUpperMargin(0.1);
// 设置 columnKey 是否间隔显示
// domainAxis.setSkipCategoryLabelsToFit(true);
plot.setDomainAxis(domainAxis);
// 设置柱图背景色(注意,系统取色的时候要使用16位
的模式来查看颜色编码,这样比较准确)
plot.setBackgroundPaint(new Color(255, 255, 204));
// y轴设置
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(labelFont);
rangeAxis.setTickLabelFont(labelFont);
// 设置最高的一个 Item 与图片顶端的距离
篇二:Java导出excel表格1
【Java】导出excel表格
修改浏览权限 | 删除
package jxlTest;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
9
import jxl.*;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.write.Boolean;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class JXLExample {
/**
* 数据库导出至Excel表格
*/
public static void main(String[] args) {
// 准备设置excel工作表的标题
String[] title = {编号,产品名称,产品价格,产品数量,生产日
期,产地,是否出口};
try {
// 获得开始时间
10
long start = System.currentTimeMillis();
// 输出的excel的路径
String filePath = e:\\testJXL.xls;
// 创建Excel工作薄
WritableWorkbook wwb;
// 新建立一个jxl文件,即在e盘下生成testJXL.xls
OutputStream os = new FileOutputStream(filePath);
wwb=Workbook.createWorkbook(os);
// 添加第一个工作表并设置第一个Sheet的名字
WritableSheet sheet = wwb.createSheet(产品清单, 0);
Label label;
for(int i=0;i<title.length;i++){
// Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z
// 在Label对象的子对象中指明单元格的位置和内容
label = new Label(i,0,title[i]);
// 将定义好的单元格添加到工作表中
sheet.addCell(label);
}
// 下面是填充数据
/*
* 保存数字到单元格,需要使用jxl.write.Number
* 必须使用其完整路径,否则会出现错误
11
* */
// 填充产品编号
jxl.write.Number number = new jxl.write.Number(0,1,20071001); sheet.addCell(number);
// 填充产品名称
label = new Label(1,1,金鸽瓜子);
sheet.addCell(label);
/*
* 定义对于显示金额的公共格式
* jxl会自动实现四舍五入
* 例如 2.456会被格式化为2.46,2.454会被格式化为2.45* */
jxl.write.NumberFormat nf = new
jxl.write.NumberFormat(#.##);
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf); // 填充产品价格
jxl.write.Number nb = new jxl.write.Number(2,1,2.45,wcf);
sheet.addCell(nb);
// 填充产品数量
jxl.write.Number numb = new jxl.write.Number(3,1,200);
sheet.addCell(numb);
/*
12
* 定义显示日期的公共格式
* 如:yyyy-MM-dd hh:mm
* */
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd); String newdate =
sdf.format(new Date());
// 填充出产日期
label = new Label(4,1,newdate);
sheet.addCell(label);
// 填充产地
label = new Label(5,1,陕西西安);
sheet.addCell(label);
/*
* 显示布尔值
* */
jxl.write.Boolean bool = new jxl.write.Boolean(6,1,true);
sheet.addCell(bool);
/*
* 合并单元格
* 通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的 * 表示将从第x+1列,y+1行到m+1列,n+1行合并
13
*
* */
sheet.mergeCells(0,3,2,3);
label = new Label(0,3,合并了三个单元格
); sheet.addCell(label);
/*
*
* 定义公共字体格式
* 通过获取一个字体的样式来作为
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
* 首先通过web.getSheet(0)获得第一个sheet
* 然后取得第一个sheet的第二列,第一行也就是产品名
称的字体* */
CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();WritableCellFormat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
// 设置边框线
wc.setBorder(Border.ALL, BorderLineStyle.THIN);
// 设置单元格的背景颜色
wc.setBackground(jxl.format.Colour.RED);
label = new Label(1,5,字体,wc);
14
sheet.addCell(label);
// 设置字体
jxl.write.WritableFont wfont = new
jxl.write.WritableFont(WritableFont.createFont(隶书),20);
WritableCellFormat font = new WritableCellFormat(wfont); label = new Label(2,6,隶书,font);
sheet.addCell(label);
// 写入数据
wwb.write();
// 关闭文件
wwb.close();
long end = System.currentTimeMillis();
System.out.println(----完成该操作共用的时间
是:+(end-start)/1000); } catch (Exception e) {
System.out.println(---出现异常---);
e.printStackTrace();
}
}
}
篇三:Java将数据导出Excel
使用java将数据导出EXCEL
15
1. 效果图
2. Struts2配置及代码
2.1. 配置
<action name=user_* class=userAction method={1}<result
name=userList_page/pages/user_page/userList.jsp</result
<result name=outToExcel type=stream
<param name=inputNameinputStream</param
<param
name=contentDispositionattachment;filename=${fileNam</param
</result
</action
2.2. action代码
private UserService<User userService; private InputStream inputStream; private String fileName; private List<User users; //注:下面属性提供get*、set*方法
//调用Excel(自己定义,下面有)类方法 public String
outUsersToExcel(){ Excel excel=new Excel();
16
//要显示表格列名
excel.setColumns(new String[]{序号,姓名,性别,地址,创建时间});
//生成EXCEL文件名称
excel.setFileName(用户信息.xls);
//文件表的头部标题
excel.setTitle(用户信息);
//将要导出的用户信息
List<User userList=userService.getAllUsers();
List list=excel.getExcelContentList();
int i=1;
for(User user:userList){
String[] row=
{
i+,
user.getUserName()+,
user.getSex()+,
user.getAddress(),
TimeUtil.getStrByDate(user.getCreateTime()) };
i++;
list.add(row);
//设置序号
17
if(i==Integer.parseInt(excel.getPerSheetRows())+1){ i=1;
}
}
excel.setExcelContentList(list);
//导出EXCEL
this.inputStream=excel.outExcel(excel,this.inputStream,this.request);
this.fileName=excel.getExcelFileName(excel.getFileName());return outToExcel;
}
3. Excel属性类(自己定义,为了简化代码)
public class Excel {
public static Logger logger=Logger.getLogger(Excel.class);
//Excel构造方法(初始化信息)
@SuppressWarnings(unchecked)
public Excel(){
propertiesTool=new=PropertiesTool(system.properties; excelContentList=new ArrayList();
}
private PropertiesTool propertiesTool;//系统属性文件
18
private String title;//文件内容标题
private String filePath;//生成EXCEL的路径
private String folderName;//存放EXCEL文件的文件夹名
称
private String perSheetRows;//每张表显示的数量
private String[] columns;//EXCEL信息列的名称
private String condition;//查询的条件
private String fileName;//文件名称
@SuppressWarnings(unchecked)
private List excelContentList;//导出数据(格式化后的
String数组形式的集合)
注:上面Excel中的属性自己要提供get*、set*方法
//导出Excel
public InputStream outExcel(Excel excel,InputStream
inputStream,HttpServletRequest request){
// OutToExcel里面有导出Excel具体方法的实现,下面具
体会结束
OutToExcel outToExcel=new OutToExcel();
//得到系统真实路径
String realPath =
request.getSession().getServletContext().getRealPath(/);
//生成EXCEL的路径
19
excel.setFilePath(realPath+excel.getFolderName());
try {
//调用方法转化为EXCEL表
outToExcel.outExcel(excel);
//下载时提示的文件名。
fileName= new String(excel.getFileName());
//输出EXCEL
inputStream =new java.io.FileInputStream(filePath +/+fileName);
} catch (Exception e) {
logger.error(fileName+导出出现错误,e);
}
return inputStream;
}
//获取导出Excel的文件名称
public String getExcelFileName(String fileName){
try {
fileName=new
String(fileName.getBytes(gb2312),iso8859-1);
} catch (Exception e) {
logger.error(要导出的EXCEL文件名称出现错误,e);
}
20
return fileName;
}
4. 导出Excel具体实现的方法
//导出Excel的具体实现方法1(主要处理数据转换)
public void outExcel(Excel excel) throws Exception{ String filepath=excel.getFilePath(); File path
= new File(filepath);if(!path.exists()){path.mkdir(); }
filepa
th = filepath +/+ excel.getFileName() ; // 创建excel
WritableWorkbook wwb; OutputStream os = null; WritableSheet sheet = null; os = new FileOutputStream(filepath);
// 新建立一个JXL文件(一个JXL文件可包含多个工作
表)
wwb = Workbook.createWorkbook(os);
//每张工作表显示内容的条数
int sheetRows =
Integer.parseInt(excel.getPerSheetRows());int i=0,j=0,beginNum=0,endNum=0;
String title1;
//循环读取数据,每次只读取perSheetRows行
for
21
(beginNum=0,i=sheetRows;i<excel.getExcelContentList().size()+sheetRows;i=i+sheetRows){
j++;//sheet个数。
endNum=i;
if (sheetRowsexcel.getExcelContentList().size()){
相关热词搜索:导出 表格 图片 java excel javaweb导出
excel表格 java中导出excel表格
22