public ArrayList ExcelSheetName(string filepath)
{
ArrayList al = new ArrayList();
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}
return al;
}
为何遍历后 总多表名呢?例如 原表为 (表一$,表二$) 遍历后为(表一$,表一$_,表二$,表二$_)在线等解决 谢谢
http://download.csdn.net/source/3034170
上面是源文件,稍后整理下源码。
private void toolStripLabel1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx";
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
xlsname = ofd.FileName;
toolStripComboBox1.Enabled = true;
toolStripStatusLabel1.Text = "已经选择Excel文件: "+xlsname;
toolStripComboBox1.Items.Clear();
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlsname + ";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';"))
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow dr in dt.Rows)
{
//我将excel的工作表名放入了ComboBox中
toolStripComboBox1.Items.Add(dr["TABLE_NAME"]);
}
}
}
}
//先清除数组所有元素,然后遍历添加元素
al.Clear();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}
你的代码我试过了 也是提取出来六个表 但是 不存在的表名不同了 我的是_ 你的是例外一个名
string strConn;
strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filepath+";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames =conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null,null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
int i=dr["TABLE_Name"].ToString().IndexOf('$')+1; if (i < dr["TABLE_Name"].ToString().Length)
{
string str = dr["TABLE_Name"].ToString().Substring(0, i);
al.Add(str);
}
}