Excelファイルがあり、列に名前があります(データソースはクライアントによって制御されません)。列が変更されても、列ヘッダーは決して変更されません。ファイルでC#でExcelファイルから値を読み取る
は、私が同じ列内のすべてのセル内のデータにアクセスするにはどうすればよい
「ファーストネーム」と呼ばれていますか?私はマイクロソフトからこの例を見てみましょう
Excelファイルがあり、列に名前があります(データソースはクライアントによって制御されません)。列が変更されても、列ヘッダーは決して変更されません。ファイルでC#でExcelファイルから値を読み取る
は、私が同じ列内のすべてのセル内のデータにアクセスするにはどうすればよい
「ファーストネーム」と呼ばれていますか?私はマイクロソフトからこの例を見てみましょう
Excelファイルをデータベースとして開きます。その後、列の位置について気にする必要はありません。
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyExcelFile.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
using (var conn = new System.Data.OleDb.OleDbConnection(connString)) {
conn.Open();
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("Select * From [SheetName$]", conn);
OleDbDataReader reader = cmd.ExecuteReader();
int firstNameOrdinal = reader.GetOrdinal("First Name");
int lastNameOrdinal = reader.GetOrdinal("Last Name");
while (reader.Read()) {
Console.WriteLine("First Name: {0}, Last Name: {1}",
reader.GetString(firstNameOrdinal),
reader.GetString(lastNameOrdinal));
}
}
ビルド構成を 'AnyCPU'から 'x86'に変更しなければならなかったが、これは私にとってはうまくいった。どうやらMicrosoft.Jet.OLEDB.4.0はx64を実行しているときは利用できません。 –
残念ながら、Jetには64ビットインターフェイスがありません。 –
あなたはファイルに接続し、シートのコンテンツをダウンロードするためにODBCを使用します。ここで、このような何かを行うことができます。ここで
private bool DownloadExcelData(string fileName, ref DataTable informationDT)
{
// bool success
bool success = true;
// open the file via odbc
string connection = ConfigurationManager.ConnectionStrings["xls"].ConnectionString;
connection = String.Format(connection, FilePath + fileName);
OleDbConnection conn = new OleDbConnection(connection);
conn.Open();
try
{
// retrieve the records from the first page
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Information$]", conn);
OleDbDataAdapter adpt = new OleDbDataAdapter(cmd);
adpt.Fill(informationDT);
}
catch { success = false; }
// close the connection
conn.Close();
return success;
}
のxlsとのxlsxファイルのためのいくつかのサンプルODBC接続は、次のとおりです。
<add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;'" />
<add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0" />
私は過去にExcelファイルを読むためにFileHelpers Libraryを成功裏に使用しています。
私はこれまでにexcelLibraryを使用しており、非常に使いやすいことがわかりました。
ヘッズアップ:Excelの列に「ヘッダ」データベースの列名に類似していない - 彼らは彼らのテキストを「見出し」と普通の細胞です。したがって、ヘッダーを取得するには、最初の行のセルのテキストを読み取る必要があります。最初の行のセルをループして、目的のヘッダーテキストを持つセルを探します。次に、テキスト=列名のセルが見つかると、その下の列にデータが含まれていることがわかります – bernie2436
Interop、OLE、other? –