インポートせずにMicrosoft Excel UTF-8エンコード

インポートせずにMicrosoft Excel UTF-8エンコード

もっと検索して他の人の質問とその回答を見るように言う前に、私の質問を正確に読んでください。

ここでの他のほとんどのトピックは、テキスト インポート ウィザード内で UTF-8 をデフォルト オプションにする方法について説明しています。ただし、テキスト インポート ウィザードをまったく使用しないようにしたいと考えています。

ダブルクリックで開きたい CSV ファイルがあります。Excel は自動的に開きますが、デフォルトのエンコードとして 65001 (UTF-8) を使用するという regedit のトリックを実行しても、ファイルは正しく表示されません。

このエンコードを強制する方法はありますか?オープニングファイルの輸入それ?

前もって感謝します

(Excel 2016 を米国英語で使用しており、Windows 7 の地域設定はスペイン語 (米国) に設定されています。これが重要かどうかはわかりませんが、実際には区切り文字として既定のカンマを使用するためでした)

明確化のための編集: インポートに UTF-8 を強制する regedit トリックを実行した後、CSV ファイルを開くと、他の言語のアクセントと文字が依然として奇妙なコードとして表示されます。ただし、インポートは行いません (そのトリックは期待どおりに機能します)。ファイルを直接開いています。

答え1

PowerShell スクリプトを使用して CSV ファイルを開き、それを Excel に自動的に渡すことができます。スクリプトは、UTF-8 エンコードを処理する Excel のテキストインポートメソッドを暗黙的に使用し、さらに値を常にテキストとして扱います。

このスクリプトへのショートカットをに送るフォルダー内のすべてのCSVファイルを開くことができますRight click » SendTo » myScript(簡単な方法)

(または)

使用できますPS2EXEスクリプトを実行可能ファイル(.exe)に変換します。.csvファイルを右クリックし、「開く' この .exe を CSV ファイルを開くための既定のプログラムとして選択します (高度な方法)

何をするのか

  • UTF-8文字が正しく表示されます
  • 複数の CSV ファイルを開くことができます。各 CSV コンテンツを同じワークブック内の新しいワークシートとして保存します。
  • すべての値は純粋なテキストとして扱われます。Excelの組み込みCSVハンドラからの解釈はありません。

    • つまり、0001そのまま残り0001、変換されない1
    • つまり、-A122:23=AZ1+32として解釈されず、そのまま残ります

使い方

  • 新しいテキストファイルを作成し、以下のスクリプトを貼り付けます。コメント付きバージョンは以下にあります。ここ
$CSVs = @()
$args.ForEach({
    If ((Test-Path $_) -and ($_ -Match ".csv$|.txt$")) {
        $CSVs += ,$_
    } 
})

if (-Not $null -eq $CSVs) {

    $excel = New-Object -ComObject excel.application 
    $excel.visible = $true
    $excel.SheetsInNewWorkbook = $CSVs.Count    
    $workbook = $excel.Workbooks.Add()

    for ($i=0; $i -lt $CSVs.Count; $i++){

        $csv = Get-Item $CSVs[$i]
        $worksheet = $workbook.worksheets.Item($i + 1)
        $worksheet.Name = $csv.basename

        $TxtConnector = ("TEXT;" + $csv.fullname)
        $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
        $query = $worksheet.QueryTables.item($Connector.name)
        $query.TextFilePlatform = 65001
        $query.TextFileTextQualifier = 1
        $query.TextFileOtherDelimiter = $Excel.Application.International(5) 
        $query.TextFileParseType  = 1
        $arrFormats = ,2 * $worksheet.Cells.Columns.Count
        $query.TextFileColumnDataTypes = $arrFormats
        $query.AdjustColumnWidth = 1
        $query.Refresh()
        $query.Delete()
    }
}

  • のような場所に保存しますC:\Tools\myScript.ps1。(拡張子に注意してください.ps1)
  • WinR» shell:sendto» からsendtoフォルダを開きますEnter
  • 右クリック » 新規 » ショートカットで新しいショートカットを作成し、この行を貼り付けます。スクリプトを配置したパスを自分のパスに変更することを忘れないでください。

"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe " -NoProfile -NonInteractive -WindowStyle Hidden -File「C:\my\folder\myScript.ps1」

比較

  • 新しい方法: スクリプト経由で開く (sendto または PS2EXE 変換された実行ファイル経由)

ここに画像の説明を入力してください

  • 従来の方法: ダブルクリックで開く

ここに画像の説明を入力してください


備考

  • PS2EXEはWindows 10では動作しません。.NETバージョン4.5以上はPS2EXEではサポートされていないためです。このプログラムはWindows 7の.NET 4.0で動作します。

  • 最初のテストでは、Excel は中国語の UTF-8 文字を表示しようとしたときに意味不明な表示をしました。しかし、テスト中にこの動作が切り替わり、今ではどちらの方法でも UTF-8 を正しく処理できるようになりました。原因はわかりません。

関連情報