Как я могу создать таблицу SQL, используя столбцы Excel? - PullRequest
1 голос
/ 11 июня 2010

Мне нужно помочь сгенерировать имя столбца из Excel автоматически. Я думаю, что: мы можем сделать ниже коды:

CREATE TABLE [dbo].[Addresses_Temp] ( 
    [FirstName]   VARCHAR(20), 
    [LastName]    VARCHAR(20), 
    [Address]     VARCHAR(50), 
    [City]        VARCHAR(30), 
    [State]       VARCHAR(2), 
    [ZIP]         VARCHAR(10) 
) 

через C #. Как узнать имя столбца в Excel?

private void Form1_Load(object sender, EventArgs e)
{
   ExcelToSql();
}

void ExcelToSql()
{
    string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\MPD.xlsm;Extended Properties=""Excel 12.0;HDR=YES;""";
    // if you don't want to show the header row (first row)            
    // use 'HDR=NO' in the string             
    string strSQL = "SELECT * FROM [Sheet1$]";            
    OleDbConnection excelConnection = new OleDbConnection(connectionString);           
    excelConnection.Open(); // This code will open excel file.            
    OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);          
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);            

    // create data table            
    DataTable dTable = new DataTable();            
    dataAdapter.Fill(dTable);            

    // bind the datasource          
    //  dataBingingSrc.DataSource = dTable;         
    // assign the dataBindingSrc to the DataGridView         
    // dgvExcelList.DataSource = dataBingingSrc;             // dispose used objects          
    if (dTable.Rows.Count > 0)
       MessageBox.Show("Count:" + dTable.Rows.Count.ToString());
    dTable.Dispose();           
    dataAdapter.Dispose();           
    dbCommand.Dispose();            
    excelConnection.Close();           
    excelConnection.Dispose();
}

Ответы [ 3 ]

0 голосов
/ 11 июня 2010

Вы должны иметь возможность перебирать коллекцию столбцов DataTable, чтобы получить имена столбцов.

System.Data.DataTable dt;
dt = new System.Data.DataTable();
foreach(System.Data.DataColumn col in dt.Columns)
{
     System.Diagnostics.Debug.WriteLine(col.ColumnName);
}
0 голосов
/ 30 августа 2016

Это не решение C # ... это быстрое и грязное решение прямо из Excel. Решение на c # было бы более надежным и позволяло бы вам, скорее всего, указать его на целевой xls и дать вам ответы - это решение для тех случаев, когда вам нужны быстрые ответы и у вас нет времени на написание программы или если кто-то не имеет среды разработки C # на своем компьютере.

Один из возможных способов получить результаты, которые вы ищете:

  • выделите строку в Excel с заголовками столбцов
  • скопируйте их
  • перейти на новый лист
  • щелкните правой кнопкой мыши ячейку A1
  • нажмите вставить-транспонировать
  • вставит их в формате столбца
  • перейдите к B2 и вставьте эту формулу в:

    = CONCATENATE ("[", ЗАМЕНА (A1, "", ""), "] varchar (20),")

  • затем вставьте эту формулу до конца рядом с вашим столбцом заголовков столбцов

  • скопируйте результаты в SQL Server и добавьте верхнюю строку кода "CREATE TABLE [dbo]. [Addresses_Temp] ("

  • затем добавьте закрывающие скобки

То, что мы сделали, это:

  • мы получили все заголовки colunn из строки ROW и
  • превратил их в колонну
  • затем удалил все пробелы (если они были заголовками столбцов с несколькими словами) и
  • прикрепил в начале открытую скобку "[" и
  • прикреплено к концу "] VARCHAR (20)" (остаток строки кода)

enter image description here

0 голосов
/ 11 июня 2010

Это должен быть C #? Если вы готовы использовать Java, у меня действительно хорошие результаты с Apache POI: http://poi.apache.org/

...