더 검색하고 다른 사람들의 질문과 답변을 보라고 말하기 전에 내 질문을 정확하게 읽으십시오.
여기에 있는 대부분의 다른 주제는 텍스트 가져오기 마법사 내에서 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을 올바르게 처리합니다. 나는 이것이 원인이 무엇인지 전혀 모른다