我的需求如下:
有几个现成的具有固定格式的Excel空白表格,我准备放在服务器网站的指定根目录中。通过客户端访问该网站时,希望能将计算后得到的数据自动分别填写入这几个Excel表格,然后供客户端存档、打印之用。当有多人访问网站时,每次都可以先获取空白表格,然后填入数据,而不能张三先将空白的Excel表格填入了数据,李四要获取Excel表格填写数据时得到的确实张三已填入数据的Excel表格,也就是说,大家填写Excel表格时面对的都是空白的表格,彼此互不干扰。
请教各位该如何来实现此需求呢?谢谢!

解决方案 »

  1.   

    把空白Excel当数据源,把计算的数据填充进去(不要更新,一更新就把空白Excel写进去数据了),另外保存。
      

  2.   

    可以参考下面的简单写法:
    中间的missing参数值可以查资料修改        Microsoft.Office.Interop.Excel.Application app = null;
            Excel.Workbook workbook = null;
            Excel.Worksheet worksheet = null;
            protected object missing = Missing.Value;
            try
            {
                String templatePath = "你的xls文件地址";            //创建一个Application对象并使其可见
                app = new Excel.ApplicationClass();
                app.Visible = true;            //打开模板文件,得到WorkBook对象
                workbook = app.Workbooks.Open(templatePath, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing);            //得到WorkSheet对象
                worksheet = (Excel.Worksheet)workbook.Sheets[1];            for (int i = 1; i <= 50; i++)
                {
                    //在这里对每一个格子进行填充
                    worksheet.Cells[i, 4] = 2;
                }            //打印预览
                worksheet.PrintPreview(missing);
            }
            finally
            {
                //垃圾收集
                workbook.Close(false, missing, missing);
                app.Workbooks.Close();
                app.Quit();            System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);            app = null;
                worksheet = null;
                workbook = null;            //强行销毁
                 GC.Collect();
            }
      

  3.   

    在4楼的基础上在补加一些
    http://blog.csdn.net/zjclugger/archive/2008/04/02/2245559.aspx
    (在.net中如何关闭Excel进程)
    事实证明,即使按上述方法做了也有不能关闭excel的情况,不过现在大多情况下都使用这类方法,大家继续讨论啦
      

  4.   

    第一,不需要一张空白的excel文件把,如果是文件的话你在读取过程中其他人是无权访问修改的,你还不如直接就写一个方法去定义并输出这个文件;
    第二,浏览打印?在网络上进行吗?别人没有安装excel怎么办呢?你怎么去打开别人的程序来查看呢?
    像这样的模块一般都是设计成两块的吧,一块是网上的浏览数据,怎么表现的问题;一块是怎么使用程序生成文件流输出提供下载;至于生成excel文件上面有事例代码了,其实比较简单的办法就是动态生成html表格存成xls就可以了