로그 리포트를 엑셀로 보낼때..
글쓴이: mr.lee / 작성시간: 화, 2005/08/23 - 4:29오후
저희 회사 제품의 로그를(솔라리스 기반) 펄로 파싱해서 좀 복잡한 리포트를 만들게 해놓앗는데요.. 최종적으로는 엑셀에서 불러와야할 리포트인데 엑셀로 만드는 방법도 모르거니와 오버헤드이므로..html의 table태그로 만들게 해놨습니다. bgcolor, colspan, rowspan, width 등도 사용하니까 엑셀에서 이쁘게 불러와 지는군요.
여기서 질문..
1. 휴대폰 번호 필드가 있는데요. 0으로 시작하기 때문에 text 타입으로 엑셀에서 불러와 져야하는데 무조건 숫자형으로 불러와 버려서 첫번째 0이 다 사라지거든요. 물론, 셀타입을 다시 바꿔도 0이 나타나지는 않습니다. 좋은 방법이 없을까요?
2. 시트를 2개 생성하게 할 수 없을까요? table을 두개 만들어보니 그냥 하나의 시트에서 다 불러와 버리는군요.. 물론, 로그툴에서 html을 두개 만들고 엑셀에서 또 불러오면 되겟지만..한번에 헤결할 순 없을까요.
3. html로 만드는 방법이 최선인가요? 더 좋은 팁이 잇으면 가르쳐주시면 감사하겠습니다.
위 1번같은 경우는 xml 스키마로 html을 표현하고 엑셀의 xml불러오기로 해봐도 xsd:string 로 된 전화번호 데이터가 그냥 숫자로 역시 바껴 버리네요.
Forums:
그냥 XML로 하셔도 되지 않을까요...?원인이 뭔지는 잘은 모르겠습
그냥 XML로 하셔도 되지 않을까요...?
원인이 뭔지는 잘은 모르겠습니다만
닷넷으로 기존 데이터 베이스에 있는 데이터를 긁어 와서 데이터셋에 저장한다음에 그것을 익스포트 시켜서 xml로 변환했습니다.물론 그때 데이터 타입중하나가 휴대폰 번호고 스트링 값이었습니다.
그리고 그 xml파일을 엑셀로 불러 들였을때 위에와 같은 문제는 없었던 걸로 기억합니다.xml생성시 뭔가 문제가 있거나 그런것 같습니다만
위에 문제는 쉘 2개 생성하는 것 같은경우에는 xml자체가 기본이라면 루트를 하나만 허용하기때문에 차라리 마소 제품군이라면 그냥 엑셀로 변환시키거나(마소 프로그램상에서 젯엔진을 가진 엠덱이면 가능합니다.) XML파일을 두개 생성 시켜서 하시는 것도 좋을 듯하구요.
제가 보기에는 html보다는 마소 제품군이면 엑셀로 변환이 가능하면 그렇게 하시고 아니라면 xml이 낳을듯 싶습니다.
인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com
1. 문자로 처리하려면 숫자 앞에 '를 붙이세요.'0101234567
1. 문자로 처리하려면 숫자 앞에 '를 붙이세요.
'0101234567, 홍길동,...
2. No idea .... --;
3. XML이 좋겠습니다. 현재야 엑셀이지만, 추후 어떤 형태로 데이터 가공이 벌어질지도 모르고, 이에 대한 융통성이야 CSV도 아니고, HTML도 아닌 XML이 정석으로 예상됩니다.
답변들 감사드리며 답변에 대한 추가 내용입니다.위에 말씀하신 xm
답변들 감사드리며 답변에 대한 추가 내용입니다.
위에 말씀하신 xml들은 xml schema을 정의해놓고 그에 따른 xml 문서를 만드는것을 의미하는게 맞으신지요. schema없이 그냥 확장자만 xml로 하면 그냥 html처리하듯이 불러와지긴 합니다만..별로 다른것은 없죠.
1. 엑셀에서 불러왔을때 테이블의 항목이나 색깔 넓이 등등의 포맷팅이 되어야 합니다. 좀 보여주는 내용이 많고 복잡한 리포트라서 그러하지 않으면 읽고나서 수작업을 많이 해야합니다. 때문에 위에 말한것처럼 html의 bgcolor, rowspan, colspan, width 등의 속성들을 사용하고 있고 의도한대로 엑셀에서 불러오면 포맷팅이 이쁘게 됩니다. 헌데 xml에서 포맷팅까지 될려면 xslt가 필요할텐데, 엑셀에서 그것도 xml과 연계시켜 주는지요?
2. 문자로 처리할때 앞에 문자로 넣으면 되긴한데요..실제로 따옴표도 보이므로..좀 지저분하지요. 그냥 숫자그대로 보이면서 앞에 0이 나오게 할려고 합니다.
질문을 다시 정리하자면..
솔라리스환경에서 펄로 된 리포트 제너레이트 프로그램이 로그 수백메가를 파싱해서 수십메가의 리포트 파일을 생성합니다.
현재는 엑셀에서 불러왔을때의 포맷팅을 위해서 html의 table태그로 만드는데요. 그냥 확장자만 xml로 바꾸는건 아무 변화없는 일이구요.
1. 전화번호 앞부분 0이 보이게 하고 싶구요.
2. 엑셀에서 불러왔을때 시트가 2개가 되게 저장이 가능할까요?
하는게 질문의 요지입니다.
디자인 부분이나 컬럼 색상 그런 부분은 xsl로 정의 해주셔야 할것 같은
디자인 부분이나 컬럼 색상 그런 부분은 xsl로 정의 해주셔야 할것 같은데요
닷넷에서도 xml은 자동적으로 데이터 셋에 의해서 만들어주시만 그것은 데이터부분만이고 xsl에 의해서 디자인에 관련된 부분은 따로 만들어 주셔야 할것 같습니다.
xml자체가 데이터 부분하고 디자인 부분하고 분리되어서 존재하는 형태니까요...
만약 xml로 하신다고 하시면 원하는 결과를 얻기 위해서는 DTD와 그리고XSL은 따로 생성 하셔야 할것 같습니다.
PS:만약에 데이터가 전화번호라고 하면 파싱을 해서 중간에 마이너스 표시등으로 표현하면 숫자로 변환되지는 않을 것 같습니다만 그리고 그러는 편이 오히려 더 깔끔할것 같구요.만약 그런 상태에서 에러가 발생한다고 하면 xml구조를 한번 체크해보시는 것도 좋을 듯합니다.
인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com
perl에서 Excel 출력
저도 써본적은 없지만.. 참고해보세요.
http://search.cpan.org/~rkinyon/Excel-Template-0.25/lib/Excel/Template.pm
http://homepage.eircom.net/~jmcnamara/perl/PerlExcelFaq.html
음 링크 감사합니다~왜 CPAN에서 excel을 넣어볼 생각을 안
음 링크 감사합니다~
왜 CPAN에서 excel을 넣어볼 생각을 안했을까. :shock:
댓글 달기