2016-11-25 7 views
0

Powershellを使用してCSVに処理したいExcelファイルがあります。 私はかなり具体的にそれを変更する必要がありますので、csv情報を処理するプログラムの信頼できる入力にすることができます。 正確なヘッダーはわかりませんが、重複する可能性があります。私は何をすべきか は、Excelとのxlsxファイル開いており、CSVとして保存します。名前を変更して区切り記号を使用してPowershellで.xlsxをcsvに処理する

$objExcel = New-Object -ComObject Excel.Application 
$objExcel.Visible = $True 
$objExcel.DisplayAlerts = $True 

$Workbook = $objExcel.Workbooks.open($xlsx1) 
$WorkSheet = $WorkBook.sheets.item($sheet) 
$xlCSV = 6 

$Workbook = $objExcel.Workbooks.open($xlsx2) 
$WorkSheet = $WorkBook.sheets.item($sheet) 
$WorkBook.SaveAs($csv2,$xlCSV) 

、XLSXファイルは、カンマのを持っていますので、最初私はドットにそれらを変更したいです。 は、私はこれを試してみましたが、それは働いていない:

$objRange = $worksheet.UsedRange 
$objRange.Replace ",", "." 

このエラーアウトと言って:予期しないトークン「『』」。

保存するときに区切り文字をカンマに設定する場合は、「;」を使用します。標準。 次のようなもの:

$WorkBook.SaveAs($csv2,$xlCSV) -delimiter "," 

最後の問題は重複したヘッダーです。 PSがImport-CSVを使用するのを防ぎます。

Get-Content $downloads\BBKS_DIR_AUTO_COMMA.csv -totalcount 1 >$downloads\Headers.txt 

しかし、私は私がレジオ、レギオ、レジオを持つことができるようにデ重複した名前の名前を変更する必要があります。ここで私は、ファイルがそれが動作カンマで区切られたときに、試してみました。 これをRegio、Regio2、Regio3に変更したい

私の計画は、txtのデータを検索し、重複を検索してから、増分数値を広告することでした。

最後に、増分の数値を持つ列を追加する必要がありますが、常に4つの数値が必要です。 0001、0002、0010、0020、0200、1500、私は9999を超えません。これはどのようにすることができますか?

あなたが私を助けることができれば、部分的にしか私は非常に満足しています。 また、Windows 7 x64、Powershell 3.0、Excel 2016(関連する場合) を実行しています。個人的に

+0

ここでは、 ';'区切り文字(タイトルで識別されます)とcsvを保存するためのものと、ヘッダー用のものとの2つの質問をします。前者については、あなたの[デフォルトの言語設定](http://stackoverflow.com/questions/13496686/how-to-save-semi-colon-delimited-csv-file-using-vba)は何ですか?それは ';'に設定されていますか?後者の場合は、別の別のSOの質問をしてください。その質問には、1つのライナーではなく、広範なコーディングが必要です。 – Parfait

答えて

1

、私は試してみて、エクセル自体およびCOM経由でExcelシートでは動作しません - 私はhttps://github.com/dfinke/ImportExcel

は、その後、あなたがまっすぐにネイティブPowerShellのオブジェクト配列にシートからインポートすることができます優れたモジュールを使用したい、とExport-Csv -Delimiterを使用して再エクスポートします。

編集:フォローアップを答えるために:

あなたが行うことができますモジュールをロードしたら

「ゲット・モジュールImportExcelを|選択して、オブジェクト-ExpandPropertyのExportedCommandsは」それが利用できるようにするかを確認します。

$WorkBook = Import-Excel 

そして、あなたが重複する列名の世話をする必要がある場合は、あなたが行うことができます::、最初の場所であなたのExcelをインポートするような何かを

$WorkBook = Import-Excel -Header @("Regio1", "Regio2", "Regio") 

配列〜に渡すと、ワークブックから必要なすべての列を含める必要があります。

+0

すぐにお返事ありがとうございます。私は、ImportExcelモジュールが素晴らしいと感じています。そのプログラミングだけでは初めてのことであり、モジュールを通してのガイドではないようです。使用することができるコマンドや質問をするためのフォーラムを説明しているどこかのガイド(ユーザーフレンドリーでないReadmeから離れて)のガイドがありませんか? –

関連する問題