操作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