前臺:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>將Excel數據寫入到Oracle數據庫中</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div align="center">
- <table align="center" cellpadding="0" cellspacing="0" border="1" bordercolor="honeydew">
- <tr>
- <td style="width: 600px" colspan="2" bgcolor="lime">
- <strong>將EXCEL中的數據導入到Oracle數據庫中示例 </strong>
- </td>
- </tr>
- <tr>
- <td>
- 測試Excel中的數據是否讀取成功
- <asp:DataGrid ID="DataGrid1" runat="server">
- </asp:DataGrid>
- </td>
- <td style="width: 100px; height: 252px;">
- 測試Excel中的數據是否成功導入到Oracle數據中
- <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
- <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
- <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
- <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
- <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
- <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
- <AlternatingRowStyle BackColor="White" />
- </asp:GridView>
- </td>
- </tr>
- <tr>
- <td style="width: 100px; height: 19px;">
- <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Excel數據寫入Oracle中" />
- <asp:Label ID="Label1" runat="server" Width="232px" Visible="False">沒有成功導入所有數據或是有部分數據重複!</asp:Label></td>
- <td style="width: 100px; height: 19px;">
- <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Oracle中顯示Excel數據" /></td>
- </tr>
- </table>
- </div>
- </form>
- </body>
- </html>
後臺:
- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Data.OracleClient;
- using System.Data.OleDb;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- public void LoadData(string StyleSheet)
- {
- string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["ExcelConnection"].ConnectionString;//Excel的連接字符串
- OleDbConnection myConn = new OleDbConnection(strCon);//創建一個OLEDBC的鏈接
- myConn.Open();//打開數據庫的連接,得到一個數據集
- DataSet myDataSet = new DataSet();
- string StrSql = "Select * From [" + StyleSheet + "$]";
- OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);
- myCommand.Fill(myDataSet, "[" + StyleSheet + "$]");
- myCommand.Dispose();
- DataTable dt = myDataSet.Tables["[" + StyleSheet + "$]"];
- myConn.Close();//關閉數據庫連接
- myCommand.Dispose();
- DataGrid1.DataSource = dt.DefaultView;//用來測試Excel中的數據是否讀取成功
- DataGrid1.DataBind();
- string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
- OracleConnection conn = new OracleConnection(strConn);
- for (int j = 0; j < dt.Rows.Count; j++)
- {
- conn.Open();
- OracleCommand mycom = new OracleCommand("Select count (*) from Usersdb where UserID='" + dt.Rows[j][0].ToString() + "'", conn);
- int count = Convert.ToInt32(mycom.ExecuteScalar());
- if (count > 0)
- {
- Response.Write("<script>alert('對不起!您已經轉換了相同的數據!');</script>");
- }
- else
- {
- string UserID = dt.Rows[j][0].ToString();
- string UserName = dt.Rows[j][1].ToString();
- string Title = dt.Rows[j][2].ToString();
- string Sal = dt.Rows[j][3].ToString();
- string strSql = "Insert Into Usersdb(UserID,UserName,Title,Sal) Values('" + UserID + "','" + UserName + "','" + Title + "','" + Sal + "')";
- OracleCommand comm = new OracleCommand(strSql, conn);
- comm.ExecuteNonQuery();
- if (j == dt.Rows.Count - 1)
- {
- Label1.Visible = true;
- Label1.Text = "所有數據成功導入!";
- }
- else
- {
- Label1.Visible = true;
- }
- }
- conn.Close();
- }
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- string StyleSheet = "Sheet1";
- LoadData(StyleSheet);
- }
- protected void Button2_Click(object sender, EventArgs e)
- {
- string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
- string sqlstr = "Select * From Usersdb";
- OracleConnection conn = new OracleConnection(strConn);
- OracleDataAdapter myda = new OracleDataAdapter(sqlstr, strConn);
- DataSet ds = new DataSet();
- conn.Open();
- myda.Fill(ds, "Usersdb");
- GridView1.DataSource = ds;
- GridView1.DataBind();
- conn.Close();
- }
- }
web.config文件:
- <?xml version="1.0"?>
- <!--
- 注意: 除了手動編輯此文件以外,您還可以使用
- Web 管理工具來配置應用程序的設置。可以使用 Visual Studio 中的
- “網站”->“Asp.Net 配置”選項。
- 設置和註釋的完整列表在
- machine.config.comments 中,該文件通常位於
- /Windows/Microsoft.Net/Framework/v2.x/Config 中
- -->
- <configuration>
- <appSettings/>
- <connectionStrings>
- <add name="ExcelConnection" connectionString="Data Source=C:/Inetpub/wwwroot/ASP.NET_TO_Oracle/ExcelToOracle/ExcelToOracle.xls;Extended Properties=Excel 8.0;Provider=Microsoft.Jet.OLEDB.4.0"/>
- <add name="OracleConnection" connectionString="Data Source=orcl_202.201.244.121;Persist Security Info=True;User ID=scott;Pwd=sde;Unicode=True" providerName="System.Data.OracleClient"/>
- </connectionStrings>
- <system.web>
- <!--
- 設置 compilation debug="true" 將調試符號插入
- 已編譯的頁面中。但由於這會
- 影響性能,因此只在開發過程中將此值
- 設置爲 true。
- -->
- <compilation debug="true">
- <assemblies>
- <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
- <!--
- 通過 <authentication> 節可以配置 ASP.NET 使用的
- 安全身份驗證模式,
- 以標識傳入的用戶。
- -->
- <authentication mode="Windows"/>
- <!--
- 如果在執行請求的過程中出現未處理的錯誤,
- 則通過 <customErrors> 節可以配置相應的處理步驟。具體說來,
- 開發人員通過該節可以配置
- 要顯示的 html 錯誤頁
- 以代替錯誤堆棧跟蹤。
- <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
- <error statusCode="403" redirect="NoAccess.htm" />
- <error statusCode="404" redirect="FileNotFound.htm" />
- </customErrors>
- -->
- </system.web>
- </configuration>