System.Runtime.InteropServices.COMException (0x800A03EC): 
Exception from HRESULT: 0x800A03EC
    at Microsoft.Office.Interop.Excel.WorkbookClass.Save()
    at ProductLineManager.INV.NextSumIOReport.SetExcel4DownLoad()
本地计算机VS调试和IIS都没问题,在服务器中出现该问题!object missing = Missing.Value;
                Application app = null;
                Workbook wb = null;
                Worksheet ws = null;
                //Range r = null;
                //
                app = new Microsoft.Office.Interop.Excel.Application();
                wb = app.Workbooks.Open(MapCopyPath, false, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
                // app.Visible = true;                //得到WorkSheet对象
                ws = (Worksheet)wb.Worksheets.get_Item(1);                for (int j = 1; j <= 6; j++)
                {
                    ws.Cells[1, j] = "";
                }
                ws.Cells[2, 1] = "厂号";
                ws.Cells[2, 2] = "内部部番";
                ws.Cells[2, 3] = "品名";
                ws.Cells[2, 4] = "供应商部番";
                ws.Cells[2, 5] = "仕入先";
                ws.Cells[2, 6] = "日期";
                System.Data.DataTable ds = new System.Data.DataTable();
                ds = getFAC();
                int r=0;
                if (ds.Rows.Count > 0)
                {
                    r = ds.Rows.Count;
                    for (int j = 0; j < r; j++)
                    {
                        ws.Cells[1, 7 + j] = ds.Rows[j]["FCT_ID"].ToString();
                        ws.Cells[2, 7 + j] = "未来库存";                   
                    }
                }
                int k = temp - 1;
                DateTime Mon;
                for (int j = 0; j <= k; j++)
                {
                    Range c = ws.get_Range(ws.Cells[1, 7 + r + j * 4], ws.Cells[1, 10 + r + j * 4]);
                    c.Merge(false);
                    Mon = GetWeekM(DateTime.Now.Date.AddDays(7 * t[j]).Year, WeekOfYear(DateTime.Now.Date.AddDays(7 * t[j])));
                    c.FormulaR1C1 = Mon.Year.ToString().Trim() + "/" + Mon.Month.ToString().Trim() + "/" + Mon.Day.ToString().Trim();
                    c.HorizontalAlignment=XlHAlign.xlHAlignCenter;
                    ws.Cells[2, 7 + r + j * 4] = "入库";
                    ws.Cells[2, 8 + r + j * 4] = "消耗";
                    ws.Cells[2, 9 + r + j * 4] = "未来库存";
                    ws.Cells[2, 10 + r + j * 4] = "状态";
                }
                wb.Save();
                using (DAO.ClsDB dao = new DAO.ClsDB())
                {
                    dt = dao.Sql4Select(databind(), null);
                    string[,] tp = new string[dt.Rows.Count, dt.Columns.Count];
                    for (int i1 = 0; i1 < dt.Rows.Count; i1++)
                    {
                        for (int i2 = 0; i2 < dt.Columns.Count; i2++)
                        {
                            tp[i1, i2] = dt.Rows[i1][i2].ToString();
                        }
                    }
                    Range c = ws.get_Range(ws.Cells[3, 1], ws.Cells[3 + dt.Rows.Count - 1, dt.Columns.Count]);
                    c.FormulaR1C1 = tp;                }
                //输出Excel文件并退出
                wb.Save();
                wb.Close(false,false, missing);
                app.Workbooks.Close();
                app.Application.Quit();
                app.Quit();
                ws = null;
                wb = null;
                app = null;

解决方案 »

  1.   

    要运行 32 位版本的 ASP.NET 2.0,
    1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。  
    2. 键入以下命令启用 32 位模式:  
    cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1  
    3. 键入以下命令,安装 ASP.NET 2.0(32 位)版本并在 IIS 根目录下安装脚本映射:  
    %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i  
    4. 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607(32 位)的状态设置为允许。 
      

  2.   

    workbook.save()在什么情况下会出错呢?
      

  3.   

    Microsoft Office Excel (0x800A03EC)
    Microsoft Office Excel不能打开或保存任何文件,因为没有足够的内存或硬盘空间.关掉你不需要的工作薄或程序可以使更多内存释放.
    从你所保存的硬盘中删除你不再需要的文件来释放更多空间.
     
    可能是你的C盘空间不够吧.
      

  4.   

    这个应该不会吧,服务器上C盘空间还有35个G呢,内存一般状态下是1个多G可用
      

  5.   

    temp文件夹看是否给了Users读写操作
      

  6.   

    不好意思,temp文件夹是指哪里的?
      

  7.   

    temp文件夹给了读写操作权限了,还是不行
      

  8.   

    参考下:http://topic.csdn.net/u/20101215/11/1fafc3dd-a0ab-4b64-9e29-d12bfd29bdfd.html