CSDN博客

img qing0991

将Excel文件导入到Oracle数据库中

发表于2008/9/28 21:40:00  2635人阅读

分类: Office

 前台:

  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.     <title>将Excel数据写入到Oracle数据库中</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div align="center">
  10.         <table align="center" cellpadding="0" cellspacing="0" border="1" bordercolor="honeydew">
  11.             <tr>
  12.                 <td style="width: 600px" colspan="2" bgcolor="lime">
  13.                     <strong>将EXCEL中的数据导入到Oracle数据库中示例 </strong>
  14.                 </td>                
  15.             </tr>
  16.             <tr>
  17.                 <td>
  18.                     测试Excel中的数据是否读取成功
  19.                     <asp:DataGrid ID="DataGrid1" runat="server">
  20.                     </asp:DataGrid>
  21.                 </td>
  22.                 <td style="width: 100px; height: 252px;">
  23.                     测试Excel中的数据是否成功导入到Oracle数据中
  24.                     <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
  25.                         <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
  26.                         <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
  27.                         <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
  28.                         <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
  29.                         <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
  30.                         <AlternatingRowStyle BackColor="White" />
  31.                     </asp:GridView>
  32.                 </td>
  33.             </tr>
  34.             <tr>
  35.                 <td style="width: 100px; height: 19px;">
  36.                     <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Excel数据写入Oracle中" />
  37.                     <asp:Label ID="Label1" runat="server" Width="232px" Visible="False">没有成功导入所有数据或是有部分数据重复!</asp:Label></td>
  38.                 <td style="width: 100px; height: 19px;">
  39.                     <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Oracle中显示Excel数据" /></td>
  40.             </tr>
  41.         </table>    
  42.     </div>
  43.     </form>
  44. </body>
  45. </html>

后台:

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.Data.OracleClient;
  11. using System.Data.OleDb;
  12. public partial class _Default : System.Web.UI.Page 
  13. {
  14.     protected void Page_Load(object sender, EventArgs e)
  15.     {
  16.     }
  17.     public void LoadData(string StyleSheet)
  18.     {
  19.         string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["ExcelConnection"].ConnectionString;//Excel的连接字符串
  20.         OleDbConnection myConn = new OleDbConnection(strCon);//创建一个OLEDBC的链接
  21.         myConn.Open();//打开数据库的连接,得到一个数据集
  22.         DataSet myDataSet = new DataSet();
  23.         string StrSql = "Select * From [" + StyleSheet + "$]";
  24.         OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);
  25.         myCommand.Fill(myDataSet, "[" + StyleSheet + "$]");
  26.         myCommand.Dispose();
  27.         DataTable dt = myDataSet.Tables["[" + StyleSheet + "$]"];
  28.         myConn.Close();//关闭数据库连接
  29.         myCommand.Dispose();
  30.         DataGrid1.DataSource = dt.DefaultView;//用来测试Excel中的数据是否读取成功
  31.         DataGrid1.DataBind();
  32.         string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
  33.         OracleConnection conn = new OracleConnection(strConn);
  34.         
  35.         for (int j = 0; j < dt.Rows.Count; j++)
  36.         {
  37.             conn.Open();
  38.             OracleCommand mycom = new OracleCommand("Select count (*) from Usersdb where UserID='" + dt.Rows[j][0].ToString() + "'", conn);
  39.             int count = Convert.ToInt32(mycom.ExecuteScalar());
  40.             if (count > 0)
  41.             {
  42.                 Response.Write("<script>alert('对不起!您已经转换了相同的数据!');</script>");
  43.             }
  44.             else
  45.             {
  46.                 string UserID = dt.Rows[j][0].ToString();
  47.                 string UserName = dt.Rows[j][1].ToString();
  48.                 string Title = dt.Rows[j][2].ToString();
  49.                 string Sal = dt.Rows[j][3].ToString();
  50.                 string strSql = "Insert Into Usersdb(UserID,UserName,Title,Sal) Values('" + UserID + "','" + UserName + "','" + Title + "','" + Sal + "')";
  51.                 OracleCommand comm = new OracleCommand(strSql, conn);
  52.                 comm.ExecuteNonQuery();
  53.                 if (j == dt.Rows.Count - 1)
  54.                 {
  55.                     Label1.Visible = true;
  56.                     Label1.Text = "所有数据成功导入!";
  57.                 }
  58.                 else
  59.                 {
  60.                     Label1.Visible = true;
  61.                 }
  62.             }
  63.             conn.Close();
  64.         }        
  65.     }
  66.     protected void Button1_Click(object sender, EventArgs e)
  67.     {
  68.         string StyleSheet = "Sheet1";
  69.         LoadData(StyleSheet);
  70.     }
  71.     protected void Button2_Click(object sender, EventArgs e)
  72.     {
  73.         string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
  74.         string sqlstr = "Select * From Usersdb";
  75.         OracleConnection conn = new OracleConnection(strConn);
  76.         OracleDataAdapter myda = new OracleDataAdapter(sqlstr, strConn);
  77.         DataSet ds = new DataSet();
  78.         conn.Open();
  79.         myda.Fill(ds, "Usersdb");
  80.         GridView1.DataSource = ds;
  81.         GridView1.DataBind();
  82.         conn.Close();
  83.     }
  84. }

web.config文件:

  1. <?xml version="1.0"?>
  2. <!-- 
  3.     注意: 除了手动编辑此文件以外,您还可以使用 
  4.     Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
  5.      “网站”->“Asp.Net 配置”选项。
  6.     设置和注释的完整列表在 
  7.     machine.config.comments 中,该文件通常位于 
  8.     /Windows/Microsoft.Net/Framework/v2.x/Config 中
  9. -->
  10. <configuration>
  11.     <appSettings/>
  12.   <connectionStrings>
  13.     <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"/>
  14.     <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"/>
  15.   </connectionStrings>
  16.     <system.web>
  17.         <!-- 
  18.             设置 compilation debug="true" 将调试符号插入
  19.             已编译的页面中。但由于这会 
  20.             影响性能,因此只在开发过程中将此值 
  21.             设置为 true
  22.         -->
  23.         <compilation debug="true">
  24.             <assemblies>
  25.                 <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
  26.         <!--
  27.             通过 <authentication> 节可以配置 ASP.NET 使用的 
  28.             安全身份验证模式,
  29.             以标识传入的用户。 
  30.         -->
  31.         <authentication mode="Windows"/>
  32.         <!--
  33.             如果在执行请求的过程中出现未处理的错误,
  34.             则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
  35.             开发人员通过该节可以配置
  36.             要显示的 html 错误页
  37.             以代替错误堆栈跟踪。
  38.         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
  39.             <error statusCode="403" redirect="NoAccess.htm" />
  40.             <error statusCode="404" redirect="FileNotFound.htm" />
  41.         </customErrors>
  42.         -->
  43.     </system.web>
  44. </configuration>

阅读全文
0 0

相关文章推荐

img
取 消
img