asp.net excel to database excel и access database coloumn имена должны быть одинаковыми?

string b = "xa";
if (sa.HasFile)//Kullanıcı fileupload ile bir dosya seçmiş ise işlemleri gerçekleştir.
{
    if (sa.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || sa.PostedFile.ContentType == "application/vnd.ms-excel") //Sadece jpeg dosyalarını yüklenmesine izin veriyoruz.
    {
        if (sa.PostedFile.ContentLength < 1024000000) //Maksimum 1MB'lık dosyaların yüklenmesine izin veriyoruz.
        {
            string isim = Guid.NewGuid().ToString();
            //Benzersiz bir isim oluşturduk.İsimlendirme için farklı yöntemlerde kullanabilirsiniz.
            sa.SaveAs(Server.MapPath("~/App_Data/") + /*Session["kurumkodu"].ToString()*/ b + ".xlsx");
            //Sunucuda ki resimler klasörünün içerisine seçilen resmi oluşturduğumuz benzersiz isim ile kaydediyoruz.
            Label1.Text = "Dosya yüklendi";

            //Detaylı bir bilgi mesajı verdik.  
            string a = "xa";
            string Access = Server.MapPath("/App_Data/yeni.mdb");
            string Excel = Server.MapPath("~/App_Data/") + a/*Session["kurumkodu"].ToString()*/ + ".xlsx"; ;
            string connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Excel + ";Extended Properties=Excel 12.0;HDR=NO";

            using (OleDbConnection conn = new OleDbConnection(connect))
            {
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    try
                    {
                        cmd.Connection = conn;
                        cmd.CommandText = "INSERT INTO [MS Access;Database=" + Access + "].[Tablo1]  SELECT * FROM [DATA$]";
                        if (conn.State != ConnectionState.Open)
                        {
                            conn.Open();                                 
                        }
                        cmd.ExecuteNonQuery();
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Dispose();
                            conn.Close();
                        }
                        cmd.Dispose();
                        Response.Redirect("yonlendir.aspx");
                    }       
                    catch (Exception)
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Dispose();
                            conn.Close();
                        }

Мой код выше. I want to make intolerant from coloumn names excel to access system. Этот код имеет ошибку, как это:

Имена Coloumn не совпадают.

Как я могу обойтись без имен coloumn?

1 ответ

  1. -Как я могу это сделать?без coloumn names » No way.
    Но вы можете получить имена столбцов очень легко. Откройте DbDataReaderтаблицу назначения с where 1 = 0условием и используйте GetSchemaTableдля этого считывателя. Он будет содержать необходимые имена столбцов в порядке, вы можете соединить их запятыми и добавить это выражение после tablename: Insert into [...].[Tablename] (<<fieldlist>>) Select * From ...;