我后台上传了一个Excel文档,前台需要在网页的固定位置将这个Excel文档的内容显示出来(网页上还有其它内容,Excel在网页上只占一小块地方),aps.net(C#)该怎么写?

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=C673E2CD-3F1E-4919-8CE0-D69B894A0599
      

  2.   

    你的excel文件存在什么地方?磁盘或数据库,你可以通过iframe src="你文件的地址或者Response流输出文件的地址"来显示。
      

  3.   

    我的Excel存在磁盘上,数据库中只存一个文件名,可以写出具体的代码吗?
      

  4.   

    孟大哥,按你上面所说的方法去做,读出来的数据与Excel里还是有区别的,例如Excel里面的颜色到网页中后就没有了,还有一些格子都变了,有没有更好的办法?
      

  5.   

    直接下载到在客户端打开就是了。web处理这些个东西就有点赶鸭子上架的感觉。
      

  6.   

    http://renyu732.cnblogs.com/archive/2005/06/15/174866.html
      

  7.   

    STR_CNN="Provider=Microsoft.Jet.OleDb.4.0;Data Source=myExcelFie.xls; Extended Properties=Excel 8.0;"
    System.data.OleDb.OleDbConnection myCnn=New OleDbConnection(STR_CNN);
    myCnn.Open();
    ....
    Do want you do~~~~~
      

  8.   

    还是没有出来满意的答案,上面的所有做法都与孟子E章一样。问题还是输出到网页后与本来的Excel表里面有一定的区别(没了颜色,有的格子变了)
      

  9.   

    //通过DataSet导出
    public void CreateExcel(DataSet ds,string FileName) 

    HttpResponse resp; 
    resp = Page.Response; 
    resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
    resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); 
    string colHeaders= "", ls_item=""; 
    int i=0; 
    //定义表对象与行对像,同时用DataSet对其值进行初始化 
    DataTable dt=ds.Tables[0]; 
    DataRow[] myRow=dt.Select("");  
    //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
    for(i=0;i<dt.Columns.Count-1;i++)
    colHeaders+=dt.Columns[i].Caption.ToString()+"\t"; 
    colHeaders +=dt.Columns[i].Caption.ToString() +"\n"; 
    //向HTTP输出流中写入取得的数据信息 
    resp.Write(colHeaders); 
    //逐行处理数据 
    foreach(DataRow row in myRow) 

    //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
    for(i=0;i<dt.Columns.Count-1;i++)
    ls_item +=row[i].ToString() + "\t"; 
    ls_item += row[i].ToString() +"\n"; 
    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
    resp.Write(ls_item); 
    ls_item=""; 
    }  //写缓冲区中的数据到HTTP头文件中 
    resp.End(); 
    }
    //通过DataGrid导出
    public void ToExcel(System.Web.UI.Control ctl) 

    HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls"); 
    HttpContext.Current.Response.Charset ="UTF-8"; 
    HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; 
    HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 
    ctl.Page.EnableViewState =false; 
    System.IO.StringWriter tw = new System.IO.StringWriter() ; 
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); 
    ctl.RenderControl(hw); 
    HttpContext.Current.Response.Write(tw.ToString()); 
    HttpContext.Current.Response.End(); 

      

  10.   

    check it out
    http://azamsharp.net/DataGridExport.htm
      

  11.   

    楼上的这个例子是将DataGrid数据导入Excel吧,我要的是把Excel输出,而且想按原格式
      

  12.   

    对Excel的操作可以分为两种方式:
    1.将Excel看成一中OleDb数据源,用ADO.NET操作 
    http://dotnet.aspx.cc/ShowDetail.aspx?id=C673E2CD-3F1E-4919-8CE0-D69B894A0599
    2.用一些第三方的操作Excel 的控件来实现。比如Office自带的com组建包(叫什么名字记不太清楚了)
      

  13.   

    楼上说的第一种方式我试过了,但不能按Excel表格里的格式一模一样输出,咋办咋办?
      

  14.   

    楼主你错了,不能什么东西都按照客户说的算,web方式显示100%一样的excel是不可能的!你要和他们协商更改需求。有一些第三方的web控件可以实现大部分的近似模拟excel,包括文字,格式,背景色之类,但是仍然不支持图片!就是说你excel里插入图片,转过来就看不见了,目前所有的网页显示excel的功能都不支持图片的,所以你要完全达到要求几乎没有可能!
      

  15.   

    把excel文件另存为网页文件再上传,在页面上用iframe显示此文件
      

  16.   

    做个活动连接,
    直接用excel做出来,导出保存为。htm文件就行了
      

  17.   

    string ext = "";
    if (.FileName.ToUpper().EndsWith(".XLS"))ext = ".XLS";
    else return;
      

  18.   

    string ext = "";
    if (控件.FileName.ToUpper().EndsWith(".XLS"))ext = ".XLS";
    else return;
      

  19.   

    hgamezoom(xiao11) 
    可以介绍一下那个第三方控件吗,或给我提供一些参考资料。。谢谢
      

  20.   

    导出保存为html,再上传,肯定不是个好办法
      

  21.   

    public DataSet ExcelToDS(string Path)
      {
       string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
       OleDbConnection conn = new OleDbConnection(strConn);
       conn.Open();  
       string strExcel = "";   
       OleDbDataAdapter myCommand = null;
       DataSet ds = null;
       strExcel="select * from [sheet1$]";
       myCommand = new OleDbDataAdapter(strExcel, strConn);
       ds = new DataSet();
       myCommand.Fill(ds,"table1");   
       return ds;
      }
    /// <summary>
      /// 写入Excel文档
      /// </summary>
      /// <param name="Path">文件名称</param>
      public bool SaveFP2toExcel(string Path)
      {
       try
       {
        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        conn.Open();  
        System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
        cmd.Connection =conn;
        //cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
        //cmd.ExecuteNonQuery ();
        for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
        {
         if(fp2.Sheets [0].Cells[i,0].Text!="")
         {
          cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
           fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
           "','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
          cmd.ExecuteNonQuery ();
         }
        }
        conn.Close ();
        return true;
       }
       catch(System.Data.OleDb.OleDbException ex)
       {
        System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
       }
       return false;
      }
      

  22.   

    那个控件就是OWC控件
    office web control(全称好象是这样)
      

  23.   

    用owc控件或转成html页面再显示(需要服务器装office,还要设置权限。)
      

  24.   

    //页面
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <table cellSpacing="0" cellPadding="0" width="100%" border="0">
    <tr>
    <td></td>
    </tr>
    <tr>
    <td>请选择Excel表格:
    </td>
    </tr>
    <tr>
    <td><input id="file_excel" style="WIDTH: 440px; HEIGHT: 22px" type="file" size="54" runat="server">
    </td>
    </tr>
    <tr>
    <td style="HEIGHT: 1px" height="1"></td>
    </tr>
    <tr>
    <td><asp:button id="Button1" runat="server" Width="50px" BorderStyle="Groove" Text="显示"></asp:button></td>
    </tr>
    <tr>
    <td height="3"></td>
    </tr>
    <tr>
    <td align="center"><asp:label id="lbl_title" runat="server" Width="206px"></asp:label></td>
    </tr>
    <tr>
    <td align="center"><asp:datagrid id="DataGrid1" runat="server" Width="452px"></asp:datagrid></td>
    </tr>
    </table>
    </form>
    </body>
    //后台
    private void Button1_Click(object sender, System.EventArgs e)
    {   //完整路径
    string source=file_excel.Value;
    string sqlconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+source+";Extended Properties=Excel 8.0";
    string sql = "SELECT * FROM [Sheet1$]";
    System.Data.OleDb.OleDbCommand oldcom = new System.Data.OleDb.OleDbCommand(sql,new OleDbConnection(sqlconn));
    System.Data.OleDb.OleDbDataAdapter oleda = new System.Data.OleDb.OleDbDataAdapter(oldcom);
    System.Data.DataSet ds = new DataSet();
    oleda.Fill(ds,"[Sheet1$]");
    lbl_title.Text=ds.Tables[0].TableName;
    DataGrid1.DataSource=ds;
    DataGrid1.DataMember="[Sheet1$]";
    DataGrid1.DataBind();
    }
      

  25.   

    把这段代码放到你的网页中试试
    <input type="textbox" value= "text">
    <br>
    <iframe src="test.xls" width=400 height=300></iframe>
    <br>
    <input type=submit>
    这样有一个问题就是会提示用户保存 excel,点击打开后就可以在网页的局部位置打开excel了
      

  26.   

    plghy1981(疯狂小子) 说得很对,就是一个不规则的二维表,希望能够一模一样的读到网页上。。有没有高手做过啊,(必须保留excel中的颜色,还有表格不能合并,按原样输出)
      

  27.   

    <a href="XX.XML"></a>