如何给excel新增工作表 C#

lijian910wolf 2008-06-23 02:28:38
private void button1_Click(object sender, System.EventArgs e)
{
object objApp_Late;
object objBook_Late;
object objBooks_Late;
object objSheets_Late;
object objSheet_Late;
object objRange_Late;
object[] Parameters;

try
{
// Get the class type and instantiate Excel.
Type objClassType;
objClassType = Type.GetTypeFromProgID("Excel.Application");
objApp_Late = Activator.CreateInstance(objClassType);

//Get the workbooks collection.
objBooks_Late = objApp_Late.GetType().InvokeMember( "Workbooks",
BindingFlags.GetProperty, null, objApp_Late, null );

//Add a new workbook.
objBook_Late = objBooks_Late.GetType().InvokeMember( "Add",
BindingFlags.InvokeMethod, null, objBooks_Late, null );

//Get the worksheets collection.
objSheets_Late = objBook_Late.GetType().InvokeMember( "Worksheets",
BindingFlags.GetProperty, null, objBook_Late, null );

//Get the first worksheet.这里是向第一个工作表导数据
//默认是3个工作表,我现在要导出6个工作表,所以需要新增工作表
//该怎么写新增工作表
for(int i=0;i<6;i++)
{
//应该是在这写新增工作表
Parameters = new Object[1];
Parameters[0] = i;
objSheet_Late = objSheets_Late.GetType().InvokeMember( "Item",
BindingFlags.GetProperty, null, objSheets_Late, Parameters );
//结束
//Get a range object that contains cell A1.
Parameters = new Object[2];
Parameters[0] = "A1";
Parameters[1] = Missing.Value;
objRange_Late = objSheet_Late.GetType().InvokeMember( "Range",
BindingFlags.GetProperty, null, objSheet_Late, Parameters );

//Write "Hello, World!" in cell A1.
Parameters = new Object[1];
Parameters[0] = "Hello, World!";
objRange_Late.GetType().InvokeMember( "Value", BindingFlags.SetProperty,
null, objRange_Late, Parameters );

}

//Return control of Excel to the user.
Parameters = new Object[1];
Parameters[0] = true;
objApp_Late.GetType().InvokeMember( "Visible", BindingFlags.SetProperty,
null, objApp_Late, Parameters );
objApp_Late.GetType().InvokeMember( "UserControl", BindingFlags.SetProperty,
null, objApp_Late, Parameters );
}
catch( Exception theException )
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat( errorMessage, theException.Message );
errorMessage = String.Concat( errorMessage, " Line: " );
errorMessage = String.Concat( errorMessage, theException.Source );

MessageBox.Show( errorMessage, "Error" );
}
}
上面是代码,但还有个问题未解决,具体如代码中中文描述
...全文
10421 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjoy 2012-01-31
  • 打赏
  • 举报
回复
认真学习
飞花不落叶 2010-12-03
  • 打赏
  • 举报
回复
EN 嗯 这个问题 我也很纠结 感谢楼主
lijian910wolf 2008-06-23
  • 打赏
  • 举报
回复
你们说的方法都可以,但有个问题,我是不想在命名空间中引用//using Excel = Microsoft.Office.Interop.Excel;
因为有的时候假如我没装excel的话就会出错。而我上面的方法就可以避免,但问题就是我知道怎么新增一个wookbook,但不知道怎么新增一个工作表(wooksheet),这个wooksheet可定是嫌憎在wookbook上,但具体怎么写,暂时没写出来
长江支流 2008-06-23
  • 打赏
  • 举报
回复
VB.Net调用示例




'清除工作表(但是Excel至少保留一个)
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
excel.WorkSheets.Clear()
End Sub

'增加工作表
Private Sub btnAddSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddSheet.Click
excel.WorkSheets.Add()
End Sub

'插入工作表,它会在活动工作表处插入
Private Sub btnInsertSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertSheet.Click
excel.WorkSheets.Insert()
End Sub

'在指定位置插入工作表
Private Sub btnInsertInputSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertInputSheet.Click
Dim index As String
index = InputBox("请输入当前要激活的表顺序(从1开始)或名称:", "MIS金质打印通(Excel专版)", "1")

Dim i As Integer = 0

Try
'先按按索引试
i = CInt(index)
i = i - 1 '.Net是从0开始索引,除非VB.Net中设置选项

Catch

'MessageBox.Show("请输入正整数!")

excel.WorkSheets.Insert(index, 1)

Return
End Try

excel.WorkSheets.Insert(i)

End Sub

'设置(激活)当前工作表
Private Sub btnActiveSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActiveSheet.Click
Dim index As String
index = InputBox("请输入当前要激活的表顺序(从1开始)或名称:", "MIS金质打印通(Excel专版)", "1")

Dim i As Integer = 0

Try

'先按按索引试
i = CInt(index)
i = i - 1 '.Net是从0开始索引,除非VB.Net中设置选项

Catch

'MessageBox.Show("请输入正整数!")

excel.WorkSheets.Activate(index)

Return
End Try

excel.WorkSheets.Activate(i)
End Sub

'获取当前工作表
Private Sub btnGetActiveSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetActiveSheet.Click
Dim sheet As excel.Worksheet
sheet = excel.WorkSheets.ActiveSheet

MessageBox.Show(sheet.Name)

End Sub

'删除工作表
Private Sub btnRemoveSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveSheet.Click
Dim index As String
index = InputBox("请输入当前要删除的表顺序(从1开始)或表名称:", "MIS金质打印通(Excel专版)", "1")

Dim i As Integer = 0

Try

'先按索引试
i = CInt(index)
i = i - 1 '.Net是从0开始索引,除非VB.Net中设置选项

Catch

'MessageBox.Show("请输入正整数!")

excel.WorkSheets.Remove(index)

Return
End Try

excel.WorkSheets.Remove(i)
End Sub

'查找工作表
Private Sub btnFindByName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFindByName.Click
Dim name As String
name = InputBox("请输入要查找的工作表名:", "MIS金质打印通(Excel专版)", "sheet1")

Dim sheet As excel.Worksheet
sheet = excel.WorkSheets(name)

If Not (sheet Is Nothing) Then
sheet.Activate()
Else
MessageBox.Show(name + "不存在,请重试!", "MIS金质打印通(Excel专版)")
End If
End Sub

'重命名工作表
Private Sub btnRenameSheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRenameSheet.Click
Dim name As String = InputBox("请输入要重命名的工作表名:", "MIS金质打印通(Excel专版)", "sheet1")
Dim newName As String = InputBox("请输入新的名称:", "MIS金质打印通(Excel专版)", "sheet1")

Dim sheet As excel.Worksheet = excel.WorkSheets.Rename(name, newName)
If (sheet Is Nothing) Then
MessageBox.Show(name + "不存在,请重试!", "MIS金质打印通(Excel专版)")
End If
End Sub

'拷贝工作表
Private Sub btnCopySheet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopySheet.Click
Dim source, desc As String
source = InputBox("请输入要原工作表位置索引或名称:", "MIS金质打印通(Excel专版)", "1")
desc = InputBox("请输入拷到哪个位置(如果前面用索引,这里也用,索引过大则拷到最后,如果前面用名称这里也用名称):", "MIS金质打印通(Excel专版)", "2")

Try
'.NET索引从0开始,Excel本身从1开始,所以-1
excel.WorkSheets.Copy(CInt(source) - 1, CInt(desc) - 1)
Catch ex As Exception
Try
'全用名字试
excel.WorkSheets.Copy(source, desc)

Catch exx As Exception

End Try
End Try
End Sub


'Undo仅仅对用户在界面上的最后一次输入有效,对使用代码写的数据无效。
Private Sub btnUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUndo.Click
excel.UndoUserLastInput()
End Sub


'所有工作表
Private Sub btnAllWorkSheets_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAllWorkSheets.Click
For Each sheet As excel.Worksheet In excel.WorkSheets
MessageBox.Show(sheet.Name)
Next
End Sub

长江支流 2008-06-23
  • 打赏
  • 举报
回复
调用示例

		//清除工作表(但是Excel至少保留一个)
private void btnClear_Click(object sender, System.EventArgs e)
{
excel.WorkSheets.Clear();
}

//增加工作表
private void btnAddSheet_Click(object sender, System.EventArgs e)
{
excel.WorkSheets.Add();
}

//插入工作表,它会在活动工作表处插入
private void btnInsertSheet_Click(object sender, System.EventArgs e)
{
excel.WorkSheets.Insert();
}

//指定位置插入工作表
private void btnInsertInputSheet_Click(object sender, System.EventArgs e)
{
#region 实现...

string index = InputBox.Show("请输入当前要激活的表顺序(从1开始)或名称:","MIS金质打印通(Excel专版)","1");


int i = 0;

try
{
//先按按索引试
i = int.Parse(index);

i--; //C#是从0开始索引
}
catch(FormatException ex)
{
//MessageBox.Show("请输入正整数!");

excel.WorkSheets.Insert(index,1);

return;
}

excel.WorkSheets.Insert(i);

#endregion
}

//设置(激活)当前工作表
private void btnActiveSheet_Click(object sender, System.EventArgs e)
{
#region 实现...

string index = InputBox.Show("请输入当前要激活的表顺序(从1开始)或名称:","MIS金质打印通(Excel专版)","1");


int i = 0;

try
{
//先按按索引试
i = int.Parse(index);

i--; //C#是从0开始索引
}
catch(FormatException ex)
{
//MessageBox.Show("请输入正整数!");

excel.WorkSheets.Activate(index);

return;
}

excel.WorkSheets.Activate(i);

#endregion
}


//获取当前工作表
private void btnGetActiveSheet_Click(object sender, System.EventArgs e)
{
Excel.Worksheet sheet = excel.WorkSheets.ActiveSheet;

MessageBox.Show(sheet.Name);
}


//删除工作表
private void btnRemoveSheet_Click(object sender, System.EventArgs e)
{
#region 实现...

string index = InputBox.Show("请输入当前要删除的表顺序(从1开始)或表名称:","MIS金质打印通(Excel专版)","1");


int i = 0;

try
{
//先按索引试
i = int.Parse(index);

i--; //C#是从0开始索引
}
catch(FormatException ex)
{
//MessageBox.Show("请输入正整数!");

excel.WorkSheets.Remove(index);

return;
}

excel.WorkSheets.Remove(i);

#endregion
}


//重命名工作表
private void btnRenameSheet_Click(object sender, System.EventArgs e)
{
#region 实现...

string name = InputBox.Show("请输入要重命名的工作表名:","MIS金质打印通(Excel专版)","sheet1");
string newName = InputBox.Show("请输入新的名称:","MIS金质打印通(Excel专版)","sheet1");

//表示取消了
if (name == "" || newName == "")
{
return;
}

Excel.Worksheet sheet = excel.WorkSheets.Rename(name,newName);
if (sheet == null)
{
MessageBox.Show(name + "不存在,请重试!","MIS金质打印通(Excel专版)");
}

#endregion 实现...
}


//查找工作表
private void btnFindByName_Click(object sender, System.EventArgs e)
{
#region 实现...

string name = InputBox.Show("请输入要查找的工作表名:","MIS金质打印通(Excel专版)","sheet1");

Excel.Worksheet sheet = excel.WorkSheets[name];

if (sheet != null)
{
sheet.Activate();
}
else
{
MessageBox.Show(name + "不存在,请重试!","MIS金质打印通(Excel专版)");
}

#endregion 实现...
}

//拷贝工作表
private void btnCopySheet_Click(object sender, System.EventArgs e)
{
#region 实现...

string source, desc;
source = InputBox.Show("请输入要原工作表位置索引或名称:", "MIS金质打印通(Excel专版)", "1");

desc = InputBox.Show("请输入拷到哪个位置(如果前面用索引,这里也用,索引过大则拷到最后,如果前面用名称这里也用名称):", "MIS金质打印通(Excel专版)", "2");

try
{
//.NET索引从0开始,Excel本身从1开始,所以-1
excel.WorkSheets.Copy(int.Parse(source) - 1, int.Parse(desc) - 1);
}
catch
{
try
{
//全用名字试
excel.WorkSheets.Copy(source, desc);
}

catch{}
}

#endregion
}

//Undo仅仅对用户在界面上的最后一次输入有效,对使用代码写的数据无效。
private void btnUndo_Click(object sender, System.EventArgs e)
{
excel.UndoUserLastInput();
}

//所有工作表
private void btnAllWorkSheets_Click(object sender, System.EventArgs e)
{
foreach(Excel.Worksheet sheet in excel.WorkSheets)
{
MessageBox.Show( sheet.Name);
}
}
长江支流 2008-06-23
  • 打赏
  • 举报
回复


/// <summary>
/// 激活指定索引的工作表并返回。索引太大会返回最后一个,太小则返回第一个工作表。
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public Excel.Worksheet Activate(int index)
{
Excel.Worksheet sheetReturn = null;

sheetReturn = this[index];

sheetReturn.Activate();

return sheetReturn;
}


/// <summary>
/// 激活指定的工作表并返回。不存在指定的表没有则返回null。
/// </summary>
/// <param name="name">工作表名</param>
/// <returns></returns>
public Excel.Worksheet Activate(string name)
{
Excel.Worksheet sheetReturn = null;

sheetReturn = this[name];

if (sheetReturn != null)
{
sheetReturn.Activate();
}

return sheetReturn;
}


/// <summary>
/// 增加并返回一张工作表。
/// </summary>
public Excel.Worksheet Add()
{
return Add(1);
}


/// <summary>
/// 增加指定数量的工作表并返回最后一次增加的工作表。
/// </summary>
/// <param name="count">增加的数量</param>
public Excel.Worksheet Add(int count)
{
return (Excel.Worksheet)_xlWorkbook.Worksheets.Add(oMissing,_xlWorkbook.Worksheets[GetWorksheetsCount()],count,oMissing);
}


/// <summary>
/// 在活动工作薄前面插入并返回一张工作表。
/// </summary>
public Excel.Worksheet Insert()
{
return (Excel.Worksheet)_xlWorkbook.Worksheets.Add(oMissing,oMissing,oMissing,oMissing);
}


/// <summary>
/// 在活动工作薄前面插入并返回一张工作表。
/// </summary>
/// <param name="index">指定要插入的位置</param>
public Excel.Worksheet Insert(int index)
{
return Insert(index,1);
}


/// <summary>
/// 在活动工作薄前面插入指定数量的工作表并返回最后一次插入的工作表。
/// </summary>
/// <param name="index">指定要插入的位置</param>
/// <param name="count">指定要插入的数量</param>
public Excel.Worksheet Insert(int index,int count)
{
int worksheetsCount = GetWorksheetsCount();

if (index >= worksheetsCount)
{
//追加

return Add();
}
else
{
//激活
Activate(index);

return (Excel.Worksheet)_xlWorkbook.Worksheets.Add(oMissing,oMissing,count,oMissing);
}
}


/// <summary>
/// 在指定的工作表前面插入指定数量的工作表并返回最后一次插入的工作表。
/// </summary>
/// <param name="name">指定要插入的位置</param>
/// <param name="count">指定要插入的数量</param>
public Excel.Worksheet Insert(string name,int count)
{
//激活
Activate(name);

return (Excel.Worksheet)_xlWorkbook.Worksheets.Add(oMissing,oMissing,count,oMissing);
}


/// <summary>
/// 删除指定位置的工作表
/// </summary>
/// <param name="index">指定要删除的位置</param>
/// <returns></returns>
public void Remove(int index)
{
int count = GetWorksheetsCount();
int i = index + 1; //注意这里索引从0开始,而Excel本身是从1开始的,所以加1。

//Excel要求至少保留一个工作表
if (count > 1)
{
//在有效范围内
if (i >=1 && i <= count)
{
((Excel.Worksheet)_xlWorkbook.Worksheets[i]).Delete();
}
}
}


/// <summary>
/// 删除指定的工作表
/// </summary>
/// <param name="name">指定要删除的表名</param>
/// <returns></returns>
public void Remove(string name)
{
Excel.Worksheet sheet = null;

sheet = this[name];

if (sheet != null)
{
sheet.Delete();
}
}


/// <summary>
/// 重命名指定的工作表
/// </summary>
/// <param name="oldName">指定要重命名的表名</param>
/// <param name="newName">新的表名</param>
/// <returns></returns>
public Excel.Worksheet Rename(string oldName,string newName)
{
Excel.Worksheet sheet = null;

sheet = this[oldName];

if (sheet != null)
{
sheet.Name = newName;
}

return sheet;
}


/// <summary>
/// 创建一个表的副本,并且将表插入到指定的位置。
/// </summary>
/// <param name="source">原表的位置或名称</param>
/// <param name="dest">目标表插入到的位置或插入到指定名称的表前</param>
public void Copy(int source,int dest)
{
//可以随意指定将新表插入到现有表的前面或者后面。如果不指定位置,Excel 会创建一个新的工作簿来存放这个新表。
//下面的代码片段复制当前工作簿中的第一个表,并且将副本放在第三个表的后面:
//((Excel.Worksheet) ThisWorkbook.Sheets[1]).Copy(Type.Missing, ThisWorkbook.Sheets[3]);.

Excel.Worksheet sheetSource = this[source];

if (sheetSource != null)
{
Excel.Worksheet sheetDesc = this[dest];

int sheetCount = GetWorksheetsCount();

//主要是this[index]取无效的索引为有效的边界值总是返回有效的工作表,所以要判断
if (dest >= sheetCount || sheetDesc == null)
{
//在最后一个工作表后加入
this[source].Copy(Type.Missing,this[GetWorksheetsCount()]);
}
else
{
if (sheetDesc != null)
{
//在指定位置插入
this[source].Copy(this[dest],Type.Missing);
}
}
}
}


/// <summary>
/// 创建一个表的副本,并且将表插入到指定的位置。
/// </summary>
/// <param name="source">原表的位置或名称</param>
/// <param name="dest">目标表插入到的位置或插入到指定名称的表前</param>
public void Copy(string source,string dest)
{
Excel.Worksheet sheetSource = this[source];

if (sheetSource != null)
{
Excel.Worksheet sheetDesc = this[dest];

if (sheetDesc != null)
{
//在指定位置插入
this[source].Copy(this[dest],Type.Missing);
}
else
{
//在最后一个工作表后加入
this[source].Copy(Type.Missing,this[GetWorksheetsCount()]);
}
}
}


/// <summary>
/// 可以用foreach访问每一个工作表。
/// </summary>
/// <returns></returns>
public System.Collections.IEnumerator GetEnumerator()
{
int count = GetWorksheetsCount();

Excel.Worksheet[] arr = new Excel.Worksheet[count];

for(int i = 0 ; i < count ; i++)
{
arr[i] = (Excel.Worksheet)_xlWorkbook.Worksheets[i+1]; //Excel索引从1开始
}

return arr.GetEnumerator();
}


/// <summary>
/// 获取工作表数量
/// </summary>
/// <returns></returns>
private int GetWorksheetsCount()
{
int sheetsCount = _xlWorkbook.Worksheets.Count;

return sheetsCount;
}


/// <summary>
/// 获取本程序的开发者信息。如果您在开发使用过程中遇到什么困难或有新的想法或建议,请您与作者联系。
/// 我们的宗旨是:普及.NET教育 推广常用技术 分享实用源码
/// </summary>
public void PrintDeveloperInfoToConsole()
{
string authorInfo = "\n\r" +
"作 者:长江支流(周方勇)" + "\n\r" +
"Email:MisGoldPrinter@163.com QQ:150439795" + "\n\r" +
"网 址:www.webmis.com.cn";

Console.WriteLine(authorInfo);
}

}//End class
}//End Namespace
长江支流 2008-06-23
  • 打赏
  • 举报
回复
using System;

namespace GoldPrinter.ExcelExpert
{
/// <summary>
/// Excel工作薄的工作表集,作为Workbook的访问者,可以对其工作表集增删改定位等操作,方便扩展。
/// 注意这里索引遵从C#从0开始,而Excel本身是从1开始的。
///
/// 作 者:长江支流(周方勇)
/// Email:MisGoldPrinter@163.com QQ:150439795
/// 网 址:www.webmis.com.cn
/// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
///
/// </summary>
public class WorkSheets:System.Collections.IEnumerable
{
private Excel.Workbook _xlWorkbook; //Excel工作表集所在的工作薄。
private Object oMissing = System.Reflection.Missing.Value; //实例化对象时缺省参数


#region Application、Workbooks字段属性

/// <summary>
/// 获取Excel应用程序
/// </summary>
public Excel.Application Application
{
get
{
return _xlWorkbook.Application;
}
}

/// <summary>
/// 获取Excel工作表集所在的工作薄。
/// </summary>
public Excel.Workbook Workbook
{
get
{
return _xlWorkbook;
}
}

#endregion


/// <summary>
/// 创建类的新实体,并指定其所依附的工作薄。
/// </summary>
/// <param name="workbook"></param>
public WorkSheets(Excel.Workbook workbook)
{
_xlWorkbook = workbook;
}


/// <summary>
/// 获取工作表数量。
/// </summary>
/// <returns></returns>
public int Count
{
get
{
return GetWorksheetsCount();
}
}


/// <summary>
/// 获取当前激活的工作表
/// </summary>
public Excel.Worksheet ActiveSheet
{
get
{
return (Excel.Worksheet)_xlWorkbook.ActiveSheet;
}
}


/// <summary>
/// 获取集合中指定索引的工作表,没有则返回null。
/// </summary>
public Excel.Worksheet this[string name]
{
get
{
Excel.Worksheet sheetReturn = null;

object obj = null;

try
{
//没有即会出错
obj = _xlWorkbook.Sheets[name];
}
catch{}

if (obj != null)
{
sheetReturn = (Excel.Worksheet)obj;
}

return sheetReturn;
}
}

/// <summary>
/// 获取集合中指定索引的工作表,索引太大会返回最后一个,太小则返回第一个工作表。
/// </summary>
public Excel.Worksheet this[int index]
{
get
{
Excel.Worksheet sheetReturn = null;

int count = GetWorksheetsCount();
int i = index + 1; //注意这里索引从0开始,而Excel本身是从1开始的,所以加1。

if (i < 1)
{
i = 1;
}
else if(i > count)
{
i = count;
}

//取得第i张工作表激活并返回(索引从1开始)
sheetReturn = (Excel.Worksheet)_xlWorkbook.Worksheets[i];

return sheetReturn;
}
}


/// <summary>
/// 强制重新计算所有工作表、特定的范围
/// </summary>
/// <returns></returns>
public void Calculate()
{
foreach(Excel.Worksheet sheet in this)
{
sheet.Calculate();
}
}


/// <summary>
/// 强制重新计算所有工作表、特定的范围
/// </summary>
/// <returns></returns>
public void Calculate(Excel.Worksheet sheet)
{
sheet.Calculate();
}


/// <summary>
/// 强制重新计算所有工作表、特定的范围
/// </summary>
/// <returns></returns>
public void Calculate(Excel.Range range)
{
range.Calculate();
}


/// <summary>
/// 清除工作薄中的工作表,注意因为Excel至少保留一张,所以实际上不是全部清除。
/// </summary>
public void Clear()
{
//工作表数量
int sheetsCount = GetWorksheetsCount();

//删除以往工作表,但是Excel要求至少保留一张,注意Excel索引是从1开始的。
if (sheetsCount > 1)
{
for(int i = 2 ; i <= sheetsCount ; i++)
{
((Excel.Worksheet)_xlWorkbook.Worksheets[2]).Delete();
}
}

}


/// <summary>
/// 激活指定索引的工作表并返回。索引太大会返回最后一个,太小则返回第一个工作表。
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public Excel.Worksheet Activate(int index)
{
Excel.Worksheet sheetReturn = null;

sheetReturn = this[index];

sheetReturn.Activate();

return sheetReturn;
}


}//End Namespace
神之泪花 2008-06-23
  • 打赏
  • 举报
回复
VB.NET中可以这样.

dim exsheet as excel.worksheet
定义工作表

exsheet=exbook.sheets(n)

可以取得需要操作的Sheet,然后进行操作

C#不知道能用不..
老田低代码 2008-06-23
  • 打赏
  • 举报
回复
Excel的WorkBooks对象(或者是Excel.Application对象)有个Sheets集合属性,你直接把Sheet增加进去就可以了。

或者是Sheets.Add(int count)这样,具体的你可以实验下。

访问的时候可以Sheets[工作表名]或者Sheets[int index]第index个工作表.

110,539

社区成员

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

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

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