Сохраните файл Excel в базе данных, используя c # - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть файл Excel.Теперь мне нужно сохранить данные файла Excel в базе данных.Какой самый простой способ сделать это с помощью C # на простом примере?Заранее благодарен

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Чтобы скопировать из таблицы SQL Server в файл Excel, попробуйте следующее.

using System;
using System.Drawing;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                System.Data.OleDb.OleDbConnection MyConnection ;
                System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
                string sql = null;
                MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
                MyConnection.Open();
                myCommand.Connection = MyConnection;
                sql = "Insert into [Sheet1$] (id,name) values('5','e')";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();
                MyConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show (ex.ToString());
            }
        }
   }
}

Или, используя предложение «Где», вы можете лучше контролировать вывод.

using System;
using System.Drawing;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                System.Data.OleDb.OleDbConnection MyConnection ;
                System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
                string sql = null;
                MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
                MyConnection.Open();
                myCommand.Connection = MyConnection;
                sql = "Update [Sheet1$] set name = 'New Name' where id=1";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();
                MyConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show (ex.ToString());
            }
        }
   }
}
0 голосов
/ 08 марта 2019

Это будет делать то, что вы хотите.

private void button1_Click(object sender, EventArgs e)
{
    System.Data.OleDb.OleDbConnection ExcelConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\your_path\\Import_List.xls;Extended Properties=Excel 8.0;");

    ExcelConnection.Open();

    string expr = "SELECT * FROM [Sheet1$]";
    OleDbCommand objCmdSelect = new OleDbCommand(expr, ExcelConnection);
    OleDbDataReader objDR = null;
    SqlConnection SQLconn = new SqlConnection();
    string ConnString = "Data Source=Your_Database_Name;Initial Catalog=Table_Name;Trusted_Connection=True;";
    SQLconn.ConnectionString = ConnString;
    SQLconn.Open();

    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SQLconn))
    {

        bulkCopy.DestinationTableName = "tblTest";

        try
        {
            objDR = objCmdSelect.ExecuteReader();
            bulkCopy.WriteToServer(objDR);
            ExcelConnection.Close();

            //objDR.Close()
            SQLconn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

}
...