C#创建与Excel打印输出Word文档下载推荐.docx

上传人:b****6 文档编号:16936050 上传时间:2022-11-27 格式:DOCX 页数:13 大小:22.53KB
下载 相关 举报
C#创建与Excel打印输出Word文档下载推荐.docx_第1页
第1页 / 共13页
C#创建与Excel打印输出Word文档下载推荐.docx_第2页
第2页 / 共13页
C#创建与Excel打印输出Word文档下载推荐.docx_第3页
第3页 / 共13页
C#创建与Excel打印输出Word文档下载推荐.docx_第4页
第4页 / 共13页
C#创建与Excel打印输出Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C#创建与Excel打印输出Word文档下载推荐.docx

《C#创建与Excel打印输出Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#创建与Excel打印输出Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

C#创建与Excel打印输出Word文档下载推荐.docx

C#编程中在某些特定情况下,需要运用非受管代码,例如,要利用一个成熟的COM组件,或者调用一个API函数,或者用指针去编写实时/高效程序等。

3VisualC#中调用Excel的COM组件

一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(MetaData,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。

这些COM组件都是非受管代码,要在VisualC#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。

所以在用VisualC#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。

3.1将Excel的COM组件转换为.NET组件在项目中打开AddReference对话框,选择COM栏,之后在COM列表中找到“MicrosoftExcel9.0ObjectLibrary”(Office2000),然后将其加入到项目的References中即可。

VisualC#.NET会自动产生相应的.NET组件文件,以后即可正常使用。

这个转换形成.NET组件不能单独使用,它不过是以前的COM组件的一个外层包装,在.NET中可以通过这个外层包装去发现原来的COM组件并调用其相应的界面函数。

所以它必须与原来的COM组件一起起作用。

3.2VisualC#打开Excel表格

事实上,在C#中使用一个经转换的COM组件和使用任何一个其它.NET组件完全一样。

可以用new关键字创建一个经转换的COM组件,然后再像使用任何一个其它C#对象一样使用这个组件对象。

在转换后的.NET组件中定义了一个命名空间Excel,在此命名空间中封装了一个类Application,这个类和启动Excel表格有非常重要的关系,在VisualC#中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:

Excel.Applicationexcel=newExcel.Application();

//引用Excel对象

excel.Application.Workbooks.Add(true);

//引用Excel工作簿

excel.Visible=true;

//使Excel可视

  但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。

3.3往Excel表格中输入数据

  在命名空间"

Excel"

中,还定义了一个类"

Cell"

,这个类所代表的就是Excel表格中的一个单元格。

通过给"

赋值,从而实现往Excel表格中输入相应的数据,下列代码功能是打开Excel表格,并且往表格输入一些数据。

Excel.Applicationexcel=newExcel.Application();

excel.Application.Workbooks.Add(true);

excel.Cells[1,1]="

FirstRowFirstColumn"

excel.Cells[1,2]="

FirstRowSecondColumn"

excel.Cells[2,1]="

SecondRowFirstColumn"

excel.Cells[2,2]="

SecondRowSecondColumn"

excel.Visible=true;

3.4实例

下面实例在C#中连接Oracle数据库(Name),从表(TableName)中读取数据,并写入Excel.

stringcnString="

Provider=msdaora.1;

Datasource=Name;

"

;

cnString=cnString+"

userid=UserName;

password=Password"

try

{

OleDbConnectioncn=newOleDbConnection(cnString);

cn.Open();

strings="

select*fromName.TableName"

OleDbCommandcmd=newOleDbCommand(s,cn);

OleDbDataReaderdr=cmd.ExecuteReader();

Excel.ApplicationxlApp=newExcel.Application();

if(xlApp==null){MessageBox.Show("

Can’topenExcel!

"

);

return;

}

xlApp.Application.Workbooks.Add(true);

introw=2,fieldcount;

fieldcount=dr.FieldCount;

for(intcol=0;

col<

fieldcount;

col++)xlApp.Cells[1,col+1]=dr.GetName(col);

while(dr.Read())

col++) 

xlApp.Cells[row,col+1]=dr.GetValue(col).ToString();

row++;

xlApp.Visible=true;

xlApp=null;

catch(Exceptionex){MessageBox.Show(ex.Message);

finally{cn.Close();

catch(Exceptionex){MessageBox.Show(ex.Message);

3.5安装一个使用COM组件的.NET程序

如果要将这样的程序安装运行在另一台机器上,那么除了安装运行程序外,还做三件事。

首先,是安装.NET运行系统。

因为任何一个.NET程序都不能离开.NET运行系统去独立运行。

其次,所调用的COM组件必须要安装在目标机器上。

本例中大多数目标机器上都装有MicrosoftOffice的Excel,一般不会有这个问题。

但如果是另一个用户自定义的COM组件,那么这个COM组件在运行.NET程序之前必须先安装好。

最后,转换后的.NET组件DLL文件要安装在目标机器上。

因为.NET组件不需要在WindowsRegistry中注册,所以最简单的方法是将.NET组件DLL文件拷贝到运行程序目录下。

如果此.NET组件被多个.NET程序共享,可以将其安装在.NET公用组件区中,从而可被任何一个.NET组件使用。

只有当一个.NET组件参与了事务处理时,才需要将它注册为一个COM+组件。

因为.NET仍然用传统的COM+机制来处理事务的提交、回滚等。

4小结

通过以上讨论,我们知道了在C#中,如何使用Excel的COM组件。

需要注意的是,Excel对象包含的许多内容我们没有介绍,在使用过程中需要我们不断学习。

也使我们了解了在C#中如何使用COM组件。

参考文献:

[1]刘洪成C#高级编程清华大学出版社2003.7工作187~200

C#中创建、打开、读取、写入、保存Excel的一般性代码

首先,在引用的COM中找到MicrosoftExcel11.0ObjectLibrary,添加。

usingSystem;

usingSystem.Reflection;

//引用这个才能使用Missing字段 

usingExcel;

namespaceCExcel1 

  classClass1 

  { 

    [STAThread] 

    staticvoidMain(string[]args) 

    { 

      //创建Application对象 

      Excel.ApplicationxApp=newExcel.ApplicationClass();

      xApp.Visible=true;

      //得到WorkBook对象,可以用两种方式之一:

下面的是打开已有的文件 

      Excel.WorkbookxBook=xApp.Workbooks._Open(@"

D:

\Sample.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);

//新建文件的代码 

      //指定要操作的Sheet,两种方式:

      Excel.WorksheetxSheet=(Excel.Worksheet)xBook.Sheets[1];

      //Excel.WorksheetxSheet=(Excel.Worksheet)xApp.ActiveSheet;

      //读取数据,通过Range对象 

      Excel.Rangerng1=xSheet.get_Range("

A1"

Type.Missing);

      Console.WriteLine(rng1.Value2);

      //读取,通过Range对象,但使用不同的接口得到Range 

      Excel.Rangerng2=(Excel.Range)xSheet.Cells[3,1];

      Console.WriteLine(rng2.Value2);

      //写入数据 

      Excel.Rangerng3=xSheet.get_Range("

C6"

Missing.Value);

      rng3.Value2="

Hello"

      rng3.Interior.ColorIndex=6;

//设置Range的背景色

      //保存方式一:

保存WorkBook 

      xBook.SaveAs(@"

\CData.xls"

       Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value, 

       Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value, 

       Missing.Value,Missing.Value);

      //保存方式二:

保存WorkSheet 

      xSheet.SaveAs(@"

\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;

    } 

  } 

C#如何向EXCEL写入数据

我按着微软技术支持网上的方法写入数据:

使用“自动化”功能逐单元格传输数据,代码如下:

//StartanewworkbookinExcel.

m_objExcel=newExcel.Application();

m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;

m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));

//Adddatatocellsinthefirstworksheetinthenewworkbook.

m_objSheets=(Excel.Sheets)m_objBook.Worksheets;

m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item

(1));

m_objRange=m_objSheet.get_Range("

m_objOpt);

m_objRange.Value="

LastName"

B1"

FirstName"

A2"

Doe"

B2"

John"

//ApplyboldtocellsA1:

B1.

"

m_objFont=m_objRange.Font;

m_objFont.Bold=true;

//SavetheWorkbookandquitExcel.

m_objBook.SaveAs(m_strSampleFolder+"

Book1.xls"

m_objOpt,m_objOpt, 

m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange, 

m_objOpt,m_objOpt,m_objOpt,m_objOpt);

m_objBook.Close(false,m_objOpt,m_objOpt);

m_objExcel.Quit();

EXCEL表用c#来读

using

System.IO;

System.Web;

usingSystem.Web.SessionState;

usingNickLee.Common.ExcelLite;

namespaceexcel1

///<

summary>

///excel的摘要说明。

/summary>

publicclassexcel 

publicexcel() 

// 

//TODO:

在此处添加构造函数逻辑 

fileName=HttpContext.Current.Server.MapPath("

."

)+"

\\temp\\"

+g+"

.xls"

private 

Guidg=Guid.NewGuid();

privatestringfileName;

ExcelFileec=newExcelFile();

///从model中复制模版到temp中 

paramname="

modelName"

>

只需传入模版的名字即可(注意是字符串)<

/param>

publicvoidcopyModel(stringmodelName) 

stringMName=HttpContext. 

Current.Server.MapPath("

\\model\\"

+modelName;

File.Copy(MName,fileName);

///<

///设置EXCEL表中的字表个数,字表在这个表中统一命名为“续表”+数字序号 

sheetnum"

设置字表的个数<

publicvoidsetSheets(intsheetnum) 

ec.LoadXls(fileName);

ExcelWorksheetwsx=ec.Worksheets[0];

for(inty=0;

y<

sheetnum;

y++) 

intnum=y+1;

ec.Worksheets.AddCopy("

续表"

+num,wsx);

///给EXCEL表的各个字段设置值 

表的序号,注意表是以“0”开始的<

x"

对应于EXCEL的最左边的数字列<

y"

对应于EXCEL的最上面的字母列<

values"

需要写入的值<

publicvoidsetValues(intsheetnum,intx,inty,stringvalues) 

ec.Worksheets[sheetnum].Cells[x,y].Value=values;

///保存函数,要是文件中有相同的文件就要删除了, 

///然后重新写入相同文件名的新EXCEL表 

publicvoidsaveFile() 

if(File.Exists(fileName)) 

File.Delete(fileName);

ec.SaveXls(fileName);

else 

///显示的EXCEL表格 

publicvoidshowFile() 

HttpContext.Current.Response.Charset=System.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.Current.Response.End();

小结一些C#

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

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1