c#操作EXCEL文件

C#操作Excel文件

摘要:正文介绍了Excel对象、C#饱受之受管代码和非受管代码,并介绍了COM组件在.net环境中之利用。

  关键词:让管代码;非受管代码;Excel对象;动态连接库
  引言

  Excel是微软公司办公自动化套件中的一个软件,他根本是故来处理电子表格。Excel因这效用强大,界面友好等被了很多用户之欢迎。在筹划下系列时常,对于不同的用户,他们对打印的需求是未同等的,即使如教程序中之打印效率适用于各类一个用户,可以设想程序设计是相当复杂的。由于Excel表格的功效强大,又由几乎每一样雅机器还安了其,假诺拿程序处理的结果放到Excel表格中,这样各种一个用户就是可以因自己之待以Excel中定制自己之打印。这样不仅令程序设计简约,而且还要满足了累累用户的要求,更加实用了。那么用Visual
C#怎样调用Excel,怎么样以将多少存放到Excel表格中?本文就来探索上述问题之解决办法。

  Excel对象

  微软的Excel对象模型包括了128单不同之对象,从矩形,文本框等简易的指标到透视表,图表等繁杂的对象.下面大家大概介绍一下内最要,也是故得最为多之季独对象。

  (1)
Application对象。Application对象处于Excel对象层次结构的顶层,表示Excel自身的运作环境。

  (2)
Workbook对象。Workbook对象间接地远在Application对象的下层,表示一个Excel工作薄文件。

  (3)
Worksheet对象。Worksheet对象涵盖于Workbook对象,表示一个Excel工作表。

  (4)
Range对象。Range对象涵盖于Worksheet对象,表示Excel工作表中的一个要么三只单元格。

 C#蒙之受管代码和非受管代码

  以.net公用语言框架内运行的次吗受管代码。受管代码在次中具有体系且受到严峻检查,没有指针,对内存的保管完全由运行系统控制。受控状态下,编写程序更为好,且还不见出错,大家好费更多之年月以解决实际问题上万一不是当处理器语言问题及。相对而言,这一个在.NET框架外运转的主次吗未受管代码。比如:COM组件、ActiveX组件、Win32
API函数、指针运算等。C#编程中在某些特定情状下,需要以非受管代码,例如,要以一个熟之COM组件,或者调用一个API函数,或者用指针去编写实时/高效程序等。

  Visual C#中调用Excel的COM组件

  一个.NET零件事实上是一个.NET下的DLL,它涵盖的不仅仅是运作程序本身,更要的凡包含这么些DLL的描述信息(Meta
Data,即元数据),而一个COM组件是由此该类库(TLB)储存其叙述音信。那一个COM组件都是匪受管代码,要在Visual
C#中动用这个非受管代码的COM组件,就必将她们变成为受管代码的.NET组件。所以当就此Visual
C#调用Excel表格在此以前,必须做到从COM组件的非受管代码到受管代码的类库的更换。

  1、将Excel的COM组件转换为.NET组件

  于档次遭到打开Add
Reference对话框,接纳COM栏,之后在COM列表中找到”Microsoft Excel 9.0
Object Library”(Office
2000),然后用这加入到花色的References中即可。Visual
C#.NET会活动出相应的.NET组件文件,以后即可正常使用。

  这一个转换形成.NET组件不克独立行使,它不过原先的COM组件的一个外层包装,在.NET中可以通过这一个外层包装去发现原本的COM组件并调用其相应的界面函数。所以其要跟原的COM组件一起从功能。

  2、Visual C#打开Excel表格

  事实上,在C#未遭以一个经转换的COM组件和用外一个其余.NET组件完全一致。可以据此new关键字创设一个通过转换的COM组件,然后再一次像下其余一个别样C#目的同以这组件对象。

  于换后底.NET组件中定义了一个命名空间Excel,在斯命名空间受到查封装了一个类Application,这些看似和启动Excel表格有很首要之涉,在Visual
C#中,只需要下列三履行代码就得做到打开Excel表格的干活,具体如下:

Excel.Application excel = new Excel.Application ();//引用Excel对象
excel.Application.Workbooks.Add ( true );//引用Excel工作簿
excel.Visible = true ;//使Excel可视

  但此时底Excel表格是一个空的表,没有外内容,下边就是来介绍怎么样往Excel表格中输入数据。

  3、往Excel表格中输入数据

  于命名空间”Excel”中,还定义了一个类似”Cell”,这多少个近乎所表示的即是Excel表格中之一个单元格。通过叫”Cell”赋值,从而实现往Excel表格中输入相应的数据,下列代码功用是打开Excel表格,并且向表格输入有数码。

Excel.Application excel = new Excel.Application () ;
excel.Application.Workbooks.Add ( true ) ;
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" ;
excel.Visible = true ;

 

 4、实例

  上面实例在C#中连接Oracle数据库(Name),从表(TableName)中读取数据,并勾画入Excel。

string cnString="Provider=msdaora.1;Data source=Name; ";
cnString=cnString+"user id=UserName;password=Password";
try
{
 OleDbConnection cn=new OleDbConnection (cnString);
 cn.Open ();
 try
 {
  string s="select * from Name.TableName";
  OleDbCommand cmd=new OleDbCommand (s,cn);
  OleDbDataReader dr=cmd.ExecuteReader ();
  Excel.Application xlApp = new Excel.Application();
  if(xlApp==null){MessageBox.Show ("Can’t open Excel!");return;}
  xlApp.Application .Workbooks .Add (true);
  int row=2,fieldcount;
  fieldcount=dr.FieldCount ;
  for(int col=0;col<fieldcount;col++) xlApp.Cells [1,col+1]=dr.GetName(col);
  while (dr.Read ())
  {
   for(int col=0;col<fieldcount;col++)
    xlApp.Cells [row,col+1]=dr.GetValue(col).ToString();
    row++;
  }
  xlApp.Visible =true;
  xlApp=null;
 }
 catch(Exception ex ){MessageBox.Show (ex.Message );}
 finally {cn.Close();}
}
catch(Exception ex){MessageBox.Show (ex.Message );}
}
}

  5、安装一个应用COM组件的.net程序

  假若如若用这么的程序安装运行在此外一样贵机械及,那么除了设置运行程序外,还举行三桩事。

  首先,是安装.NET运行连串。因为另外一个.NET顺序还不可知离开.NET运行网去独立运转。

  其次,所调用的COM组件必须使装在靶机器上。本例中多数对象机器及都抱有Microsoft
Office的Excel,一般不碰面生那个问题。但万一是另外一个用户从定义之COM组件,那么这COM组件在运行.NET程序此前必须先安装好。

  最终,转换后的.NET组件DLL文件要装于靶机器及。因为.NET组件不欲在Windows
ReGIStry中登记,所以极简单易行的主意是将.NET组件DLL文件拷贝到运行程序目录下。如果此.NET组件为多只.NET程序共享,可以拿其设置于.NET公用组件区中,从而可吃其他一个.NET零件使用。惟有当一个.NET零件出席了事务处理时,才要用她注册为一个COM+组件。因为.NET仍旧用传统的COM+机制来处理事务的交付、回滚等。

  小结

  通过上述探讨,我们明白了在C#受到,如何使用Excel的COM组件。需要专注的凡,Excel对象涵盖的洋洋情节我们从未介绍,在动用过程遭到得我们不住上。也只要大家询问了在C#着安使用COM组件。

  参考文献:

  [1] 刘洪成 C#高档编程 北大大学出版社 2003.7行事 187~200

====================================================================================

标题   C#操作Excel(导入导出)     选择自 lovelyxc 的 Blog
关键字   C#操作Excel(导入导出)
出处  

====================================================================================

首先将excel.exe copy 到 ..\Microsoft Visual Studio .NET
2003\SDK\v1.1\Bin目录下
使.net 中拉动的家伙在命令提醒符下执行tlbimp
excel.exe.这样即便不会合盖若的Excel是xp或2000的不同而失去寻觅不同之*.olb文件,还有少数便是坐当2000从此的版中绝非了excel9.olb这些文件了。

经过履行tlbimp excel.exe后我们会晤得到excel.dll文件。

倘暴发了这一个Excel.dll,现在大家就能使用Excel的各样操作函数了。
下边就是深受我们实际看C#举凡安利用这么些东东吧。

  1. 创办一个新Excel的Application:

Application exc = new Application();
if (exc == null) {
Console.WriteLine(“ERROR: EXCEL couldn’t be started”);
return 0;
}

  1. 为这工程可见:
    exc.set_Visible(0, true);
  2. 获取WorkBooks集合:
    Workbooks workbooks = exc.Workbooks;
  3. 加盟新的WorkBook:
    _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0);
  4. 获取WorkSheets集合:

_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
if (worksheet == null) {
Console.WriteLine (“ERROR in worksheet == null”);
}

  1. 受单元格设置变量:

 

图片 1Range range1 = worksheet.get_Range(“C1”,Missing.Value);
图片 2if (range1 == null) 
图片 3图片 4图片 5{
图片 6Console.WriteLine (“ERROR: range == null”);
图片 7}
图片 8const int nCells = 1;
图片 9Object[] args1 = new Object[1];
图片 10args1[0] = nCells;
图片 11range1.GetType().InvokeMember(“Value”,BindingFlags.SetProperty, null, range1, args1);

 

例程:

 

图片 12using System;
图片 13using System.Reflection; 
图片 14using System.Runtime.InteropServices; 
图片 15using Excel;
图片 16图片 17class Excel 图片 18{
图片 19图片 20public static int Main() 图片 21{
图片 22Application exc = new Application();
图片 23图片 24if (exc == null) 图片 25{
图片 26Console.WriteLine(“ERROR: EXCEL couldn’t be started!”);
图片 27return 0;
图片 28}
图片 29exc.set_Visible(0, true); 
图片 30Workbooks workbooks = exc.Workbooks;
图片 31_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0); 
图片 32Sheets sheets = workbook.Worksheets;
图片 33_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
图片 34图片 35if (worksheet == null) 图片 36{
图片 37Console.WriteLine (“ERROR: worksheet == null”);
图片 38}
图片 39Range range1 = worksheet.get_Range(“C1”, Missing.Value);
图片 40图片 41if (range1 == null) 图片 42{
图片 43Console.WriteLine (“ERROR: range == null”);
图片 44}
图片 45const int nCells = 1;
图片 46Object[] args1 = new Object[1];
图片 47args1[0] = nCells;
图片 48range1.GetType().InvokeMember(“Value”, BindingFlags.SetProperty, null,range1, args1);
图片 49return 100;
图片 50}
图片 51}

现我们来探望咋样利用频繁组,他微微看似于安单元格。仅仅需要的更动只是args2[0]
= array2;

图片 52const int nCell = 5;
图片 53Range range2 = worksheet.get_Range(“A1”, “E1”);
图片 54int[] array2 = new int [nCell];
图片 55for (int i=0; i < array2.GetLength(0); i++) 
图片 56图片 57图片 58{
图片 59array2[i] = i+1;
图片 60}
图片 61Object[] args2 = new Object[1];
图片 62args2[0] = array2;
图片 63range2.GetType().InvokeMember(“Value”, BindingFlags.SetProperty, null, range2, args2);

  我们用精通Tlbimp这一个家伙的利用什么:)那么些东东颇有因而,能够用普通Win32次移植到.Net下边来:)
苟操作的excel的格式很粗略,就是相似的阐发的社团,那么实际上操作EXCEL文件以及操作ACCESS数据库文件之办法几乎等同。
(需要专注的地点就是是,1、程序会将EXCLE表中之率先执记录作为列名;2、在使用EXCLE表的下,
要以表名后边长记号$)

脚,我给你帖一段子怎样连接和朗诵取EXCEL文件的代码吧:

 

图片 64DataSet ds = new DataSet();
图片 65OleDbDataAdapter ad;
图片 66
图片 67
图片 68string strDbPath = “./code.xls”;
图片 69string strConn = “Provider=Microsoft.Jet.OleDb.4.0; Data Source=”+Server.MapPath(strDbPath)+”; Extended Properties=Excel 8.0;”;
图片 70
图片 71OleDbConnection Conn = new OleDbConnection(strConn);
图片 72
图片 73Conn.Open();
图片 74
图片 75string strSQL = “select * from [股票代码$]”;
图片 76
图片 77
图片 78ad = new OleDbDataAdapter(strSQL, Conn);
图片 79ad.Fill(ds);
图片 80
图片 81dg1.DataSource = ds.Tables[0].DefaultView;  //dg1是一个DataGrid控件
图片 82dg1.DataBind();  //将EXCLE中股票代码中之笔录棒定到DataGrid控件上
图片 83
图片 84

万一是当asp.net 下使用的话,要记在 
<system.web>中补充加<identity impersonate=”true”/>
否则便相会面世 “非常详细音信: System.UnauthorizedAccessException:
拒绝访问“。

=======================================================

平等、调用Excel的艺术:一般情状下有三三两二种方式调用Excel:
1、  直接以Delphi自带的零件:在Form中分头放入ExcelApplication,
ExcelWorkbook和ExcelWorksheet。
2、动态创制Excel文件:首先创造 Excel 对象,使用ComObj,Excel2000:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( ‘Excel.Application’ );

次、导入数据:在先后中,咱们好以查询及之多少(SQL、Access、)导入到Excel中。例如:用Adoquery查询Access中的多寡:
1、先查看及所要的数;
2、导入:i:=1;
Adoquery.First;
              while not Adoquery.Eof do
                Begin
                  ExcelApp.WorkSheets[1].Cells[i,1].Value :=
i;//添加序号的值
ExcelApp.WorkSheets[1].Cells[i,2].Value :=
Adoquery.FieldByName(‘cp_name’).AsString;
                  ……
                  Inc(i);
Adoquery.Next;
                End;
本为堪把Adotable、Adoquery、Table、Query等零件的多少导入到Excel中。

老三、Excel的拍卖:假设以公已经知Excel格式的境况下,可以控制Excel,如下:
1、 显示当前窗口:ExcelApp.Visible := True;
2、 更改 Excel 标题栏:ExcelApp.Caption := ‘标题内容’;
3、 添加新工作簿:ExcelApp.WorkBooks.Add;
4、 设置第2独工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;
5、 给单元格赋值:ExcelApp.Cells[1,1].Value := ‘第一执行第一列’;
6、 设置指定列的宽窄(单位:字符个数),以第一名列例:
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
7、 设置指定行的冲天(单位:磅)(1磅=0.035分米),以老二作为例:
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment
:= $FFFFEFF4;
  文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment :=
$FFFFEFF4;
9、 插入一行要同等排:a. ExcelApp.ActiveSheet.Rows[2].Insert;
b. ExcelApp.ActiveSheet.Columns[1].Insert;
10、 删除一行要同排列:a. ExcelApp.ActiveSheet.Rows[2].Delete;
b. ExcelApp.ActiveSheet.Columns[1].Delete;  
11、合并单元格:ExcelApp.worksheets[1].range[A1:F8′].Merge(abc);注:要申明变量abc:
Variant;
12、竖行彰显文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:=
xlVertical;
13、单元格加边线:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle
:= 1;
14、在第8履以前插入分页符:ExcelApp.WorkSheets[1].Rows[8].PageBreak
:= 1;
15、在第4排在此之前剔除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak
:= 0;
16、指定边框线宽度:ExcelApp.ActiveSheet.Range[ ‘B3:D4’
].Borders[2].Weight := 3;
1-左    2-右   3-顶    4-底   5-斜( \ )     6-斜( / )
17、拷贝操作:a.拷贝整个工作表:ExcelApplication1.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ ‘A1:E2’ ].Copy;
               
 c.从A1地方上马粘贴:ExcelApplication1.ActiveSheet.Range.[ ‘A1’
].PasteSpecial;
d.从文本尾最先粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;
18、清除第一举办第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved then
               ExcelApp.ActiveSheet.PrintPreview;
20、工作表另存为:ExcelApp.SaveAs( ‘C:\Excel\Demo1.xls’ );
21、吐弃存盘:ExcelApp.ActiveWorkBook.Saved := True;
22、关闭工作簿:ExcelApp.WorkBooks.Close;
23、退出 Excel:ExcelApp.Quit;
下边是有关打印页面控制的讲话:
   24、设置第一履行字属性:ExcelApp.ActiveSheet.Rows[1].Font.Name :=
‘隶书’;
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
ExcelApp.ActiveSheet.Rows[1].Font.size:=10;
25、举办页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader :=
‘报表演示’;
b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := ‘共&N页
第&P页’;
                   
 c.页眉到下边边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin :=
2/0.035;
d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin :=
3/0.035;
                   
 e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
                   
 g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
                   
 i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally :=
2/0.035;
j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically :=
2/0.035;
                   
 k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines :=
True;
26、打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;
27、打印输出工作表:ExcelApp.ActiveSheet.PrintOut;
本着Excel的其它控制:
28、excel的多单元格合计成效:ExcelApp..Cells[ARow, ACol].Formula
:= ‘= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +’);
流动:讲明变量ARow, ACol: Integer;
29、打开都是的Excel文件: ExcelApplication1.Workbooks.Open
(c:\a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
   EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

2004-3-4 16:27:14   

查看评语»»»   

 2004-3-4 16:41:04 
  举例来说

亚、采纳excel表’按钮,用于打开EXCEL文件,其代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件之自存放起来路径
opendialog1.Execute;
Try
ExcelApplication1.Connect;//EXCEL应用程序
Except
MessageDlg(‘Excel may not be installed’,mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:=’Excel Application’;
try
excelapplication1.Workbooks.Open(opendialog1.FileName,
null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL
文件
except
begin
ExcelApplication1.Disconnect;//出现非常情形常关闭
ExcelApplication1.Quit;showmessage(‘请选取EXCEL电子表格!’);
exit;
end;
end;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);//ExcelWorkbook1暨Eexcelapplication1建立连接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as
_Worksheet);//Excelworksheet1以及Excelworkbook1建立连接
//开头从EXCEL中取数,放到stringgrid1着,取完数后关闭EXCEL
for i:=1 to 1000 do//最老取值1000
for j:=1 to 6 do
begin
if trim(excelworksheet1.cells.item[i+1,1])<>” then
begin
stringgrid1.rowCount:=i+1;
stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];
end
else
begin
label3.caption:=inttostr(i-1);
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
//将率先长长的数赋给编辑框
edit2.text:=stringgrid1.Cells[1,1];
edit1.text:=stringgrid1.Cells[2,1];
edit3.text:=stringgrid1.Cells[3,1];
edit4.text:=stringgrid1.Cells[4,1];
edit5.text:=stringgrid1.Cells[5,1];
exit;
end;
end;
end;

老三、’下同样长记录’按钮,完成记录为下活动,代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var x:integer;
begin
x:=stringgrid1.row+1;
if x<> stringgrid1.RowCount then
begin
stringgrid1.row:=stringgrid1.row+1;
label1.caption:=inttostr(x);
edit2.text:=stringgrid1.Cells[1,x];
edit1.text:=stringgrid1.Cells[2,x];
edit3.text:=stringgrid1.Cells[3,x];
edit4.text:=stringgrid1.Cells[4,x];
edit5.text:=stringgrid1.Cells[5,x];
exit;
end
else
showmessage(‘已到第一条记下!’);
end;
季、’上一致长达记录’,完成记录上转换,代码如下:
var x:integer;
begin
x:=stringgrid1.row-1;
if x<>0 then
begin
stringgrid1.row:=stringgrid1.row-1;
label1.caption:=inttostr(x);
edit2.text:=stringgrid1.Cells[1,x];
edit1.text:=stringgrid1.Cells[2,x];
edit3.text:=stringgrid1.Cells[3,x];
edit4.text:=stringgrid1.Cells[4,x];
edit5.text:=stringgrid1.Cells[5,x];
exit;
end
else
showmessage(‘已到终极一长记下!’);
end;
五、stringgrid中前后运动时代码:
procedure TForm1.StringGrid1Click(Sender: TObject);
var i:integer;
begin
i:=stringgrid1.Row;
label1.caption:=inttostr(i);
edit1.text:=stringgrid1.Cells[2,i];
edit2.text:=stringgrid1.Cells[1,i];
edit3.text:=stringgrid1.Cells[3,i];
edit4.text:=stringgrid1.Cells[4,i];
edit5.text:=stringgrid1.Cells[5,i];
end;  

 

 2004-3-4 16:45:24 
  图片插入到EXCEL中

uses:clipbrd
function
begin
var
 MyFormat:Word;
 G.Skill:THandle;      //临时词柄变量。
 APalette:HPALETTE;  //临时变量。
 Stream1:TMemoryStream;//TBlobStream
 xx:tbitmap;
           Stream1:= TMemoryStream.Create;
         
 TBlobField(Field)(query.FieldByName(‘存储图片的字段’)).SaveToStream(Stream1);
           Stream1.Position :=0;
           xx:=tbitmap.Create ;
           xx.LoadFromStream(Stream1);
           xx.SaveToClipboardFormat(MyFormat,AData,APalette);
           ClipBoard.SetAsHandle(MyFormat, AData);
         
 myworksheet1.Range[‘g3′,’h7’].select;//myworksheet1是时下倒之sheet页
           myworksheet1.Paste;
end;

============================================================

诸君兄弟:读取EXCEL数据是部分麻烦,经过研商,已整治掂,C#的代码如下,至于写多少虽然比简单:
 
  Excel.ApplicationClass   excel=new   Excel   .ApplicationClass   ();
 
  excel.Workbooks   .Add(path);//打开麻烦,增添一个于好处理  
  Excel.Worksheet   worksheet=(Excel.Worksheetexcel.Worksheets.get_Item
  (1);  
  for(int   i=1;i<=row;i++)  
  {  
  Excel.Range   r=worksheet.get_Range   (“A”+i.ToString  
(),”A”+i.ToString   ());  
  r.Select   ();  
  labcellname.Text   =excel.ActiveCell.Text   .ToString   ().Trim   ();
 
  Application.DoEvents   ();  
  labnum.Text   =i.ToString   ();  
  Application.DoEvents   ();  
  }  
  excel.Quit   ();

c#操作EXCEL文件

相关文章