无网不进  
软硬件开发

.net数据库实现Excel的导入与导出

参考路径:https://www.cnblogs.com/splendidme/archive/2012/01/05/2313314.html

1.default.aspx文件

 1 <form id="form1" runat="server">
 2     <table style="width: 858px">
 3         <tr>
 4             <td style="width: 334px">
 5                 <asp:Button ID="readFromDB" runat="server"
 6 
 7 OnClick="readFromDB_Click" Text="从数据库读取数据" />
 8                 <asp:GridView ID="GridView1" runat="server"
 9 
10 AutoGenerateColumns="True" BackColor="White" BorderColor="#E7E7FF"
11 
12 BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Names="Arial"
13 
14 Font-Size="12px" GridLines="Horizontal" RowStyle-HorizontalAlign="Center"
15 
16 Width="98%">
17                 <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
18 
19 <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C"
20 
21 HorizontalAlign="Center" />
22                 <SelectedRowStyle BackColor="#738A9C" Font-Bold="True"
23 
24 ForeColor="#F7F7F7" />
25                 <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C"
26 
27 HorizontalAlign="Right" />
28                 <HeaderStyle BackColor="#4A3C8C" Font-Bold="True"
29 
30 ForeColor="#F7F7F7" HorizontalAlign="Center" />
31                 <AlternatingRowStyle BackColor="#F7F7F7" /> </asp:GridView>
32                 <asp:FileUpload ID="FileUpload1" runat="server" />
33                 <asp:Button ID="Import" runat="server" OnClick="Import_Click" Text="
34 
35 导入" />
36                 <asp:Button ID="output" runat="server" OnClick="btnOut_Click" Text="
37 
38 导出" />
39             </td>
40         </tr>
41     </table>
42     </form>

2.default.aspx.cs文件

  1 using System;
  2 using System.Data;
  3 using System.Configuration;
  4 using System.Collections;
  5 using System.Web;
  6 using System.Web.Security;
  7 using System.Web.UI;
  8 using System.Web.UI.WebControls;
  9 using System.Web.UI.WebControls.WebParts;
 10 using System.Web.UI.HtmlControls;
 11 using System.Data.SqlClient;
 12 using System.Data.OleDb;
 13 using System.Text;
 14 using JJoobb.Web;
 15 using System.IO;
 16 public partial class _Default : System.Web.UI.Page
 17 {
 18     string strConn = SiteSetting.ConnectionString;
 19     string sqlSelectALL = SiteSetting.sqlSelALL;
 20     string exToDB = SiteSetting.ExToDB;
 21     protected void Page_Load(object sender, EventArgs e)
 22     {
 23      
 24     }
 25     protected void readFromDB_Click(object sender, EventArgs e)
 26     {
 27         Bind();
 28     }
 29     public void btnOut_Click(object sender, EventArgs e)
 30     {
 31         try
 32         {
 33             CreateExcel(getds());
 34             Response.Write("<script>alert('数据导出成功!')</script>");
 35         }
 36         catch
 37         {
 38             Response.Write("<script>alert('数据导出失败!')</script>");
 39         }
 40     }
 41     public void CreateExcel(DataSet ds)
 42     {
 43         string outPutPath=SiteSetting.OutPutPath +DateTime.Now.ToString
 44 
 45 ("yyyyMMddHHmmss-")+SiteSetting.FileName;
 46         FileStream file = new FileStream(outPutPath, FileMode.Create);
 47         StreamWriter sw = new StreamWriter(file,Encoding.Default);//设置编码为当
 48 
 49 面页面编码
 50         string colHeaders = "", ls_item = "";
 51         //定义表对象与行对象,同时用DataSet对其值进行初始化
 52         DataTable dt = ds.Tables[0];
 53         DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数
 54 
 55 据筛选目的
 56         int i = 0;
 57         int cl = dt.Columns.Count;
 58         //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车
 59 
 60  61         for (i = 0; i < cl; i++)
 62         {
 63             if (i == (cl - 1))//最后一列,加\n
 64             {
 65                 colHeaders += dt.Columns[i].Caption.ToString() + "\n";
 66             }
 67             else
 68             {
 69                 colHeaders += dt.Columns[i].Caption.ToString() + "\t";
 70             }
 71         }
 72         sw.Write(colHeaders);
 73         foreach (DataRow row in myRow)
 74         {
 75             //当前行数据写入输出流,并且置空ls_item以便下行数据    
 76             for (i = 0; i < cl; i++)
 77             {
 78                 if (i == (cl - 1))
 79                 {
 80                     ls_item += row[i].ToString() + "\n";
 81                 }
 82                 else
 83                 {
 84                     ls_item += row[i].ToString() + "\t";
 85                 }
 86             }
 87             sw.Write(ls_item);
 88             ls_item = "";
 89         }
 90         sw.Flush();
 91         sw.Close();
 92         file.Close();
 93     }
 94 
 95     //从数据库取出要导出的Detset数据集
 96     private DataSet getds()
 97     {
 98         SqlConnection conns = new SqlConnection(strConn);
 99         SqlDataAdapter da = new SqlDataAdapter(sqlSelectALL, conns);
100         DataSet ds = new DataSet();
101         da.Fill(ds);
102         conns.Close();
103         conns.Dispose();
104         return ds;
105     }
106     //绑定数据
107     public void Bind()
108     {
109         DataSet ds = new DataSet();
110         using (SqlConnection conn = new SqlConnection())
111         {
112             SqlDataAdapter sda = new SqlDataAdapter(sqlSelectALL, strConn);
113             sda.Fill(ds, "ex_test");
114         }
115         GridView1.DataSource = ds.Tables["ex_test"];
116         GridView1.DataBind();
117     }
118     //导入数据
119     protected void Import_Click(object sender, EventArgs e)
120     {
121         string getErrMsg = "";
122         DataSet excelDs = new DataSet();
123         if (FileUpload1.PostedFile.FileName == "")
124         {
125             Response.Write("<script language=javascript>alert('请选择要上传的文件
126 
127');</script>");
128             return;
129         }
130         //从Excel读取数据
131         string filePath = FileUpload1.PostedFile.FileName;
132         string connString = exToDB + filePath;
133         OleDbConnection excelConn = new OleDbConnection(connString);
134         OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT * FROM
135 
136 [Sheet1$]", excelConn);
137         try
138         {
139             ExcelDA.Fill(excelDs, "ex_test");
140         }
141         catch (Exception err)
142         {
143             Response.Write(err.Message);
144         }
145         finally
146         {
147             excelConn.Close();
148             excelConn = null;
149         }
150         //将数据写入数据库
151         if (excelDs.Tables[0].Rows.Count != 0)
152         {
153             SqlConnection sqlConn = new SqlConnection(strConn);
154             sqlConn.Open();
155             SqlCommand myCommand = sqlConn.CreateCommand();
156             SqlTransaction myTrans = sqlConn.BeginTransaction();
157             myCommand.Transaction = myTrans;
158             try
159             {
160                 for (int i = 0; i < excelDs.Tables[0].Rows.Count; i++)
161                 {
162                     string sql = "insert into ex_test(id, name, sex,email,address) values('"
163 
164 + excelDs.Tables[0].Rows[i]["编号"].ToString() + "','" + excelDs.Tables[0].Rows[i]["
165 
166 姓名"].ToString() + "','" + excelDs.Tables[0].Rows[i]["性别"].ToString() + "','" +
167 
168 excelDs.Tables[0].Rows[i]["邮箱"].ToString() + "','" + excelDs.Tables[0].Rows[i]["
169 
170"].ToString() + "')";
171                     myCommand.CommandText = sql; myCommand.ExecuteNonQuery();
172                 }
173                 myTrans.Commit();
174             }
175             catch (Exception ex)
176             {
177                 getErrMsg = ex.Message.ToString();
178                 Response.Write(ex.Message.ToString());
179                 myTrans.Rollback();
180             }
181             finally
182             {
183                 sqlConn.Close();
184                 sqlConn = null;
185             }
186 
187         }
188         //返回提示信息
189         if (getErrMsg == "" || getErrMsg == null)
190         {
191             Response.Write("<script language='Javascript'>alert('导入成功!')
192 
193 </script>");
194             Bind();
195         }
196         else
197         {
198             Response.Write("<script language='Javascript'>alert('导入失败!')
199 
200 </script>");
201             return;
202         }
203     }
204 
205 }

3.SiteSetting.cs

 1 using System;
 2 using System.Configuration;
 3 using System.Collections.Generic;
 4 using System.Text;
 5 
 6 /// <summary>
 7 /// SiteSetting 的摘要说明
 8 /// </summary>
 9 namespace JJoobb.Web
10 {
11     public class SiteSetting
12     {
13         //数据库连接字符串
14         public static string ConnectionString =
15 
16 ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
17 
18         //导出文件名称
19         public static string FileName = "OutPut.xls";
20 
21         //导出文件地址
22         public static string OutPutPath = "C:\\Documents and
23 
24 Settings\\Administrator\\桌面\\excleFile\\";
25 
26         //sql语句
27         public static string sqlSelALL = "select
28 
29 id,title,contents,userName,phone,email,CONVERT(varchar(100), AddDate, 20)
30 
31 AddDate,ReContents from Feedback";
32 
33         //从excel读数据
34         public static string ExToDB = "Provider=Microsoft.Jet.OLEDB.4.0;Extended
35 
36 Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";Data Source=";
37     }
38 }

4.web.config

<connectionStrings>
<add name="connectionString"

connectionString="server=local;uid=sa;pwd=pwd;database=TestExcel"

providerName="System.Data.SqlClient"/>
</connectionStrings>

 

posted on 2019-01-26 10:27  无网不进  阅读(1035)  评论(0编辑  收藏  举报