none
C# 에서 데이터 베이스 파일을 읽어올때 형식을 처음부터 문자열로 받아올수 있는 방법이 있나요? RRS feed

  • 질문

  • C#에서 ms server에 있는 데이터를 가지고 올때 형식들을 컴퓨터가 지맘대로 정해서 미치겠네요.

    가령 083078113131 이런 데이터를 들고 오고 싶은데 막상 들고와서 엑셀에 표시하면 앞에 0은 사라지고

    83078113131 이렇게 표시되거나 또 603084050987 이런것은 6.03084E+11 이렇게 표시가 됩니다.

    그래서 읽어올때 처음부터 이것들을 실수형이나 정수형으로 받아오는게 아니라 문자로 받아오면 해결이 될것 같

    은데 어떻게 하는지 잘모르겠네요 ㅠㅠ

    아래는 코드입니다.

     connection = new SqlConnection(connectionString);
                command = new SqlCommand(queryString, connection);
                connection.Open();
                command.CommandType = CommandType.Text;
                reader = command.ExecuteReader();                                     //데이터베이스 연결부분

    while(reader.Read())

    {

    ws.Cells[1, 1]=reader[0];

    ws.Cells[1, 2]=reader[1];

    }                                                            //이런식으로 받아온 데이터를 엑셀에 입력합니다.

    이렇게 reader.Read()이렇게 해버리면 컴터가 자동으로 형식을 지정해서 받아오는것 같아요 ㅠㅠ 전

    문자열로 받아오고싶은데.....

    그리고 또하나 데이터베이스에서 11이라는 데이터를 받아오면 그것들을 셀에 뿌릴때는 소수점 둘째자리

    까지 표기하고싶거든요. c에 printf 함수에 쓰이는 %0.2d 이런식으로 포맷을 지정해가지고요. 

    이것도 어떻게 하는지 가르쳐주시면 감사하겠습니다 ㅠㅠ

    2013년 3월 19일 화요일 오후 9:32

답변

  • 예전 기억으로는 Cells 개체는 Object 형식이라 값을 정수형을 할당해도 변경이 안되었던것 같습니다.

    데이터베이스의 데이터 값을 문자열로 변환하시는것보다

    Excel 문서의 해당 셀 서식을 텍스트로 , 소수점 2자리로 설정하고 나서 테스트해보시면 제대로 나오시는것을 확인하실수 있을겁니다.

    필요하시다면 해당 셀의 서식을 .NET 코드로 지정하실수도 있습니다.

    http://msdn.microsoft.com/ko-kr/library/aa168292(v=office.11).aspx#EKBAG


    Hong-ju

    • 답변으로 표시됨 Nevermores 2013년 3월 21일 목요일 오후 2:43
    2013년 3월 20일 수요일 오전 1:42
  • 안녕하세요. 일단

    코딩상에서 하는 방법과 쿼리문상에서 하는 방법이 있을 수 있겠네요.

    1.

    ws.Cells[1, 1]=Convert.ToString(reader[0]);//String으로 변환

    ws.Cells[1, 2]=Math.Round(Convert.ToDecimal(reader[1]),2); //소수점두째자리

    2.

    쿼리문상에서

    string queryString="Select Convert(VARCHAR(10),ColA) AS ColA ,Convert(numeric(10,2),ColB) AS ColB FROM TABLE1;";

    이런식으로 변환해주시면 될것 같습니다.

    1번 먼저 해보고 여의치 않으면 2번으로 해보시면 될것 같습니다.

    • 답변으로 표시됨 Nevermores 2013년 3월 21일 목요일 오후 2:43
    2013년 3월 20일 수요일 오전 1:39

모든 응답

  • 안녕하세요. 일단

    코딩상에서 하는 방법과 쿼리문상에서 하는 방법이 있을 수 있겠네요.

    1.

    ws.Cells[1, 1]=Convert.ToString(reader[0]);//String으로 변환

    ws.Cells[1, 2]=Math.Round(Convert.ToDecimal(reader[1]),2); //소수점두째자리

    2.

    쿼리문상에서

    string queryString="Select Convert(VARCHAR(10),ColA) AS ColA ,Convert(numeric(10,2),ColB) AS ColB FROM TABLE1;";

    이런식으로 변환해주시면 될것 같습니다.

    1번 먼저 해보고 여의치 않으면 2번으로 해보시면 될것 같습니다.

    • 답변으로 표시됨 Nevermores 2013년 3월 21일 목요일 오후 2:43
    2013년 3월 20일 수요일 오전 1:39
  • 예전 기억으로는 Cells 개체는 Object 형식이라 값을 정수형을 할당해도 변경이 안되었던것 같습니다.

    데이터베이스의 데이터 값을 문자열로 변환하시는것보다

    Excel 문서의 해당 셀 서식을 텍스트로 , 소수점 2자리로 설정하고 나서 테스트해보시면 제대로 나오시는것을 확인하실수 있을겁니다.

    필요하시다면 해당 셀의 서식을 .NET 코드로 지정하실수도 있습니다.

    http://msdn.microsoft.com/ko-kr/library/aa168292(v=office.11).aspx#EKBAG


    Hong-ju

    • 답변으로 표시됨 Nevermores 2013년 3월 21일 목요일 오후 2:43
    2013년 3월 20일 수요일 오전 1:42