zoukankan      html  css  js  c++  java
  • 分页显示Excel数据

              string filename = "", filesize, filetype;
               
    get.filenames = filename;

               
    //string tablename = "导入发货信息格式";
    HttpFileCollection hfc = Request.Files;

                HttpPostedFile hpf
    = hfc[0];
                filename
    = Path.GetFileName(hpf.FileName);
                filesize
    = hpf.ContentLength.ToString();
                filetype
    = hpf.ContentType;
               
    //Response.Write(filetype);
                if (filename.IndexOf(".xls") > -1)
                {
                    hpf.SaveAs(Server.MapPath(
    "uplode/") + filename);
                   
    //Response.Write(filename + "<BR>" + filesize + "<BR>" + filetype);
                   
    //RegisterStartupScript("dd", "<script>alert('上传成功!!')</script>");

                   
    //读取上传的数据表格在页面上显示出来
                    string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("uplode" + "\\" + filename) + "; Extended Properties=Excel 8.0;";
                    OleDbConnection con
    = new OleDbConnection(strCon);
                    con.Open();
                   
    //获好表格默认第一个表名
                    DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                   
    string tableNamess = dt.Rows[0][2].ToString().Trim();

                    OleDbDataAdapter sdr
    = new OleDbDataAdapter("select * from [" + tableNamess + "]", con);
                    DataSet ds
    = new DataSet();
                    sdr.Fill(ds);
                    GridView1.DataSource
    = ds.Tables[0];
                    GridView1.DataBind();
                    con.Close();
                    ds.Dispose();
                    sdr.Dispose();


    用的GridView控件显示数据,如果数据太多的话,存在分页问题。

    一下是别人介绍的方法:具体可行没试过

    方法1:

    你可以自定义分页
    采用这个方法
    myAdapter.Fill(ds, startRecord, PageItem, "Paging");

    http://msdn.microsoft.com/zh-cn/library/kxs7kbfe.aspx

    方法二:

    完整的分页例子
    http://dotnet.aspx.cc/file/Excel-File-Data-Paging-In-ASP.NEt.aspx

    方法三:代码

    <%@ Page Language="C#" %>
     
      <%@ Import Namespace="System.Data" %>
      <%@ Import Namespace="System.Data.OleDb" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <script runat="server">
     
      protected void Page_Load(object sender, EventArgs e)
      {
        string xlsConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Book1.xls") + ";Extended Properties='Excel 8.0;HDR=No;'";
        OleDbConnection cn = new OleDbConnection(xlsConnStr);
        cn.Open();
        String sql = "select Count(*) From [Sheet1$]";
        OleDbCommand cmd = new OleDbCommand(sql, cn);
     
        // 总的记录数
        int TotalCount = Convert.ToInt32(cmd.ExecuteScalar());
     
        //当前页的序号
        int PageIndex = 1;
        String page = Request.QueryString["Page"];
        if (page == null) page = "1";
        Int32.TryParse(page, out PageIndex);
        if (PageIndex  < 1) PageIndex = 1;
     
        //每页显示的数量
        int PageItem = 5;
        int startRecord = (PageIndex - 1) * PageItem;
     
        sql = "Select * From [Sheet1$]";
        OleDbDataAdapter da = new OleDbDataAdapter(sql, cn);
        DataSet ds = new DataSet();
        da.Fill(ds, startRecord, PageItem, "Sheet");
     
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
     
        BuildPagers(TotalCount, PageIndex, PageItem);
      }
     
      private void BuildPagers(int TotalCountRecord, int CurrentPage, int PageItem)
      {
        int Step = 6;
        int LeftNum = 0;
        int RightNum = 0;
        String PageUrl = "?";
        int PageCount = (int)Math.Ceiling((double)(TotalCountRecord) / PageItem);
        if (CurrentPage - Step  < 1)
        {
          LeftNum = 1;
        }
        else
        {
          LeftNum = CurrentPage - Step;
        }
     
        if (CurrentPage + Step > PageCount)
        {
          RightNum = PageCount;
        }
        else
        {
          RightNum = CurrentPage + Step;
        }
        string OutPut = "";
        for (int i = LeftNum; i  <= RightNum; i++)
        {
          if (i == CurrentPage)
          {
            OutPut += " <span style='color:red'>" + i.ToString() + " </span> ";
          }
          else
          {
            OutPut += " <a href=\"" + PageUrl + "Page=" + i.ToString() + "\">" + i.ToString() + " </a> ";
          }
        }
        if (CurrentPage > 1)
        {
          OutPut = " <a href='" + PageUrl + "Page=1'>首页 </a>   <a href=\"" + PageUrl + "Page=" + (CurrentPage - 1) + "\">上一页 </a> " + OutPut;
        }
     
        if (CurrentPage  < PageCount)
        {
          OutPut += "  <a href=\"" + PageUrl + "Page=" + (CurrentPage + 1) + "\">下一页 </a>  <a href='" + PageUrl + "Page=" + PageCount + "'>末页 </a>";
        }
        Pager.InnerHtml = OutPut ;
      }
      </script>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
       <title>孟宪会的Excel分页测试 </title>
      </head>
      <body>
       <form id="form1" runat="server">
       <asp:GridView ID="GridView1" runat="server" ShowHeader="false">
       </asp:GridView>
       <div id="Pager" runat="server"> </div>
       </form>
      </body>
      </html>

  • 相关阅读:
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    构建调试Linux内核网络代码的环境MenuOS系统
    创新产品的需求分析:未来的图书会是什么样子?
    socket通信的原理与实践
    案例分析:设计模式与代码的结构特性
    网络相关的命令工具研究报告:ssh
    业务领域建模Domain Modeling
    ubuntu 设置静态ip,但显示scope global secondary ens33
    解决Python查询Mysql中文乱码问题
  • 原文地址:https://www.cnblogs.com/caster/p/2190027.html
Copyright © 2011-2022 走看看