欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    c调用Excel的一些知识.docx

    • 资源ID:9968551       资源大小:21.91KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c调用Excel的一些知识.docx

    1、c调用Excel的一些知识摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。0 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户 的欢迎。在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功能适用于每一个用户,可以想象程序设计是十分复杂 的。由于Excel表格的功能强大,又由于几乎每一台机器都安装了它,如果把程序处理的结果放到Excel表格中,这样每一个用户就可以根据自己的需要在 Excel中定制自己的打印。这样不仅使得程序设

    2、计简单,而且又满足了诸多用户的要求,更加实用了。1 Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象下面我们简单介绍一下其中最重要,也是用得最多的四个对象。 Application对象。Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。 Workbook对象。Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。 Worksheet对象。Worksheet对象包含于Workbook对象,表示一个Excel工作表。 Range对象。Range对象包含

    3、于Worksheet对象,表示Excel工作表中的一个或多个单元格。2 C#中的受管代码和非受管代码在. NET公用语言框架内运行的程序为受管代码。受管代码在程序中所有类型都受到严格检查,没有指针,对内存的管理完全由运行系统控制。受控状态下,编写程序 更为容易,且更少出错,我们可以花更多的时间在解决实际问题上而不是在计算机语言问题上。相对而言,那些在.NET框架外运行的程序为非受管代码。比如: COM组件、ActiveX组件、Win32 API函数、指针运算等。C#编程中在某些特定情况下,需要运用非受管代码,例如,要利用一个成熟的COM组件,或者调用一个API函数,或者用指针去编 写实时/高效

    4、程序等。3 Visual C#中调用Excel的COM组件一个.NET组件事实上是一个.NET下的DLL,它包含的不 仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。这些COM组件都是非受管代码,要在Visual C中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。所以在用Visual C调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。使用COM组件操控Excel的优势和缺点优势:提供了完整的Excel操控能力。可以方便的进行复杂操作。提供了对Ex

    5、cel文件的底层操作,工作效率高。和VBA方式相比可以脱离特定的Excel文件进行使用。缺点:代码复杂不易理解。在操作中需要处理大量的数据类型。使用方法 Visual Studio 2005中默认提供了封装好的Microsoft Office 2003的.Net Excel编程模型。图中所显示的是已经安装了Office2005之后VS2005所带的.Net Excel模型。大家可以看到名为“Microsoft Excel 12.0 Object Library”的COM组件。 由于Excel的版本一直在升级,如果我们需要操作更新版本的Excel文件,但又没有安装最新的Office,这个时候我们

    6、就需要手工进行Excel COM组件的封装。这个时候我们需要使用 Framework v2.0 SDK tools中的一个工具tlbimp.exe类型库导入程序( FilesMicrosoft Visual Studio 8SDKv2.0Bin 把需要封装的Excel的主程序(excel.exe)复制到 tlbimp工具所在目录下。执行命令: tlbimp excel.exe /out:excel.dll生成封装好的excel.dll。然后就可对excel.dll进行引用。成功引用后,引用下会出现 1.Excel 2.Microsoft.Office.Core 3.Microsoft.Offi

    7、ce.Interop.Excel三个类库。 其中:1为我们手工封装的Excel COM组件。2、3为我们直接引用的安装在VS2005中的Excel COM组件。如果使用VS2005内置COM组件,1将不会出现,如使用手工封装的COM组件2、3就不会出现。 3.1 添加引用.将Excel的COM组件转换为.NET组件在 项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到“Microsoft Excel 9.0 Object Library”(Office 2000),然后将其加入到项目的References中即可。Visual C#.NET会自动产生相应的.NET组

    8、件文件,以后即可正常使用。这个转换形成.NET组件不能单独使用,它不过是以前的COM组件的一个外层包装,在.NET中可以通过这个外层包装去发现原来的COM组件并调用其相应的界面函数。所以它必须与原来的COM组件一起起作用。 3.2 Visual C打开Excel表格事实上,在C#中使用一个经转换的COM组件和使用任何一个其它.NET组件完全一样。可以用new关键字创建一个经转换的COM组件,然后再像使用任何一个其它C#对象一样使用这个组件对象。在转换后的.NET组件中定义了一个命名空间Excel,在此命名空间中封装了一个类Application,这个类和启动Excel表格有非常重要的关系,在V

    9、isual C中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:Excel.Application excel = new Excel.Application ();/引用Excel对象excel.Visible = true ;/使Excel可视b.设置进程的界面是否可见但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。 3.3添加WorkBook与WorkSheet/得到WorkBook对象, 可以用两种方式之一: 下面的是打开已有的文件Excel.Workbook xBook=xApp.Workbooks._Open(D:S

    10、ample.xls,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value); /xBook=xApp.Workbooks.Add(Missing.Value);/新建文件的代码/excel.Application.Workbooks.Add ( true );/引用Excel工作簿/指定要操作的Sheet,两种方式:

    11、Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets1;Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet; 3. 4数据操作在命名空间Excel中,还定义了一个类Cell,这个类所代表的就是Excel表格中的一个单元格。通过给Cell赋值,从而实现往Excel表格中输入相应的数据,下列代码功能是打开Excel表格,并且往表格输入一些数据。Cell的下标是从1开始的.在c#中,如果对下标为0的单元格赋值,则会出现Exception from HRESULT: 0x800A03EC.

    12、excel.Cells 1 , 1 = First Row First Column ;excel.Cells 1 , 2 = First Row Second Column ;excel.Cells 2 , 1 = Second Row First Column ;excel.Cells 2 , 2 = Second Row Second Column ;/读取数据,通过Range对象Excel.Range rng1=xSheet.get_Range(A1,Type.Missing);Console.WriteLine(rng1.Value2);/读取,通过Range对象,但使用不同的接口得

    13、到RangeExcel.Range rng2=(Excel.Range)xSheet.Cells3,1;Console.WriteLine(rng2.Value2);/写入数据Excel.Range rng3=xSheet.get_Range(C6,Missing.Value);rng3.Value2=Hello;rng3.Interior.ColorIndex=6; /设置Range的背景色使用“自动化”功能逐单元格传输数据,代码如下:/ Add data to cells in the first worksheet in the new workbook.m_objRange = m_o

    14、bjSheet.get_Range(A1, m_objOpt);m_objRange.Value = Last Name;m_objRange = m_objSheet.get_Range(B1, m_objOpt);m_objRange.Value = First Name;m_objRange = m_objSheet.get_Range(A2, m_objOpt);m_objRange.Value = Doe;m_objRange = m_objSheet.get_Range(B2, m_objOpt);m_objRange.Value = John;/ Apply bold to ce

    15、lls A1:B1.m_objRange = m_objSheet.get_Range(A1, B1);m_objFont = m_objRange.Font;m_objFont.Bold=true; 3.5保存/保存方式一:保存WorkBook xBook.SaveAs(D:CData.xls,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,Mis

    16、sing.Value,Missing.Value);/保存方式二:保存WorkSheetxSheet.SaveAs(D:CData2.xls, Missing.Value,Missing.Value,Missing.Value,Missing.Value, Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);/保存方式三xBook.Save();xSheet=null;xBook=null;xApp.Quit(); /这一句是非常重要的,否则Excel对象不能从内存中退出xApp=null; 3.6网页显

    17、示public void showFile() HttpContext.Current.Response.CharsetSystem.Text.Encoding.Default.WebName; HttpContext.Current.Response.ContentType=application/vnd.ms-excel; HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.UTF8;HttpContext.Current.Response.WriteFile(fileName); HttpContext.Cu

    18、rrent.Response.End(); 3.7 实例下面实例在C#中连接Oracle数据库(Name),从表(TableName)中读取数据,并写入Excel.string cnString=Provider=msdaora.1;Data source=Name; ;cnString=cnString+user id=UserName;password=Password;tryOleDbConnection cn=new OleDbConnection (cnString);cn.Open ();trystring s=select * from Name.TableName;OleDbC

    19、ommand cmd=new OleDbCommand (s,cn);OleDbDataReader dr=cmd.ExecuteReader ();Excel.Application xlApp = new Excel.Application();if(xlApp=null)MessageBox.Show (Cant open Excel!);return;xlApp.Application .Workbooks .Add (true);int row=2,fieldcount;fieldcount=dr.FieldCount ;for(int col=0;colfieldcount;col

    20、+) xlApp.Cells 1,col+1=dr.GetName(col);while (dr.Read ()for(int col=0;colfieldcount;col+) xlApp.Cells row,col+1=dr.GetValue(col).ToString();row+; xlApp.Visible =true;xlApp=null; catch(Exception ex )MessageBox.Show (ex.Message );Finallycn.Close();catch(Exception ex)MessageBox.Show (ex.Message );4安装一个

    21、使用COM组件的.NET程序如果要将这样的程序安装运行在另一台机器上,那么除了安装运行程序外,还做三件事。首先,是安装.NET运行系统。因为任何一个.NET程序都不能离开.NET运行系统去独立运行。其次,所调用的COM组件必须要安装在目标机器上。本例中大多数目标机器上都装有Microsoft Office的Excel,一般不会有这个问题。但如果是另一个用户自定义的COM组件,那么这个COM组件在运行.NET程序之前必须先安装好。最后,转换后的.NET组件DLL文件要安装在目标机器上。因为.NET组件不需要在Windows Registry中注册,所以最简单的方法是将.NET组件DLL文件拷贝到

    22、运行程序目录下。如果此.NET组件被多个.NET程序共享,可以将其安装 在.NET公用组件区中,从而可被任何一个.NET组件使用。只有当一个.NET组件参与了事务处理时,才需要将它注册为一个COM+组件。因为.NET 仍然用传统的COM+机制来处理事务的提交、回滚等。1、 读写Excel文件A、设计Excel模版B、打开一个目标文件并且读取模版内容C、目标文件按格式写入需要的数据D、保存并且输出目标Excel文件 2、 Excel对象资源释放,这个在以前项目没有注意彻底释放使用到Excel对象,对客户计算机资源造成一定浪费,此次得到彻底解决。C#导入EXCEL/*注意:测试过程中将执行时间设为

    23、非月末,此类放在实际中需要改成月末。改变方法是把16行的=变为!=*/using System;using System.Data;using System.Data.SqlClient;using System.Data.OleDb ;using System.Windows.Forms;using System.Text;using System.IO;using System.Reflection;/*SQL server 2000中的电话记录以及信息发布记录打入数据导入excel文件*/public class IntroduceExcel:System.Windows.Forms.F

    24、ormpublic IntroduceExcel ( ) DateTime today = System.DateTime.Today;/获取当前时间 if (today.Day=DateTime.DaysInMonth(today.Year,today.Month) /如果并非月底,不执行导入 return; else/否则执行导入 if (MessageBox.Show(点击确定开始导入,点击否可日后手动导入n , 月末电话记录,信息发布记录导入Excel程序自动开启, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogRes

    25、ult.No) return; /if else GetConnect ( CallRecord) ; /打开数据链接,开启导入函数 GetConnect ( PubInfRecord) ; DeleteRecord(CallRecord);/清空本月的数据 DeleteRecord(PubInfRecord); /else /*exel文件导入函数*/private void GetConnect (string origin) SqlConnection con=creCon();/创建一个SQL 2000数据库链接 con.Open(); string sql=select * from

    26、 +origin+ order by NetId; /查询数据库 SqlDataAdapter sa=new SqlDataAdapter(sql,con); DataSet ds=new DataSet(); sa.Fill(ds,origin); /填充数据 try Excel.Application excel = new Excel.Application ( ) ; /开启excel excel.Application.Workbooks.Add ( true ); Excel.Sheets ExcelSheets = excel.Worksheets; /建立一个新的工作表 exc

    27、el.Cells 1 , 1 =NetId(网号); excel.Cells 1, 2 =MemId(成员号); excel.Cells 1 , 3 =CurCallNum(当前打入电话); excel.Cells 1 , 4 =CompanyName(公司名); excel.Cells 1 , 5 =UpWorker(坐席人员); excel.Cells 1 , 6 =SumNumber(本月次数统计); object missing=Missing.Value; excel.Visible =true ; /excel文件可见 int RoLength=ds.Tables0.Rows.Co

    28、unt; /行数 int i; for (i=0;iRoLength;i+) /*从数据库中取出电话相关信息*/ string NetId=ds.Tables0.Rowsi0.ToString(); string MemId=ds.Tables0.Rowsi1.ToString(); string CallNumber=ds.Tables0.Rowsi2.ToString(); string CompanyName=ds.Tables0.Rowsi3.ToString(); string Worker=ds.Tables0.Rowsi4.ToString(); string Number=ds

    29、.Tables0.Rowsi5.ToString(); /*填充到excel的工作表中*/ excel.Cells i+1 , 1 =NetId; excel.Cells i+1, 2 =MemId; excel.Cells i+1 , 3 =CallNumber; excel.Cells i+1 , 4 =CompanyName; excel.Cells i+1 , 5 =Worker; excel.Cells i+1 , 6 =Number; /for con.Close();/关闭此数据链接 /*文件保存对话框,文件保存采用了一个file自定义类*/ SaveFileDialog saveFileDialog=new SaveFileDialog(); saveFileDialog.Filter= Excel files(*.xls)|*.xls|All files(*.*


    注意事项

    本文(c调用Excel的一些知识.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开