日期:2014-05-17  浏览次数:20399 次

ASP.NET 导出EXCEL 需要使用模板或是合并单元格 服务器不能安装office
如题
服务器上不能安装Office,所以不能调用com组件,除了做个winform来获取数据本地生成外,还有什么办法。
请给出详细代码或连接网页地址,谢谢

------解决方案--------------------
用水晶报表,但是不知道服务器没安装office导出会不会有影响
应该没关系

或者用table布局。
------解决方案--------------------
不装office那就把Interop.Excel.dll Interop.Office.dll Interop.VBIDE.dll这3个dll引用到项目里去。用这3个,就可以创建EXCEL对象;再调用相关方法,实现对excel的操作

至于模板,跟装不装office就没关系了,就把它当做一般性文档,来做文件的复制、移动、删除操作就是了

附个例子
下面是一个简单的例子,打开一个定义好的Excel文件,这个文件是作为报表的模板,然后向模板的指定格子里填充数据,形成一个报表,在web方式下可以按照指定的命名方式在服务器上生成一个
excel文件,之后传送到客户端,由客户端启动excel进行打印。
 
Excel.Application m_objExcel = null;
Excel._Workbook m_objBook = null;
Excel.Sheets m_objSheets = null;
Excel._Worksheet m_objSheet = null;
Excel.Range m_objRange = null;

object m_objOpt = System.Reflection.Missing.Value;
try
{
m_objExcel = new Excel.Application();
m_objBook = m_objExcel.Workbooks.Open("z:\\Book1.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
 
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
 
 
string[] info = new string[5] { "Cure", "26", "dahuzizyd.cnblogs.com", "汉", "按时 ?放奥斯丁奥斯丁非是否奥斯丁非" };
m_objRange = m_objSheet.get_Range("B1", m_objOpt);
m_objRange.Value = info[0];
m_objRange = m_objSheet.get_Range("E1", m_objOpt);
m_objRange.Value = info[1];
m_objRange = m_objSheet.get_Range("B2", m_objOpt);
m_objRange.Value = info[2];
m_objRange = m_objSheet.get_Range("E2", m_objOpt);
m_objRange.Value = info[3];
m_objRange = m_objSheet.get_Range("A3", m_objOpt);
m_objRange.Value = info[4];

m_objExcel.DisplayAlerts = false;
 
m_objBook.SaveAs("z:\\Book2.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
 
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);
m_objExcel.Workbooks.Close();
m_objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
m_objBook = null;
m_objExcel = null;
GC.Collect();
}
------解决方案--------------------
探讨
用table布局怎么弄。请详细点。

------解决方案--------------------
你直接生成一个html表格table,格式和excel一样,然后把这个页面导出成excel文件格式就行了