"SP $"というExcelシートから最初の列の値を取得しようとしています。OleDBでExcelシート(拡張子.xlsm)から最初の列の値を取得
string path = @"C:\Users\atsurkanu\Desktop" + @"\TemplateClientExtraction_IDEAFIMIT_Conero_QUARTER_20170127.xlsm";
string connectionString = string.Format(@"provider=Microsoft.ACE.OLEDB.12.0;data source={0};Extended Properties=Excel 12.0;", path);
string sheetName = "SP$";
と、このようないくつかのコード:
は、私はパスしてい
using (OleDbConnection con = new OleDbConnection(connectionString))
{
try
{
var dataTable = new DataTable();
con.Open();
var tableschema = con.GetSchema("Tables");
var firstsheet = tableschema.Rows[0]["SP$"].ToString();
string name_query = "SELECT A4 FROM [" + firstsheet + "]";
OleDbDataAdapter da = new OleDbDataAdapter(name_query, con);
da.Fill(dataTable);
con.Close();
をしかし、それは動作しません。どうか、猫がExcelシートから最初の列を取得する方法を教えてください。
UPDATE: 私はそれがどのように動作するかわからないが、それは役立ちます:
var dataTable = new DataTable();
con.Open();
var tableschema = con.GetSchema("Tables");
// To get the first sheet name you use the first row and the column named TABLE_NAME
var firstsheet = tableschema.Rows[0]["TABLE_NAME"].ToString();
string name_query = "SELECT F1 FROM [" + "SP$" + "] WHERE F1 <> ''";
OleDbDataAdapter da = new OleDbDataAdapter(name_query, con);
da.Fill(dataTable);
foreach (DataRow dataRow in dataTable.Rows)
{
foreach (var item in dataRow.ItemArray)
{
listWithElementsFromSPfirstColumn.Add((string)item);
}
}
正確には機能しません。エラーや例外はありますか? – andrews
A4とSP $は何ですか?それらは検索するセルとテーブルとして使用するシートの名前を表しますか? – Steve
A4 - データの取得を開始したい呼び出しの名前(A4 - > A5 - > A6)と同様です。理由はA1、A2、A3が空であるからです。 SP $ - スプレッドシート内のシートの名前。また、私は名前が付いたシートを持っています:コスト、ビルディングなど。 –