echarts图表与列表文字结合导出word文档

合集下载

echarts常见的一些问题

echarts常见的一些问题

echarts常见的一些问题echarts是一款功能强大的数据可视化工具,但在使用过程中常常会遇到一些问题。

本文将针对echarts常见的问题进行总结和解答,帮助大家更好地使用echarts进行数据可视化分析。

问题一:如何在echarts中添加数据?在echarts中,可以通过以下几种方式添加数据:1. 使用静态数据:可以直接在代码中定义一个数组,将数据作为数组元素存储,并通过设置相应的参数将数据渲染到图表中。

2. 使用动态数据:可以通过Ajax等方式获取后台数据,然后将数据绑定到图表上,实现动态更新的效果。

3. 使用Excel或CSV文件:echarts提供了数据转换工具,可以将Excel或CSV文件中的数据转换为echarts所需的格式,然后导入到图表中。

问题二:如何设置echarts图表的样式?在echarts中,可以通过设置样式来自定义图表的外观,包括但不限于以下几方面:1. 设置图表的大小:可以通过设置容器的宽度和高度来控制图表的大小。

2. 设置图表的背景色:可以通过设置backgroundColor属性来设置图表的背景色。

3. 设置图表的主题:可以通过设置theme属性来选择不同的主题,以改变图表的整体样式。

4. 设置图表的字体样式:可以通过设置textStyle属性来设置图表中文字的字体、大小、颜色等样式。

5. 设置图表的边框样式:可以通过设置borderColor、borderWidth等属性来设置图表的边框样式。

问题三:如何实现echarts图表的联动效果?在echarts中,可以通过以下几种方式实现图表的联动效果:1. 使用事件监听:可以监听鼠标点击、鼠标移动等事件,然后根据事件的触发来更新其他图表的数据和样式。

2. 使用数据关联:可以通过设置数据的关联关系,使得一个图表的数据变化会影响到其他图表的展示效果。

3. 使用视图联动:可以将多个图表放置在同一个容器中,通过设置不同的视图来实现图表的联动效果。

怎么把ECEL表格转换WORD

怎么把ECEL表格转换WORD

怎么把ECEL表格转换WORD篇一:怎样将Excel表格完美转换成word文档怎样将Excel表格完美转换成word文档 Excel强大的制表功能让很多办公一族都忘不了它的方便与实用。

可是在一些情况下,我们必须将Excel表格转换成Word文档。

当前普遍的做法是:先用Excel做好表格,再把表粘到Word里。

可是粘到Word里后表的格式全变了,还得重新进行调试,费时又费力。

其实,完全可以按下述方法来轻松转换。

首先,用Excel编辑好一个表格,然后点击“文件”→“另存为web页”。

web页就是网页文件,在“保存选项”处把“保存整个工作簿”调整成“选择:工作表”,把默认文件名“page.htm”根据实际情况改成你所需要的名字,如:“工作表.htm”,再点击“保存”。

注意,在改名时绝对不可以把后面的.htm去掉,只要改“.”前面的部分就可以了。

找到刚才保存好的“工作表.htm”,如果你所安装的操作系统是WindowsXP或Windows2000,可以在文件上面直接点击鼠标右键,选择“打开方式”最下面的“打开程序”选项,在列表中找到“Word”,选中并确定。

如果你所使用的操作系统是windows98,则操作方法略有不同,需要在“工作表.htm”上按住shift键的同时点击鼠标右键,之后再进行上述操作。

用Word程序打开该文件后,不要做任何编辑操作,直接点击“文件”→“另存为”,把文件名改成“工作表Word版”,把保存类型选成“Word文档”,再点击“保存”即可。

现在再打开刚才保存的“工作表word版”文件看看,是不是转换得很完美呢?有一张图片,内容是某个表格先要转换到word或者excel 里,表格要保留(为了表编辑)?做得到吗?悬赏分:5 | 解决时间:2010-6-12 11:17 | 提问者:huagezone有一张图片,内容是某个表格先要转换到word或者excel 里,表格要保留(为了表编辑填表格)?做得到吗?问题补充:转换为tiff直接导入Microsoft Office Document Imaging 然后“工具”——“将文本发送到word”excel表格的图表粘贴到word里面,怎么成了图片了?不能进行编辑.悬赏分:0 | 解决时间:2006-9-8 20:00 | 提问者:匿名装的盗版windows xp系统,office 2003,但是在使用过程中,从excel中粘贴图表到word里面时,会自动默认成图片,不能编辑.每次这样粘贴的时候,都需要选择性粘贴,之后选择图表格式. 我想问一下,有没有办法更改word的默认设置,将我拷进去的表格不作图片处理呢?每次选择性粘贴,稍有马虎就成图片了,下次再作修改,相当于重新做图了.请大家帮忙指点一二!问题补充:因为担心没有理想答案所以没有贴分,回答有帮助者,一定悬分感谢!最佳答案试试:粘贴在Word文档中的图表,右下角有一个“粘贴选项”智能标记,单击“粘贴选项”,选择“链接到Excel图表”即可进行编辑。

如何实现ECharts的打印导出

如何实现ECharts的打印导出

SlimerJS实现举例
流程
图表前端 分页呈现
客户端
获取每页 Echarts代码
生成多个临 时文件
运行命令
slimerjs calcEcharts.js 临 时文件名
启动FireFox装 载临时文件,
并展现
calcEcharts.js 转化成图片 base64码
JAVA 导出打印
服务器端
calcEcharts.js获取图片
前端
后端
多页实现难点
如何获取未在页面展现的多页Echarts图形
无法使用getDataURL()方法
解决思路
……
获取每页 Echarts代码
根据代码分 别生成图片
填充到对应 位置
……
可选技术
• 高级语言浏览器控件
• jxBrowser
• 前端自动化测试工具
• SlimerJS、phantomJS 或 CasperJS
如何实现
ECharts打印导出?
目录
单页
Echarts图形导出打印
多页
Echarts图形导出打印
单页Echarts图形
• 下载图片打印 • 使用网页打印 • 使用echarts提供了getDataURL()方法可以获得echarts图形
的图片,传给后台进行打印导出
Hale Waihona Puke getDataURL实现picBase64Info通过表单传递给后台
• 只需在服务器端安装火狐浏览器,简单配置
注意事项
• 需要注意的是slimerJS对于火狐的版本有要求,只能支持 Firefox 38-52 或者更低版本,所以安装 Firefox 不要更新为最新版本。

freemarker+echarts示例

freemarker+echarts示例

我很高兴能为您撰写关于freemarker+echarts示例的文章。

在这篇文章中,我将会深入探讨这个主题,并为您提供有深度和广度的内容。

1. 了解freemarker和echarts让我们来简单了解一下freemarker和echarts的概念。

Freemarker是一种模板引擎,它能够生成基于模板和数据模型的文本输出。

它广泛应用于Web开发中,用于动态生成HTML、XML、JSON等格式的文件。

而echarts则是一个由百度开发的数据可视化库,它能够帮助用户在网页上创建丰富多样的图表和数据展示。

2. freemarker+echarts的结合当我们将freemarker和echarts结合起来使用的时候,我们可以实现动态生成丰富多样的图表和数据展示。

通过freemarker引擎的模板和数据模型,我们可以动态地生成echarts所需要的数据,并将这些数据传递给echarts来生成图表。

这种结合能够帮助我们实现更加灵活和个性化的数据展示需求。

3. 示例分析为了更好地理解freemarker+echarts的结合,让我们来看一个示例分析。

假设我们有一个网页需要展示不同城市的气温数据,并且这些数据会不断更新。

我们可以使用freemarker来动态生成包含气温数据的HTML页面,并结合echarts来实时展示这些数据。

这样一来,我们就能够实现一个实时更新的气温数据展示页面。

4. 个人观点就我个人而言,我认为freemarker+echarts的结合为数据展示带来了更大的灵活性和高度定制化的可能。

通过freemarker的模板引擎,我们可以更加轻松地处理数据和生成页面,而echarts则为我们提供了丰富多样的图表展示方式。

这种结合能够帮助我们更好地满足用户对于数据展示的各种需求。

总结在本篇文章中,我们深入探讨了freemarker+echarts的结合方式,并通过一个示例分析来展示其应用场景。

通过这种结合,我们能够实现更加灵活和个性化的数据展示,满足用户对于数据可视化的各种需求。

excel可以转换成word

excel可以转换成word

excel可以转换成wordExcel可以转换成WordMicrosoft Office套件中的两个主要应用程序是Excel和Word。

Excel是一种用于数据分析和计算的电子表格软件,而Word则是一种用于创建和编辑文档的文字处理软件。

尽管这两个应用程序在功能和用途上有所不同,但是它们可以相互配合工作,允许用户轻松地将Excel中的数据导入到Word文档中。

本文将介绍如何将Excel表格转换为Word文档,并提供一些实用的技巧和建议。

第一步是打开要转换的Excel文件。

确保您已经保存了所有所需的数据,并将其准备好转换到Word文档中。

在Excel中,选择要转换的表格,然后按下CTRL + C(或右键单击表格并选择“复制”)将其复制到剪贴板上。

接下来,打开Word文档,并将光标放置在您希望插入表格的位置。

然后按下CTRL + V(或右键单击并选择“粘贴”),将Excel表格粘贴到Word文档中。

您还可以使用“插入”选项卡上的“表格”按钮来选择插入的表格样式。

一旦插入了Excel表格,您就可以根据需要对其进行格式设置。

Word提供了丰富的格式化选项,可以帮助您自定义表格的外观和样式。

您可以调整表格的大小,修改单元格的宽度和高度,添加或删除行和列等。

此外,Word还提供了各种表格样式和主题,可以使您的表格更加专业和美观。

在转换表格时,还可以使用Excel的功能和公式。

例如,如果您在Excel中创建了一个包含公式的表格,这些公式将被保留并在Word 中正确计算。

这对于在文档中显示数据的更新非常有用,因为Word文档中的表格将随着Excel数据的更改而自动更新。

除了将整个表格转换为Word文档外,您还可以选择将Excel数据转换为Word表格。

这对于只需要一部分数据或想要更精确地控制数据呈现方式的用户非常有用。

要将Excel数据转换为Word表格,首先在Excel中选择所需的数据范围。

然后按下CTRL + C将其复制到剪贴板。

echart 导出使用手册

echart 导出使用手册

echart 导出使用手册ECharts 是一个使用 JavaScript 实现的开源可视化库,用于生成各种类型的图表。

关于 ECharts 的导出功能,你需要了解以下几点:1. 导出图表: ECharts 提供了一个名为 `getDataURL` 的方法,用于将当前的图表导出为一个图片 URL。

你可以使用这个 URL 在网页上显示图片,或者将其下载到本地。

```javascriptvar base64 = ({type: 'png',pixelRatio: 2,backgroundColor: 'fff'});```2. 保存图表为图片: 如果你想将图表保存为本地图片,你可以使用`getDataURL` 方法,然后将返回的 base64 字符串发送到服务器,或者直接在客户端下载。

3. 导出图表数据: ECharts 还提供了一个 `getOption` 方法,用于获取当前图表的配置项和数据。

你可以将这些数据保存到数据库或文件中,以便以后使用。

```javascriptvar option = ();```4. ECharts 的导出功能: ECharts 本身并不提供直接导出图表为文件的功能(如 PDF 或 Word 文档)。

如果你需要这样的功能,你可能需要使用其他库或工具,如 jsPDF 或。

5. 注意事项: 当使用 ECharts 的导出功能时,请确保你有权导出这些数据。

特别是当你的图表包含来自第三方的数据时,你需要确保你遵循了相关的许可协议。

6. 文档和社区支持: 为了更好地使用 ECharts 的导出功能,建议查看官方文档和参与社区讨论。

ECharts 的社区非常活跃,你可以在这里找到许多有用的信息和示例。

最后,请注意 ECharts 的版本和 API 可能随时间变化,所以最好查看你正在使用的版本的官方文档以获取最新和最准确的信息。

echarts实现数据可视化实训主要内容

echarts实现数据可视化实训主要内容

一、概述数据可视化是指利用图表、地图等可视化方式将抽象数据转换成直观的形式,以便人们更加容易地理解和分析。

在大数据时代,数据可视化成为了各行各业必不可少的工具。

echarts作为一个优秀的数据可视化库,能够帮助用户快速、灵活地实现各种数据可视化需求。

本文将介绍echarts实现数据可视化的主要内容,以供大家参考和学习。

二、 echarts简介echarts是百度开发的一个开源的数据可视化库,基于JavaScript语言编写,能够在web评台上运行。

echarts具有图表丰富、视觉效果出色、交互性强等特点,深受广大开发者和用户的喜爱。

echarts支持各种常见的数据可视化图表,如折线图、柱状图、散点图等,还能够轻松实现地图、多维数据、实时数据等复杂需求的可视化展示。

echarts在数据可视化领域具有很高的应用价值和市场需求。

三、 echarts实现数据可视化的基本步骤1. 数据准备在使用echarts进行数据可视化之前,首先需要对要展示的数据进行准备。

通常情况下,数据可以来源于各种数据存储系统,如数据库、文件、接口等。

在准备数据时,需要根据echarts支持的数据格式要求,将数据整理成对应的结构化数据格式,以便echarts能够顺利解析和展示。

2. 页面布局在页面布局方面,echarts并没有限制特定的布局方式,开发者可以根据实际需求自定义布局。

一般情况下,可以通过HTML+CSS来实现页面的布局。

在页面布局中,需要留出展示echarts图表的位置,并确保位置大小的合适性,以便更好地展示数据图表。

3. 创建echarts实例在页面布局完成后,需要创建echarts的实例对象。

通过JavaScript代码,可以在指定的DOM节点上初始化echarts实例。

在初始化实例时,需要传入页面布局定义的DOM节点的ID,以便echarts知道在哪个位置进行数据可视化展示。

4. 加载数据创建echarts实例后,接下来需要将准备好的数据加载到echarts实例中。

echart 基本用法

echart 基本用法

echart 基本用法ECharts是一款由阿里巴巴开发的基于JavaScript的开源可视化库。

作为一项功能强大的数据可视化工具,ECharts可以用于各种场景,包括数据报告、数据分析和实时监控等。

本文将以"echart 基本用法"为主题,为您详细介绍ECharts的基本用法。

第一步是引入ECharts库。

可以通过在HTML文档中引入ECharts的CDN 链接或者下载ECharts的源代码,并在HTML文档中引入。

这样,我们就可以在JavaScript中使用ECharts的各种功能了。

接下来,我们需要创建一个容器来放置图表。

可以在HTML文档中创建一个div元素,并给它一个唯一的id,作为图表的容器。

例如:html<div id="chartContainer"></div>然后,在JavaScript中初始化一个ECharts实例,并使用该实例来渲染图表。

首先,我们需要获取到容器的DOM元素,然后使用ECharts提供的echarts.init()方法来初始化实例,最后使用实例的setOption()方法来设置图表的配置项和数据。

例如:javascript获取容器的DOM元素var container = document.getElementById('chartContainer');初始化ECharts实例var chart = echarts.init(container);设置图表的配置项和数据var option = {...};chart.setOption(option);在这里,option是一个包含了图表的配置项和数据的JavaScript对象。

我们可以自定义这个对象来设置图表的样式、数据和交互行为。

例如,我们可以选择不同的主题、设置图表的标题、坐标轴、系列、标记点等。

ECharts提供了丰富的配置项,可以根据需求来自定义图表的样式和交互行为。

Echarts中toolbox工具栏添加(导出excel表格功能)

Echarts中toolbox工具栏添加(导出excel表格功能)

Echarts中toolbox⼯具栏添加(导出excel表格功能)项⽬中提到了⼀个需求,想要看到echarts图表中的数据,这⾥使⽤toolbox⼯具栏渲染出⼀个table表格,并加⼊导出excel功能。

所以就⽤到echarts配置项中的toolbox⼯具栏,使⽤ jquery.table2excel.js实现导出excel功能。

话不多说,开整。

1.使⽤toolbox⼯具栏2.最终实现功能1 echarts_max(){2if (document.querySelector(".echarts_max") == null) {3return4 }5 echarts.dispose(document.querySelector(".echarts_max"))67 let echarts_max = echarts.init(document.querySelector(".echarts_max"))89 echarts_max.setOption({10 "title": {11 "text": "",12 "left": "47%",13 "textStyle": {14 "fontSize": 2415 }16 },17 toolbox: {18 left:33,19// top:10,20 feature: {21 dataView: {22 show: true,23 title: '数据视图',24 lang: ['数据视图:', '关闭', '导出Excel'], // 按钮25 contentToOption: function (opts) {26 $(".echarts_max").table2excel({ //下载jquery.table2excel.js,引⼊,$("#tempChart")是Echarts容器27 exclude: ".noExl", //过滤位置的 css 类名,有class = “noExl” 的⾏不被导出28 filename: "最⼤需量", // ⽂件名称29 name: "Excel Document Name.xls",30 exclude_img: true,31 exclude_links: true,32 exclude_inputs: true33 });34 },35 optionToContent: function (opt) {36// console.log(opt)37//该函数可以⾃定义列表为table,opt是给我们提供的原始数据的obj。

echarts图表与列表文字结合导出word文档

echarts图表与列表文字结合导出word文档

echarts图表与列表⽂字结合导出word⽂档导出word⽂件需要jar包Echarts图表可以⽣成BASE64编码function inita(hotWords,word,xData,hotWordtwo){ppend('id="pro_zline'+i+'">');({paths: {'echarts' : 'js/echarts','echarts/chart/line' : 'js/echarts', al('png'));al();$.ajax({type:'POST',url:'briefing/exp', al()+"&image2="+$("#image2").val(),beforeSend:function () { changeImg(); },error:function (XMLHttpRequest, textStatus, errorThrown) {alert(textStatus);},success: function (data) {="<%=basePath%>briefing/expword?date="+encodeURI(date); etAttribute, imageo); ().setAttribute, imaget);return"waihu/generation";}后台导出word先建⼀个类packageimportimportimportimportimportimportimportimportimportimportimport/*** 适⽤于word 2007* poi 版本*/public class WordUtil {/*** 根据指定的参数值、模板,⽣成 word ⽂档* @param param 需要替换的变量* @param template 模板*/public static CustomXWPFDocument generateWord(Map param, String template) { CustomXWPFDocument doc = null;try {OPCPackage pack = (template);doc = new CustomXWPFDocument(pack);if (param != null && () > 0) {oString());int height = ("height").toString());int picType = getPictureType("type").toString());byte[] byteArray = (byte[]) ("content");ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray); try {int ind = (byteInputStream,picType);(ind, width , height,paragraph);}}}}if(isSetText){(text,0);}}}}}}/*** 根据图⽚类型,取得对应的图⽚类型代码* @param picType* @return int*/private static int getPictureType(String picType){ int res = ;if(picType != null){if("png")){res = ;}else if("dib")){res = ;}else if("emf")){res = ;}else if("jpg") || ("jpeg")){res = ;}else if("wmf")){res = ;}}return res;* 将输⼊流中的数据写⼊字节数组* @param in* @return*/public static byte[] inputStream2ByteArray(InputStream in,boolean isClose){ byte[] byteArray = null; try {int total = ();byteArray = new byte[total];(byteArray);} catch (IOException e) {();}finally{if(isClose){try {();} catch (Exception e2) {"关闭流失败");}}}return byteArray;}}后台导出@RequestMapping(value="exp")etAttribute, imageo);().setAttribute, imaget);return"waihu/generation";}@RequestMapping(value="expword")etAttribute;String imaget = (String) ().getAttribute;Calendar cal = ();, -1);String yesterday = new SimpleDateFormat( "yyyy-MM-dd").format());date1=yesterday;}List zxlist = (date1,"咨询类");List qzlist = (date1,"求助投诉类");List rdlist = (date1,"5");Briefing briefing1 = new Briefing();Briefing briefing =(date1,"");if(briefing==null){List list = (date1,"");for(int i=0;i<();i++){if(i==0){(i).toString());}if(i==1){(i).toString());}}("");}else{briefing1=briefing;}String aa= (" ","\\+");String bb= (" ","\\+");BASE64Decoder decoder = new BASE64Decoder();byte[] a = (aa);byte[] b = (bb);testTemplateWrite(zxlist,qzlist,rdlist,briefing1,date1,a,b,response);}public void testTemplateWrite(List zxlist,List qzlist,List rdlist,Briefingbriefing,String date,byte[] image1,byte[] image2,HttpServletResponse response) throws Exception { Map params = new HashMap();String tomcatPath=("");Map header = new HashMap();("width", 550);("height", 150);("content", image1);("${image1}",header);Map headers = new HashMap();("width", 550);("height", 150);("type", "png");("content", image2);("${image2}",headers);("${date}", date);("${content0}", ());("${content1}", ());("${content2}", ());String filepath = "";if ("\\")) {filepath = ("\\bin", "\\webapps\\army-infantry\\fileData\\") + "";}InputStream is = new FileInputStream(filepath);CustomXWPFDocument doc = new CustomXWPFDocument(is);ocx";();ServletOutputStream out = ();("application/");("Content-disposition", "attachment;filename=" + new String("GB2312"), "ISO-8859-1")); BufferedInputStream bis = null;BufferedOutputStream bos = null;try {bis = new BufferedInputStream(new FileInputStream(filepath));bos = new BufferedOutputStream(out);(out);} catch (IOException e) { throw e;} finally {if (bis != null)();if (bos != null)}(is);}public List> generateTestData(List lists) { List> resultList = new ArrayList>(); for (int i = 0; i < (); i++) {List list = new ArrayList();Object[] obj =(Object[]) (i);String obj6="0%";if(obj[6]!=null){obj6= obj[6].toString()+"%";}String obj7="0%";if(obj[7]!=null){obj7= obj[7].toString()+"%";}(obj[0].toString());(obj[1].toString());(obj[2].toString());(obj[3].toString());(obj[4].toString());(obj[5].toString());(obj6);(obj7);(list);}return resultList;}public List> generateTestDatas(List lists) { List> resultList = new ArrayList>(); for (int i = 0; i < (); i++) {List list = new ArrayList();Object[] obj =(Object[]) (i);String obj3="0%";if(obj[3]!=null){obj3= obj[3].toString()+"%";(obj[0].toString());(obj[1].toString());(obj[2].toString());(obj3);(list);}return resultList;}public void insertValueToTable(XWPFDocument doc,List> resultList,int tableRowSize,boolean isDelTmpRow) throws Exception { Iterator iterator = ();XWPFTable table = null;List rows=null;List cells=null;List tmpCells=null;ize()){flag=true;break;}}}if(!flag){return;}tmpCells=();for(int i=0,len=();iXWPFTableRow row=();());List list=(i);cells=();etW().getW());}etVal().getVal());ize()>0){CTP ctp=().get(0);if().getJc()!=null){().get(0).addNewPPr().addNewJc().setVal().getJc().getVal());}}}et(0);XWPFParagraph cellP=().get(0);XWPFRun tmpR =null;if()!=null&&().size()>0){tmpR=().get(0);XWPFRun cellR = ();(text);sSetRPr()){CTRPr tmpRPr =().getRPr();if()){CTFonts tmpFonts=();CTRPr cellRPr=().isSetRPr() ? ().getRPr() : ().addNewRPr(); CTFonts cellFonts = () ? () : ();());());());());());());());());}}}}etPPr()!=null){CTPPr tmpPPr = ().getPPr();CTPPr cellPPr = ().getPPr() != null ? ().getPPr() : ().addNewPPr(); )\\}", ;return matcher;}/*** 关闭输⼊流* @param is*/private void close(InputStream is) { if (is != null) {try {();} catch (IOException e) {();}}}模版导出的⽂件。

echarts title方法

echarts title方法

echarts title方法ECharts是一款用于数据可视化的JavaScript图表库,它提供了丰富的图表类型和交互功能。

在ECharts中,可以使用title方法来设置图表的标题。

title方法用于设置图表的标题,可以通过传入一个对象来设置标题的样式和内容。

下面是一个示例:javascript.option = {。

title: {。

text: '这是一个示例标题', // 标题内容。

subtext: '这是一个示例副标题', // 副标题内容。

left: 'center', // 标题水平居中。

textStyle: {。

color: '#333', // 标题文字颜色。

fontSize: 18, // 标题文字大小。

fontWeight: 'bold' // 标题文字粗细。

}。

},。

// 其他配置项...};在上面的示例中,使用title方法设置了一个标题,其中包括标题内容、副标题内容、水平居中以及文字样式的设置。

你可以根据自己的需求进行相应的调整。

除了上述示例中的属性,title方法还支持其他一些属性,例如:`textStyle`: 用于设置标题文字的样式,包括颜色、字体大小、字体粗细等。

`subtextStyle`: 用于设置副标题文字的样式,与`textStyle`类似。

`textAlign`: 用于设置标题的水平对齐方式,可选值有'left'、'center'、'right'。

`textBaseline`: 用于设置标题的垂直对齐方式,可选值有'top'、'middle'、'bottom'。

`padding`: 用于设置标题的内边距,可以是一个数字或者数组,分别表示上、右、下、左的内边距。

除了直接在title方法中设置标题,还可以通过调用setTitle方法来动态修改标题内容。

echarts扇形区域内显示文字位置的方法 -回复

echarts扇形区域内显示文字位置的方法 -回复

echarts扇形区域内显示文字位置的方法-回复ECharts 是一款开源的JavaScript 图表库,提供了丰富的图表类型和灵活的配置选项,可以方便地进行数据可视化。

其中,扇形图是一种常见的图表类型,用于展示不同类别的数据在整体中所占比例的大小关系。

而在扇形区域内显示文字是一种常用的增强数据表达的方式。

本文将一步一步回答关于ECharts 扇形区域内显示文字位置的方法。

第一步:了解文字定位的基本原理在ECharts 中设置扇形区域内显示文字的位置,需要了解文字的基本定位原理。

ECharts 中的文字定位主要依靠两个参数:文字的位置(position)和文字的旋转角度(rotation)。

根据文字的位置和旋转角度,可以将文字定位到扇形区域内的合适位置。

第二步:设置文字的位置在ECharts 中,可以设置文字的位置为扇形的中心点、内圆的边缘或外圆的边缘。

根据数据的具体情况,选择合适的位置可以更好地展示数据。

下面以设置文字在扇形中心点的位置为例进行说明。

在ECharts 中,可以通过设置label.normal.position 参数来控制文字的位置。

默认情况下,该参数值为"inside",表示文字显示在扇形的中心点。

如果要将文字显示在内圆的边缘或外圆的边缘,可以将该参数值设置为"inner" 或"outer"。

示例代码如下:option = {series: [{type: 'pie',label: {normal: {position: 'inside'}},data: [{value: 335,name: '直接访问'}, {value: 310,name: '邮件营销'}, {value: 234,name: '联盟广告'}, {value: 135,name: '视频广告'}, {value: 1548,name: '搜索引擎'}]}]};通过设置label.normal.position 的值,可以实现在扇形区域内显示文字的位置定位。

ECharts Web数据可视化-ECharts官方文档及常用组件

ECharts Web数据可视化-ECharts官方文档及常用组件

16
目录
1 ECharts官方文档、基础架构及常用术语
2
直角坐标系下的网格及坐标轴
3
标题组件与图例组件
4
工具箱组件与详情提示框组件
5
标记点和标记线
17
直角坐标系下的网格及坐标轴
➢ 使用ECharts绘制图表时,可能会发现图表真正的绘图区域和图表容器之间有一些间隔,有时看上去不太 协调。查看相关API可以得知,可以通过调整几个属性值控制绘图区域与容器之间的间距。
描述 标题组件,用于设置图表的标题 直角坐标系中的横轴,通常默认为类目型 直角坐标系中的纵轴,通常默认为数值型 直角坐标系中除坐标轴外的绘图网格,用于定义直角系整体布局 图例组件,用于表述数据和图形的关联 标记点,用于标记图表中特定的点 标记线,用于标记图表中特定的值 数据区域缩放,用于展现大量数据时选择可视范围 视觉映射组件,用于将数据映射到视觉元素 工具箱组件,用于为图表添加辅助功能,如添加标线、框选缩放等 提示框组件,用于展现更详细的数据 时间轴,用于展现同一系列数据在时间维度上的多份数据 数据系列,一个图表可能包含多个系列,每个系列可能包含多个数据
8
ECharts官方文档简介
(3)对配置项比较熟悉时,可以通过单击导航窗格中的 图标 或 图标展开或收缩左边导航区中的配置项。当鼠标单击某一配 置项时,信息显示区会显示其详细内容,如图所示。当鼠标单击 “配置项手册”界面左边第二个方框中的 “title.textStyle.fontStyle”时,在右上角的方框中会出现对应 的解释与说明。
如'50%'(显示区域横向中心)
{number} y2或 {string} y2
直角坐标系内绘图网格右下角纵坐标,数值单位px,支持百分比(字符串), 0

Ueditor文字和echarts图片生成word前端解决方案

Ueditor文字和echarts图片生成word前端解决方案

Ueditor⽂字和echarts图⽚⽣成word前端解决⽅案编程就像搭积⽊,少了任何⼀个就拼接不起来,所有积⽊都找到就只剩下调试。

⼀、echarts 获取图⽚⽅法getDataURLvar element = document.getElementById("元素id");var chart = echarts.init(element);var option={} //省略chart.setOption(option);var picInfo = chart.getDataURL(); // 获取 base64 位格式的图⽚// console.log("echarts.getDataURL", picInfo);思路来源:⼆、实现导出word<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width" /><title>EChart柱状图</title><script src="jquery-1.10.2.min.js"></script><script src="FileSaver.js"></script><script src="jquery.wordexport.js"></script></head><body><a class="word-export" href="javascript:void(0)"> 导出 </a><div id="page-content" ><font size="3" color="red">aaaaa</font><div style="width:30px;height:30px;background-color:red">bbbb<div></div></body><script type="text/javascript">jQuery(document).ready(function($) {$("a.word-export").click(function(event) {$("#page-content").wordExport("aaa");});});</script></html> 核⼼代码:<script src="jquery-1.10.2.min.js"></script><script src="FileSaver.js"></script><script src="jquery.wordexport.js"></script>//输出word$("#page-content").wordExport("aaa");在哪下载?https:///Jasmine1227/jquery.wordexport.js.git下载链接来⾃⽂章 https:///jas0203/p/9205607.html三、 Ueditor ⽣成 word就在Ueditor 上⼀级添加⼀个<div id="myid"> <div>然后 $("#id").wordExport("aaa");四、 Ueditor图⽂ + echarts 图⽣成 word同上在他们两个的上⼀级加⼀点 id。

echarts 计划流程

echarts 计划流程

echarts 计划流程Echarts计划流程Echarts是一款开源的数据可视化库,可用于创建交互式的图表和地图。

它提供了丰富多样的图表类型和灵活的配置选项,使用户能够根据自己的需求定制出美观、直观的数据展示效果。

在使用Echarts创建数据可视化时,我们可以按照以下流程进行规划和实施。

一、需求分析在使用Echarts之前,首先需要明确自己的数据可视化需求。

我们需要考虑展示的数据类型、数据来源、目标受众以及所需表达的信息等方面。

通过仔细分析需求,确定我们需要使用哪些图表类型以及如何配置图表的样式和交互效果。

二、数据准备在开始使用Echarts创建图表之前,我们需要将需要展示的数据准备好。

这包括数据的收集、整理、清洗和预处理等工作。

确保数据的准确性和完整性是创建出准确可靠的图表的基础。

三、Echarts安装与配置在开始使用Echarts之前,我们需要先将Echarts库引入到我们的项目中。

可以通过直接下载Echarts源码或者使用npm等包管理工具进行安装。

安装完成后,我们需要在项目中引入Echarts库,并进行必要的配置,如设置图表的容器元素、图表的基本样式和大小等。

四、图表创建有了Echarts库的基本配置后,我们可以开始创建图表了。

根据需求分析阶段的结果,选择合适的图表类型,并按照Echarts提供的API进行配置和使用。

我们可以设置图表的标题、图例、坐标轴、系列数据等,以及图表的交互效果,如鼠标悬停提示、数据筛选和切换等。

五、图表优化创建出基本的图表后,我们可以进行一些优化来提升图表的可视化效果和用户体验。

例如,可以调整图表的颜色、字体、标签样式等,以及添加动画效果和图表间的联动效果,使得图表更加生动和易于理解。

六、图表发布与分享当我们完成图表的创建和优化后,可以将其发布到我们的网站或应用中,或者导出为图片或PDF等格式进行分享。

同时,我们还可以将图表嵌入到其他文档或报告中,以便更好地传达数据和信息。

echarts扇形区域内显示文字位置的方法

echarts扇形区域内显示文字位置的方法

echarts扇形区域内显示文字位置的方法Echarts 是一款非常实用的开源可视化库,广泛应用于大数据展示、分析等领域。

在Echarts 中,扇形图是一种常见的图表类型,可以清晰地展示数据的占比情况。

在扇形区域内显示文字,可以更加直观地说明各部分数据的意义。

本文将介绍Echarts 扇形区域内显示文字的方法,以及位置调整与优化技巧。

1.Echarts 扇形区域内显示文字的基本方法要在Echarts 扇形区域内显示文字,首先需要创建一个扇形图。

然后,通过设置扇形图的标签属性,可以实现文字在扇形区域内的显示。

以下是基本示例代码:```javascriptvar option = {series: [{type: "pie",radius: ["50%", "70%"], // 半径,第一个参数为最小半径,第二个参数为最大半径avoidLabelOverlap: false, // 避免标签重叠itemStyle: {borderRadius: 5,borderColor: "#fff",borderWidth: 2},label: {show: true,position: "outside", // 标签位置,可选值:"outside"(外部)、"inner"(内部)formatter: "{b}: {c} ({d}%)" // 标签内容格式化,{b}、{c}、{d} 分别表示百分比、数值、百分比数值},emphasis: {label: {show: true}}}]};option.series[0].data = [{ value: 335, name: "类别1" },{ value: 310, name: "类别2" },{ value: 234, name: "类别3" }];echarts.init(document.getElementById("main")).setOption(option);```2.文字位置的调整与优化在Echarts 中,通过设置`label.position` 属性,可以调整文字标签在扇形区域内的显示位置。

echarts 指标卡片 -回复

echarts 指标卡片 -回复

echarts 指标卡片-回复ECharts(Enterprise Charts)是一款由百度开发的开源可视化图表库,可以用于构建丰富多样的图表和数据可视化应用。

其中,指标卡片是ECharts中的一种常见图表类型,用于展示某个指标的数据或变化趋势。

在本文中,我将一步一步回答关于ECharts指标卡片的问题,帮助读者了解如何使用和定制这个图表类型。

第一步:了解指标卡片的基本概念和用途指标卡片(Indicator)是一种简洁明了的展示数据指标的图表,常用于仪表盘、报表和数据大屏等场景。

它通常由一个主要的数值指标和一些辅助信息组成,以帮助用户快速获取关键数据信息。

指标卡片可以展示单一数据指标,也可以展示多个数据指标的对比或趋势变化。

第二步:了解ECharts中的指标卡片配置项在ECharts中,指标卡片(Indicator)的配置项包括主要的数值指标、辅助信息、样式、标记等。

其中,主要的配置项如下:- title:指标卡片的标题- value:主要的数值指标- subtext:辅助信息- textStyle:文本样式- markPoint:标记点- markLine:标记线第三步:如何创建一个简单的指标卡片要创建一个简单的指标卡片,首先需要引入ECharts库和创建一个容器元素,然后初始化一个ECharts实例,并指定指标卡片的配置项。

以下是一个简单的示例代码:javascript引入ECharts库import echarts from 'echarts';创建容器元素const container = document.getElementById('chartContainer');初始化ECharts实例const chart = echarts.init(container);指定指标卡片的配置项const option = {title: {text: '销售额',textStyle: {fontSize: 24,fontWeight: 'bold',color: '#333'}},value: {text: '¥123,456',textStyle: {fontSize: 36,color: '#666'}},subtext: {text: '辅助信息',textStyle: {fontSize: 14,color: '#999'}}};渲染指标卡片chart.setOption(option);第四步:如何定制指标卡片的样式和标记ECharts提供了丰富的配置项,可以帮助用户自定义指标卡片的样式和标记。

导出word文档支持富文本文档,word-htm-ftl方式

导出word文档支持富文本文档,word-htm-ftl方式

我这里需要导出的word里面是表格,并且td中的内容是富文本形式,所以要支持富文本的标签图片没有测,不知道支持不支持导出文件中的图片1、首先新建一个空的word文档,打开——另存为网页格式(htm)会产生一个htm文件和一个依赖文件夹(该文件夹无用)2、整理htm文件用notepad++打开htm文件,将红线部分全部删掉3、整理模板将页面上显示的文本或者表格连同内容+样式复制出来放入htm设置表格边线:word中不支持css的简写形式:比如:td{border:solid; border-width:0px 1px 1px 0px;} word会认为border全部为实线。

图片中的样式设置为了不重线。

方便查看和打印美观。

这些设置完后将.htm 改为 .ftl文件设置ftl标签使用java代码,代入数据。

测试了下,不会出现乱码问题。

之前强行使用mht出现乱码问题,而且html标签很难支持import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.Template;public class WordTest {private Configuration configuration = null;public WordTest() {configuration = new Configuration();configuration.setDefaultEncoding("UTF-8");}public void createWord() {Map<String, Object> map = new HashMap<String, Object>();List<Map<String, Object>> listdataMap = new ArrayList<Map<String, Object>>();try {Map<String, Object> dataMap = new HashMap<String, Object>();for (int i = 0; i < 8; i++) {dataMap.put("id", i + "pg123132131");dataMap.put("name", "苹果");dataMap.put("normalprice", "¥2.5");dataMap.put("memberprice", "¥2.3");listdataMap.add(dataMap);}map.put("listdataMap", listdataMap);configuration.setClassForTemplateLoading(this.getClass(),"/template"); // FTL文件所存在的位置Template template = configuration.getTemplate("jiaoan001.ftl"); File outFile = new File("D:\\temp\\" + "03290401.doc");Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));template.process(map, out);out.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) { WordTest test = new WordTest();test.createWord();}}。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

导出word文件需要jar包Echarts图表可以生成BASE64编码function inita(hotWords,word,xData,hotWordtwo){// alert(xData);//$("#chart_wrapper").append('<div style="height:180px" class="pro_zline"id="pro_zline'+i+'"></div>');require.config({paths: {'echarts' : 'js/echarts','echarts/chart/line' : 'js/echarts', //饼状图'echarts/chart/bar' : 'js/echarts'//柱状图}});require(['echarts','echarts/chart/line', // 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表'echarts/chart/bar'],function (ec) {// 基于准备好的dom,初始化echarts图表var myChart = ec.init(document.getElementById(word));var option = {grid :{},tooltip : {trigger: 'axis'},toolbox: {show : true,feature : {mark : {show: true},dataView : {show: true, readOnly: false},magicType : {show: true, type: ['line', 'bar']},restore : {show: true},saveAsImage : {show: true}}},calculable : true,animation : false,legend: {data:['来电量','昨日数据对比']},xAxis : [{type : 'category',data : xData}],yAxis : [{type : 'value',name : '来电量',axisLabel : {formatter: '{value}'}},{type : 'value',name : '昨日数据对比',axisLabel : {formatter: '{value}%'}}],series :[{name:'来电量',type:"bar",data:getPlatData(hotWords)},{name:'昨日数据对比',type:"line",yAxisIndex: 1,data:getPlatData(hotWordtwo)}]};// 为echarts对象加载数据myChart.setOption(option);$("#image1").val(myChart.getDataURL('png'));// alert( myChart.getDataURL('png'))//获取base64编码});}获取base64编码图片后要传到后台function AllAreaWord(){var date =$("#year").val();$.ajax({type:'POST',url:'briefing/exp', //用户请求数据的URLdata:"&date="+date+"&image1="+$("#image1").val()+"&image2="+$("#image2").val(), beforeSend:function () { changeImg(); },error:function (XMLHttpRequest, textStatus, errorThrown) {alert(textStatus);},success: function (data) {window.location.href="<%=basePath%>briefing/expword?date="+encodeURI(date); //后台将base64编码图片保存session中在执行导出word}});}后台处理将图片编码存到session中RequestMapping(value="exp")//简报生成echarts图表public String exp(Model model,HttpServletRequest request){String image1 = request.getParameter("image1");String image2 = request.getParameter("image2");String[] url = image1.split(",");String[] url2 = image2.split(",");String imageo="";String imaget="";if(image1!=""&&url.length>1){imageo=url[1];}if(image2!=null&&url2.length>1){imaget=url2[1];}request.getSession().setAttribute(SystemConstant.SESSION_IMGONE, imageo);request.getSession().setAttribute(SystemConstant.SESSION_IMGTWO, imaget);return"waihu/generation";}后台导出word先建一个类package .ideal.mall.front.web.controller;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.poi.POIXMLDocument;import org.apache.poi.openxml4j.opc.OPCPackage;import ermodel.XWPFParagraph;import ermodel.XWPFRun;import ermodel.XWPFTable;import ermodel.XWPFTableCell;import ermodel.XWPFTableRow;/*** 适用于word 2007* poi 版本3.7*/public class WordUtil {/*** 根据指定的参数值、模板,生成word 文档* param param 需要替换的变量* param template 模板*/public static CustomXWPFDocument generateWord(Map<String, Object> param, Stringtemplate) {CustomXWPFDocument doc = null;try {OPCPackage pack = POIXMLDocument.openPackage(template);doc = new CustomXWPFDocument(pack);if (param != null && param.size() > 0) {//处理段落List<XWPFParagraph> paragraphList = doc.getParagraphs();processParagraphs(paragraphList, param, doc);//处理表格Iterator<XWPFTable> it = doc.getTablesIterator();while (it.hasNext()) {XWPFTable table = it.next();List<XWPFTableRow> rows = table.getRows();for (XWPFTableRow row : rows) {List<XWPFTableCell> cells = row.getTableCells();for (XWPFTableCell cell : cells) {List<XWPFParagraph> paragraphListTable = cell.getParagraphs();processParagraphs(paragraphListTable, param, doc);}}}}} catch (Exception e) {e.printStackTrace();}return doc;}/*** 处理段落* param paragraphList*/public static void processParagraphs(List<XWPFParagraph> paragraphList,Map<String, Object> param,CustomXWPFDocument doc){if(paragraphList != null && paragraphList.size() > 0){for(XWPFParagraph paragraph:paragraphList){List<XWPFRun> runs = paragraph.getRuns();for (XWPFRun run : runs) {String text = run.getText(0);if(text != null){boolean isSetText = false;for (Entry<String, Object> entry : param.entrySet()) {String key = entry.getKey();if(text.indexOf(key) != -1){isSetText = true;Object value = entry.getValue();if (value instanceof String) {//文本替换text = text.replace(key, value.toString());} else if (value instanceof Map) {//图片替换text = text.replace(key, "");Map pic = (Map)value;int width = Integer.parseInt(pic.get("width").toString());int height = Integer.parseInt(pic.get("height").toString());int picType = getPictureType(pic.get("type").toString());byte[] byteArray = (byte[]) pic.get("content");ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);try {int ind = doc.addPicture(byteInputStream,picType);doc.createPicture(ind, width , height,paragraph);} catch (Exception e) {e.printStackTrace();}}}}if(isSetText){run.setText(text,0);}}}}}}/*** 根据图片类型,取得对应的图片类型代码* param picType* return int*/private static int getPictureType(String picType){int res = CustomXWPFDocument.PICTURE_TYPE_PICT;if(picType != null){if(picType.equalsIgnoreCase("png")){res = CustomXWPFDocument.PICTURE_TYPE_PNG;}else if(picType.equalsIgnoreCase("dib")){res = CustomXWPFDocument.PICTURE_TYPE_DIB;}else if(picType.equalsIgnoreCase("emf")){res = CustomXWPFDocument.PICTURE_TYPE_EMF;}else if(picType.equalsIgnoreCase("jpg") || picType.equalsIgnoreCase("jpeg")){ res = CustomXWPFDocument.PICTURE_TYPE_JPEG;}else if(picType.equalsIgnoreCase("wmf")){res = CustomXWPFDocument.PICTURE_TYPE_WMF;}}return res;}/*** 将输入流中的数据写入字节数组* param in* return*/public static byte[] inputStream2ByteArray(InputStream in,boolean isClose){ byte[] byteArray = null;try {int total = in.available();byteArray = new byte[total];in.read(byteArray);} catch (IOException e) {e.printStackTrace();}finally{if(isClose){try {in.close();} catch (Exception e2) {System.out.println("关闭流失败");}}}return byteArray;}}后台导出RequestMapping(value="exp")//简报生成echarts图表public String exp(Model model,HttpServletRequest request){String image1 = request.getParameter("image1");String image2 = request.getParameter("image2");String[] url = image1.split(",");String[] url2 = image2.split(",");String imageo="";String imaget="";if(image1!=""&&url.length>1){imageo=url[1];}if(image2!=null&&url2.length>1){imaget=url2[1];}request.getSession().setAttribute(SystemConstant.SESSION_IMGONE, imageo);request.getSession().setAttribute(SystemConstant.SESSION_IMGTWO, imaget);return"waihu/generation";}RequestMapping(value="expword")//简报生成ResponseBodypublic void expword(Map dataMap,Model model,HttpServletRequestrequest,HttpServletResponse response) throws Exception{String userId = request.getParameter("userId");String date1 = request.getParameter("date");String imageo = (String)request.getSession().getAttribute(SystemConstant.SESSION_IMGONE);String imaget = (String)request.getSession().getAttribute(SystemConstant.SESSION_IMGTWO);Calendar cal = Calendar.getInstance();cal.add(Calendar.DATE, -1);String yesterday = new SimpleDateFormat( "yyyy-MM-dd").format(cal.getTime());if(date1==null){date1=yesterday;}List zxlist = workListService.queryByWorkList(date1,"咨询类");List qzlist = workListService.queryByWorkList(date1,"求助投诉类");List rdlist = workListService.queryByconType(date1,"5");Briefing briefing1 = new Briefing();Briefing briefing =briefingService.getBriefing(date1,"");if(briefing==null){List list = workListService.queryByType(date1,"");for(int i=0;i<list.size();i++){if(i==0){briefing1.setContentOne(list.get(i).toString());}if(i==1){briefing1.setContentTwo(list.get(i).toString());}}briefing1.setContent("");}else{briefing1=briefing;}String aa= imageo.replaceAll(" ","\\+");String bb= imaget.replaceAll(" ","\\+");BASE64Decoder decoder = new BASE64Decoder();byte[] a = decoder.decodeBuffer(aa);byte[] b = decoder.decodeBuffer(bb);testTemplateWrite(zxlist,qzlist,rdlist,briefing1,date1,a,b,response);}public void testTemplateWrite(List zxlist,List qzlist,List rdlist,Briefing briefing,Stringdate,byte[] image1,byte[] image2,HttpServletResponse response) throws Exception { Map<String, Object> params = new HashMap<String, Object>();String tomcatPath=System.getProperty("user.dir");Map<String,Object> header = new HashMap<String, Object>();header.put("width", 550);header.put("height", 150);header.put("type", "png");header.put("content", image1);params.put("${image1}",header);Map<String,Object> headers = new HashMap<String, Object>();headers.put("width", 550);headers.put("height", 150);headers.put("type", "png");headers.put("content", image2);params.put("${image2}",headers);params.put("${date}", date);params.put("${content0}", briefing.getContent());params.put("${content1}", briefing.getContentOne());params.put("${content2}", briefing.getContentTwo());String filepath = "";if (tomcatPath.contains("\\")) {filepath = tomcatPath.replace("\\bin", "\\webapps\\army-infantry\\fileData\\") + "rxjbmb.docx";}InputStream is = new FileInputStream(filepath);CustomXWPFDocument doc = new CustomXWPFDocument(is);//替换表格里面的变量if(zxlist.size()!=0){insertValueToTable(doc, generateTestData(zxlist),1,false);}if(qzlist.size()!=0){insertValueToTable(doc, generateTestData(qzlist),2,true);}if(rdlist.size()!=0){insertValueToTable(doc, generateTestDatas(rdlist),2,true);}//替换段落里面的变量List<XWPFParagraph> paragraphList = doc.getParagraphs();WordUtil.processParagraphs(paragraphList, params, doc);String fileName =date+"热线简报.docx";response.reset();ServletOutputStream out = response.getOutputStream();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes("GB2312"), "ISO-8859-1"));BufferedInputStream bis = null;BufferedOutputStream bos = null;try {bis = new BufferedInputStream(new FileInputStream(filepath));bos = new BufferedOutputStream(out);doc.write(out);} catch (IOException e) { throw e;} finally {if (bis != null)bis.close();if (bos != null)bos.close();}this.close(is);}public List<List<String>> generateTestData(List lists) {List<List<String>> resultList = new ArrayList<List<String>>();for (int i = 0; i < lists.size(); i++) {List<String> list = new ArrayList<String>();Object[] obj =(Object[]) lists.get(i);String obj6="0%";if(obj[6]!=null){obj6= obj[6].toString()+"%";}String obj7="0%";if(obj[7]!=null){obj7= obj[7].toString()+"%";}list.add(obj[0].toString());list.add(obj[1].toString());list.add(obj[2].toString());list.add(obj[3].toString());list.add(obj[4].toString());list.add(obj[5].toString());list.add(obj6);list.add(obj7);resultList.add(list);}return resultList;}public List<List<String>> generateTestDatas(List lists) {List<List<String>> resultList = new ArrayList<List<String>>();for (int i = 0; i < lists.size(); i++) {List<String> list = new ArrayList<String>();Object[] obj =(Object[]) lists.get(i);String obj3="0%";if(obj[3]!=null){obj3= obj[3].toString()+"%";}list.add(obj[0].toString());list.add(obj[1].toString());list.add(obj[2].toString());list.add(obj3);resultList.add(list);}return resultList;}public void insertValueToTable(XWPFDocument doc,List<List<String>> resultList,int tableRowSize,boolean isDelTmpRow) throws Exception {Iterator<XWPFTable> iterator = doc.getTablesIterator();XWPFTable table = null;List<XWPFTableRow> rows=null;List<XWPFTableCell> cells=null;List<XWPFTableCell> tmpCells=null;//模版列XWPFTableRow tmpRow=null;//匹配用XWPFTableCell tmpCell=null;//匹配用boolean flag=false;//是否找到表格while (iterator.hasNext()) {table = iterator.next();rows = table.getRows();if(rows.size()==tableRowSize){tmpRow=rows.get(tableRowSize-1);cells =tmpRow.getTableCells();if(cells.size()==resultList.get(0).size()){flag=true;break;}}}if(!flag){return;}tmpCells=tmpRow.getTableCells();for(int i=0,len=resultList.size();i<len;i++){XWPFTableRow row=table.createRow();row.setHeight(tmpRow.getHeight());List<String> list=resultList.get(i);cells=row.getTableCells();//插入的行会填充与表格第一行相同的列数for(int k=0,klen=cells.size();k<klen;k++){tmpCell=tmpCells.get(k);XWPFTableCell cell=cells.get(k);setCellText(tmpCell, cell, list.get(k));}//继续写剩余的列for(int j=cells.size(),jlen=list.size();j<jlen;j++){tmpCell=tmpCells.get(j);XWPFTableCell cell=row.addNewTableCell();setCellText(tmpCell, cell, list.get(j));}}//删除模版行if(isDelTmpRow){table.removeRow(tableRowSize-1);}}public void setCellText(XWPFTableCell tmpCell,XWPFTableCell cell,String text) throws Exception{CTTc cttc2 = tmpCell.getCTTc();CTTcPr ctPr2=cttc2.getTcPr();CTTc cttc = cell.getCTTc();CTTcPr ctPr = cttc.addNewTcPr();// cell.setColor(tmpCell.getColor());// cell.setVerticalAlignment(tmpCell.getVerticalAlignment());if(ctPr2.getTcW()!=null){ctPr.addNewTcW().setW(ctPr2.getTcW().getW());}// if(ctPr2.getVAlign()!=null){最新注释// ctPr.addNewVAlign().setVal(ctPr2.getVAlign().getVal());// }if(cttc2.getPList().size()>0){CTP ctp=cttc2.getPList().get(0);if(ctp.getPPr()!=null){if(ctp.getPPr().getJc()!=null){cttc.getPList().get(0).addNewPPr().addNewJc().setVal(ctp.getPPr().getJc().getVal());}}}// if(ctPr2.getTcBorders()!=null){// ctPr.setTcBorders(ctPr2.getTcBorders());// }XWPFParagraph tmpP=tmpCell.getParagraphs().get(0);XWPFParagraph cellP=cell.getParagraphs().get(0);XWPFRun tmpR =null;if(tmpP.getRuns()!=null&&tmpP.getRuns().size()>0){tmpR=tmpP.getRuns().get(0);}XWPFRun cellR = cellP.createRun();cellR.setText(text);//复制字体信息if(tmpR!=null){cellR.setBold(tmpR.isBold());cellR.setItalic(tmpR.isItalic());cellR.setStrike(tmpR.isStrike());cellR.setUnderline(tmpR.getUnderline());// cellR.setColor(tmpR.getColor());cellR.setTextPosition(tmpR.getTextPosition());if(tmpR.getFontSize()!=-1){cellR.setFontSize(tmpR.getFontSize());}if(tmpR.getFontFamily()!=null){cellR.setFontFamily(tmpR.getFontFamily());}if(tmpR.getCTR()!=null){if(tmpR.getCTR().isSetRPr()){CTRPr tmpRPr =tmpR.getCTR().getRPr();if(tmpRPr.isSetRFonts()){CTFonts tmpFonts=tmpRPr.getRFonts();CTRPr cellRPr=cellR.getCTR().isSetRPr() ? cellR.getCTR().getRPr() : cellR.getCTR().addNewRPr();CTFonts cellFonts = cellRPr.isSetRFonts() ? cellRPr.getRFonts() : cellRPr.addNewRFonts();cellFonts.setAscii(tmpFonts.getAscii());cellFonts.setAsciiTheme(tmpFonts.getAsciiTheme());cellFonts.setCs(tmpFonts.getCs());cellFonts.setCstheme(tmpFonts.getCstheme());cellFonts.setEastAsia(tmpFonts.getEastAsia());cellFonts.setEastAsiaTheme(tmpFonts.getEastAsiaTheme());cellFonts.setHAnsi(tmpFonts.getHAnsi());cellFonts.setHAnsiTheme(tmpFonts.getHAnsiTheme());}}}}//复制段落信息cellP.setAlignment(tmpP.getAlignment());cellP.setVerticalAlignment(tmpP.getVerticalAlignment());cellP.setBorderBetween(tmpP.getBorderBetween());cellP.setBorderBottom(tmpP.getBorderBottom());cellP.setBorderLeft(tmpP.getBorderLeft());cellP.setBorderRight(tmpP.getBorderRight());cellP.setBorderTop(tmpP.getBorderTop());cellP.setPageBreak(tmpP.isPageBreak());if(tmpP.getCTP()!=null){if(tmpP.getCTP().getPPr()!=null){CTPPr tmpPPr = tmpP.getCTP().getPPr();CTPPr cellPPr = cellP.getCTP().getPPr() != null ? cellP.getCTP().getPPr() : cellP.getCTP().addNewPPr();//复制段落间距信息CTSpacing tmpSpacing =tmpPPr.getSpacing();if(tmpSpacing!=null){CTSpacing cellSpacing=cellPPr.getSpacing()!=null?cellPPr.getSpacing():cellPPr.addNewSpacing();cellSpacing.setAfter(tmpSpacing.getAfter());}if(tmpSpacing.getAfterAutospacing()!=null){cellSpacing.setAfterAutospacing(tmpSpacing.getAfterAutospacing());}if(tmpSpacing.getAfterLines()!=null){cellSpacing.setAfterLines(tmpSpacing.getAfterLines());}if(tmpSpacing.getBefore()!=null){cellSpacing.setBefore(tmpSpacing.getBefore());}if(tmpSpacing.getBeforeAutospacing()!=null){cellSpacing.setBeforeAutospacing(tmpSpacing.getBeforeAutospacing()); }if(tmpSpacing.getBeforeLines()!=null){cellSpacing.setBeforeLines(tmpSpacing.getBeforeLines());}if(tmpSpacing.getLine()!=null){cellSpacing.setLine(tmpSpacing.getLine());}if(tmpSpacing.getLineRule()!=null){cellSpacing.setLineRule(tmpSpacing.getLineRule());}}//复制段落缩进信息CTInd tmpInd=tmpPPr.getInd();if(tmpInd!=null){CTInd cellInd=cellPPr.getInd()!=null?cellPPr.getInd():cellPPr.addNewInd(); if(tmpInd.getFirstLine()!=null){cellInd.setFirstLine(tmpInd.getFirstLine());}if(tmpInd.getFirstLineChars()!=null){cellInd.setFirstLineChars(tmpInd.getFirstLineChars());}if(tmpInd.getHanging()!=null){cellInd.setHanging(tmpInd.getHanging());}if(tmpInd.getHangingChars()!=null){cellInd.setHangingChars(tmpInd.getHangingChars());}if(tmpInd.getLeft()!=null){cellInd.setLeft(tmpInd.getLeft());}cellInd.setLeftChars(tmpInd.getLeftChars());}if(tmpInd.getRight()!=null){cellInd.setRight(tmpInd.getRight());}if(tmpInd.getRightChars()!=null){cellInd.setRightChars(tmpInd.getRightChars());}}}}}public void saveDocument(XWPFDocument document,String savePath) throws Exception{FileOutputStream fos = new FileOutputStream(savePath);document.write(fos);fos.close();}/*** 正则匹配字符串* param str* return*/private Matcher matcher(String str) {Pattern pattern = pile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);return matcher;}/*** 关闭输入流* param is*/private void close(InputStream is) {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}模版导出的文件。

相关文档
最新文档