写Excel多个sheet

FindCsdnToDay 2004-06-26 10:27:56
我的程序在写一个sheet时没问题,当写第二个sheet时,报“Range类的select方法无效"异常:

object missing=Missing.Value;
Excel.Application myExcel = new Excel.Application ( ) ;

myExcel.Application.Workbooks.Open(fileName,missing,missing,missing,missing,
missing,missing,missing,missing,missing,missing,missing,missing);

Excel.Workbook myBook=myExcel.Workbooks[1];
Excel.Sheets sheets=myBook.Worksheets;

for(int currSheet=1; currSheet < 2; currSheet ++)
{
//依此取得第一和第二个 sheet
Excel.Worksheet mySheet=(Excel.Worksheet)sheets.get_Item(currSheet);

//写入数据,如:
mySheet.Cells[1,1] = "1";
mySheet.Cells[2,1] = "2";

//内容选中
Excel.Range r=mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[2,1]);
r.Select(); //此句在写第二个sheet时出错

//执行一个合并单元格的宏
myExcel.Run("combin",missing,missing, ...)

}

请高手指点一下错在哪?
...全文
256 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanjingbool 2004-06-28
  • 打赏
  • 举报
回复
//我在网上找的;
public string [] GetSheetNameList( string excelFilePath , string[] colList )
{
Excel.Application myExcel=new Excel.Application ( ) ;
try{


object oMissing = System.Reflection.Missing.Value ;

myExcel.Application.Workbooks.Open(excelFilePath,oMissing,oMissing,oMissing,oMissing,oMissing,
oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing ) ;

Excel.Workbook myBook = myExcel.Workbooks[1] ;
int sheetNum = myBook.Worksheets.Count ;
string [] col = null ;
ArrayList totalName = new ArrayList();
for( int i = 1 ; i <= sheetNum ; i ++ ){
col = this.GetColumnsNameList( excelFilePath , i ) ;
if( col==null || col.Length == 0 || col.Length != colList.Length )
continue ;
for( int j = 0 ; j < col.Length ; j ++ )
{
if( col[j].Trim() != colList[j].Trim() )
continue ;
}
Excel.Worksheet xlsheet = (Excel.Worksheet)myBook.Worksheets[i] ;
totalName.Add( xlsheet.Name ) ;
}
//===========2003.11.28=============
string [] sheetName = new String[ totalName.Count ] ;

for( int i = 0 ; i < totalName.Count ; i ++ )
{
sheetName[i] = totalName[i].ToString().Trim();
}
myExcel.Application.Workbooks.Close( ) ;

Marshal.ReleaseComObject( myExcel ) ;
return sheetName;
}
catch{
Marshal.ReleaseComObject( myExcel ) ;
return null ;
}
}
bitsbird 2004-06-28
  • 打赏
  • 举报
回复
private void Button1_Click(object sender, System.EventArgs e)
{
Excel.Application myExcel=new Excel .ApplicationClass ();
myExcel.Visible =true;
myExcel.Workbooks .Add (true);
for(int i=0;i<5;i++)//增加多个SHEET
{
myExcel.Sheets .Add (Missing.Value,Missing.Value,Missing.Value,Missing.Value );
}

for(int i=1;i<=6;i++)
{
for(int j=1;j<4;j++)
myExcel.Cells[i,j]=i+j;
((Excel.Worksheet)myExcel.Sheets[i]).Name =i.ToString ();//修改SHEET名
}
}
FindCsdnToDay 2004-06-27
  • 打赏
  • 举报
回复
自己解决了。需要一句
mySheet.Activate();
FindCsdnToDay 2004-06-27
  • 打赏
  • 举报
回复
有数据同样报错啊
极速小王子 2004-06-26
  • 打赏
  • 举报
回复
赫赫!不知道了!
看看把那个格填上数据!
FindCsdnToDay 2004-06-26
  • 打赏
  • 举报
回复
for(int currSheet=1; currSheet < 2; currSheet ++)
这一句整理提问时写错了,应为:
for(int currSheet=1; currSheet < 3; currSheet ++)

那位兄弟知道解决的办法,请指教!

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧