C#将结果集中数据导入到一个已经做好的excel模板.docx

上传人:b****2 文档编号:2875005 上传时间:2023-05-04 格式:DOCX 页数:24 大小:23.52KB
下载 相关 举报
C#将结果集中数据导入到一个已经做好的excel模板.docx_第1页
第1页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第2页
第2页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第3页
第3页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第4页
第4页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第5页
第5页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第6页
第6页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第7页
第7页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第8页
第8页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第9页
第9页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第10页
第10页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第11页
第11页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第12页
第12页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第13页
第13页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第14页
第14页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第15页
第15页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第16页
第16页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第17页
第17页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第18页
第18页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第19页
第19页 / 共24页
C#将结果集中数据导入到一个已经做好的excel模板.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C#将结果集中数据导入到一个已经做好的excel模板.docx

《C#将结果集中数据导入到一个已经做好的excel模板.docx》由会员分享,可在线阅读,更多相关《C#将结果集中数据导入到一个已经做好的excel模板.docx(24页珍藏版)》请在冰点文库上搜索。

C#将结果集中数据导入到一个已经做好的excel模板.docx

C#将结果集中数据导入到一个已经做好的excel模板

请教高手,如何将结果集中数据导入到一个已经做好的excel模板中?

1楼sea026(沸点海岭_____征求“海”字的26种写法)回复于2003-11-1209:

56:

11得分0

给你一个打开Excel的字串。

 

 其它的看帮助 

 string strCn =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:

\Client;Extended Properties=Excel 8.0;"; 

  

 Top

2楼haoliqi(学习男孩)回复于2003-11-1210:

45:

48得分0

在C#中利用Excel做高级报表 

  

 Visual Studio.Net 自2001年2月问世以来,受到越来越多人的喜爱,C#做为主力军,集VB、Delphi的简单和VC的简炼与强大于一体,更是让许多人爱不释手,纷纷倒向它的怀抱。

通常的软件都要用到数据库,数据库中必然要用到报表,在Visual Studio.Net中自带了一个水晶报表,虽然功能十分强大,但市面上相关资料非常缺乏,网上全面介绍其使用的文章也屈指可数。

Excel是微软公司办公自动化套件中的一个软件,主要是用来处理电子表格。

Excel以其功能强大,界面友好等受到了许多用户的欢迎,几乎每一台机器都安装了它,因此,我们可以将数据导入Excel进行排版。

 

  

 由于Excel的格式是封闭的,无法直接创建一个Excel文件然后来排版,只有借助Com组件来完成,同样,介绍用C#操作Excel的文章也就那么几篇,基本上都是告诉你如何新建一个Excel文件,然后,将数据写入某单元格,最多再零星告诉你如何合并单元格,真正使用起来根本无法用C#做出漂亮报表。

本文巧妙利用Excel的宏来自动排版,大大减少了工作量,而且可以随时修改模板而无须修改程序,非常实用。

 

  

 本人使用的是Office 2000,操作系统为windows 2000 professinal,为使问题简单化,这里不介绍数据库的知识,我一个二维数组来代表一个数据库中的表,我们的目的是将该数组放到Excel中,并排版成需要的格式,数组如下:

 

  

 车牌号 

  类 型 

  品 牌 

  型 号 

  颜 色 

  附加费证号 

  车架号 

   

 浙KA3676 

  危险品 

  货车 

  铁风SZG9220YY 

  白 

  1110708900 

  022836 

   

 浙KA4109 

  危险品 

  货车 

  解放CA4110P1K2 

  白 

  223132 

  010898 

   

 浙KA0001A 

  危险品 

  货车 

  南明LSY9190WS 

  白 

  1110205458 

  0474636 

   

 浙KA0493 

  上普货 

  货车 

  解放LSY9190WS 

  白 

  1110255971 

  0094327 

   

 浙KA1045 

  普货 

  货车 

  解放LSY9171WCD 

  蓝 

  1110391226 

  0516003 

   

 浙KA1313 

  普货 

  货车 

  解放9190WCD 

  蓝 

  1110315027 

  0538701 

   

 浙KA1322 

  普货 

  货车 

  解放LSY9190WS 

  蓝 

  24323332 

  0538716 

   

 浙KA1575 

  普货 

  货车 

  解放LSY9181WCD 

  蓝 

  1110314149 

  0113018 

   

 浙KA1925 

  普货 

  货车 

  解放LSY9220WCD 

  蓝 

  1110390626 

  00268729 

   

 浙KA2258 

  普货 

  货车 

  解放LSY9220WSP 

  蓝 

  1110481542 

  00320 

   

  

 为了在C#中使用Excel,我们要先做一点准备工作,通过查找(前提是你安装Visual Studio.Net和Excel 2000),在你的计算机中找到TlbImp和Excel9.olb,将他们复制到一个文件夹中,在DOS窗口中执行 TlbImp Excel9.olb,这时会产生以下三个文件:

Excel.dll、Office.dll和VBIDE.dll。

 

  

 我们来完成两项任务,一是按网上文章介绍的方法,增加将数据写入一个Excel文件,也就是做一个简单报表,二是用Excel创建一个文件,然后以此文件为模板生成高级报表。

 

  

 打开Visual Studio.Net,新建一个C#的windows应用程序,取名为MyExcel。

根据个人爱好,对窗口做一些美化工作,然后放两个按钮:

btnNormal和btnAdvance,Caption分别为“普通报表”和“高级报表”。

 

  

 从菜单中选择“项目”→“添加应用”,在弹出的对话框中选com页,再点浏览按钮,选择刚才生成的三个文件,如下:

 

  

 点“打开”按钮,再点“确定”按钮。

 

  

 切换到代码窗口中,在文件头添加下面两个引用:

 

  

 using System.IO; 

  

 using System.Reflection; 

  

 再添加一个二维数组来表示数据表:

 

  

          private string [,] myData=  

  

          { 

  

               {"车牌号","类型","品 牌","型 号","颜 色","附加费证号","车架号"}, 

  

               {"浙KA3676","危险品","货车","铁风SZG9220YY","白","1110708900","022836"}, 

  

               {"浙KA4109","危险品","货车","解放CA4110P1K2","白","223132","010898"}, 

  

               {"浙KA0001A","危险品","货车","南明LSY9190WS","白","1110205458","0474636"}, 

  

               {"浙KA0493","上普货","货车","解放LSY9190WS","白","1110255971","0094327"}, 

  

               {"浙KA1045","普货","货车","解放LSY9171WCD","蓝","1110391226","0516003"}, 

  

               {"浙KA1313","普货","货车","解放9190WCD","蓝","1110315027","0538701"}, 

  

               {"浙KA1322","普货","货车","解放LSY9190WS","蓝","24323332","0538716"}, 

  

               {"浙KA1575","普货","货车","解放LSY9181WCD","蓝","1110314149","0113018"}, 

  

               {"浙KA1925","普货","货车","解放LSY9220WCD","蓝","1110390626","00268729"}, 

  

               {"浙KA2258","普货","货车","解放LSY9220WSP","蓝","111048152","00320"} 

  

       }; 

  

 切换回设计窗口,双击“普通报表”按钮,设计普通报表,代码如下:

 

  

                    private void btnNormal_Click(object sender, System.EventArgs e) 

  

          { 

  

   

  

                     

  

               //创建一个Excel文件 

  

               Excel.Application myExcel = new Excel.Application ( ) ; 

  

               myExcel.Application.Workbooks.Add ( true ) ; 

  

               //让Excel文件可见 

  

               myExcel.Visible=true; 

  

               //第一行为报表名称 

  

               myExcel.Cells[1,4]="普通报表"; 

  

               //逐行写入数据, 

  

               for(int i=0;i<11;i++) 

  

               { 

  

                    for(int j=0;j<7;j++) 

  

                    { 

  

                        //以单引号开头,表示该单元格为纯文本 

  

                        myExcel.Cells[2+i,1+j]="'"+myData[i,j]; 

  

                    } 

  

               } 

  

   

  

          } 

  

 说明一下,Cells[2,1]指第2行第1个单元格,是以1为基准的,而在C#中的数组是以0为基准的,另外,我们还发现,对于编号之类的数据,实际是文本,而Excel将它认成了数字,由于太长,自动换成了科学计数,这不是我们要求的,在Excel中,如果某单元格以单引号“’”开头,表示该单元格为纯文本,因此,我们在每个单元格前面加单引号。

 

  

 运行结果如下:

 

  

  

 可以看出,该报表非常简陋,标题行没有合并局,字体大小也不合适,连表格线都没有。

当然,我们可以写代码来设置单元格字体、大小等等工作,这类技巧网上很多,但如果真要用C#来完成,是一件非常难的事情,还有个办法就是将想要的操作录制成宏,研究一下宏代码,但宏是用VBA写的,要转换成果C#可不是件容易的事情。

 

  

 第一种办法不是本文的重点,就到此为止。

 

  

 下面进行高级报表设计,该方法的原理为:

首先打开Excel,按照要求排好版,保存为一个文件做为模板,然后在C#中将该文件复制为一个新文件,在指定位置填入数据就可以了,为了添加表格线,我们录制了一个宏,在C#中执行该宏即可。

 

  

 Top

3楼haoliqi(学习男孩)回复于2003-11-1210:

47:

25得分0

当然,你还可以排得更漂亮,因为是单纯的Excel操作,不需要特殊说明。

如果记录很多,往往一页无法打印完成,我们要求在每一页都显示报表标题和小标题,也就是上图中的第1、2行,这里有一个技巧:

选择Excel的菜单“文件”→“页面设置”,选择“工作表”,在“顶端标题行”后的框中输入“$1:

$2”,也就是1~2行,当然,你也点右边的红箭头,然后用鼠标选择。

当你的记录超过一页时,会自动在下一页加入标题,非常方便。

 

  

 表格中目前还没有表格线,因为我们不知道到底有多少数据,因此,也无法知道为多少单元格设置边框,我们借助宏来完成。

 

  

 按下面步骤录制一个宏:

 

  

 1、      随便选择几个单元格; 

  

 2、      选择菜单“工具”→“宏”→“录制新宏”,输入宏的名称,就用默认的“宏1”吧,点确定; 

  

 3、      选择菜单“格式”→“单元格”,在对话框中选择“边框”,将内边框和外边框均选中,按确定; 

  

 4、      此时,刚才选择的单元格就有了边框,再点工具栏中的“停止录制宏”按钮 来结束宏录制。

 

  

 刚才的操作目的是录制宏而不是加边框,因此,我们按“Ctrl+Z”来撤消刚才的操作,通过按Alt+F8来调出宏,选择“宏1”,选择编辑,看到的代码应该如下:

 

  

 Sub 宏1() 

  

 ' 

  

 ' 宏1 Macro 

  

 ' 苟安廷 记录的宏 2003-5-7 

  

 ' 

  

   

  

 ' 

  

     Selection.Borders(xlDiagonalDown).LineStyle = xlNone 

  

     Selection.Borders(xlDiagonalUp).LineStyle = xlNone 

  

     With Selection.Borders(xlEdgeLeft) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

     With Selection.Borders(xlEdgeTop) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

     With Selection.Borders(xlEdgeBottom) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

     With Selection.Borders(xlEdgeRight) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

     With Selection.Borders(xlInsideVertical) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

     With Selection.Borders(xlInsideHorizontal) 

  

         .LineStyle = xlContinuous 

  

         .Weight = xlThin 

  

         .ColorIndex = xlAutomatic 

  

     End With 

  

 End Sub 

  

 图中表的数据都是供排版参考用的,结束前将实际内容删除掉,即只留下排好版的格式,包括标题、列标题等,将实际内容去掉。

将文件保存到一个地方,如D:

\Normal.xls,当然,实际开发时,可以放到执行文件所在目录下,为了防止用户随便修改,可以将文件名改为normal.rpt之类。

 

  

 有了上面的准备,我们就可以在C#中使用了,添加“高级报表”按钮的响应代码。

下面是全部代码清单。

 

  

 using System; 

  

 using System.Drawing; 

  

 using System.Collections; 

  

 using System.ComponentModel; 

  

 using System.Windows.Forms; 

  

 using System.Data; 

  

   

  

 using System.IO; 

  

 using System.Reflection; 

  

   

  

 namespace MyExcel 

  

 { 

  

      /// 

 

  

      /// Form1 的摘要说明。

 

  

      /// 

 

  

      public class Form1 :

 System.Windows.Forms.Form 

  

      { 

  

          private System.Windows.Forms.Button btnNormal; 

  

          private System.Windows.Forms.Button btnAdvace; 

  

          /// 

 

  

          /// 必需的设计器变量。

 

  

          /// 

 

  

          private System.ComponentModel.Container components = null; 

  

   

  

          public Form1() 

  

          { 

  

               // 

  

               // Windows 窗体设计器支持所必需的 

  

               // 

  

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2