가져오기 없이 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의 텍스트 가져오기 방법을 자동으로 사용합니다.

이 스크립트에 대한 바로가기를센드토Right click » SendTo » myScript폴더를 통해 (쉬운 방법) 모든 CSV 파일을 열 수 있습니다.

(또는)

당신이 사용할 수있는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 -파일"C:\내\폴더\myScript.ps1"

비교

  • 새로운 방식: 스크립트를 통해 열림(sendto 또는 PS2EXE 변환 실행 파일을 통해)

여기에 이미지 설명을 입력하세요

  • 기존 방식: 더블클릭으로 열림

여기에 이미지 설명을 입력하세요


비고

  • PS2EXE에서는 .NET 버전 4.5 이상이 지원되지 않으므로 Windows 10에서는 PS2EXE가 실행되지 않습니다. 이 프로그램은 .NET 4.0이 설치된 Windows 7에서 작동합니다.

  • 첫 번째 테스트에서 Excel은 중국어 UTF-8 문자를 표시하려고 할 때 횡설수설을 표시했습니다. 그러나 테스트 중에 이 동작이 바뀌었고 이제 두 방법 모두 UTF-8을 올바르게 처리합니다. 나는 이것이 원인이 무엇인지 전혀 모른다

관련 정보