본 자료는
1. IEC-Series에서 XLSX 형식의 Excel 파일을 읽거나 쓸 수 없는 이유
2. IEC-Series에서 CSV 형식의 Excel 파일을 생성하는 방법
순서로 진행합니다.
IEC-Series에서 XLSX 형식의 Excel 파일을 읽거나 쓸 수 없는 이유를 설명하고, 이에 대한 대안책인 CSV 형식의 Excel 파일을 생성하는 방법을 안내합니다.
1. IEC-Series에서 XLSX 형식의 Excel 파일을 읽거나 쓸 수 없는 이유
일반적으로 .NET Framework 버전에서 C#을 이용해 Excel 파일의 데이터를 읽거나 쓸 때, (1) Excel Automation을 이용하거나 (2) OLEDB를 이용할 수 있습니다.
(1) C#에서 Excel Automation을 이용하기 위해서는 Excel Interop을 참조한 후, Office Automation COM API들을 사용하게 됩니다.
필요한 파일은 Microsoft.Office.Interop.Excel.dll입니다. 하지만 스마트 장치용 프로젝트(.Net Compact Framework)에서는 참조 부분에서 COM API를 참조할 수 없는 관계로 참조가 되지 않아 사용할 수 없습니다.
(2) C#에서 엑셀을 OLEDB를 이용할 경우에는 ADO.NET의 OleDb 클래스들을 사용하여 Excel 파일을 생성할 수 있지만 이 기능은 .NET Framework에서 제공하는 기능입니다.
스마트 장치 프로젝트에서는 OleDB 클래스를 사용할 수 없습니다.
따라서, .Net Compact Framework 2.0/3.5 버전만을 지원하는 IEC-Series에서는 xlsx 형식의 Excel 파일을 읽거나 쓸 수 없습니다.
2. IEC-Series에서 CSV 형식의 Excel 파일을 생성하는 방법
위와 같은 이유로 XLSX 형식의 Excel 파일을 IEC-Series에서 생성하거나 읽을 수는 없지만, 대안책으로 ','(콤마)를 통해 행을 구분하는 CSV 형식의 Excel 파일을 생성할 수 있습니다. 이 CSV 형식의 Excel 파일은 SmartFile을 사용해 IEC-Series에서 읽거나 쓸 수 있으며 자세한 사용법은 아래 STEP을 확인하시기 바랍니다.
확장자 | 구분자 | 구분자 기능 설명 |
---|---|---|
CSV | ','(콤마) | 행과 열에서 셀(Cell)을 구분하기 위한 기호 |
- [STEP-1] SmartFile을 사용해 CSV 형식의 파일 Open하기
SmartFile에서 FilePathName 설정 시 파일 형식을 csv로 하여 설정 후 Open합니다.
// 경로 설정
smartFile1.FilePathName = "Flash Disk\\TestFile.csv";
// SmartFile Open.
if (smartFile1.Open() == true)
{
// File Open 성공
}
- [STEP-2] 데이터 작성 시 구분자를 ','(콤마)로 하여 작성합니다.
SmartFile의 Wrtie 관련 메소드(Write(), WriteBuffer(), WriteBufferSave()) 호출 시 반드시 구분자를 ','(콤마)로 하여 호출합니다.
// StringType의 파일 인코딩 방식을 ANSI로 설정합니다.
smartFile1.StringType.EncodingType = SmartX. SmartFile.Encodings.ANSI;
// 구분자를 ','(콤마)로 하여 데이터를 작성
smartFile1.StringType.Write(“가,나,다,라,마”);
smartFile1.StringType.Write(“A,B,C,D,E”);
smartFile1.StringType.Write(“1,2,3,4,5”);
// SmartFile을 Close
smartFile1.Close();주의 한글 사용 시 SmartFile.StringType.EncodingType 속성의 값을 ANSI로 설정하시기 바랍니다. EncodingType 속성의 값이 ANSI로 설정되지 않는다면 Excel 파일에서 한글이 깨져서 보입니다.
[데이터가 행으로 구분되어 입력된 모습]