2010-06-11 2 views
1

Мне нужно помочь сгенерировать имя столбца из excel автоматически. Я думаю, что: мы можем сделать ниже коды:Как создать таблицу SQL с использованием столбцов 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(); 
} 

ответ

0

Вы должны иметь возможность перебирать коллекцию столбцов 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

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

0

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

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

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

    = СЦЕПИТЬ ("[", ПОДСТАВИТЬ (А1,»», ""), "] VARCHAR (20),")

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

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

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

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

  • мы получили все colunn заголовки из строки заголовка и
  • сделал их в колонку
  • затем удаляются все пробелы (они должны быть многословные заголовки столбцов) и
  • пришитые к началу открытой скобки «[» и
  • пришитые к концу «] VARCHAR (20),» (остальная часть строки кода)

enter image description here