通用简单的.NET导入导出

     /// <summary>

     /// 导出Excel     

     /// </summary> 

     /// 创建时间:2012/07/01     

     //private void fExpert(DataTable dt)

     private void fExpert(IList<Farmer> comlist)

     { 

         Response.Buffer = false;

         Response.ContentType = "application/ms-excel";

         Response.ContentEncoding = Encoding.GetEncoding("GB2312");

         Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("标题" + ".csv"));

         Response.Write("编号,人员姓名,人口,备住,乡镇Id,村庄Id\n");

         //foreach (DataRow dr in dt.Rows)

         foreach (Farmer bi in comlist)

         {

             //Response.Write(dr["ID"].ToString() + "," + dr["NT_Num"].ToString() + "," + dr["F_Id"].ToString() + "," + dr["T_Id"].ToString() + "," + dr ["V_Id"].ToString() + "\n");

             Response.Write(bi.Id + "," + bi.FName + "," + bi.Population+ "," + bi.FRemarks+ "," + bi.T_Id + ","+bi.V_Id+"\n");

         }

         Response.End();

     }

///导入的方法

           FileUpload FileUp = e.Item.FindControl("FileUp") as FileUpload;//这是获取前台上传的控件

            //是否上传文件

            if (FileUp.HasFile)

            {

                //获取上传文件名

                string extension = Path.GetExtension(FileUp.PostedFile.FileName);

                //判断上传文件类型

                switch (extension.ToLower())

                {

                    case ".xls":

                    case ".xlsx":

                            AddExcel(FileUp, extension.ToLower());

                            Page.ClientScript.RegisterStartupScript(this.GetType(), "aaa", "<script>alert('上传成功!!!')</script>");

                            break;

                    default:

                            MessageBox.Show("文件格式不正确");

                        return;

                       //break;

                }

            }

    /// <summary>

    /// 这是添加excel的方法

    /// </summary>

    /// <param name="type"></param>

    private void AddExcel(FileUpload FileUp,string type)

    {

        ISession session = CreateSession(Server.MapPath("http://www.cnblogs.com/JBNTBH_dy.cfg.xml"));

        //生成保存上传文件名称

        string strFileNewName = DateTime.Now.ToString("yyyyMMddhhmmss") + type;

        //将上传文件保存至指定文件夹

         FileUp.SaveAs(Server.MapPath("FileExcel") + "\\" + strFileNewName);

        //获取刚刚上传文件路径

        string filepath = Server.MapPath("FileExcel/" + strFileNewName).Replace("\\", "\\\\");

        Farmer Data = new Farmer();//实例化Model类

        DataSet ds = ExcelDataSource(filepath, "Sheet1");

        if (ds.Tables.Count == 0)

        {

            MessageBox.Show("导入模版格式不合法,请核实!");

            return;

        }

        DataRow[] dr = ds.Tables[0].Select();

        DAL.JBNTBH_dy.BaseInfo dal = new DAL.JBNTBH_dy.BaseInfo(Server.MapPath("http://www.cnblogs.com/JBNTBH_dy.cfg.xml"));

        DAL.JBNTBH_dy.farmer farmer = new DAL.JBNTBH_dy.farmer(Server.MapPath("http://www.cnblogs.com/JBNTBH_dy.cfg.xml"));

        string xmid = "";

        for (int i = 0; i < dr.Length; i++)

            {

                xmid = "jsyd" + DateTime.Now.ToString("yyyyMMddHHmmssfff");

                try

                {

                    Data.FName = dr[i]["户主  姓名"].ToString();

                    if (!string.IsNullOrEmpty(dr[i]["人口"].ToString().Trim()))

                    {

                        Data.Population = int.Parse(dr[i]["人口"].ToString().Trim());

                    }

                     //切记,excle里面的格式一定是表头,正文从第二行开始,,dr[i]["所在地块编号"].引号里面的一定要是和表头一样

                    //表格实例

编号 户主  姓名 人口 所在地块编号 面积 东至 西至 南至 北至 备注
1 公翠平 1 J3709111110010002 0.54 裴广太 南苏耕地 后营耕地 生产路  

                    //Data.T_Id = (int)dr[i]["外镇ID"];// DataConvert.TxtGetDate(dr[i]["受让日期"].ToString());

                    Data.DiNumber = dr[i]["所在地块编号"].ToString();

                    Data.East = dr[i]["东至"].ToString();

                    Data.West = dr[i]["西至"].ToString();

                    Data.South = dr[i]["南至"].ToString();

                    Data.North = dr[i]["北至"].ToString();

                   // Data.V_Id = (int)dr[i]["村庄ID"];

                    Data.FRemarks = dr[i]["备注"].ToString();

                    farmer.Add(Data);//这是用Nhibernate框架里面的方法(  public void Add(Model.JBNTBH_dy.Farmer Model){ control.AddEntity(Model);})

                    //session.Save(Data);                  

                }

                catch (Exception)

                {

                    MessageBox.Show("数据导入失败,excel中第" + i + 2 + "条数据附近内容不合法,请核实后重新上传");

                    return;

                }

                //session.Flush();       

            //}

            //ts.Complete();

        }

    }

/// <summary>
/// Excel导入数据方法
/// </summary>
/// <param name="filepath">文件路径</param>
/// <param name="sheetname">标签名称</param>
/// <returns>返回一个DataSet</returns>
public static DataSet ExcelDataSource(string filepath, string sheetname)
{
string strConn = "";
string[] str = filepath.Split('.');
if (str[str.Length - 1] == "xls")
{
strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES'";
}
else if (str[str.Length - 1] == "xlsx")
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
}
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "$]", strConn);
DataSet ds = new DataSet();
try
{
oada.Fill(ds);
}
catch (Exception)
{

}

return ds;
}

简单的导出

 #region 导出
    protected void Button2_Click(object sender, EventArgs e)
    {
        Export("application/ms-excel", "设备维修记录表_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls");//调用导出方法
    }

  private void Export(string FileType, string FileName)
    {
        //清除分页
        GVList.AllowPaging = false;
        //重新查询
        query();
        foreach (GridViewRow grv in this.GVList.Rows)
        {
            Label LabelUpdate = (Label)grv.FindControl("LabelUpdate");
            LabelUpdate.Visible = false;
            this.GVList.Columns[9].Visible = false;
            this.GVList.Columns[10].Visible = false;
            ImageButton ibtn = (ImageButton)grv.FindControl("imgDelete");
            ibtn.Visible = false;
        }
        Response.Clear();
        Response.Buffer = true;
        //设定输出的字符集
        Response.Charset = "GB2312";
        //解决导出到Excel2007乱码问题
        Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
        //假定导出的文件名为盘点结果表.xls
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        //DisableControls(GVList);
        // PrepareGridViewForExport(GVList);
        //解决导出到Excel2007乱码问题
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        //设置导出文件的格式
        Response.ContentType = FileType;
        //关闭ViewState
        this.EnableViewState = false;
        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter);
        GVList.RenderControl(textWriter);
        //把HTML写回浏览器
        Response.Write("<span style='font-size:18px; font-weight:bold; color:Black'><center>设备维护记录表</center></span>");
        Response.Write(stringWriter.ToString());
        Response.Flush();
        Response.End();
        GVList.AllowPaging = true;//恢复分页
        //为GridView重新绑定数据源
        query();
    }

原文地址:https://www.cnblogs.com/zcwry/p/daoruchu.html