操作系统是2003,OFFICE是2000如果在VS2005自带的调试环境中运行的话
一切正常,可以输出内容到EXCEL中但是如果是发布在IIS6.0里的话
EXCEL的窗口弹不出来,alt+tab也看不到,但是任务管理器里面可以看到一个EXCEL进程在运行这是什么问题,请赐教,DCOM的设置已经赋予EVERYONE所有权限代码如下:
using ....
using .....
using Excel;
 #region 输出EXCEL文件
    public static void OutputExcelFile(DataView dv, string str,int MediaCount)
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
        Excel.Application excel;
        int rowIndex = 4;
        int colIndex = 1;        Excel._Workbook xBk;
        Excel._Worksheet xSt;        excel = new Excel.ApplicationClass(); ;
        xBk = excel.Workbooks.Add(true);
        xSt = (Excel._Worksheet)xBk.ActiveSheet;        //
        //取得标题
        //
        foreach (DataColumn col in dv.Table.Columns)
        {
            colIndex++;
            excel.Cells[4, colIndex] = col.ColumnName;
            xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4, colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
        }        //
        //取得表格中的数据
        //
        foreach (DataRowView row in dv)
        {
            rowIndex++;
            colIndex = 1;
            foreach (DataColumn col in dv.Table.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 = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
                }
                else
                    if (col.DataType == System.Type.GetType("System.String"))
                    {
                        excel.Cells[rowIndex, colIndex] = "'" + row[col.ColumnName].ToString();
                        xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
                    }
                    else
                    {
                        excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                    }
            }
        }
        //
        //加载一个合计行
        //
        int rowSum = rowIndex + 1;
        int colSum = 2;
        excel.Cells[rowSum, 2] = "总计"+MediaCount+"个不同媒体";
        xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum, 2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
        //
        //设置选中的部分的颜色
        //
        xSt.get_Range(excel.Cells[rowSum, colSum], excel.Cells[rowSum, colIndex]).Select();
        xSt.get_Range(excel.Cells[rowSum, colSum], excel.Cells[rowSum, colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
        //
        //取得整个报表的标题
        //
        excel.Cells[2, 2] = str;
        //
        //设置整个报表的标题格式
        //
        xSt.get_Range(excel.Cells[2, 2], excel.Cells[2, 2]).Font.Bold = true;
        xSt.get_Range(excel.Cells[2, 2], excel.Cells[2, 2]).Font.Size = 22;
        //
        //设置报表表格为最适应宽度
        //
        xSt.get_Range(excel.Cells[4, 2], excel.Cells[rowSum, colIndex]).Select();
        xSt.get_Range(excel.Cells[4, 2], excel.Cells[rowSum, colIndex]).Columns.AutoFit();
        //
        //设置整个报表的标题为跨列居中
        //
        xSt.get_Range(excel.Cells[2, 2], excel.Cells[2, colIndex]).Select();
        xSt.get_Range(excel.Cells[2, 2], excel.Cells[2, colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
        //
        //绘制边框
        //
        xSt.get_Range(excel.Cells[4, 2], excel.Cells[rowSum, colIndex]).Borders.LineStyle = 1;
        xSt.get_Range(excel.Cells[4, 2], excel.Cells[rowSum, 2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗
        xSt.get_Range(excel.Cells[4, 2], excel.Cells[4, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加粗
        xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[rowSum, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗
        xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗
        //
        //显示效果
        //
        excel.Visible = true;
    }
    #endregion

解决方案 »

  1.   

    看看下现这个!
    http://linfuguo.cnblogs.com/archive/2006/03/23/357155.html
      

  2.   

    excel.Visible = true;
    把你的这句提前至
            excel = new Excel.ApplicationClass(); ;
    下面!
      

  3.   

    提前了excel.Visible=true;
    也不行.....:-(
      

  4.   

    到底能不能在服务器端操作客户端的EXCEL啊.....卡住2天了
      

  5.   

    但是客户端的EXCEL进程确实被服务器端程序启动了,只是好像得不到控制权
    是不是哪个权限还有问题,或者是IIS的配置?
      

  6.   

    coolduck,你的思路就有问题,你想通过B/S来控制客户端,明显有违B/S核心思想!