我需要帮助自动从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 :(得分:0)
它必须是C#吗?如果您愿意使用Java,我在Apache POI上取得了非常好的成绩:http://poi.apache.org/
答案 1 :(得分: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);
}
答案 2 :(得分:0)
这不是C#解决方案......从excel开始,它是一个快速而肮脏的解决方案。 一个c#解决方案会更强大,并且允许您最有可能将其指向目标xls并让它给出答案 - 如果您需要快速获得答案并且没有时间编写程序或如果有人在他们的计算机上没有C#开发环境。
获得您正在寻找的结果的一种可能方法是:
转到B2并将此公式粘贴到:
= CONCATENATE(" [",SUBSTITUTE(A1,"",""),"] varchar(20),& #34)
然后将该公式一直粘贴到列标题列
将结果复制到SQL Server中,然后添加您的顶行代码 " CREATE TABLE [dbo]。[Addresses_Temp]("
然后添加您的右括号
我们做的是: