分页显示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>

posted @ 2011-09-25 11:43  ITCAICAI  阅读(697)  评论(0编辑  收藏  举报