在本机上运行都是好的  但是放到服务器上就一直报这个错 数据库代码在本机和服务器上用的都是一样的 找了很多资料说是下标问题  但是在本机都是好的啊 有没有高手帮帮忙啊 整整3天了 没弄出来 是不是涉及到服务器的组件配置或者权限之类的 还请帮帮忙啊 因为只有在服务器上出错 小弟也不清楚 具体哪一行代码出错是新人 就这么点分儿了 还请帮帮忙啊

解决方案 »

  1.   

    这是代码
     Microsoft.Office.Interop.Excel.Application excel;
            Microsoft.Office.Interop.Excel._Workbook xBk;
            Microsoft.Office.Interop.Excel._Worksheet xSt;        int rowIndex = 1;
            int colIndex = 1;        excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            xBk = excel.Workbooks.Add(true);
            xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet;
            xSt.Name = string.Format("{0:yyyy-MM}", DateTime.Now);
            //取得列标题 
            foreach (DataColumn col in dt.Columns)
            {            excel.Cells[1, colIndex] = col.ColumnName;            //设置标题格式为居中对齐
                xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Font.Bold = true;
                xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
                xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Select();
                colIndex++;
            }
            //取得表格中的数据 
            foreach (DataRow row in dt.Rows)
            {
                rowIndex++;
                colIndex = 0;
                foreach (DataColumn col in dt.Columns)
                {
                    colIndex++;
                    if (col.DataType == System.Type.GetType("System.DateTime"))
                    {
                        excel.Cells[rowIndex, colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
                        xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
                    }
                    else
                    {
                        excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                    }
                }
            }        int rowSum = rowIndex;
            //设置报表表格为最适应宽度
            xSt.get_Range(excel.Cells[1, 1], excel.Cells[rowSum, colIndex]).Columns.AutoFit();        string filename = string.Format("{0:yyyy-MM}", DateTime.Now) + ".xls";
            excel.ActiveWorkbook.SaveAs(FilePath + filename, Missing.Value, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);        #region 结束Excel进程
            xBk.Close(null, null, null);
            excel.Workbooks.Close();
            excel.Quit();错误是
    [COMException (0x800a03ec): 异常来自 HRESULT:0x800A03EC]
       Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) +0
       Pages_Report_Storage_StorageReports.CreateExcel(DataTable dt, String FilePath) +2382
       Pages_Report_Storage_StorageReports.GetData() +2160
       Pages_Report_Storage_StorageReports.btnXls_Click(Object sender, EventArgs e) +5
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 
      

  2.   

    Microsoft.Office.Interop.Excel.Application excel;
      Microsoft.Office.Interop.Excel._Workbook xBk;
      Microsoft.Office.Interop.Excel._Worksheet xSt;服务器上有这些com吗???
      

  3.   

    围观 学习
    --reply by CSDN Study V1.0.0.3 (starts_2000)
      

  4.   

    Microsoft.Office.Interop.Excel.Application excel;
      Microsoft.Office.Interop.Excel._Workbook xBk;
      Microsoft.Office.Interop.Excel._Worksheet xSt;
    com版本是否和开发一致??版本不一致很容易出错的
      

  5.   

    下次速度
    --reply by CSDN Study V1.0.0.3 (starts_2000)
      

  6.   

      excel.ActiveWorkbook.SaveAs(FilePath + filename, Missing.Value, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);这句出错了,看看参数是否正确,版本是否一致
      

  7.   

    1:在服务器上安装office的Excel软件. 
    2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 
    3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 
    4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框 
    5:点击"标识"标签,选择"交互式用户" 
    6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限. 
    7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限. 
    这样,我们便配置好了相应的Excel的DCOM权限. 
    设下权限
      

  8.   


    版本都是excel2003 这些参数应该没问题啊 如果说那些组件服务器上有没有应该怎么才能查找出来有没有呢请教啊
      

  9.   

    首先确认你服务器上已经安装了Excel,如果安装了,那肯定是保存Excel的文件夹没有写的权限,设置下文件夹权限应该就可以了
      

  10.   


    我直接把excel保存在C盘根目录的 是要把C盘设置权限么 是设置给network service这个用户么 我在DCOM里面配置的就是network service用户