如何在程序中列出Excel表的列名? 如何在程序中列出Excel表的列名? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 OLEDB连接excel,然后select * from sheet1 where 1=0,把结果装到DataSet 中,然后循环取DataTable的column,column的name就是列名 public IList<string> GetColumnsBySheet(string MyFullFileName, string MySheetName) { try { IList<String> fields = new List<String>(); DataTable dt = GetSheetData(MyFullFileName,MySheetName); foreach (DataColumn dc in dt.Columns) { fields.Add(dc.ColumnName); } fields.Insert(0, "Not In My File"); return fields; } catch (System.Exception ex) { throw ex; } } protected DataTable GetSheetData(string MyFullFileName,string MySheetName) { try { return GetSheetData(MyFullFileName,"select top 0 * from [" + MySheetName + "]"); } catch (Exception ex) { throw ex; } } protected DataTable GetSheetData(string MyFullFileName,string CmdString) { DataTable dt = null; OleDbConnection conn = new OleDbConnection(); try { conn.ConnectionString = GetConnection(FullFileName); conn.Open(); OleDbDataAdapter adp = new OleDbDataAdapter(CmdString, conn); DataSet ds = new DataSet(); adp.Fill(ds); dt = ds.Tables[0]; } catch (Exception ex) { throw ex; } finally { conn.Close(); } return dt; } protected string GetConnection(string MyFullFileName) { string cnn = string.Empty; switch (UpLoadFileType) { case FileType.Access: cnn= "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName; break; case FileType.Excel: cnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName + "; Extended Properties=Excel 8.0"; break; case FileType.Text: cnn = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.IO.Directory.GetParent(MyFullFileName).FullName + @";Extended Properties=""text;HDR=Yes;FMT=Delimited"""; break; default: throw new Exception("FileType is Wrong!"); } return cnn; } 小改一下就行,把第三个方法改为protected string GetConnection(string MyFullFileName) { return "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName + "; Extended Properties=Excel 8.0"; } SQL Server2008的连接问题 关于数据绑定 急救!ISAPI请救数超过100,网站打开的时候非常慢! WinForm界面中有5个TextBox如何循环给他们赋值? MySQL字符集问题 请问如何将一个user对象数组的内容方便的转换为dataset? 急聘项目经理、技术经理、高级程序员 c# release 问题 关于DataTable.Select(string filterStr)问题, 抛出stack overflow异常 c#水晶报表 WinForm中两个Panel怎样分进行切换 用serialPort控件使用com1口自发自接数据(50分)
public IList<string> GetColumnsBySheet(string MyFullFileName, string MySheetName)
{
try
{
IList<String> fields = new List<String>();
DataTable dt = GetSheetData(MyFullFileName,MySheetName);
foreach (DataColumn dc in dt.Columns)
{
fields.Add(dc.ColumnName);
}
fields.Insert(0, "Not In My File");
return fields;
}
catch (System.Exception ex)
{
throw ex;
}
} protected DataTable GetSheetData(string MyFullFileName,string MySheetName)
{
try
{
return GetSheetData(MyFullFileName,"select top 0 * from [" + MySheetName + "]");
}
catch (Exception ex)
{
throw ex;
}
} protected DataTable GetSheetData(string MyFullFileName,string CmdString)
{
DataTable dt = null;
OleDbConnection conn = new OleDbConnection();
try
{
conn.ConnectionString = GetConnection(FullFileName);
conn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(CmdString, conn);
DataSet ds = new DataSet();
adp.Fill(ds);
dt = ds.Tables[0];
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
return dt;
} protected string GetConnection(string MyFullFileName)
{
string cnn = string.Empty;
switch (UpLoadFileType)
{
case FileType.Access:
cnn= "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName;
break;
case FileType.Excel:
cnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName + "; Extended Properties=Excel 8.0";
break;
case FileType.Text:
cnn = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.IO.Directory.GetParent(MyFullFileName).FullName + @";Extended Properties=""text;HDR=Yes;FMT=Delimited""";
break;
default:
throw new Exception("FileType is Wrong!");
}
return cnn;
}
{
return "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName + "; Extended Properties=Excel 8.0";
}