jxcell开发简单实例
目前市场上有很多的excel的处理工具,poi、jxl、java2word等等,在制作excel上面,我用了这么多插件里面,做的最全面的就是jxcell了。poi也可以做,但更适合其他类型文档,ppt,word等。
缺点:
网上使用很少,资料很少,api文档虽然有,但是很多地方都非常的含糊,不知道属性具体用处是什么。
优点:
可以调用excel自带的公式及语法。生成对应的数据以及图表,这些poi等插件是无法做到的。
由于毕竟是工作时写的,我只能分享部分设计
1.设置sheet页
View m_view = new View();
/**
* 设置页签
* @param m_view
* @throws CellException
*/
private void settingExcelSheet(View m_view,String name) throws CellException {
//设置sheet页数
m_view.setNumSheets(3);
//设置sheet页的名称
m_view.setSheetName(0,name);
m_view.setSheetName(1,"sheet1");
m_view.setSheetName(2,"sheet2");
}
2.设置设置表格,并设置相关样式
/**
* 写入第三个数据页签
* @param m_view
* @return
* @throws CellException
*/
public static void writeThridSheetInfo(View m_view, List<String> dateList,
List<String> netWorstList)
throws Exception {
m_view.setSheet(2);
//标题 setTextAsValue(行,列,值);
m_view.setTextAsValue(0,0,"日期");
m_view.setTextAsValue(0,1,"客户");
m_view.setDefaultFont("Dengxian",-12);//设置默认字体和字体大小
m_view.setDefaultRowHeight(445);//设定默认单元格行高
m_view.setColWidth(0, 1, 5280, false);
//m_view.setDefaultColWidth(5300);//设定默认单元格行宽
//m_view.setColWidth(0, 3000);//设置第一列的自定义单元格行宽
//设置样式格式
ConditionFormat condfmt[]=new ConditionFormat[1];
condfmt[0] = m_view.CreateConditionFormat();
//设置公式,区域
CellFormat cellFormat = ExcelUtil.settingCellStyle(condfmt, new Color(129,0,0).getRGB(), Color.BLACK.getRGB(),
Color.WHITE.getRGB(), (short)1,true,false,12);
//设置那些行和列需要使用这个配置
condfmt[0].setCellFormat(cellFormat);
m_view.setSelection(0, 0, 0, 1);//设定背景色位置 第一个第二个参数定位起始点 第三个参数定位多少行 第四个参数定位多少列
m_view.setConditionalFormats(condfmt);
m_view.setCellFormat(cellFormat, 0, 0, 0, 1);
//设置时间列,和数据列
for(int i=0;i<dateList.size();i++){
m_view.setText(i+1,0,dateList.get(i));//文本格式
m_view.setTextAsValue(i+1,1,CalcUtil.saveFourPoint(netWorstList.get(i)));//会根据你的数据类型转变格式
}
//设置数据第一列的靠齐方式
condfmt[0] = m_view.CreateConditionFormat();
//设置公式,区域
CellFormat cellFormat2=condfmt[0].getCellFormat();
cellFormat2.setHorizontalAlignment(CellFormat.HorizontalAlignmentLeft);
m_view.setCellFormat(cellFormat2, 1, 0, dateList.size(), 0);
}
3.设置格式的通用设置类,我只列举了一部分,其他的可以看api文档,不过确实难看
/**
* 设置通用样式
* @param condfmt
* @param color
* @return
* @throws Exception
*/
public static CellFormat settingCellStyle(ConditionFormat[] condfmt,
int backgroundColor,int borderColor,int fontColor,
short size,boolean isblod,boolean isMerge,int fontSize)
throws Exception {
CellFormat cellFormat=condfmt[0].getCellFormat();
condfmt[0].setType(ConditionFormat.TypeFormula);
condfmt[0].setFormula1("true", 0, 0);
//设置背景颜色
cellFormat.setPattern((short)1);
cellFormat.setFontSize(fontSize);
cellFormat.setPatternFG(backgroundColor);//设置背景颜色
//设置字体颜色大小
cellFormat.setFontSize(fontSize);
cellFormat.setFontName("微软雅黑");
cellFormat.setFontBold(isblod);//设置是否展示粗体
cellFormat.setFontColor(fontColor);
cellFormat.setFontItalic(false);
//设置是否合并
cellFormat.setMergeCells(isMerge);
//设置边框样式
cellFormat.setBottomBorder(size);
cellFormat.setBottomBorderColor(borderColor);
cellFormat.setRightBorder(size);
cellFormat.setRightBorderColor(borderColor);
//设置字体展示位置
cellFormat.setHorizontalAlignment(CellFormat.HorizontalAlignmentCenter);
cellFormat.setVerticalAlignment(CellFormat.VerticalAlignmentCenter );
return cellFormat;
}
4.设置饼状图
/**
* 设置饼状图
* @param m_view
* @param rowNum 当前行数
* @param count你选择的数据有几行
* @param name 你这个sheet页的名称
* @throws Exception
*/
private static void settingFoldPieChart(View m_view, int rowNum, int count,String name) throws Exception {
//绘图区坐标addChart(左上列x,左上行y,右下列x,右下行y)
ChartShape chart = m_view.addChart(8, rowNum, 16, rowNum+9+0.5);
//图标形式
chart.setChartType(ChartShape.TypePie);
chart.set3Dimensional(true);
//设置连接区域
// 添加一个系列
chart.addSeries();
// 饼图数据源,饼图需要的具体数字,不包含总数,参数为 开始单元格结束单元格
chart.setSeriesYValueFormula(0, name+"!$G$"+(rowNum+2)+":$G$"+(rowNum+count+1));//从G列的第几行到第几行,设置数据
// 数据对应的说明.如:货车 12辆,这里是货车
chart.setCategoryFormula(name+"!$B$"+(rowNum+2)+":$B$"+(rowNum+count+1));//从b列的第几行到几行,设置名称
// 设置列宽行高
m_view.setColWidth(1, 18 * 256);
// 设置图纸样式, 参照各种Format类
ChartFormat cf = chart.getChartFormat();
chart.setChartFormat(cf);
// 设置绘图区颜色
cf = chart.getPlotFormat();
chart.setPlotFormat(cf);
// 展示图饼文字描述
cf = chart.getSeriesFormat(0);
cf.setFontBold(true);
cf.setDataLabelPosition((short)6);//设置饼状图数据展示
cf.setDataLabelTypes(6);//设置饼状图样式
chart.setSeriesFormat(0, cf);
// 设置图饼分块颜色
chart.setVaryColors(true);
// 设置标题字体格式
cf = chart.getTitleFormat();
cf.setFontBold(true);
cf.setFontSize(20 * 20);
chart.setTitleFormat(cf);
//图利位置
chart.setLegendVisible(false);
// 图表刻印样式, 取消图饼边框显示
cf = chart.getLegendFormat();
cf.setLineNone();
cf.setFontSizeInPoints(13);
chart.setLegendFormat(cf);
}
5.设置折线图
/**
* 设置折线图
* @param m_view
* @param rowNum 行数
* @param maxData最大值
* @param minData最小值
* @param dateList
* @throws Exception
* @throws CellException
*/
private static void settingFoldLineChart(View m_view, List<String> dateList,int rowNum,
StringBuilder maxData, StringBuilder minData)
throws Exception, CellException {
//绘图区坐标addChart(左上列x,左上行y,右下列x,右下行y)
ChartShape chart = m_view.addChart(8, rowNum+1, 16, rowNum+10);
//图标形式
chart.setChartType(ChartShape.TypeLine);
/*
TypeBar:横向柱状图
TypePie:饼状图
TypeLine:线状图
TypeArea:面积图
TypeDoughnut:圈图
TypeScatter:线点图
TypeBubble:没怎么看懂,就是一个灰图,不过查阅资料,貌似是泡状图
*/
//设置连接区域
chart.setLinkRange("sheet2!$A$1", false);
//添加一个系列
chart.addSeries();
//系列名字
chart.setSeriesName(0, "sheet2!$B$1");
//系列值
chart.setSeriesYValueFormula(0, "sheet2!$B$2:$B$"+(dateList.size()+1));
//系列分类
chart.setCategoryFormula("sheet2!$A$2:$A$"+(dateList.size()+1));
chart.setTitle("title");
//设置图表样式
ChartFormat cf = chart.getChartFormat();
//设置背景色
cf.setPattern((short)1);
cf.setPatternFG(Color.WHITE.getRGB());
cf.setLineColor((new Color(224, 224, 224)).getRGB());
chart.setChartFormat(cf);
//设置绘图区颜色
cf = chart.getPlotFormat();
cf.setPattern((short)1);
cf.setPatternFG(Color.WHITE.getRGB());
cf.setLineColor(new Color(255, 255, 255,0).getRGB());
cf.isLineNone();
chart.setPlotFormat(cf);
//设置横坐标文字大小
cf = chart.getAxisFormat(ChartShape.XAxis, 0);
cf.setFontSizeInPoints(8.5);
cf.setTextRotation(-90);
//cf.set
chart.setAxisFormat(ChartShape.XAxis, 0, cf);
//设置纵坐标文字大小
cf = chart.getAxisFormat(ChartShape.YAxis, 0);
cf.setFontSizeInPoints(8.5);
cf.isLineNone();
cf.setLineColor(Color.WHITE.getRGB());
chart.setAxisFormat(ChartShape.YAxis, 0, cf);
//设置y轴最大最小值(系统默认自动生成最大值最小值,非常不好看)
chart.setAutoMaximumScale(ChartShape.YAxis, 0, false);//如果要自己设置,需要将默认的最大值最小值设置为false
chart.setAutoMinimumScale(ChartShape.YAxis, 0, false);
//设置最大值最小值,由于画布本来有外边框,如果将外边框去掉会导致最上面的网格线显示不出来,3.1是为了3这根线能展示,具体根据自己的项目设置
double max = Double.parseDouble(maxData.toString());
double min = Double.parseDouble(minData.toString());
if(max == min){
chart.setScaleValueRange(ChartShape.YAxis,0,min-0.5,max+0.5);
//设置y轴值间隔(默认根据数据系统自动生成间隔)
chart.setScaleMajorUnitAuto(ChartShape.YAxis,0,false);//必须将默认的间隔设置设置为false,自己设置间隔
chart.setScaleMajorUnit(ChartShape.YAxis,0,0.1);//设置间隔
}else{
//计算他们的间隔
double interval = PublicMethod.saveTwoPointDouble((max-min+1)/10+"");
min = PublicMethod.saveTwoPointDouble(min+"");//最大值
max = PublicMethod.saveTwoPointDouble(max+"");//最小值,设置值域
chart.setScaleValueRange(ChartShape.YAxis,0,min-0.5,max+0.5);
//设置y轴值间隔(默认根据数据系统自动生成间隔)
chart.setScaleMajorUnitAuto(ChartShape.YAxis,0,false);//必须将默认的间隔设置设置为false,自己设置间隔
chart.setScaleMajorUnit(ChartShape.YAxis,0,interval);//设置间隔
}
chart.setAxisScaleCrosses(ChartShape.YAxis, 0, false, -4);
//设置图标内标线样式
cf = chart.getSeriesFormat(0);//设置我的线的颜色。样式
cf.setLineStyle((short)2);//线的样式类型
cf.setLineWeight(30);
cf.setLineColor(0x00CCFF);
cf.setMarkerAuto(false);
cf.setMarkerStyle((short)0);
chart.setSeriesFormat(0, cf);
//主格网
cf = chart.getMajorGridFormat(ChartShape.YAxis, 0);
cf.setLineStyle((short)1);
cf.setForeColor((new Color(0,0,0,0)).getRGB());
cf.setLineColor((new Color(224, 224, 224)).getRGB());
cf.setLineWeight(1);
chart.setMajorGridFormat(ChartShape.YAxis, 0, cf);
//图利位置
chart.setLegendPosition(ChartFormat.LegendPlacementBottom);
//图利样式,解释各条线的名称
cf = chart.getLegendFormat();
cf.setFontBold(true);
cf.setFontSizeInPoints(8);
cf.setLineColor(Color.WHITE.getRGB());
chart.setLegendFormat(cf);
}
最后。还有很多东西,自己还没有接触到,以后接触到,再分享出来,有问题,请多多指教,谢谢浏览。
jxcell开发简单实例相关推荐
- VC6下miniblink应用开发简单实例
VC6下miniblink应用开发简单实例 最近研究浏览器的开发和数据采集,发现miniblink这个东西不错,可以试着在这个空间基础上做很多工作,很有兴趣,初步进行了研究和学习,随时把学习的代码分享 ...
- php银联支付接口 demo,php版银联支付接口开发简单实例详解
这篇文章主要介绍了php版银联支付接口开发的方法,结合实例形式分析了php银联支付接口开发的具体流程与相关操作技巧,需要的朋友可以参考下 支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍 ...
- ios APP开发简单实例
这一次的任务是两个人合作设计一个简单的APP,其中设计到了源代码的设计,源代码的实现以及源代码的控制.在设计app前,我们先仔细研究了软件是如何设计与实现的,然后我们决定做个简单的app-提醒小闹钟. ...
- ios app开发简单实例--源代码管理的基本操作
源代码管理的基本操作主要包括代码规范和代码复审. "代码规范"可以分成两个部分. (1)代码风格规范.主要是文字上的规定,看似表面文章,实际上非常重要. (2)代码设计规范.牵涉到 ...
- java软件开发 jpanel_java图像界面开发简单实例-JPanel应用 | 学步园
importjava.awt.Graphics;importjavax.swing.JFrame;importjavax.swing.JPanel;/*** 扩展于JPanel的类,重写paintCo ...
- LinuxC/C++编程基础(24) 使用thrift/rpc开发简单实例(续2)
写在前面:前面两篇文字已经把thrift/rpc的安装以及服务端的编写叙述了,这里再把客户端的编写加上 一.client.cpp文件实现,如下: #include "../gen-cpp/M ...
- webservice实例java_Java WebService(实战) 简单实例
一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...
- Hibernate搭建开发环境+简单实例(二)
2019独角兽企业重金招聘Python工程师标准>>> Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hiber ...
- php阅读器开发,微信小程序阅读器的简单实例开发
这篇文章主要介绍微信小程序阅读器的简单实例开发的相关资料,需要的朋友可以参考下 今天和朋友聊天说到小程序,然后看在看书,然后我们就弄了个小读书的demo,然后现在分享一下. 一.先来上图: 首先先说下 ...
最新文章
- Jmeter脚本 GUI和非GUI启动方式
- 用Python分析北上广深租房情况,租房时优先考虑哪些因素?
- apache httpd服务器403 forbidden的问题
- [导入]日志 20071211(WCF,实验室产品)
- Linux命令篇之tree命令和touch命令
- asr1009查看接口光衰_python脚本检查H3C交换机光衰
- Flink读写Mysql(Java版)
- this指向_js中关于this指向的训练题
- Google手机移动网站适配(双向注释)
- Python对文本文件的简单操作(一)
- bjui给出的一个标准应用的首页
- android网易云桌面歌词,网易云怎么设置桌面歌词?
- 常用软件分类运维或个人收藏软件必备,及文件夹打包下载
- IDEA中格式化代码快捷键
- 用python写生日快乐说说_生日快乐的说说(精选50句)
- 设置背景颜色html,css怎么设置背景颜色?
- 19年绝响,张国荣「复活」!AI高清修复《热·情》燃爆2000万观众
- Map与JSON之间转换
- for循环遍历字符串
- 初识MIMO(二):MIMO的信道容量及其仿真
热门文章
- 仙人掌之歌——直播业务立项(2)
- nomachine NX 远程连接相关问题
- 深圳物流 inurl php id=,免费快递在线下单接口对接文档-(PHP)
- lnmp全面优化集合nginx+mysql+php
- 使用Mozilla Thunderbird 创建ics日历文件
- 多线程下载视频,并运用Fmmpeg合成
- 泥瓦匠想做一个与众不同的技术匠
- Android学习记录
- 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
- 南京艺术学院计算机考研,南京艺术学院考研难吗?一般要什么水平才可以进入?...