MS-EXCEL은 아주 다양한 분야에서 사용되고 있으나 다른 시스템과의 호환성 구현에 많은 문제가 발생한다. 이 모듈은 EXCEL없는 환경에서도 복잡한 형태의 EXCEL 파일을 생성할수 있는 솔루션이다.
1. C/C++, JAVA 어떤 환경에서도 코딩만으로 형식화된 EXCEL파일 생성
2. VBA나 COM의 도움을 받지 않고 직관적으로 EXCEL FORM을 생성하므로 생성속도가 빠름
3. LINUX, UNIX등 MS-EXCEL이 작동하지 않는 환경에서도 완벽한 EXCEL FILE생성
4. EXCEL 고유 포멧으로 생성하므로 EXCEL에서의 로딩속도 빠름
아래 화면은 Excel builder로 excel이 설치되지 않은 UNIX 머신에서 생성한 EXCEL File이다.
예제) 첨부된 파일은 Visual C++ 2010에서 컴파일되었으며 Release 모드로 컴파일 하여야합니다. 해당 소스에 대한 설명은 아래와 같습니다. (아래의 예제는 C++로 제작되었으나 JAVA형식의 모듈도 있습니다.)
1. Simple class
COxpExcel excel;
excel.Create("d:\test.xlsx");
excel.Close();
2. Styling
excel.StylesBegin();
// 표시형식
excel.StylesNumFmtsBegin(2);
excel.StylesNumFmtsAddFmt("##00.0", 0);
excel.StylesNumFmtsAddFmt("\"₩\"#,##0.00", 1);
excel.StylesNumFmtsEnd();
// 폰트
excel.StylesFontsBegin(1);
excel.StylesFontsAddFont("맑은 고딕", 11, 0xFF0000, true, true, true);
excel.StylesFontsEnd();
// 채우기
excel.StylesFillsBegin(2);
excel.StylesFillsAddPattenFill(0x808080);
excel.StylesFillsAddPattenFill(0xFFFFFF);
excel.StylesFillsEnd();
// 테두리
excel.StylesBordersBegin(3);
excel.StylesBordersBorderBegin();
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_ALL, OXP_BORDER_STYLE_HAIR, 0xFF0000);
excel.StylesBordersBorderEnd();
excel.StylesBordersBorderBegin();
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_LEFT, OXP_BORDER_STYLE_THICK, -1);
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_RIGHT, OXP_BORDER_STYLE_THICK, -1);
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_TOP, OXP_BORDER_STYLE_HAIR, -1);
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_BOTTOM, OXP_BORDER_STYLE_HAIR, -1);
excel.StylesBordersBorderEnd();
excel.StylesBordersBorderBegin();
//excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_ALL, OXP_BORDER_STYLE_THICK, 0x000000);
excel.StylesBordersBorderAddBorder(OXP_BORDER_POS_ALL, OXP_OLD_LINESTYLE_CONTINUOUS, OXP_OLD_WEIGHT_THICK, 0x000000);
excel.StylesBordersBorderEnd();
excel.StylesBordersEnd();
//정렬
excel.StylesCellStylesBegin(1);
excel.StylesCellStylesAddXf(0,-1,0,0,OXP_ALIGN_VERT_NONE,OXP_ALIGN_HOZ_NONE);
excel.StylesCellStylesEnd();
excel.StylesCellXfsBegin(2);
excel.StylesCellXfsAddXf(0,0,0,0,OXP_ALIGN_VERT_NONE,OXP_ALIGN_HOZ_CENTER,0);
excel.StylesCellXfsAddXf(2,1,0,1,OXP_ALIGN_VERT_NONE,OXP_ALIGN_HOZ_CENTER,0);
excel.StylesCellXfsEnd();
excel.StylesEnd();
3. Worksheet 정의
excel.WorkSheetBegin("Test1", 1, 1, 1, 1);
excel.WorkSheetColumnsBegin();
excel.WorkSheetColumnsAddColumn(4,20, false, true);
excel.WorkSheetColumnsEnd();
excel.WorkSheetDataBegin();
excel.WorkSheetDataRowBegin(1);
excel.WorkSheetDataRowAddColumnLng (2, 1000, 1,NULL, 0, 1);
excel.WorkSheetDataRowEnd();
excel.WorkSheetDataRowBegin(2);
excel.WorkSheetDataRowAddColumnBool (1, true, 1, NULL);
//excel.WorkSheetDataRowAddColumnBool (2, false);
excel.WorkSheetDataRowAddColumnInt (3, 100, 0);
excel.WorkSheetDataRowAddColumnDbl (4, 100.101);
excel.WorkSheetDataRowAddColumnLng (5, 1000);
excel.WorkSheetDataRowAddColumnDate (6, 37572);
excel.WorkSheetDataRowAddColumnStr (7, "TEST");
excel.WorkSheetDataRowAddColumnStr (8, "TEST");
excel.WorkSheetDataRowAddColumnStr (9, "TEST");
excel.WorkSheetDataRowAddColumnStr (10,"TEST2");
excel.WorkSheetDataRowEnd();
excel.WorkSheetDataRowBegin(3);
excel.WorkSheetDataRowAddColumnDbl (3, 0, -1, "D2+D3");
excel.WorkSheetDataRowAddColumnDbl (4, 200.101);
excel.WorkSheetDataRowEnd();
excel.WorkSheetDataEnd();
excel.WorkSheetEnd(false);
4. 도형, 컨트롤 삽입
excel.DrawingsBegin();
excel.DrawingsShapeBegin(L"CHECK1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_CHECKBOX, 1, 1);
excel.DrawingsShapeObjectAddTextVAlign(OXP_ALIGN_VERT_CENTER);
excel.DrawingsShapeObjectAddFormulaLink(1,1);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeAddText(L"CHECK1");
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"DROPDOWN1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_DROPDOWN, 1, 2);
excel.DrawingsShapeObjectAddFormulaRange(L"Test2!A1:A10");
excel.DrawingsShapeObjectAddFormulaLink(1,2);
excel.DrawingsShapeObjectAddDropLines(8);
excel.DrawingsShapeObjectAddSelection(2);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"DROPDOWN2");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_DROPDOWN, 1, 3);
excel.DrawingsShapeObjectAddAttribute(0,1,7,1,5,16);
excel.DrawingsShapeObjectAddFormulaLink(1,3);
excel.DrawingsShapeObjectAddDropLines(4);
excel.DrawingsShapeObjectAddSelection(2);
excel.DrawingsShapeObjectAddListItem(L"삽입1");
excel.DrawingsShapeObjectAddListItem(L"삽입2");
excel.DrawingsShapeObjectAddListItem(L"삽입3");
excel.DrawingsShapeObjectAddListItem(L"삽입4");
excel.DrawingsShapeObjectAddListItem(L"삽입5");
excel.DrawingsShapeObjectAddListItem(L"삽입6");
excel.DrawingsShapeObjectAddListItem(L"삽입7");
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"SPINNER1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_SPINNER, 1, 4);
excel.DrawingsShapeObjectAddAttribute(10,10,100,10,10,16);
excel.DrawingsShapeObjectAddFormulaLink(2,4);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"LISTBOX1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_LISTBOX, 1, 5,true, 2, 0);
excel.DrawingsShapeObjectAddAttribute(0,0,6,1,4,16);
excel.DrawingsShapeObjectAddFormulaRange(L"Test2!A1:A10");
excel.DrawingsShapeObjectAddFormulaLink(1,5);
excel.DrawingsShapeObjectAddSelType(OXP_CONTROL_SELTYPE_SINGLE);
excel.DrawingsShapeObjectAddLCT(OXP_CONTROL_LCT_NORMAL);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"GROUPBOX1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_GROUPBOX, 1, 6,true, 0, 1);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"RADIO1");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_RADIO, 1, 6);
excel.DrawingsShapeObjectAddTextVAlign(OXP_ALIGN_VERT_CENTER);
excel.DrawingsShapeObjectAddFormulaLink(1,6);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeAddText(L"OPTION1");
excel.DrawingsShapeEnd();
excel.DrawingsShapeBegin(L"RADIO2");
excel.DrawingsShapeObjectBegin(OXP_CONTROL_TYPE_RADIO, 1, 7);
excel.DrawingsShapeObjectAddTextVAlign(OXP_ALIGN_VERT_CENTER);
excel.DrawingsShapeObjectAddFormulaLink(1,6);
excel.DrawingsShapeObjectEnd();
excel.DrawingsShapeAddText(L"OPTION2");
excel.DrawingsShapeEnd();
excel.DrawingsEnd();
* 이걸 제작할 당시에는 오픈소스가 없었는데 지금은 널렸네요. 풀소스를 공유하고 싶은데 너무 오래된거라 찾을수가 없네요.