我有一个包含两列的excel文件。我想获得一列及其所有行,然后是第二列和所有行。以同样的方式,我应该重复12列的那些列。
我使用了下面的代码但是我没有获得所需的输出,我在第一列中获得Emp_name
但我应该在第二列中获得它。
for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
{
if (Cnum == 1)
{
dt.Columns.Add((ShtRange.Cells[1, Cnum] as Excel.Range).Value2.ToString());
for (int Rnum = 1; Rnum <= 9; Rnum++)
{
dt.Rows.Add((ShtRange.Cells[Rnum, 1] as Excel.Range).Value2.ToString());
}
}
else if (Cnum == 2)
{
dt.Columns.Add((ShtRange.Cells[1, Cnum] as Excel.Range).Value2.ToString());
for (int Rnum = 1; Rnum <= 9; Rnum++)
{
dt.Rows.Add((ShtRange.Cells[Rnum, 2] as Excel.Range).Value2).ToString();
}
}
答案 0 :(得分:0)
坦率地说,我认为您的代码中没有任何问题...这是一个简单的方法,可以在dataset
ds = new DataSet();
string myConnStr = "";
if (txtdestination.Contains(".xlsx"))
{
myConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtdestination.ToString() + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";
}
else
{
myConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtdestination.ToString() + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
}
OleDbConnection myConn = new OleDbConnection(myConnStr);
OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", myConn);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = cmd;
myConn.Open();
adapter.Fill(ds);
myConn.Close();
注意您需要将工作表名称设为Sheet1
txtdestination
是excel文件的路径