如果是web输出excel的问题可以去asp.net分区搜索一下,有很多的:)

解决方案 »

  1.   

    Excel是Microsoft公司的Office套件中的一种软件,他主要用来处理电子表格。Excel以界面友好、处理数据迅速等优点获得广大办公人员的欢迎。所以很多文档就以Excel的形式保存了下来。对于程序设计人员,在程序设计中,我们往往要访问Excel文件来获得数据。但由于Excel文件不是标准数据库,所以用程序语言来访问他就比较困难。  ASP.NET是Microsoft公司极力推荐的一个产品,作为.NET FrameWork框架中的一个重要组成部分,他主要用于Web设计。全新的设计理念、强大功能使得ASP.NET正在受到越来越多的程序设计人员的欢迎。也正是ASP.NET的强大的功能才使得访问Excel文档成为了一件相对简单的事情。下面就通过一个例子来具体说明ASP.NET是如何访问的Excel文档的。  一. 程序设计及运行环境  (1).Windows 2000 Professional  (2)..Net Framework SDK Beta 2  (3).Microsoft Access Data Component 2.6(MADC2.6)  二. 具体的设计思路  (1).获得要访问的Excel文件名称  (2).读出Excel文件的内容  (3).用DataGrid格式显示出来  下面就一些关键的步骤来具体说明。  三. 程序设计的关键步骤  (1).为了方便,我们就把Excel文件假定在C盘的根目录,名称为test.xls。  (2).为了读取Excel文件,我们必须了解一个名称空间(NameSpace)--System.Data.Oledb。System.Data.Oledb中有三个对象分别是OleDbConnection,OleDbCommand,OledbDataAdapter。我们就是通过他们来访问Excel文件的。  i> OleDbConnection对象主要是提供连接方式。  ii> OleDbCommand对象提供对目标的具体操作方法。  iii>OledbDataAdapter对象是对对象进行不同操作后的返回数据集。  为了读取C盘的test.xls只要以下语句就可以完成:Dim myOleDbConnection As OleDbConnection = New 
       OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=c:\test.xls;" & _
       "Extended Properties=""Excel 8.0;""")
    Dim myOleDbCommand As OleDbCommand = New OleDbCommand("SELECT * 
       FROM [Sheet1$]",myOleDbConnection) '如果你想读出Sheet2的内容
       ,把Sheet1$改成Sheet2$即可
    Dim myData As OledbDataAdapter= New 
       OledbDataAdapter(myOleDbCommand)   (3).读出Excel文件内容后,就要把他用DataGrid显示出来。为了显示,还要用另外一个名称空间--System.Data。他里面有个对象DataSet,他可以和DataGrid进行数据帮定,从而以DataGrid形式显示数据。而此时读出的数据集并不是以对象DataSet来表现的,这就需要进行转换,好在OledbDataAdapter对象提供了一个方法--Fill,可以完成转换。具体程序如下:Dim myDataset As New DataSet()
    myData.Fill(myDataset) 
    '完成从OledbDataAdapter对象到DataSet的转换
    DataGrid1.DataSource = myDataset.Tables(0).DefaultView
    DataGrid1.DataBind() '完成数据帮定,显示数据   四. 具体的源代码:<%@ Page Language="VB" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.Oledb" %> 
    <script language="VB" runat="server">
    Sub Page_Load(sender As Object, e As EventArgs)
    Dim myDataset As New DataSet()
    Dim myOleDbConnection As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=c:\2.xls;" & _
    "Extended Properties=""Excel 8.0;""")
    Dim myOleDbCommand As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]",myOleDbConnection)
    Dim myData As OledbDataAdapter= New OledbDataAdapter(myOleDbCommand)myData.Fill(myDataset)DataGrid1.DataSource = myDataset.Tables(0).DefaultView
    DataGrid1.DataBind()
    End Sub
    </script><html>
    <head></head>
    <body>
    <asp:Label id="L1" runat="server">读取C盘根目录下的test.xls文件,并以DataGrid的形式显示出来</asp:label>
    <asp:DataGrid id=DataGrid1 runat="server"/>
    </body>
    </html>   五. 总结  至此一个读取Excel文件的ASP.NET程序就全部完成了,如果你的机器达到以上提到的运行环境,那就建立一个指向此ASP.NET程序的Web虚拟目录,随便拷贝一个Excel文件到C盘的根目录,在浏览器运行一下程序,你就可以看到Excel文件内容了。
      

  2.   

    http://www.wimdows.net/articles/article.aspx?aid=15源代码下载后能用,
    但我照样做时总在保存数据时出错。
      

  3.   

    icerose(冰玫瑰) 这位JJ,你给的是读取,呵呵,这个我已经实现了,我现在想要写入!
      

  4.   

    int strmon,stryear;
    stryear=int.Parse(this.TextBox7.Text.Substring(0,4));
    strmon=int.Parse(this.TextBox7.Text.Substring(5,2));
    Excel.Application ExcelApp=new Excel.ApplicationClass();
    Excel.Workbook ExcelWorkBook=ExcelApp.Application.Workbooks.Add(true);
    Excel.Worksheet ExcelWorkSheet=(Excel.Worksheet)ExcelWorkBook.Worksheets[1];

    if (ds.Tables["tablevalue"].Rows.Count!=0)
    {  ds.Clear(); ds.Tables["tablevalue"].Columns.Clear();  }
    strsql="select model as 机型 ,jh as 机号 ,convert(varchar(20),kxdate,111) as 开箱日期 ,convert(varchar(20),xldate,111) as 修理日期,zz as 症状,yy as 修理原因,fsd as 备注  from t_saleh "
    + " where  year(xldate)='"+ stryear +"' and month(xldate)='"+strmon +"' order by model asc  ";
    com=new SqlDataAdapter(strsql,con);
    com.Fill(ds,"tablevalue");
    int rowcount,columncount;
    rowcount=(int)ds.Tables["tablevalue"].Rows.Count;
    columncount=(int)ds.Tables["tablevalue"].Columns.Count;
             //开始填充
    int ii,jj;
    ExcelApp.Cells[1,1]="*******电子有限公司";
    ExcelApp.Cells[2,1]=stryear + "年" + strmon +"月度售前产品维修登记表";
    ExcelApp.Cells[3,1]="机型";
    ExcelApp.Cells[3,2]="机号";
    ExcelApp.Cells[3,3]="开箱日期";
    ExcelApp.Cells[3,4]="修理日期";
    ExcelApp.Cells[3,5]="症状";
    ExcelApp.Cells[3,6]="原因/修理";
    ExcelApp.Cells[3,7]="备注";
    for ( ii=0;ii<rowcount;ii++)
    {
    for ( jj=0;jj<columncount;jj++)
    { ExcelApp.Cells[ii+4,jj+1]=ds.Tables["tablevalue"].Rows[ii][jj].ToString().Trim(); }
    }
    ExcelWorkBook.SaveCopyAs(pathsave); ExcelWorkSheet=null;
    ExcelWorkBook.Close(false,null,null);
    ExcelApp.Quit();
    System.GC.Collect();以上程序要引用
       EXcel
    office2000
    win2000 prof下运行通过.
      

  5.   

    http://www.yesky.com/20020313/1601534.shtml
      

  6.   

    楼上的兄台,我是要webfrom,呵呵,你给的是winform的文章,不过还是谢谢你。
      

  7.   

    刚刚解决
    很简单,是我看过最简单的解决方法,你试试看
    private void Button1_Click(object sender, System.EventArgs e)
    {
    //this.BindDataGrid();      
    Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile"); 
    Response.Charset = "UTF-8"; 
    Response.ContentType = "application/vnd.ms-excel"; 
    //Remove the charset from the Content-Type header. 
    Response.Charset = ""; 
    //Turn off the view state. 
    EnableViewState= false; 
    System.IO.StringWriter tw = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); 
    //Get the HTML for the control. 
    DG.RenderControl(hw); 
    //Write the HTML back to the browser. 
    Response.Write(tw.ToString()); 
    //End the response. 
    Response.End(); 
    }
      

  8.   

    操作 Excel 有下列方法:
    1。调用 Excel OLE ,这个方法需要目标机上安装有 Excel 程序,并且,速度,并发性都不理想2。使用 Office Web Component 部件,这个方法适用于 web 程序,支持并发,但效率仍然不高。3。使用 Crystal Report 的 Export 方法,可以生成本地(native)文件,速度,并发性都十分理想,但 CR 9 以前的版本对 Excel 格式的输出存在一些问题,输出结果与设计目标不十分一致4。迄今为止最优秀的解决方案是 SoftArtisans 公司出品的 ExcelWriter 部件,可生成 Native Excel 文件,不需要安装 Excel 程序,速度快,支持并发用户,适用于 winform 和 webform ,但价格非常昂贵。推荐使用 Crystal Report 的 .NET 免费版本
      

  9.   

    未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。 若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。源错误: 
    行 125: private void export2excel3_Click(object sender, System.EventArgs e)
    行 126: {
    行 127: Excel.Application excel = new Excel.Application ( ) ;
    行 128: excel.Application.Workbooks.Add ( true ) ;
    行 129: excel.Visible = true ;