HELP ME

解决方案 »

  1.   

    导出简单,可以用连接数据库的方法去直接连接excel
    导入需要用到Excel.Application 类,具体查下msdn,或者发份代码你看看,短信联系就OK
      

  2.   

    <a href="datagrid2.aspx">轉到EXCEL</a>----------------------<%@ Page language="c#" Src="datagrid2.aspx.cs" AutoEventWireup="false" Inherits="DataGrid_import_WordExcel.WebForm1" %> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
    <HTML> 
     <HEAD> 
      <title>OutPutExcel</title> 
     </HEAD> 
    <link rel="stylesheet" href="Style.css" type="text/css">
     <body> 
      <form width="120%" id="Form1" method="post" runat="server"> 
      <table width="120%"><tr><td>
       <asp:datagrid 
       id="DataGrid1" 
       bgcolor="#efefef" 
       HeaderStyle-BackColor="#718BD6"
       HeaderStyle-ForeColor="#FFFF66"
       AlternatingItemStyle-BackColor="#FFFFFF"
       itemstyle-backcolor="#FFFFFF"
       runat="server">
       <ItemStyle HorizontalAlign="center" Height="20"></ItemStyle>
        <Columns>     </Columns> 
       </asp:datagrid> 
       </td></tr></table>
       <P>  
        <asp:button id="Btn_Import_Excel" runat="server" Text="轉到EXCEL"></asp:button></P> 
      </form> 
     </body> 
    </HTML>----------------using System; 
    using System.Collections; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Web; 
    using System.Web.SessionState; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.HtmlControls; 
    using System.IO; 
    using System.Data.SqlClient ; 
    using System.Text; 
    using System.Configuration;namespace DataGrid_import_WordExcel 
    { public class WebForm1 : System.Web.UI.Page 

    protected System.Web.UI.WebControls.Button BtnImportWord; 
    protected System.Web.UI.WebControls.Button Btn_Import_Excel; 
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    public DataRow dr;
    private DataSet myDS =new DataSet();private void Page_Load(object sender, System.EventArgs e) 

    //CreateDataSet(); 
    Data_Load();
    if(!IsPostBack) 
    {
    //DataBind(); 
    }
    } #region Web 敦极扢數?汜傖腔測鎢 
    override protected void OnInit(EventArgs e) 

    InitializeComponent(); 
    base.OnInit(e); 
    } private void InitializeComponent() 

    this.Btn_Import_Excel.Click += new System.EventHandler(this.Btn_Import_Excel_Click); 
    this.Load += new System.EventHandler(this.Page_Load); 

    #endregion private void ExportDataGrid(string FileType, string FileName) //植DataGrid絳堤 

    Response.Charset = "GB2312"; 
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString()); 
    Response.ContentType = FileType; 
    this.EnableViewState =false; 
    StringWriter tw = new StringWriter(); 
    HtmlTextWriter hw =new HtmlTextWriter(tw); 
    DataGrid1.RenderControl(hw); 
    Response.Write(tw.ToString()); 
    Response.End(); 

    private void Btn_Import_Excel_Click(object sender, System.EventArgs e) 

    ExportDataGrid("application/ms-excel", "Excel.xls"); //絳善Excel 
    } private void Data_Load() 
      {    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["data"]); 
       SqlCommand cmd=new SqlCommand("excel",myConnection);
       cmd.CommandType=CommandType.StoredProcedure; if(Session["status"]!="")
    {
    cmd.Parameters.Add("@sql1",SqlDbType.NVarChar,50);
                    cmd.Parameters["@sql1"].Value = Session["status"];
    }
    else
    {
    cmd.Parameters.Add("@sql1",SqlDbType.NVarChar,50);
                    cmd.Parameters["@sql1"].Value = "";
    }   myConnection.Open();    DataSet ds=new DataSet();
       SqlDataAdapter da=new SqlDataAdapter();
       da.SelectCommand=cmd;
       da.Fill(ds);
       DataGrid1.DataSource=ds; 
       DataGrid1.DataBind(); 
      } DataView CreateDataSource()   
    {   
    string nowDSN=ConfigurationSettings.AppSettings["data"];
        SqlConnection myConnection=new SqlConnection(nowDSN); SqlCommand cmd=new SqlCommand("excel",myConnection);
                cmd.CommandType=CommandType.StoredProcedure; if(Session["status"]!="")
    {
    cmd.Parameters.Add("@sql1",SqlDbType.NVarChar,50);
                    cmd.Parameters["@sql1"].Value = Session["status"];
    }
    else
    {
    cmd.Parameters.Add("@sql1",SqlDbType.NVarChar,50);
                    cmd.Parameters["@sql1"].Value = "";
    }     DataSet ds=new DataSet();
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand=cmd;
    da.Fill(ds);
    DataGrid1.DataSource=ds;
    DataGrid1.DataBind();
    return ds.Tables["pur"].DefaultView;    
                myConnection.Close();            
                Page.DataBind();


    void DataBind()   
    {   
    DataView source=CreateDataSource();   
    if(!IsPostBack)   
    {   
    }   
    DataGrid1.DataSource = source;    
    DataGrid1.DataBind();    
    } } 
    }
      

  3.   

    导入
    // 获取Excep文件的完整路径
    string source = File1.Value; string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
    string query = "SELECT * FROM [Sheet1$]"; OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
    OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
    DataSet myDataSet = new DataSet(); // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
    oleAdapter.Fill(myDataSet, "[Sheet1$]"); // 数据绑定
    DataGrid1.DataSource = myDataSet;
    DataGrid1.DataMember = "[Sheet1$]";
    DataGrid1.DataBind();
      

  4.   

    导入 具体点:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.OleDb;
    namespace net
    {
    /// <summary>
    /// ReaderExcelDataExample 的摘要说明。
    /// </summary>
    public class ReaderExcelDataExample : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button SubmitBtn;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.SubmitBtn.Click += new System.EventHandler(this.SubmitBtn_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion public void SubmitBtn_Click(object sender, System.EventArgs e)
    {
    // 获取Excep文件的完整路径
    string source = File1.Value; string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
    string query = "SELECT * FROM [Sheet1$]"; OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
    OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
    DataSet myDataSet = new DataSet(); // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
    oleAdapter.Fill(myDataSet, "[Sheet1$]"); // 数据绑定
    DataGrid1.DataSource = myDataSet;
    DataGrid1.DataMember = "[Sheet1$]";
    DataGrid1.DataBind();
    }
    }
    }
    <%@ Page CodeBehind="ReaderExcelDataExample.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="net.ReaderExcelDataExample" %>
    <HTML>
    <HEAD>
    <title>如何读取Excel表格中的数据</title>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <H3>如何读取Excel表格中的数据</H3>
    请选择Excel表格:<BR>
    <INPUT type="file" id="File1" name="File1" runat="server" size="26"><br>
    <asp:Button id="SubmitBtn" runat="server" Text="开始显示" OnClick="SubmitBtn_Click"></asp:Button><br>
    <br>
    <asp:DataGrid id="DataGrid1" runat="server" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"
    BackColor="White" CellPadding="4" GridLines="Horizontal" Font-Size="12px">
    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#339966"></SelectedItemStyle>
    <ItemStyle ForeColor="#333333" BackColor="White"></ItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#336666"></HeaderStyle>
    <FooterStyle ForeColor="#333333" BackColor="White"></FooterStyle>
    <PagerStyle HorizontalAlign="Center" ForeColor="White" BackColor="#336666" Mode="NumericPages"></PagerStyle>
    </asp:DataGrid>
    </form>
    </body>
    </HTML>
      

  5.   

    datagrid数据导出到excel文件给客户端下载的几种方法方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载优点:
    1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。
    2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。
    3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。实现方法:
       SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
       SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
       DataSet ds=new DataSet();
       da.Fill(ds,"table1");
       DataTable dt=ds.Tables["table1"];
       string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
       FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
       StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
       sw.WriteLine("自动编号,姓名,年龄");
       foreach(DataRow dr in dt.Rows)
       {
        sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
       }
       sw.Close();
       Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
       Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
       Response.WriteFile(name); // 把文件流发送到客户端
       Response.End();方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流优点:
    1、随时生成,不需要占用资源
    2、可以结合身份认证
    3、同样利于数据交换实现方法:
    SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
       SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
       DataSet ds=new DataSet();
       da.Fill(ds,"table1");
       DataTable dt=ds.Tables["table1"];
       StringWriter sw=new StringWriter();
       sw.WriteLine("自动编号,姓名,年龄");
       foreach(DataRow dr in dt.Rows)
       {
        sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
       }
       sw.Close();
       Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
       Response.ContentType = "application/ms-excel";
       Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
       Response.Write(sw);
       Response.End();方法三:从datagrid导出html代码,生成excel文件,给客户端下载优点:
    1、有固定的格式,样子好看(datagrid的样子)局限性:
    1、不适合数据交换,里面有html代码,比较乱,没有固定格式
    2、datagrid不能有分页、排序等,否则出错实现方法:
    Response.Clear();
       Response.Buffer= false;
       Response.Charset="GB2312";
       Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");
       Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");    Response.ContentType = "application/ms-excel";    this.EnableViewState = false;
       System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
       System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
       this.DataGrid1.RenderControl(oHtmlTextWriter);
       Response.Write(oStringWriter.ToString());
       Response.End();