.net导出数据到Excel,怎么设置一个工作簿中工作表的个数

wojiaocww 2010-11-10 10:38:24
代码如下:
public bool DataSetToExcel(string ptcid, string fileName)
{
//建立Excel对象
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
object oMissing = System.Reflection.Missing.Value;

oExcel.Workbooks.Add(oMissing);
Excel.Workbook oBook = oExcel.Workbooks[1];


//获得3级分类下的4级分类
DataSet dsD = proC.GetProDName(ptcid);
DataTable dtD = dsD.Tables[0];
for (int i = 0; i < dtD.Rows.Count; i++)
{
Excel.Worksheet oSheet = (Excel.Worksheet)oBook.Sheets[i + 1];
//oBook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//Excel.Worksheet oSheet = (Excel.Worksheet)oBook.Sheets[oBook.Sheets.Count];
oSheet.Name = dtD.Rows[i]["ptdname"].ToString();

===========================
}
运行后,提示红色的部分错误:
Invalid index. (异常来自 HRESULT:0x8002000B (DISP_E_BADINDEX))
调试以后发现是因为oExcel.Sheets.Count默认为3,如果循环次数>3,就提示错误了,
请问一下,红色的部分应该怎么改正?
谢谢!
...全文
280 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wojiaocww 2010-11-10
  • 打赏
  • 举报
回复
晕,图片没了,说一下吧,上面的代码会生成一些多余的工作表
wojiaocww 2010-11-10
  • 打赏
  • 举报
回复

变成这样的了,前面几个都是没用的、
wojiaocww 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 woyaoxueit 的回复:]

这还想不明白,如果大于3,超出默认工作表的个数,你先要判断一下,大于3时就用代码添加一个工作表
[/Quote]

for (int i = 0; i < dtD.Rows.Count; i++)
{
Excel.Worksheet oSheet;
if (i < 3)
{
oSheet = (Excel.Worksheet)oBook.Sheets[i + 1];
}
else
{
oBook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
oSheet = (Excel.Worksheet)oBook.Sheets[oBook.Sheets.Count + 1];
}
}
zrrsj 2010-11-10
  • 打赏
  • 举报
回复
如果大于3,超出默认工作表的个数,你先要判断一下,大于3时就用代码添加一个工作表
wojiaocww 2010-11-10
  • 打赏
  • 举报
回复
写了,oBook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
可是还是不行,等下我把错误贴出来
wuhan_dotnet 2010-11-10
  • 打赏
  • 举报
回复
其实Excel里的表明规则是Sheet,Sheet1,Sheet2的当i=0时对应的应该是Sheet表
woyaoxueit 2010-11-10
  • 打赏
  • 举报
回复
这还想不明白,如果大于3,超出默认工作表的个数,你先要判断一下,大于3时就用代码添加一个工作表

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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