MS Excel에서 열린 CSV 문서에 기본적으로 설정 적용

MS Excel에서 열린 CSV 문서에 기본적으로 설정 적용

우리가 개발 중인 시스템의 최종 사용자에게는 최종 사용자가 MS Excel에서 열 수 있는 평범한 CSV 파일이 제공됩니다. 열 중 하나에는 숫자 문자열로 구성된 항목이 포함됩니다. 이는 숫자가 아니라 식별자입니다. 이 열에 적용된 기본 형식으로 인해 항목이 큰 숫자로 해석되어 나중에 과학적 표기법으로 렌더링된다는 점을 확인했습니다. 이미 이것은 나쁜 사용자 경험입니다. 하지만 잠깐만요, 재앙이 될 것입니다. 파일을 저장하면 데이터가 단정밀도 부동 소수점 값으로 해석되고 6번째 이후의 모든 숫자가 완전히 잘립니다. 저장하기 전에 열이 제대로 표시되도록 사용자가 서식을 변경하면 Excel에서는 이 동작이 나타나지 않으며 저장 시 데이터가 손상되지 않습니다.

나는 (1) 열의 형식을 변경하거나 (2) 수식 평가를 비활성화하면 두 가지 문제가 모두 발생하지 않는다는 것을 발견했습니다.

이제 내 질문: MS Excel에서 CSV 형식 파일을 열 때 기본적으로 위 작업 중 하나를 수행하거나 위에서 언급한 문제를 방지하는 다른 작업을 수행할 수 있습니까? 최종 사용자가 Excel 형식의 파일을 포함하여 모든 파일에 대해 수식 실행을 비활성화해야 한다는 점에 클라이언트가 동의하도록 하는 것은 아마도 불가능할 정도로 어려운 일입니다. 전역 설정을 지정하는 방법이 있습니까? 특히 CSV가 처리되는 방식을 구성하는 방법이 있습니까? 열려 있는 모든 CSV 파일에서 실행되는 사용자의 Excel 설치에 매크로를 배포하는 방법은 무엇입니까?

답변1

Excel 추가 기능을 작성하면 이 작업을 수행할 수 있다는 것을 알았습니다. 통합 문서를 열면 다음을 수행할 수 있습니다.

// set format of everything to text
Wb.ActiveSheet.UsedRange.NumberFormat = "@";

// disable further formatting - may not be necessary
Wb.ActiveSheet.EnableFormatConditionsCalculation = "false";

// for any existing cells, overwrite the formatted data with the real data, e.g., the formula
Wb.ActiveSheet.UsedRange.Value = Wb.ActiveSheet.UsedRange.Formula;

이것은 Excel 2010에서 작동합니다.

관련 정보