将Excel导入到Oracle

 private void btnInsert_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                ds = ImportExcel(openFileDialog1.FileName);
            else
                return;

            Thread thread = new Thread(new ThreadStart(InsertDBMeth));
            thread.Start();
        }
        DataSet ds;
        /// <summary>
        /// 插入数据库方法
        /// </summary>
        private void InsertDBMeth()
        {
            int odr = 0;
            OracleConnection conn = new OracleConnection(DBHelper.strConnection);//获得conn连接   
            try
            {
                conn.Open();
                OracleCommand cmd = conn.CreateCommand();
                cmd.CommandText = "Insert into TestInfo values(:CID,:PathSid,:CName,:Sid)";
                int dsLength = ds.Tables[0].Rows.Count;//获得Excel中数据长度   
                for (int i = 1; i < dsLength; i++)
                {
                    cmd.Parameters.Add("CID", OracleType.Number).Value = ds.Tables[0].Rows[i][0];
                    cmd.Parameters.Add("PathSid", OracleType.VarChar).Value = ds.Tables[0].Rows[i][1];
                    cmd.Parameters.Add("CName", OracleType.VarChar).Value = ds.Tables[0].Rows[i][2];
                    cmd.Parameters.Add("Sid", OracleType.Number).Value = ds.Tables[0].Rows[i][3];
                    odr = cmd.ExecuteNonQuery();//提交
            }

                //如果查到了数据,才使控制分页按钮生效   
                if (odr > 0)
                {
                    MessageBox.Show("插入成功");
                }
                conn.Close();
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        /// <summary>
        /// 将Excel保存到DataSet
        /// </summary>
        /// <param name="file">Excel表名</param>
        /// <returns></returns>
        private static DataSet ImportExcel(string file)
        {
            DataSet dsExcel = new DataSet();
            FileInfo fileinto = new FileInfo(file);
            if (!fileinto.Exists)
                return null;
            string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file +
                ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";

            OleDbConnection conn = new OleDbConnection(strConn);

            try
            {
                conn.Open();
                string strSql = "select * from [社区表$]";
                OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
                da.Fill(dsExcel);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                conn.Close();
            }
            return dsExcel;
        }

 获取Excel文件的第一个表名

    /// <summary>
        /// C#中获取Excel文件的第一个表名 
        /// Excel文件中第一个表名的缺省值是Sheet1$, 但有时也会被改变为其他名字. 如果需要在C#中使用OleDb读写Excel文件, 就需要知道这个名字是什么. 以下代码就是实现这个功能的:
        /// </summary>
        /// <param name="excelFileName"></param>
        /// <returns></returns>
        public static string GetExcelFirstTableName(string excelFileName)
        {
            string tableName = null;
            if (File.Exists(excelFileName))
            {
                using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet." +
                  "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + excelFileName))
                {
                    conn.Open();
                    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    tableName = dt.Rows[0][2].ToString().Trim();
                }
            }
            return tableName;
        }
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel文件中的数据导入Oracle数据库可以使用以下步骤: 1. 首先,需要将Excel文件读取到C#中,可以使用NPOI库来读取Excel文件中的数据。 2. 连接Oracle数据库,并打开连接。 3. 创建一个OracleCommand对象,该对象用于执行SQL命令。 4. 遍历Excel文件中的每一行数据,并将数据插入到Oracle数据库中,可以使用OracleCommand对象的ExecuteNonQuery方法来执行SQL语句。 以下是一个示例代码: ```csharp using System; using System.Data; using System.Data.OracleClient; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; // 读取Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(new FileStream("Excel文件路径", FileMode.Open)); ISheet sheet = workbook.GetSheetAt(0); // 连接Oracle数据库 string connectionString = "Data Source=数据库地址;User ID=用户名;Password=密码;"; OracleConnection connection = new OracleConnection(connectionString); connection.Open(); // 创建OracleCommand对象 OracleCommand command = new OracleCommand(); command.Connection = connection; // 遍历Excel文件中的每一行数据,将数据插入到Oracle数据库中 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row == null) continue; string col1 = row.GetCell(0).ToString().Trim(); string col2 = row.GetCell(1).ToString().Trim(); string col3 = row.GetCell(2).ToString().Trim(); string sql = "insert into table_name(col1, col2, col3) values(:col1, :col2, :col3)"; command.CommandText = sql; command.Parameters.Clear(); command.Parameters.Add(new OracleParameter(":col1", col1)); command.Parameters.Add(new OracleParameter(":col2", col2)); command.Parameters.Add(new OracleParameter(":col3", col3)); command.ExecuteNonQuery(); } // 关闭连接 connection.Close(); ``` 需要注意的是,在执行SQL语句时,使用了参数化查询,可以防止SQL注入攻击。另外,需要根据Excel文件和Oracle数据库的实际情况,修改代码中的表名、列名和连接字符串等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值