2014-02-12 520 views
1

如何從Excel中的單元格中正確選擇值?我知道我的問題是選擇單元格的命令。如何從Excel中的單元格中選擇一個值

我的實際腳本:

List<string> wsList = new List<string>(); 
DataTable schemaTable; 
DataSet da = new DataSet(); 
OleDbDataAdapter adapter = new OleDbDataAdapter(); 
string name; 
string FileName = fullpath; 
string _ConnectionString = string.Empty; 
string _Extension = Path.GetExtension(FileName); 
// Checking for the extentions, if XLS connect using Jet OleDB 
if (_Extension.Equals(".xls", StringComparison.CurrentCultureIgnoreCase)) 
{ 
    _ConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties=Excel 8.0", FileName); 
} 
// Use ACE OleDb 
else if (_Extension.Equals(".xlsx", StringComparison.CurrentCultureIgnoreCase)) 
{ 
    _ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", FileName); 
} 

OleDbConnection con = new OleDbConnection(_ConnectionString); 

try 
{ 
    con.Open(); 
    // Get schematable name from excel file 
    schemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
    foreach (DataRow row in schemaTable.Rows) 
     wsList.Add(row.Field<string>("TABLE_NAME")); 
    name = wsList[0]; 
    // Select values from cell in excel 
    string strCmd = "SELECT J38 FROM [" + name + "]"; // I think that here is my main problem 
    // Command for select value 
    OleDbCommand cmd = new OleDbCommand(strCmd, con); 

    da.Clear(); 
    adapter.SelectCommand = cmd; 
    adapter.Fill(da); 
    UniqueValue.money.Add(double.Parse(da.ToString())); 
} 

catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 

finally 
{ 
    con.Close(); 
} 

圖片,你可以看什麼,我需要選擇:(合併-細胞)

調試:

沒有找到一個或多個必需的參數,沒有值

+0

任何想法幫助我的問題? –

回答

1

合併單元格和數據適配器不混合。如果這是一次性的,請將原始工作表中的值複製到空白工作簿中並取消合併單元格,然後手動執行任何其他清理。如果這是一個需要重複並且批量較高的生產過程,那麼可以考慮在工作簿中編寫一個VBA宏,以便爲您執行副本/清理過程。

相關問題