RT,DataSet可以获得多个table,例如ds.Tabels[0] Tables[1]..等等,现在希望能按序号导出到一个excel文件的不同sheet里面,不知道如何操作?
样式可以不用考虑,希望能用比较简单的方法实现。希望能给出关键实现代码,谢谢。

解决方案 »

  1.   

     Excel.Application appExcel;            appExcel = new Excel.Application();
                Excel.Workbook workbookData;
                Excel.Worksheet worksheetData;
                workbookData = appExcel.Workbooks.Add(Missing.Value);            for (int k = 0; k < ds.Tables.Count; k++)
                {                worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);                if (ds.Tables[k] != null)
                    {
                        for (int i = 0; i < ds.Tables[k].Rows.Count; i++)
                        {
                            for (int j = 0; j < ds.Tables[k].Columns.Count; j++)
                            {
                                worksheetData.Cells[i + 1, j + 1] = ds.Tables[k].Rows[i][j].ToString();
                            }
                        }
                    }                worksheetData.Columns.EntireColumn.AutoFit();
                    workbookData.Saved = true;
                }                      string strFileName =  " 1.xls";
                workbookData.SaveCopyAs(strFileName);            // 关掉内存中的进程
                appExcel.Quit();
      

  2.   

    请问楼上,workbookData = appExcel.Workbooks.Add(Missing.Value); 
    这个Missing.Value是什么意思?好像不能自动提示出来?我的环境是vs.net 2003
      

  3.   

    请问运行的时候提示 appExcel = new Excel.Application(); 
    错误页面提示 拒绝访问
      

  4.   

    需要添加参照  在com组件中将Microsoft Excel 9.0 Object Library添加到工程中才可以使用  new Excel.Application(); 
      

  5.   

    不提倡直接遍历cell worksheetData.Cells[i + 1, j + 1] = ds.Tables[k].Rows[i][j].ToString(); 
    这样速度很慢Excel.Range myRange = myWorkSheet.get_Range("A1", "H1");
    int rowsCount = dt.Rows.Count;
    int columnsCount = dt.Columns.Count;
    myRange = myRange.get_Resize(rowsCount, columnsCount);
    object[,] objData = new Object[rowsCount, columnsCount];
    int rowIndex = 0;
    int colIndex = 0;
    foreach (DataRow dr in dt.Rows)
    {
          colIndex = 0;
          foreach (DataColumn dc in dt.Columns)
           {
               objData[rowIndex, colIndex] = "'" + dr[dc.ColumnName].ToString();
              colIndex++;
           }
           rowIndex++;
    }
    myRange.Value2 = objData;
      

  6.   

    http://www.baidu.com/s?ie=gb2312&bs=Missing.value&sr=&z=&cl=3&f=8&wd=Excel.Application+%BE%DC%BE%F8%B7%C3%CE%CA&ct=0
      

  7.   


    我浏览的时候找不到Microsoft Excel 9.0 Object Library,只有 Microsoft Office 9.0 Object Library
    我安装了可是还是不行,不能自动带出Excel.Application(); 
    我的OFFICE是2003
      

  8.   

    Office2003是 Microsoft Excel 11.0 Object Library
    是在添加引用的Com下如果没有,考虑重装安装一遍Office吧。
      

  9.   

    我引用了11.0这个组件,可是在vs2003下,不自动提示 Excel.Application(); 
    ,我直接写上去运行的话又报拒绝访问的问题。
      

  10.   

    using Excel=Microsoft.Office.Interop.Excel;
      

  11.   

    感谢 lsj_zrp 参考你的代码,基本能实现我的需求,但还有两个问题想请教一下:1,生成的excel文件包含三个默认的空白sheet,即sheet1,2,3,如何删除指定的sheet?2,保存的文件路径可否弹出另存为对话框选择?
      

  12.   

    非常感谢,不知道有没有完整的demo看一下,这个代码段我并不是很理解