当前位置:文档之家› 使用Aspose.Cell控件实现Excel高难度报表的生成(三)

使用Aspose.Cell控件实现Excel高难度报表的生成(三)

使用Aspose.Cell控件实现Excel高难度报表的生成(三)
使用Aspose.Cell控件实现Excel高难度报表的生成(三)

使用Aspose.Cell控件实现Excel高难度报表的生成(三)

在之前几篇文章中,介绍了关于Apsose.cell这个强大的Excel操作控件的使用,相关文章如下:

这几篇文章,都对Apose.Cell这个控件生成各种Excel的方式进行了阐述,对直接把DataTable或者IList生成Excel的操作,对通过模板方式实现自定义报表的各种方式,以及多个文件的合并的方式进行了介绍。

本文继续介绍该控件进一步的使用,也主要介绍如何动态生成(不使用模板文件)各种单元格,以及图表的增加等功能,介绍生成的表格完全自定义,这个报表时一个典型的图文并茂的统计报表,它的最终样式如下所示。

这个报表,表格数据是动态生成,图形则是直接从窗体的图表控件(如ZedGraph图表控件)或者PictureBox控件中获取,写入Excel文档中的。

测试程序主界面如下所示。

和很多其他的Excel操作控件(NPOI、Myxls)一样吗,Apose.Cell也提供了WorkBook、WorkSheet、Range、Cell这些对象的包装,操作这些对象,基本上能够满足我们各种复杂的需求,给我们更加弹性化的操作。

Workbook workbook = new Workbook();

Worksheet worksheet = workbook.Worksheets[0];

这几个对象是操作Excel必须的,如果需要设定生成的Excel打印预览的参数,进行一些属性设置,如下所示。

Workbook workbook = new Workbook();

Worksheet worksheet = workbook.Worksheets[0];

worksheet.PageSetup.Orientation =

https://www.doczj.com/doc/e913201583.html,ndscape;//横向打印

worksheet.PageSetup.Zoom = 100;//以100%的缩放模式打开 worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;

我们知道,由于该报表完全是手工生成,报表的标题,以及下面几行说明文字,也是需要生成的,操作其实就是把一些单元格合并为一个区域(Range),然后赋值,改变样式就可以了,如下所示的效果和代码

Range range; Cell cell;

int colSpan = 4 + DeptNameList.Count * 2;

range = worksheet.Cells.CreateRange(0, 0, 1, colSpan);

range.Merge();

range.RowHeight = 20;

range.Style = CreateTitleStyle(workbook);

cell = range[0, 0];

cell.PutValue("患病情况统计");

range = worksheet.Cells.CreateRange(1, 0, 1, colSpan);

range.Merge();

range.RowHeight = 15;

cell = range[0, 0];

cell.PutValue("所选部别范围内,总计有1000名人员,查询统计结果如下:");

range = worksheet.Cells.CreateRange(2, 0, 1, colSpan);

range.Merge();

range.RowHeight = 15;

cell = range[0, 0];

cell.PutValue("自2007-1-1开始到现在,统计共有500人有患病史,累计900人次,患病情况如下表:");

报表中最复杂的是表头的生成,因为它是不规则的表头,因此需要很细的操作Cell和Range 对象,实现复杂表头(也是很常见的)的生成。

这个是慢工出细活,需要对Cell和Range熟悉使用,然后给他们分配不同的行列就可以生成一个标准如下的表头了。

Style headStyle = CreateStyle(workbook, true);

Style normalStyle = CreateStyle(workbook, false);

int startRow = 4;

range = worksheet.Cells.CreateRange(startRow, 0, 2, 1);

range.Merge();

range.Style = headStyle;

cell = range[0, 0];

cell.PutValue("序号");

cell.Style = headStyle;

range = worksheet.Cells.CreateRange(startRow, 1, 2, 1);

range.Merge();

range.Style = headStyle;

range.ColumnWidth = 40;

cell = range[0, 0];

cell.PutValue("疾病名称");

cell.Style = headStyle;

int startCol = 2;

foreach (string deptName in DeptNameList)

{

range = worksheet.Cells.CreateRange(startRow,

startCol, 1, 2);

range.Merge();

range.Style = headStyle;

cell = range[0, 0];

cell.PutValue(deptName);

cell = worksheet.Cells[startRow + 1, startCol];

cell.PutValue("人次");

cell.Style = headStyle;

cell = worksheet.Cells[startRow + 1, startCol + 1];

cell.PutValue("百分比");

cell.Style = headStyle;

startCol += 2;

}

range = worksheet.Cells.CreateRange(startRow, startCol, 1, 2);

range.Merge();

range.Style = headStyle;

cell = range[0, 0];

cell.PutValue("合计");

cell = worksheet.Cells[startRow + 1, startCol];

cell.PutValue("人次");

cell.Style = headStyle;

cell = worksheet.Cells[startRow + 1, startCol + 1];

cell.PutValue("百分比");

cell.Style = headStyle;

#endregion

这个不算复杂,只需要遍历然后生成内容到单元格即可。

//写入数据到Excel

startRow = startRow + 2;

for (int i = 0; i < dt.Rows.Count; i++)

{

startCol = 0;

for (int j = 0; j < dt.Columns.Count; j++)

{

DataRow dr = dt.Rows[i];

cell = worksheet.Cells[startRow, startCol];

cell.PutValue(dr[j]);

cell.Style = normalStyle;

startCol++;

}

startRow++;

}

这个Apose.Cell控件的WorkSheet提供了worksheet.Pictures.Add方法,可以添加图片的操作,不过图片是通过流方式写入,我们把图表的Image对象转换一下,创建一个内存流就可以了。如下所示。

//写入图注

startRow += 1;//跳过1行

range = worksheet.Cells.CreateRange(startRow++, 0, 1, colSpan);

range.Merge();

range.RowHeight = 15;

cell = range[0, 0];

cell.PutValue("以柱状图展示如下:");

//插入图片到Excel里面

byte[] bytes =

ImageHelper.ImageToBytes(this.pictureBox1.Image);

using (MemoryStream stream = new MemoryStream(bytes)) {

worksheet.Pictures.Add(startRow, 0, stream);

}

//Save the excel file.

string saveFile =

FileDialogHelper.SaveExcel("rangecells.xls", "C:\\");

if (!string.IsNullOrEmpty(saveFile))

{

workbook.Save(saveFile);

if (MessageUtil.ShowYesNoAndTips("保存成功,是否打开文件?") == System.Windows.Forms.DialogResult.Yes)

{

System.Diagnostics.Process.Start(saveFile);

}

}

至此,基于Apose.Cell的自定义报表的另外一种操作也全部实现了,为了实现这个简单的例子,以便在项目中使用,花了不少时间,不过以后对于生成这类复杂的和自定义报表,可以直接利用它们基础的对象进行操作即可;

如果是一些常规的报表,可以利用自定义模板的方式生成,然后绑定数据源;如果是二维表,或者ILIst集合,导出Excel就更简单了。以上两种都可以直接利用封装好的AsposeExcelTools来进行操作,这个通用的类库,可以省却每次去编写代码的繁琐,提高效率。

intouch 通过Excel 生成报表

1、自动生成需要的标记名 在intouch开发环境中,将向导库中/趋势/历史向导(HistData)放入窗口,这将自动生成若干标记名(如下)。有关标记名以HDW开头,加上他们的DDE的Item命名。 标记名说明如下: HDWDataDir 消息型历史数据文件的目录的路径名,可用函数赋值。 例如:HDWDataDir = HTGetLogDirectory(); HDWDBDir 消息型intouch标记名字典的目录的路径名,可用函数赋值。 例如:HDWDBDir = InfoInTouchAppDir(); HDWStratDate 消息型与$DataString 相同格式的数据采样开始日期。 例如: HDWStartTime 消息型使用24小时时钟的HH:MM:SS 格式的数据采样开始时间 例如:09:45:33 HDWDuration 消息型数据时间长度(报表时间总长度) 可以用星期,天,时,分,秒,等来表示。下面是有效的 字符:W 星期,D 天,H 小时;M 分,S 秒。允许使用 小数值例如:表示500毫秒;若只需要一个样本,请将Duration 设为零。 HDWInterval 消息型采样间隔的时间长度 可以用星期,日,小时,分,秒来表示例如1W 表示一 星期。允许使用小数值例如:.25d 来表示6小时。有效字 符与HDWDuration相同;注意Duration 和Interval允许的最打

时间长度为6周,这适用于所有请求类型日,秒,等。例如如 果使用日则最大值为42, 7天*6周=42天。 HDWTags 消息型历史数据的标记名列表(报表中需要的标记名) 以taga,tagb;tagz格式输入,此外采样日期或时间可以通过使用 内部系统标记$Date和$Time来请求。 HDWFileName 消息型规定生成的.CSV文件的路径和名称。 例如:E:\111\ HDWWriteFile 整形当设置为1时,HistData 会将请求数据写入由FileName项目 名指定的文件,当文件更新完成后WriteFile 会自动重置为0 Status 离散型显示最后一次操作的状态 1 表示成功,0 表示出错 Error 消息型包含上次错误说明的字符串,如Status 为1 则表示无,如Status 为0 则表示错误消息字符串。 例如:下面脚本生成一个日期由StartData1规定,但包含两个标记名PI-101;TI-101,日报表。可以复制在脚本中,修改一下就可以形成所需的.CSV文件。 HDWStartDate=StartDate1; HDWStartTime=”00:00:00”; HDWDBDir=InfoIntouchAppDir(); HDWDataDir=HTGetLogDirectory(); HDWFilename=” E:\111\”; HDWTags=”$Date,$Time, PI-101,TI-101”; HDWInterval=”1H”; HDWDuration=”1D”; HDWWritefile=1; 例如:设计一个按钮,当按下按钮时,生成一个.CSV表格。生成表格的起始日期,和起始时间可调,表格时间间隔也可调。 新建内存型标签,标签数据类型为消息型:startdate 消息型;starttime 消息型

Excel数据处理技巧:PowerQuery插件一键生成报表.doc

Excel 数据处理技巧:Power Query 插件一键生成报表 每个月月底,财务小王都要汇总全国各地区的销售数据做数 据分析。之前他采用的方法就是把各个工作表的数据复制再 粘贴到一个工作表里,然后进行数据透视表分析。可是全国 有那么多城市,复制粘贴太费时间,而且如果中间数据有变 动怎么办?现在不用担心了,今天给大家介绍一个EXCEL 很好用的技能 Power Query,帮助大家实现动态获取多工作表 数据。 一、初识 Power Query 如下图,在这个工作簿里,各个工作表分别列举了全国各个 地区的销售数据,这里为了举例,只列举四个城市的基本数 据。 首先,打开数据选项卡下,在[ 获取与转换 ]组中,新建查询---从文件 --- 从工作簿。

Power Query 本来是 EXCEL 的一个插件,在EXCEL2016 以前版本都需要另外下载,但是在 Excel2016 中,这项技能已经内置在数据选项卡 [ 获取与转换 ] 组中,以供大家直接使用。由此 足以可见 Power Query 的重要性。这里就推荐大家升级到最新的EXCEL 版本, EXCEL2016 以前的版本呢,大家可以自行百度下载安装这个插件。 在弹出的窗口中找到工作簿,导入。 在弹出的导航器界面,勾选“选择多项”,把这几个需要合 并的工作表全部选中,再选择右下角的“编辑”。 这样就进入了POWER QUERY 编辑器界面。 这个界面就是我们进行 Power Query 操作的主要界面,可以看到,上面的菜单栏跟 EXCEL 菜单栏很相似,左侧的查询窗口 显示的是打开的四个工作表,右侧查询设置界面是类似于 PS 一样的可以进行操作的记录和返回。中间区域则显示了表格的 内容。 二、使用 Power Query 汇总数据 点击开始选项卡下[ 组合 ] 组里面的追加查询。

Intouch报表-EXCEL报表制作教程

用EXCEL打印报表 1.原理 首先根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV 文件(逗号分隔文件,可用EXCEL打开)。这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。所以需要另设计一个空的EXCEL报表模版,再将.CSV文件的数据复制到报表中,形成完整的报表。 通过INTOUCH可以自动产生.CSV,再通过EXCEL的宏程序打印报表,可以完成招呼打印和定时自动打印。 如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。 大致步骤如下:

2.生成.CSV文件 Step1: 自动生成需要的标记名 在INTOUCH开发环境中,将向导库中\趋势\历史趋势向导(HistData)放入窗口。这将自动形成若干标记名(Tag)。有关标记名以HDW开头加上它们的DDE的ITEM命名。 这些标记名说明如下: HDWDATADIR 消息型历史数据文件的目录的路径名,可用函数赋值 例如HDWDataDir = HTGetLogDirectory(); HDWDBDIR 消息型InTouch 标记名字典的目录的路径名,可用函数赋值 例如HDWDBDir = InfoInTouchAppDir(); HDWSTARTDATE 消息型与$DateString相同格式的数据采样开始日期HDWSTARTTIME 消息型使用24 小时时钟的HH:MM:SS 格式的数据采样开始时间HDWDURATION 消息型数据时间长度(报表时间总长度) 可以用星期,天时,分,秒,等来表示下面是有效的字 符:w 星期,d 天,h 小时,m 分,s 秒。允许使用 小数值例如扩.5s 表示500 毫秒若只需一个样本请 将DURATION 设为0 零 HDWINTERVAL 消息型采样间隔的时间长度 可以用星期日小时分和秒来表示例如1W 表示一星期 允许使用小数值例如用.25d 来表示6小时 有效字符与HDDURATION相同 注意DURATION 和INTERVAL 允许的最大时间长 度均为6 周这适用于所有请求类型日秒等例如如果 使用日则最大值为42,7 天x 6 周= 42

Excel自动生成员工简历表

Excel自动生成员工简历表 我们可以用Excel自动提取“员工基本情况登记表”中的信息,生成并打印员工简历表……[编者]前面我们介绍了《Excel常用函数的功能和使用方法》,现在我们学以致用,介绍一系列用这些函数实现的数据统计实例解析。今天我们介绍用Excel自动提取“员工基本情况登记表”中的信息,生成并打印员工简历表。 朋友在做人事工作,常常要打印指定员工的简历表,由于“员工基本情况登记表”是用Excel制作的,我们可以用Excel来自动提取“员工基本情况登记表”中的信息,生成并打印员工简历表,十分方便。文章末尾提供.xls文件供大家下载参考。 本文涉及的Excel函数如下,点击可查看详细信息: 1、IF (Logical,Value_if_true,Value_if_false) 2、ISERROR (value) 3、VLOOKUP (lookup_value,table_array,col_index_num,range_lookup) 应用过程: 1、启动Excel2003(其他版本请仿照操作),打开“员工基本情况登记表”工作簿(如图1)。 2、切换到Sheet2工作表中,仿照图2的样式制作好简历表的框架。

3、分别选中需要填写内容的单元格(除B2单元格外,如D2、F2等),输入公式:=IF(ISERROR(VLOOKUP(B2,简历!A3:K12,*,FALSE)),"",VLOOKUP(B2,简 历!A3:K12,*,FALSE))。 注意:①上述公式中的“*”号,表示“简历”表中,相应的数据所对应的列数:如“出生时间”在第“5”列(参见图1),在J2单元格中输入公式时,将“*”修改为“5”,即: =IF(ISERROR(VLOOKUP(B2,简历!A3:K12,5,FALSE)),"",VLOOKUP(B2,简 历!A3:K12,5,FALSE))。 ②公式的含义是:如果公式“VLOOKUP(B2,简历!A3:K12,5,FALSE)”返回错误(ISERROR),则有显示“空”(""),反之显示公式的返回结果。 4、选中J2单元格,再按住Ctrl键,点击C3单元格,同时选中J2和C3单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图3),在“数字”标签中,选中“分类”下面的“日期”选项,然后在右侧选定一种日期类型,确定返回。

Excel如何设置自动生成分页报表

Excel如何设置自动生成分页报表 篇一:exceL表格分页技巧 经常在excel中制作表格时,我们不可能仅仅只作一个表格,有时可能会在一个工作簿中制作多个表格。但我们又希望将所有的表格分别打印到每一张纸上面,每张纸上面只打印一个表格,那么,我们应该如何实现呢?有许多朋友都是重建新工作簿,再将表格一个一个的剪切到新工作簿中,每个工作簿里面放一个表格,最后再一个个的打印出来。虽说这种方法可以实现,但是操作比较繁琐。其实有更好更简单的方法,利用excel中的分页功能,在一个工作簿中打印出多个表格,每张纸上面打印一个表格。 excel中如何设置手动分页打印 现在工作簿中有4个表格,我希望每张纸上面打印一个表格,分别用4张纸打印出来。 ①进入视图选项卡,单击工作簿视图选项组中的分页预览; ②上图分页预览中只有2页,分别是第1页和第2页。我们将光标移动右下角边框处,当鼠标变成双箭头时,按住左键不放,拖动边框,直到看见第3页和第4页的时候就放开鼠标;(如下图) ③现在excel就可以打印4个页面出来了,但我们还需要将上面两个表格剪切到下面来才行,剪切完成如下图: 好了,现在分页已经完成了,打印工作簿的话,会打印4张纸,每张

纸上面一个表格,下面再来说说如何自动分页打印! excel中自动分页页面设置 纵向/横向设置:单击页面布局选项卡,单击页边距,选中最下面的自定义边距,在弹出的页面设置中可以选中纵向或横向; 分页的页边距设置:然后进入页边距设置上、下、左、右的边距大小; 所以页面的页眉页脚设置:你也可以自定义页任意设置眉和页脚。excel中快速插入分页符和删除分页符 先将光标定位到需要加分页的位置,然后单击页面布局选项卡中的分隔符,选中插入分 页符或者删除分页符。如果想重新设置所以的分页效果,可以选中重设所有分页符。 篇二:如何设置电子表格分页相同的标题行 如何设置电子表格分页相同的标题行 20XX-07-0209:49:49|分类:|标签:|字号大中小订阅要想电子表格每而显示和第一页相同的标题,用以下方法: 页面设置——工作表——顶端标题行——输入第一页标题行的代码。如A2:D2如果是两行标题:用(A1:D1):(A2:D2)格式。 注意中间用冒号。 篇三:excel小计自动分页打印的方法 excel小计自动分页打印的方法 在使用excel处理数据的时候,我们常常遇到小计的问题;即:间断性的对部分数据进行合计;

使用VBA实现EXCEL批量生成图表并发送

使用EXCEL VBA实现图表批量生成并发送 业务需求 office word2007的邮件合并功能是财务、文秘类工作经常使用的功能之一,该功能可以生成包含可变内容的批量邮件文档,广泛适用于发送工资条、成绩单、通知书等,这里不再赘述。笔者所在单位最近为加强员工考核管理工作力度,提出了一个类似于邮件合并功能,但使用邮件合并功能却不能实现的需求,下面用文字结合图表描述: 1.将员工百分制考核结果批量以图表(折线图)反应出来,每一条员工数据均生成一个类似于下图右侧的图表。 (图1) 2.使用类似于邮件合并方式实现员工考核图表的批量发送,将生成的图表插入邮件正文分别发送给每位员工。 (图2) 解决思路 思路一:使用https://www.doczj.com/doc/e913201583.html,+Sqlserver(或ACCESS等,下同)开发一个网站,设置好权限,允许员工查看自己的反馈结果。 思路评价:可行,但达不到设想中的推送效果。 思路二:使用https://www.doczj.com/doc/e913201583.html,+Sqlserver开发一个系统,内置图表模板,图表基于固定区域数据生成;为每位员工复制一份作为报表,将该员工数据填写到固定区域;将每位员工的报表作为附件发送给每位员工。 思路评价:可行,但开发量大,效果不直观。

思路三:使用https://www.doczj.com/doc/e913201583.html,+Sqlserver开发一个系统,使用VS2008版以上自带控件或第三方控件如dotnetcharting,为每位员工生成一张图片,将该图片插入邮件发送给每位员工。 思路评价:可行,但开发量大。 思路四:使用excel VBA为每位员工生成一张图片,将该图片插入邮件发送给每位员工。这个思路一开始并没有列入考虑范围,主要原因是当时认为在excel中为每位员工生成一个图表是不可能的,即使能生成也没办法脱离excel工作薄,分别和员工对应起来并发送。最终采用本思路,是缘于笔者发现VBA可以非常容易地把图表导出为图片。 思路评价:可行,事实证明,开发量比想象的小很多。 开发环境准备 1.在运行该程序的电脑上安装Office Excel2007或以上版本; 2.正确配置OUTLOOK使之能够正常发送邮件; 3.打开Excel2007新建工作薄,把测试数据输入到sheet1工作表,把工作薄保存到工作目录(为方便后文描述,这里的目录设为“E:\excel-vba”),在该目录下新建“imgfile”子目录,以存放图片。示例数据如下: 注意:附件路径是个公式:=concatenate(“E:\excel-vba\imgfile\”,A1,”.jpg”) 含义是图片以员工姓名命名,这意味着员工姓名不可重复。 4.完成宏安全设置,如图所示: (图3) 实现过程 这个业务需求实现包含两个难点,一是为每位员工生成对应的图片;二是批量发送带图片的邮件。基于这两点,笔者在excel工作薄中设置了两个按钮,编写了两段代码,分别对应上述两个问题。事实上,这两段代码完全可以整合到一起,这里为了方便理解,还是分开介绍。笔者采取代码中加入注释的方式帮助大家理解代码含义。

用excel自动生成《国资委企业财务决算报表》数据

用excel自动生成《国资委企业财务决算报表》数据 《国资委企业财务决算报表》系统,一下简称《系统》,表格较多,填报工作量大,相关表之间又存在勾稽关系,在实际填报时即麻烦又容易出错,现在我介绍一种简便填报方法,能够达到既快又准的效果,极大程度提高了工作效率。 一、导出Excel报表 《系统》,提供了报表数据于Excel的连接,可直接将已有的报表数据导入到Excel中,生成Excel表格。其格式和《系统》内报表完全相同。 为了方便操作,我尽量详细说明,并附《系统》相同图示。 1、启动《系统》(如图1)

图1 2、单击“传送”菜单下的“导出到Excel”子菜单,出现如下窗口(如图2)

图2 3、在弹出的窗口中选择要导出数据的单位,单击“确定”按钮;出现如下窗口(如图3)

图3 4在弹出的窗口中单击按钮,选择导出Excel文件的保存路径; 5、选择要导出Excel的报表(点全选),单击“确定”按钮即可。 到此《系统》内部报表已完整成功导出来了。为了方便叙述,我们导出的国资委excel报表定名称为《国资委excel表》。 二、数据采集

1、首先导出一个年度《科目发生额及余额表》 成功导出《国资委excel报表》才算顺利完成了第一步,接下来就是数据的采集问题,既如何快速完成数据的录入工作。 此方法技术含量较低,不使用连接数据库技术,一般人员都能够掌握,如果你现在使用了财务软件,那更方便数据的采集了。 打开财务软件导出一个年度《科目发生额及余额表》,设定会计科目为二级,导出格式为excel,(具体方法不在赘述) 把年度《科目发生额及余额表》插入到《国资委excel报表》工作簿中,成为《国资委excel报表》中的一个工作表。把《科目发生额及余额表》命名为“基本数据”。

Excel数据处理技巧:Power-Query插件一键生成报表复习课程

Excel数据处理技巧:Power Query插件一键生成报表 每个月月底,财务小王都要汇总全国各地区的销售数据做数据分析。之前他采用的方法就是把各个工作表的数据复制再粘贴到一个工作表里,然后进行数据透视表分析。可是全国有那么多城市,复制粘贴太费时间,而且如果中间数据有变动怎么办?现在不用担心了,今天给大家介绍一个EXCEL 很好用的技能Power Query ,帮助大家实现动态获取多工作表数据。 一、初识Power Query 如下图,在这个工作簿里,各个工作表分别列举了全国各个地区的销售数据,这里为了举例,只列举四个城市的基本数据。 首先,打开数据选项卡下,在[ 获取与转换]组中,新建查询---从文件--- 从工作簿。 Power Query 本来是EXCEL 的一个插件,在EXCEL2016 以前版本都需要另外下载,但是在Excel2016 中,这项技能已经内置在数据选项卡[获取与转换]组中,以供大家直接使用。由此足以可

见Power Query 的重要性。这里就推荐大家升级到最新的EXCEL 版本,EXCEL2016 以前的版本呢,大家可以自行百度下载安装这个插件。 在弹出的窗口中找到工作簿,导入。 在弹出的导航器界面,勾选“选择多项”,把这几个需要合并的工作表全部选中,再选择右下角的“编辑”。 这样就进入了POWER QUERY 编辑器界面。 这个界面就是我们进行Power Query 操作的主要界面,可以看到,上面的菜单栏跟EXCEL 菜单栏很相似,左侧的查询窗口显示的是打开的四个工作表,右侧查询设置界面是类似于PS 一样的可以进行操作的记录和返回。中间区域则显示了表格的内容。 二、使用Power Query 汇总数据点击开始选项卡下[组合]组里面的追加查询。 在下拉列表中选择“将查询追加为新查询 由于这里有多个表,所以选择追加三个或更多表。把左侧的可用表添加到右侧,点击确定

用ExcelVBA方法实现报表自动生成

本文由geosouth贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第 25 卷第 1 期 2009 年 1 月 电力科学与工程 Electric Power Science and Engineering Vol.25, No.1 Jan., 2009 73 用 Excel VBA 方法实现报表自动生成 王靖 1,王林 1,周金文 2 (1. 中国石油华北石化公司机动设备处,河北任丘 062552;2. 中国石油华北油田公司,河北任丘 062552) 摘要:针对实时报表应用中的一些不足,介绍了如何利用 Excel VBA 来实现 InTouch 组态界面下报表的自动生成.该方法不破坏 InTouch 的安全性设置,不引入第三方软件,不需要操作人员人工干预. 关键词:VBA;录制宏函数;自动报表生成中图分类号:TP319 文献标识码:A 据库中的项目用于指定起始周期, 持续时间及采样 0 引言间隔等,以便访问历史数据.HistData 实用程序采用"动态数据交换" DDE(Dynamic Data Ex众所周知, 实时报表的编写方法虽然众多, 但 change) 技术访问 InTouch 创建的历史数据文件. 是程序步骤相当繁琐, 报表功能也受到很多限制. 它可以将所选的历史数据移入提出请求的程序, 如一些现成的水晶报表灵活性不够, 根本无法满足数 Microsoft Excel,并生成一个扩展名为 CSV 的文据报表的多种需求. 特别是组态时, 考虑到组态软件.该文件可以用 Excel 打开. 件浏览器的安全性设置, 只能让操作人员操作监控历史数据的访问可通过在提出请求的程序中使画面,而不能进入 WINDOWS 界面.第三方报表用宏函数或直接在 InTouch 中实现,并且需要定软件的引入势必牵涉到操作系统对该软件的激活, 义与 HistData 程序相关的各个项目.在 InTouch 这与浏览器的安全性设置相矛盾. 鉴于此, 本文提中编写条件脚本程序,让 InTouch 在既定的时刻出用 Excel VBA 来实现 InTouch 组态界面下报表 (如上午9:15)将电力监控系统 6 kV 运行日志需自动生成的方法. 要统计的 24 个整点时刻的数据写入 CSV 文件. 第 2 步,从已经生成的 CSV 文件中读取数据 1 自动生成方法的实现放入报表文件中 (利用 EXCEL 中的 VBA 编程) . 导入 CSV 文件,利用 VBA 录制宏函数,将报表实现过程中, 利用了常规办公软件 Office Excel 中的内嵌工具 Visual Basic 编辑器(Excel 菜单下工具——宏——Visual Basic 编辑器) ,程序非常简单. 此方法不用制作操作界面, 不需值班员的干预, 自动生成报文并交付打印机打印; 报表生成时不破坏InTouch 的安全性设置.此方法共分 4 个步骤. 第 1 步,利用 InTouch HistData 与Intouch 条件脚本生成 CSV 文件. InTouch HistData 是工控组态软件 InTouch 的一个控件, 程序包含自己的内部数据库. 内部数工作表有效区域的单元格中的数据填入既定的 EXCEL 工作表中(例如:1 号开闭所报表自动打印 . xls) ,生成报表表格的格式在该工作表中已设定好. 号开闭所报表自动打印 .xls" VBA Project "1 : 中结合录制宏函数生成程序模块 kbs1, 具体如下. '录制昨天 9 点至今天 8 点的整点报表 Workbooks. Open Filename: ="E: \ 报表. CSV" '在 Excel 中打开 Intouch 生成的 CSV 文件 Range ( "C2: AC25 " ) . Select '选定范围为需要录制的数据 收稿日期:2008 08 22. 作者简介:王靖 (1974 -), 男, 中国石油华北石化公司机动设备处工程师. 74 电 力 科

excel生成大表格

竭诚为您提供优质文档/双击可除 excel生成大表格 篇一:如何使excel表格自动生成相同的表头 类别:闲云笔记 如何使excel表格自动生成相同的表头 从“文件”菜单中选“页面设置”,在最后一个选项卡“工作表”中有一个“打印标题”,再单击“顶端标题行”右端的切换按钮,在表格中选中需要的标题行,再单击切换按钮回到“页面设置”页面,最后单击“确定”按钮。然后通过“打印预览”观看实际效果。也可在“打印标题”下面的“顶端标题行”中输入“$1:$2”(不含引号)。 第页总第页 篇二:excel随机数据生成方法 求教:我的电子表格中rand()函数的取值范围是-1到1,如何改回1到0 回答:有两种修改办法: 是[1-rand()]/2, 或[1+rand()]/2。 效果是一样的,都可生成0到1之间的随机数

电子表格中Rand()函数的取值范围是0到1,公式如下:=Rand() 如果取值范围是1到2,公式如下: =Rand()*(2-1)+1 Rand() 注解: 若要生成a与b之间的随机实数: =Rand()*(b-a)+a 如果要使用函数Rand生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=Rand()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。 示例 Rand()介于0到1之间的一个随机数(变量) =Rand()*100大于等于0但小于100的一个随机数(变量) excel产生60-70随机数公式 =Rand()*10+60 要取整可以用=int(Rand()*10+60) 我想用excel在b1单元个里创建一个50-80的随机数且这个随机数要大于a1单元个里的数值,请教大家如何编写公式!整数: =Round(Rand()*(80-max(50,a1+1))+max(50,a1+1),0)

VBA一键拆分合并批量生成Excel工作表

VBA一键拆分合并批量生成Excel工作表 目录 1. 一次取消所有工作表的隐藏 (2) 2. 根据模板批量生成日报表 (2) 3. 拆分工作表为单独的excel文件 (3) 4. 合并多个Excel文件工作表到一个文件中 (4)

1.一次取消所有工作表的隐藏 Sub 取消隐藏() For x = 1 To Sheets.Count If Sheets(x).Name <> "Sheet1" Then Sheets(x).Visible = -1 End If Next x End Sub Sub 隐藏() For x = 1 To Sheets.Count If Sheets(x).Name <> "Sheet1" Then Sheets(x).Visible = 0 End If Next x End Sub 2.根据模板批量生成日报表 Sub 生成报表() Dim x As Integer Dim sh As Worksheet For x = 1 To 31

Set sh = Sheets.Add With sh .Name = x & "日" Sheets("日报模板").Range("1:15").Copy sh.Range("A1") End With Next x End Sub 3.拆分工作表为单独的excel文件 Sub 拆分表格() Dim x As Integer Dim wb As Workbook Application.ScreenUpdating = False For x = 2 To 32 Sheets(x).Copy Set wb = ActiveWorkbook With wb .SaveAs ThisWorkbook.Path & "/3月/" & Sheets(x).Name & ".xlsx" .Close True End With Next x Application.ScreenUpdating = True End Sub

JAVA 无需JXL和POI用PageOffice自动生成Excel表格

JAVA 无需JXL和POI用PageOffice自动生成Excel表格很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Excel模板文件里,这对于生成复杂格式的Excel报表文件非常有用,这个功能应用PageOffice的基本动态填充功能即可实现。但若是用户想动态生成一个没有固定模版格式的Excel报表时,换句话说,没有办法事先准备一个固定格式的模板时,就需要开发人员用后台代码实现Excel报表的动态生成功能了,即通过后台代码在Excel的工作表上画出相应表格,实现Excel文件的从零到有。这里的“零”指的是Excel空白文件。 下面我就如何通过后台代码实现在空白Excel文件中画表格,这一问题的具体步骤和大家分享一下。 就以通过后台自动生成一张“出差开支预算表”为例来向大家介绍一下吧。 第一步:拷贝文件到WEB项目的“WEB-INF/lib”目录下。拷贝PageOffice 示例中下的“WEB-INF/lib”路径中的pageoffice.cab和pageoffice.jar到新建项目的“WEB-INF/lib”目录下。 第二步:修改WEB项目的配置文件。将如下代码添加到配置文件中: poservercom.zhuozhengsoft .pageoffice.poserver.Server poserver /poserver.do poserver /pageoffice.cab poserver /popdf.cab

相关主题
文本预览
相关文档 最新文档