! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Spread CSV 파일 출력 시 숫자형식 질문입니다 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 Spread CSV 파일 출력 시 숫자형식 질문입니다

페이지 정보

작성자 nntto 작성일 2023-10-12 17:30 조회 174회 댓글 0건
제품 버전 : 14.45.20201.0
컨트롤 이름 : FpSpread

본문


Fpspread에서 CSV 파일 출력 시 04 로 되어있는 값을 변환 할 경우 CSV 파일에서는 4 로 표현됩니다.

셀 형식문제같은데 해결방법이 있을까요?

아래는 코드입니다.


Dim strL_FileName as String = "Test.csv"


Using writer As New StreamWriter(strL_FileName, False, System.Text.Encoding.UTF8)

            For Each row As DataRow In dataTable.Rows

                Dim rowData As New List(Of String)()


                For Each col As DataColumn In dataTable.Columns

                    Dim cell As FarPoint.Win.Spread.Cell = Me.spr.Sheets(0).Cells(row.Table.Rows.IndexOf(row), col.Ordinal)

              'Tag가 있는경우 Tag로 출력합니다.

                        If Not String.IsNullOrEmpty(cell.Tag) Then

                            rowData.Add("" & cell.Tag.ToString & "")

                        Else

                            rowData.Add(row(col).ToString())

                        End If

                Next


                writer.WriteLine(String.Join(",", rowData))

            Next

        End Using

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

2 답변

WinForms윈폼 Re: Spread CSV 파일 출력 시 숫자형식 질문입니다

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-10-16 11:59 댓글 2건

본문

nntto 님, 안녕하세요.

그레이프시티입니다.


먼저, 사용하신 코드 샘플과 함께 문의주심에 감사드립니다.


FpSpread에 "04"로 되어있는 셀에 대응되는 DataTable의 데이터 값은 숫자 4인가요? 혹은 문자열 "04"인가요?


만일 숫자 4를 FpSpread에서 04로 표시하기 위해 단순히 서식(Format)을 적용한 것이라면, CSV 파일로 저장했을 때 말씀하신 것처럼 숫자 4만 보여집니다. 이는 DataTable에서 값을 가져와서 저장하고 있기 때문입니다.


따라서 FpSpread의 Cell에 표시된 것과 같이 CSV에 04로 표현하고 싶다면, DataTable의 값이 아니라 Cell.Text 값을 가져와 저장해야 합니다. 일부 코드를 수정하여 전달드리니 참고 부탁 드립니다.


Using writer As New IO.StreamWriter(strL_FileName, False, System.Text.Encoding.UTF8)
    For Each row As DataRow In dataTable.Rows
        Dim rowdata As New List(Of String)()

        For Each col As DataColumn In dataTable.Columns
            Dim cell As FarPoint.Win.Spread.Cell = Me.FpSpread1.Sheets(0).Cells(row.Table.Rows.IndexOf(row), col.Ordinal)
            'tag가 있는경우 tag로 출력합니다.

            If Not String.IsNullOrEmpty(cell.Tag) Then
                rowdata.Add("" & cell.Tag.ToString & "")
            Else
                'rowdata.Add(row(col).ToString())
                rowdata.Add(cell.Text)
            End If
        Next
        writer.WriteLine(String.Join(",", rowdata))
    Next
End Using


답변 내용이 도움이 되었다면 우측 상단의 "채택"을 눌러 피드백을 남겨주시기 바라며, 추가적으로 궁금한 점이 있으실 경우 문의해 주시기 바랍니다.

감사합니다.
그레이프시티 드림

댓글목록

nntto님의 댓글

nntto 작성일

문자열 04 입니다.
데이터자체는 varchar 의 04 이지만 해당 04 값을 celltag에 담아두고 실제 text 는 celltag의 04에 해당하는 다른 텍스트값으로 치환하여 보여줍니다.

때문에 조언해주신 부분인 cell.text 가 아닌 위의 cell.tag.tostring 부분을 타게됩니다.
tag 를 tostring 을 통해 출력하는경우는 위 케이스처럼 04 로 출력되는게 불가능할까요?

nntto님의 댓글

nntto 작성일

04 값 자체를 다른 작업없이 텍스트로 출력해도 결과는 동일하네요. 아래 답변에 스크린샷 첨부합니다.

WinForms윈폼 Re: Spread CSV 파일 출력 시 숫자형식 질문입니다

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 nntto 작성일 2023-10-16 12:22 댓글 3건

본문

d1aa6a5380dbb50733872b6823e1913f_1697426515_5543.png
 

 왼쪽 텍스트 04 

 오른쪽 CSV 파일 4 

댓글목록

GCK써니님의 댓글

GCK써니 작성일

@nntto님, 안녕하세요.
혹시 MS Excel에서 CSV 파일을 여셨나요?
csv 파일을 메모장이나 워드패드 등으로 열었을 때에도 동일하게 4로 보여지나요? 아니면 04로 보여지나요?

저장된 CSV 파일을 메모장/워드패드 등으로 열었을 때에는 04와 같이 선행 0이 잘 보여지나, MS Excel로 열었을 경우에는 선행 0이 없어지고, 4로 보여질 수 있습니다. 이는 기본적으로 MS Excel은 CSV 파일을 열 때 선행 0을 제거하도록 동작하기 때문입니다.

메모장이나 워드패드 등으로 열었을 때에도 동일하게 숫자 4로 보여지는지 확인 부탁드립니다.

nntto님의 댓글

nntto 작성일

메모장으로 열때는 04로 잘 나오네요.. 엑셀 자체 셀 형식문제알까요? csv파일 변환하면서 변환되는 csv파일 셀 형식을 지정할수는 없을까요?

GCK써니님의 댓글의 댓글

GCK써니 작성일

nntto 님, 안녕하세요.
댓글 확인이 늦어 죄송합니다.

CSV 파일은 데이터가 구분 기호로 분리된 텍스트 파일로, 서식이나 셀 형식 등의 정보를 포함하지 않고, 오로지 값만 문서에 저장됩니다.
MS Excel에서 CSV 파일을 열 때 선행 0을 유지하고 싶으신 경우,
 1.  MS Excel을 먼저 실행합니다.
 2. [파일] -> [열기] -> 오픈할 CSV 파일 선택합니다.
 3. 텍스트 마법사 3단계에서, 선행 0을 열의 데이터 서식을 "텍스트"로 설정하고 "마침"을 누릅니다.


해당 현상은 CSV 파일 형식의 특징이자 MS Excel의 동작이기 때문에, 아쉽게도 Spread.NET에서 컨트롤할 수 없는 부분입니다. 셀 형식, 서식 등을 포함하여 저장하고 싶으신 경우 CSV 형식이 아닌 xlsx 형식으로 저장하는 것을 고려해보시기 바랍니다.

감사합니다.
그레이프시티 드림

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.