日期:2014-05-19  浏览次数:20499 次

操作excel的问题,高手请进
分乃身外之物,帮人才是积善

问题是这样的。web开发里用excel做报表。
using   Office   =   Microsoft.Office.Core;
using   Excel   =   Microsoft.Office.Interop.Excel;

Excel.Application   excel   =   null;
Excel.Workbook   wb   =   null;
object             missing             =   System.Reflection.Missing.Value;

excel   =   new   Excel.Application();
wb   =   excel.Workbooks.Open( "c:\\test.xls ",   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing,   missing);
excel.Visible   =   true;

打开一个编排好格式的模版excel。向其中一些空单元格填上数据,然后输出到客户端。
我想知道怎么输出到客户端?
我设想获取到文件流,写到客户端就行。但是用com打开的文件怎么获取流模式呢?
高手指点一下。谢谢

------解决方案--------------------
打开之后,调用模版excel的VBA的main入口即可
objExcel.Run( "main ", sXml,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

objWork.SaveAs(FilePath,Excel.XlFileFormat.xlWorkbookNormal,null,null,false,false,Excel.XlSaveAsAccessMode.xlExclusive ,false,false,null,null);
objWork.Close(null,null,null);


------解决方案--------------------

------解决方案--------------------

------解决方案--------------------
帮顶.
------解决方案--------------------
保存成一个文件,然后重定向到这个文件,客户应该会收到一个下载窗口,
点击打开就行了。
------解决方案--------------------
response.writefile可以了

然后你需要设置得content文件格式, 和保存格式
------解决方案--------------------
C#操作EXCEL有很多麻烦的情况,比如密码啦,什么的!
如果要想把EXCEL里的内容输入到客户端,只能在客户端的下载窗口打开,或保存!就算写文件流,也是一样的效果!
如果不想那么打开的话,可以用datagrid来显示数据(不过效果不太好,尤其是在sheet多了的情况下),如果用这样的方示的话,可以把EXCEl作为一个数据库,然后DateBind就行了
最好的方法是在用户输入数据之后把这个EXCEL表在服务器保存,一个以EXCEL表的方式保存(方便以后使用),另一个保存为htm的方式,在向用户输出的时侯直接把URL转到这个保存方式为htm的EXCEL表,显示的时侯就像一个网页那样了,而不会有下载的那个提示!
我当初操作的时侯记得有一个SaveAs的方法是可以保存为HTM格式的文件的!
------解决方案--------------------
代码找到了!也给你!
打开和处理部分不多说了
book.SaveAs(html_filename,Excel.XlFileFormat.xlHtml,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Excel.XlSaveAsAccessMode.xlNoChange,Type.Missing,Type.Missing,Type.Missing,Type.Missing);

需要注意两个参数,一个是Excel.XlFileFormat.xlHtml,一个是Excel.XlSaveAsAccessMode.xlNoChange
参数如果传递错误通常会引发一个COMException,说 "Exception from HRESULT: 0x800A03EC. "

------解决方案--------------------
你的意思是不是要导出Excel??
------解决方案--------------------
学习,正要解决类似问题...
------解决方案--------------------
如果你的报表格式变化不大,你可以不用EXCEL组件打开,直接定义一个符合格式的XML文件,把每次取得的数据和该格式文件合并,以EXCEL的格式把该串输出到客户端,就会出现下载/保存对话框,服务器无须缓存,比这样还要快

我以前都这样做,思路你可以看一下这:
http://blog.csdn.net/honkerhero/archive/2007/03/14/1528850.aspx