홈>
c #을 사용하여 스프레드 시트 라이브러리를 사용하여 Excel 시트 (.xslx) 값을 읽습니다.
다음 코드를 사용하여 셀 값을 읽을 수 있습니다
for (int col = stats.StartColumnIndex; col <= stats.EndColumnIndex; col++)
{
var value= sheet.GetCellValueAsString(stats.StartRowIndex, col); //where sheet is current sheet in excel file
}
셀 값을 받고 있습니다. 그러나 셀의 데이터 유형을 어떻게 얻을 수 있습니까? 설명서를 확인했지만 해결책을 찾지 못했습니다.
참고 : .xls 유형의 Excel 파일의 경우 아래 코드를 사용하여 셀의 데이터 유형을 쉽게 얻을 수있는 ExcelLibrary.dll 라이브러리를 사용하고 있습니다
for (int i = 0; i <= cells.LastColIndex; i++)
{
var type = cells[0, i].Format.FormatType;
}
하지만 스프레드 시트 조명에는 비슷한 방법이 없습니다.
- 답변 # 1
- 답변 # 2
셀의 값을 얻으려면 다음 코드를 시도하십시오
var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
자세한 내용을 보려면이 링크를 사용하십시오
- 답변 # 3
SLCell.DataType 속성을 확인하십시오. Spreadsheetlight 설명서에 따르면 Spreadsheetlight.SLCell
클래스의 Cell 데이터 유형이 반환됩니다public CellValues DataType { get; set; }
PS : 참고로, chm 문서를 여는 방법을 알아 냈습니다. Winzip에서 chm 파일을 열어보십시오. 문제없이 열립니다.
도움이 되길 바랍니다. 고마워
- 답변 # 4
글쎄, 많은 흔적과 오류 방법 후에 나는 이것에 대한 해결책을 찾았다.
셀의formatCode에 따라 셀의formatType을 결정할 수 있습니다.
GetCellStyle방법을 사용하면 셀의형식 코드를 얻을 수 있습니다. 이formatCode를 사용하여formatType을 결정할 수 있습니다.
이 방법은 99 %의 경우에 효과적이었습니다.var FieldType = GetDataType(sheet.GetCellStyle(rowIndex, columnIndex).FormatCode); private string GetDataType(string formatCode) { if (formatCode.Contains("h:mm") || formatCode.Contains("mm:ss")) { return "Time"; } else if (formatCode.Contains("[$-409]") || formatCode.Contains("[$-F800]") || formatCode.Contains("m/d")) { return "Date"; } else if (formatCode.Contains("#,##0.0")) { return "Currency"; } else if (formatCode.Last() == '%') { return "Percentage"; } else if (formatCode.IndexOf("0") == 0) { return "Numeric"; } else { return "String"; } }
도움이 되길 바랍니다.
관련 자료
- floating point - 파이썬에서 십진수 모듈을 사용할 때 지수 형식을 억제하는 방법
- 파이썬을 사용하여 JSON 형식의 PDF 데이터를 얻지 못합니까?
- date - Android에서 Kotlin을 사용하여 SUNDAY 형식으로 주 시작
- R에서 barplot을 사용한 범례 형식 및 배치
- pandas - raise ValueError python을 사용하여 두 개의 datetime 형식 허용
- bash - 파일 이름에 날짜 형식을 사용하여 X 일보다 오래된 파일 제거
- python - 아래 코드에 대해 for 루프와 format을 사용하여 다른 함수를 어떻게 살펴볼 수 있습니까?
- java - Bean을 사용하여 콘솔에 json 형식을 인쇄하는 방법
- dataframe - R을 사용하여 요약 형식으로 데이터를 구조화하는 방법
- graph-tools와 함께 graph6 형식 사용
- 문서 A3 형식 및 가로 방향 인 경우 C #을 사용하여 Word 파일 페이지를 PNG 이미지로 변환하는 방법은 무엇입니까?
- python - SED를 사용하여 동일한 HEADER 형식으로 여러 데이터 세트 연결
- macos - `jar`를 사용하여 "zip"파일 생성… Mac에서 zip이 열리지 않고 "지원되지 않는 형식입니다"라고 표시됩니다… 이유가 무엇입니까?
관련 질문
- c# : OpenXML SDK로 Excel 시트의 테이블(작업 파트) 가져오기
- C#에서 OpenXML로 Excel의 기존 셀 덮어쓰기
- c# : 병합된 셀의 중심에 대한 텍스트의 EPPlus 수직 정렬이 작동하지 않음
- Excel Addins C#에서 Workbook.Close가 WorkbookBookBeforeClose 이벤트를 실행하지 않습니다.
- Excel 파일(VBA)에서 CSOM(C#) 요청을 캐스팅하여 SharePoint Online에 삽입을 수행하는 방법
- c# : Excel에서 검색할 수 있는 asp.net API를 통해 QR 이미지 제공
- 내 우분투 머신에서 프로그램(C# 또는 Python 또는 Any)을 사용하여 Excel 테이블을 이미지로 변환하고 싶습니다.
DataType 사용법을 잘 모르겠 기 때문에 개발자에게 요청한 Vincent Tang의 답변은 다음과 같습니다.
<시간>예 SLCell.DataType을 사용합니다. 열거 형이지만 대부분의 데이터의 경우 Number, SharedString 및 String을 사용하게됩니다.
텍스트 데이터는 SharedString이며, 텍스트가 워크 시트에 직접 포함 된 경우 String이 될 수 있습니다. GetSharedStrings () 또는 이와 유사한 것이 있습니다.
숫자 데이터의 경우 숫자입니다.
날짜는 조금 까다 롭습니다. 데이터 형식도 숫자입니다 (Microsoft Excel에서 사용하지 않기 때문에 Date 열거는 무시). 날짜의 경우 SLCell의 SLStyle에있는 FormatCode도 확인해야합니다. GetStyles ()를 사용하여 목록을 가져옵니다. SLCell.StyleIndex는 해당 목록에 대한 색인을 제공합니다.
예를 들어, SLCell의 셀 값이 "15"이고 데이터 유형이 SharedString 인 경우 공유 문자열 목록에서 색인 15를 찾으십시오. String 데이터 형식의 "blah"이면 바로 그 것입니다.숫자 유형 인 56789라면 바로 그 것입니다.
FormatCode가 "mm-yyyy"(또는 다른 날짜 형식 코드)가 아닌 한 56789는 실제로 1900 년 1 월 1 일 이후의 일 수입니다.
<시간> 그는 시트에서 SLCell 객체의 목록을 얻기 위해 GetCellList ()를 사용할 것을 권장했습니다. 그러나 어떤 이유로 인해 SL 버전에서 해당 기능을 사용할 수 없으므로 대신 GetCells ()를 사용했습니다. 그러면 SLCellPoint 유형의 키가있는 SLCell 객체의 사전이 반환됩니다.예를 들어 A1 셀의 DataType (CellValues 객체)을 가져 오려면 다음과 같이하십시오 :
그런데 chm 도움말 파일을 여는 데 문제가있었습니다. 이것을 시도하십시오 :chm 파일을 마우스 오른쪽 버튼으로 클릭하고 속성 선택
일반 탭 하단의 차단 해제 버튼을 클릭