日期:2014-05-17  浏览次数:20838 次

C#Excel导入和导出
Excel导入

一、在WEB中导入Excel的方法

方法1: 通过OleDB方式获取Excel文件的数据到DataSet中,然后将Dataset中的每笔记录插入到SQL Server

using System.Data.OleDb;
using System.Data.SqlClient;

第一步:首先上传到服务器
  DataTable dt = new DataTable();
string strFileNewName = DateTime.Now.ToString(“yyyyMMddhhmmss”) + “.xls”;
FileUpload1.SaveAs(Server.MapPath(“Excel/Upload/” + strFileNewName));
第二步:将Excel的内容导入到DataTable中
using (OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =” + Server.MapPath(“Excel/Upload/” + strFileNewName) + “;Extended Properties=Excel 8.0″))
            {
                OleDbDataAdapter da = new OleDbDataAdapter(“select * from [sheet1$]“, conn);
                da.Fill(dt);
            }
第三步:将Datatable中的内容逐条插入到数据库中
            using (SqlConnection SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ToString()))
            {
                SqlConn.Open();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string workno = dt.Rows[i]["工号"].ToString();
                    string username = dt.Rows[i]["姓名"].ToString();
                    string sex = dt.Rows[i]["性别"].ToString();
                    SqlCommand cmd = new SqlCommand(“insert into employees(workno,empname,sex) values(‘” + workno + “‘,’” + username + “‘,’” + sex + “‘)”, conn);
                    cmd.ExecuteNonQuery();
                }
            }
            Response.Write(“<script language=’javascript’>alert(‘文件上传成功!’);</script>”);
        }
 
缺点:如果要插入的记录很多,打开关闭数据库的次数会是个天文数字。  

二、在winform中导入Excel的方法
由于在windows中没有现成的upload控件可以使用,那么就自己造一个吧。
一个TextBox,一个Button,一个OpenFileDialog,你点Button,触发事件里把
if(OpenFileDialog.ShowDialog()==DialogResult.OK)
{
TextBox.Text = OpenFileDialog.FileName;
//之后想干吗就干吗
}
openFileDialog的Filter属性可以设置成 “Excel 文件|*.xls”;

Excel导出
在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件流输出写给浏览器。在Response输出时,t分隔的数据,导出Excel时,等价于分列,n等价于换行
1、将整个html全部输出Excel
此法将html中所有的内容,如按钮,表格,图片等全部输出到Excel中
     Response.Clear();    
    Response.Buffer=true;    
    Response.AppendHeader("Content-Disposition","attachment;filename="+DateTime.Now.ToString("yyyyMMdd")+".xls");       &nb