C# 读取 Excel 表中的数据 存入 SQLSERVER

诶呀呀 我好久没有写blog了 在干嘛呢 想想哦, 对了最近迷上了个网页游戏 哈哈~~ 是什么 我不说~ 我就不帮 pchome做广告

 

今天我要做的是 在 winform 中 读取 excel 表中的数据。

 

好建立一个 winform  的窗体  中间放一个 datagridview  控件 干嘛的呢? 就是让我先直观的看出数据是不是进入了ds, 当然我这个是偷懒的做法 哇哈哈 原谅我的懒~

 

 

 

 

不准批评我的 设计功底

 

好了 界面做好了 现在就是要写后台了。

首先

 

我们做个方法 返回一个 datatable 

 

  1. public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
  2.         {
  3.             FileInfo fileInfo = new FileInfo(strExcelFileName);
  4.             if (!fileInfo.Exists)
  5.                 return null;
  6.             string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileInfo + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";
  7.             
  8.             string strExcel = string.Format("select * from [{0}$]", strSheetName);
  9.             DataSet ds = new DataSet();
  10.             using (OleDbConnection conn = new OleDbConnection(connectionString))
  11.             {
  12.                 conn.Open();
  13.                 OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, connectionString);
  14.                 adapter.Fill(ds, strSheetName);
  15.                 conn.Close();
  16.             }
  17.             return ds.Tables[strSheetName];
  18.         }

 

然后呢 我在button的 click的事件中 调用他 方法是这样的

 

 

  1. private void btnReadExcel_Click(object sender, EventArgs e)
  2.         {
  3.             
  4.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  5.             {
  6.                 dt = ExcelToDataTable(this.openFileDialog1.FileName, "Sheet1");//获得Excel
  7.                 this.dataGridView1.DataSource = dt.DefaultView;
  8.             }
  9.             else
  10.             {
  11.                 return;
  12.             } 
  13.         }

 

 

然后我们就可以看到 在数据控件中出现了数据 如下图

 

 

 

 

恩 初看还是不错的吧 哇哈哈

好了 下面就是 怎么将datatable里面的数据存入数据库里面

 

 

 

  1.  private void btnSaveData_Click(object sender, EventArgs e)
  2.         {
  3.             SqlConnection myConnection1 = new SqlConnection(@"Data Source=CASPER-LAPTOP/SQLEXPRESS;Initial Catalog=PrintSys;Integrated Security=True");
  4.             try
  5.             {
  6.                
  7.                 myConnection1.Open();
  8.                 int i;
  9.                 i = dt.Rows.Count;
  10.                 int count = 0;
  11.                 for (int j = 1; j < i; j++)                    //循环插入数据库的 
  12.                 {
  13.                     string City;
  14.                     string Hotelno;
  15.                     string HotelName;
  16.                     string Remark;
  17.                     string Sales;
  18.                     string Ac;
  19.                     string Reservation;
  20.                     string Tel;
  21.                     string Fax;
  22.                     string Address;
  23.                     City = dt.Rows[j][0].ToString();
  24.                     Hotelno = dt.Rows[j][1].ToString();
  25.                     HotelName = dt.Rows[j][2].ToString();
  26.                     Remark = dt.Rows[j][3].ToString();
  27.                     Sales = dt.Rows[j][4].ToString();
  28.                     Ac = dt.Rows[j][5].ToString();
  29.                     Reservation = dt.Rows[j][6].ToString();
  30.                     Tel = dt.Rows[j][7].ToString();
  31.                     Fax = dt.Rows[j][8].ToString();
  32.                     Address = dt.Rows[j][9].ToString();
  33.                     string insertcmd1 = "insert into Hotel_info values ('" + City + "','" + Hotelno + "','" + HotelName + "','" + Remark + "','" + Sales + "','" + Ac + "','" + Reservation + "','" + Tel + "','" + Fax + "','" + Address + "')";    //赋值写入数据库 
  34.                     SqlDataAdapter dap = new SqlDataAdapter(insertcmd1, myConnection1);
  35.                     count = dap.Fill(dt);
  36.                 }
  37.                 MessageBox.Show("成功更新到数据库中!""系统消息!");
  38.             }
  39.             catch (Exception ex)
  40.             {
  41.                 MessageBox.Show("更新到数据库中出错!""系统消息!");
  42.             }
  43.             finally
  44.             {
  45.                 myConnection1.Close();
  46.             }
  47.         }

这段有问题的 因为这个格式是特别为转门有固定格式的excel写的 所以格式是死的 我还是会改一下 让他通用一点 嘿嘿i

到这里 基本ok啦 ,下面贴出全部的代码

 

 

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Data;
  6. using System.Data.OleDb;
  7. using System.Data.SqlClient;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Windows.Forms;
  12. namespace ExcelRead
  13. {
  14.     public partial class frmReadExcel : Form
  15.     {
  16.         DataTable dt;
  17.         public frmReadExcel()
  18.         {
  19.             InitializeComponent();
  20.         }
  21.         private void Form1_Load(object sender, EventArgs e)
  22.         {
  23.         }
  24.         public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
  25.         {
  26.             FileInfo fileInfo = new FileInfo(strExcelFileName);
  27.             if (!fileInfo.Exists)
  28.                 return null;
  29.             string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileInfo + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";
  30.             
  31.             string strExcel = string.Format("select * from [{0}$]", strSheetName);
  32.             DataSet ds = new DataSet();
  33.             using (OleDbConnection conn = new OleDbConnection(connectionString))
  34.             {
  35.                 conn.Open();
  36.                 OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, connectionString);
  37.                 adapter.Fill(ds, strSheetName);
  38.                 conn.Close();
  39.             }
  40.             return ds.Tables[strSheetName];
  41.         }
  42.         private void btnReadExcel_Click(object sender, EventArgs e)
  43.         {
  44.             
  45.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  46.             {
  47.                 dt = ExcelToDataTable(this.openFileDialog1.FileName, "Sheet1");//获得Excel
  48.                 this.dataGridView1.DataSource = dt.DefaultView;
  49.             }
  50.             else
  51.             {
  52.                 return;
  53.             } 
  54.         }
  55.         private void btnSaveData_Click(object sender, EventArgs e)
  56.         {
  57.             SqlConnection myConnection1 = new SqlConnection(@"Data Source=CASPER-LAPTOP/SQLEXPRESS;Initial Catalog=PrintSys;Integrated Security=True");
  58.             try
  59.             {
  60.                
  61.                 myConnection1.Open();
  62.                 int i;
  63.                 i = dt.Rows.Count;
  64.                 int count = 0;
  65.                 for (int j = 1; j < i; j++)                    //循环插入数据库的
  66.                 {
  67.                     string City;
  68.                     string Hotelno;
  69.                     string HotelName;
  70.                     string Remark;
  71.                     string Sales;
  72.                     string Ac;
  73.                     string Reservation;
  74.                     string Tel;
  75.                     string Fax;
  76.                     string Address;
  77.                     City = dt.Rows[j][0].ToString();
  78.                     Hotelno = dt.Rows[j][1].ToString();
  79.                     HotelName = dt.Rows[j][2].ToString();
  80.                     Remark = dt.Rows[j][3].ToString();
  81.                     Sales = dt.Rows[j][4].ToString();
  82.                     Ac = dt.Rows[j][5].ToString();
  83.                     Reservation = dt.Rows[j][6].ToString();
  84.                     Tel = dt.Rows[j][7].ToString();
  85.                     Fax = dt.Rows[j][8].ToString();
  86.                     Address = dt.Rows[j][9].ToString();
  87.                     string insertcmd1 = "insert into Hotel_info values ('" + City + "','" + Hotelno + "','" + HotelName + "','" + Remark + "','" + Sales + "','" + Ac + "','" + Reservation + "','" + Tel + "','" + Fax + "','" + Address + "')";    //赋值写入数据库
  88.                     SqlDataAdapter dap = new SqlDataAdapter(insertcmd1, myConnection1);
  89.                     count = dap.Fill(dt);
  90.                 }
  91.                 MessageBox.Show("成功更新到数据库中!""系统消息!");
  92.             }
  93.             catch (Exception ex)
  94.             {
  95.                 MessageBox.Show("更新到数据库中出错!""系统消息!");
  96.             }
  97.             finally
  98.             {
  99.                 myConnection1.Close();
  100.             }
  101.         }
  102.     }
  103. }

 

 

 

 

 

 

  • 0
    点赞
  • 4
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值