**更新 (2012.12.13) - サンプルコード、入力フォーマット、出力サンプルを追加
私はこれで数日間戦ってきましたが、アイデアが尽きてしまいました。複数の XLSX ファイルに対してスクリプトをテストしました (そして、スクリプトを目の前にしたら後でアップロードできます)。接続文字列が機能し、必要なデータを解析しています...
問題は、(サードパーティのレポート アプリケーションから生成された) 入力ファイルを処理しようとすると、データがワークシートから読み取られないことです。
Excel 内で入力ファイルを開いて保存すると (フォーマットの変更、データの入力/削除、変更はまったく行われません)、入力ファイルはすべてのデータを処理および解析します。
HDR=Yes/No や IMEX=1 など、接続文字列で複数の「拡張プロパティ」設定を使用してみましたが、役に立ちませんでした。
誰もこれまでにこのようなものを見たことがありますか?
#inputFile_original.xlsx will not parse the data from the worksheet
#inputFile_original_reSaved.xlsx parses the data without any issues
$fileName = "inputFile_original.xlsx"
#$fileName = "inputFile_original_reSaved.xlsx"
$filePath = ".\OLEDB\test\"
#Build the connection string
$ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
$ConnectionString += (Join-Path -Path $filePath -ChildPath $fileName)
$ConnectionString += ";OLE DB Services=-4;Extended Properties="
$ConnectionString += '"Excel 12.0 Xml;HDR=YES;IMEX=1";'
$conn = New-Object System.Data.OleDb.OleDbConnection($ConnectionString)
$conn.Open()
$tables = $conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::tables,$null)
$cmd = New-Object System.Data.OleDb.OleDbCommand("Select * FROM [$($tables.rows[0].TABLE_NAME)]",$conn)
$da = New-Object System.Data.OleDb.OleDbDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$da.Fill($ds)
#Output the data to the console
$ds.tables
また、入力ファイルは、本当に使いやすいレイアウトでフォーマットされていません。繰り返しますが、サードパーティのアプリケーションから生成されたためです。
空白行があり、ヘッダー行が行 1 から開始されていません。
ABCDEF -------------------------------------------------- ------------------------ 01 | レポートタイトル 02 | 03 | ColHeader1 ColHeader2 ColHeader3 ColHeader4 ColHeader5 ColHeader6 04 | データ データ データ データ データ データ 05 | データ データ データ データ データ データ 06 | データ データ データ データ データ データ 07 | データ データ データ データ データ データ 08 | データ データ データ データ データ データ 09 | 10 | 合計: 5
私が受け取っている出力を以下に示します。
(A) 元ファイル
レポートのタイトル: F2 : F3 : F4 : F5 : F6 : レポートのタイトル: ColHeader1 F2 : F3 : F4 : F5 : F6 :
(B) 再保存されたファイル
レポートのタイトル: F2 : F3 : F4 : F5 : F6 : レポートのタイトル: ColHeader1 F2 : ColHeader2 F3 : ColHeader3 F4 : ColHeader4 F5 : ColHeader5 F6 : ColHeader6 レポートタイトル:データ F2 : データ F3 : データ F4 : データ F5 : データ F6 : データ レポートタイトル:データ F2 : データ F3 : データ F4 : データ F5 : データ F6 : データ レポートタイトル:データ F2 : データ F3 : データ F4 : データ F5 : データ F6 : データ レポートタイトル:データ F2 : データ F3 : データ F4 : データ F5 : データ F6 : データ レポートタイトル:データ F2 : データ F3 : データ F4 : データ F5 : データ F6 : データ レポートのタイトル: F2 : F3 : F4 : F5 : F6 : レポートのタイトル : 合計: 5 F2 : F3 : F4 : F5 : F6 :