.NET技术实现Excel报表的数据采集、汇总和分析,本文主要内容关键词为:报表论文,数据采集论文,技术论文,NET论文,Excel论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
现在的审计人员大多能够熟练使用Sql语句对被审计单位的电子数据进行分析,但是有些电子数据不是数据库数据,而是非关系型模式的Excel报表数据,不能直接使用Sql语句对其分析。计算机专业人员可以开发一些工具软件,来帮助审计人员实现Excel报表数据的自动采集、汇总和分析。本文以城市饮用水水质分析软件为例介绍了使用.NET技术对Excel报表进行处理,将其中重要的信息提取出来进行汇总,成为关系型模型的数据表格,从而调用Sql语句进一步分析的技术。 一、技术准备 .NET是微软的程序开发框架,能够编写单机桌面窗口程序,web网页程序。还可以生成安装程序。特点是编写代码过程中,有很好地编辑环境,纠错提示等等。 .NET要实现对Excel的操作,首先要添加引用Microsoft.Office.Interop.Excel.dll,该引用包含了很多Excel处理的方法,是.NET与excel的连接的桥梁。 二、实现步骤 (一)创建关系型模式的数据表的框架 由于Sql语句只能用在关系型模式的数据表,而Excel报表往往不是关系型模式的数据表,如图1: 所以首先从Excel报表中找出关键信息作为字段,生成关系型模式的数据表的框架。如图2: 关键代码如下: //实例化Excel对象,工作簿,工作表。 Excel.Application excel=new Excel.Application(); Excel._Workbook myWorkbook; Excel._Worksheet myWorksheet; //创建并激活工作簿,工作表。 excel.Application.Workbooks.Add(true); myWorkbook=excel.ActiveWorkbook; myWorkbook.Sheets.Add(); myWorksheet=(Excel._Worksheet)myWorkbook.Sheets[1]; //构建关系型模式的数据表名称和表的字段名。 MyWorksheet.Name=“关系型模式的数据表”; MyWorksheet.Cells[1,1]=“字段1”; MyWorksheet.Cells[1,2]=“字段2”; MyWorksheet.Cells[1,3]=“字段3”; MyWorksheet.Cells[1,4]=“字段4”; MyWorksheet.Cells[1,5]=“字段5”; //关系型模式的数据表保存并关闭excel对象。 MyWorkbook.SaveAs(“保存路径”); MyWorkbook.Close(); excel.Quit(); excel=null; 以上代码实现了创建一个新表并设定相应的字段,作为关系型模式的数据表的框架。 (二)从源表中提取数据 关系型模式的数据表的框架创建好后,从源表提取数据放入框架表中。如图3: 关键代码如下: //打开源表和框架表。 Excel.Application excel=new Excel.Application(); excel.Display Alerts=true; Microsoft.Office.Interop.Excel.Workbook workbook1=excel.Workbooks.Open(“源表”); Microsoft.Office.Interop.Excel.Workbook workbook1=excel.Workbooks.Open(“框架表”); Excel.Worksheet sheet_源表=(Excel.Worksheet)workbook1.Sheets[1]; Excel.Worksheet sheet框架表=(Excel.Worksheet)workbook2.Sheets[1]; //从源表中提取数据放入框架表中。 sheet_原源水.Range[“数据区域1”].Copy(sheet_框架表.Range[“数据区域”D; sheet_原源水.Range[“数据区域2”].Copy(sheet_框架表.Range[“数据区域”D; sheet_原源水.Range[“数据区域3”].Copy(sheet_框架表.Range[“数据区域”D; //框架表数据保存,Excel对象退出。 workbook2.Save(); excel.Quit(); excel=null; 以上代码完成了对源表指定区域取值,拷贝到框架表的指定区域。指定区域的格式为Range[“al”,“x24”],表示单元格“al”到单元格“x24”的连续区域,若是不连续区域可以取几段连续区域。 (三)汇总数据成为新表 如果需要将多个时间段的数据进行综合分析时,可以将框架表的内容汇总。代码如下: //复制框架表的格式作为汇总表,保证格式一致。 Excel.Application excel=new Excel.Application(); excel.DisplayAlerts;true; File.Copy(框架表详细路径,汇总表详细路径,true); Excel.Workbook work汇总=excel.Workbooks Open(汇总表); Excel.Worksheet sheet汇总=(Excel.Worksheet)work_汇总.Sheets[1]; //可用循环结构将各个时间段的框架表数据汇总至汇总表 huiz-row1=sheet_汇总.Range[“A65536”].End[Excel.XIDirection.xlUp].Row+1; Excel.Workbook work=excel.Workbooks.Open(框架表1); Excel.Worksheet sheet_框架表=(Excel.Worksheet)work.Sheets[1]; sheet_框架表.Range[数据区域].Copy(sheet_汇总源水.Range[“a”+huiz_row1.ToString()]); //保存汇总表,退出excel对象 work_汇总.Save(); excel.Quit(); excel=null; Range[“A65536”].End[Excel.XIDirection.xlUp].Row可以获得当前表中有数据行的末尾,用在多张表连续拷贝时,定位框架表的位置。 (四)调用Sql实现数据分析 //创建连接字符串,生成连接。 strOleCon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+汇总表路径+";Extended Properties=excel8.0;Persist Security Info=False" excel_conn=new OleDbConnection(strOleCon); excel_conn.Open(); //调用、执行Sql脚本,得出分析结果,并用DataGridView控件显示。 string sql1=File.ReadAllText(Application.StartupPath+Sql脚本存放路径,Encoding.Default); OleDbDataAdapter da1=new OleDbDataAdapter(sql1,excel_conn); DataTable dt1=new DataTable(); da1.Fill(dt1); this.dataGridView1.DataSource=dt1; //关闭数据库连接 excel_conn.Close(); 分析结果图如下: 本文介绍了使用.NET技术对Excel报表的操作,从而完成对报表数据的采集、汇总和分析的功能。在数据量大,报表格式复杂,不能使用Sql语句分析时,计算机专业人员使用该技术可以快速有效的帮助审计人员完成数据分析的工作。的Excel报表的数据采集、汇总和分析NET技术_大数据论文
的Excel报表的数据采集、汇总和分析NET技术_大数据论文
下载Doc文档