200分,求生成excel的一些解决方案
我现在需要做这样一个软件,自动生成Excel,现在我有几个问题,请大家帮忙解答一下
1.生成的问题:我在网上找了一下,基本就是“使用Excel的com组件生成”,“使用第三方直接生成二进制Excel文件”,“生成Excel 2003后支持的XML文件”,我需要生成二进制文件,不知道使用COM和第三方组件,哪个比较好一点?生成的文件将会很复杂。还有一点就是,如果使用了Excel自带的组件,那么在发行后,对客户端安装的Excel有没有要求,比如我开发用的是2003,而对方装了2005就不能生成了?
2.模板的问题:当一个用户设计好Excel生成样式后,其他用户只要导入这个“模板”文件,就能生成一样的Excel文件(不包含数据),这点一般是怎么做的?我现在的想法是把模式存为XML,到时候解析还原。
3.合成的问题:有好几个一样的Excel文件,有没有快速的方法,合并成一个文件?
分晚上可以加了就加上
------解决方案--------------------
用excel的com,什么复杂的东西都可以实现(只要excel可以实现的)
你用2003的,客户就算装的是2007也是可以用的.
第三方的没用过..看看其它人怎么说.
------解决方案--------------------
------解决方案--------------------
添加引用 :
Microsoft.Office.Tools.Excel
同时添加COM:EXCEL.EXE和EXCEL.DLL.....EXCEL.DLL的生成方法网上很多..
关于Microsoft.Office.Tools.Excel建议楼主去查MSDN.你会发现操作EXCEL原来如此简单.
------解决方案--------------------
建议LZ使用oledb进行操作,这样可以摆脱对office的依赖,就算客户机没有安装office也可以进行导出!
例子:
  1.使用oledbconnection打开连接,连接语句 "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=No';Data Source= "+路径;
2.使用sql语句创建工作表:create Table [" + 工作表名称+ "](["+列名称+"]"+类型(一般为nvarchar(200))+")";执行
3.使用sql的insert语句进行插入操作:insert into [" + 工作表名称 + "]("+列名称+") values("+值+");执行
ok了
------解决方案--------------------可以考虑做成csv格式的文件,字段用,隔开就可以了。
------解决方案--------------------
1。使用COM 调用EXCEL 网上资料比较多
2。加载模板 就相当于读取一个EXCEL文件
3。不知道你合并的具体要求,简单处理 是把所有EXCEL文件中的sheet对象集合在一个新的EXCEL文件中
------解决方案--------------------
C# code
 
  
 		private void Button2_Click(object sender, System.EventArgs e) 
 		{ 
 			if (dlFS.SelectedValue=="0")  
 			{ 
  
 				string s ; 
 				string mycgmxid="0" ; 
 				 
 				for(int i = 0;i <= dgDetail.Items.Count - 1;i++) 
 				{ 
  
 					if (((System.Web.UI.WebControls.CheckBox)dgDetail.Items[i].FindControl("cbqx")).Checked ) 
 					{ 
 						 mycgmxid=mycgmxid+","+dgDetail.Items[i].Cells[0].Text ; 
   
 					} 
 				}			 
  
 				DataSet myds ; 
 				DataGrid mydg =new DataGrid()  ; 
  
 				s = "XXXXXXXXXXXXXXXXXXXX"; 
  
  
 				myds = Wefeel.Data.Sql.GetDataSet (s) ; 
 				mydg.DataSource = myds ; 
 				mydg.DataBind() ; 
 			 
  
 				mPublic.ExportToExcel_dg(Page, mydg) ; 
  
 			} 
  
  
 				Excel.Application  oExcel =new  Excel.ApplicationClass(); 
 				Excel.Workbooks oBooks ; 
 				Excel.Workbook oBook; 
  
  
 				Excel.Sheets  oSheets ; 
        
 				Excel.Range oCells ; 
 				 
 				string sFile , sTemplate; 
  
 				sFile = Server.MapPath(Request.ApplicationPath) + "\\purchase\\cgd.xls" ; 
 				//'定义模版文件  
 				sTemplate = Server.MapPath(Request.ApplicationPath) + "\\purchase\\cgdtmp.xls"; 
 				oExcel.Visible = false; 
 				oExcel.DisplayAlerts = false; 
 				//'定义一个新的工作簿  
 				oBooks = oExcel.Workbooks; 
  
 				//oBook.Open(Server.MapPath(Request.ApplicationPath) + "\\purchase\\cgdtmp.xls"); 
  
 				oBook = oBooks.Add (sTemplate); 
  
 				oSheets = oBook.Worksheets; 
 				 
 				Excel.Worksheet oSheet ;