NX 2차 개발 - libxl 읽기 EXCEL 사용
이전에 OLE/COM 구성 요소 방식으로 엑셀을 읽고 쓴 적이 있는데 며칠 전에 C++QT 프로그램을 만들었는데 QT 프로젝트에서 OLE를 사용할 수 없다는 것을 발견했고 인터넷에서 다른 사람을 찾아보면 QT의 엑셀 라이브러리를 가져와
나는 그렇게 깊이 연구하지 않았는데, 아직 할 줄 모른다.나중에 LIBXL을 찾았는데 이것도 EXCEL 읽기와 쓰기를 할 수 있고 로컬에서 OFFICE를 설치하지 않아도 EXCEL을 읽을 수 있다는 점이 OLE가 가지고 있지 않은 것이고,
그리고 창고는 다른 사람이 봉인했으니 봉인하여 만든 방법을 직접 사용하면 된다.구성 개발 환경도 간단하고 읽기와 쓰기 속도가 빠르다.하지만 단점도 있습니다. 단점은 이것이 비용을 지불하는 것입니다. 물론 CSDN 위에도 해독된 라이브러리가 있습니다.그리고 다중 스레드가 지원되지 않을 수도 있습니다.
참고 사항: OLE 행렬은 1에서 시작하고 LIBXL 행렬은 0에서 시작합니다.
1 //test1
2
3 // Mandatory UF Includes
4 #include
5 #include
6
7 // Internal Includes
8 #include
9 #include
10 #include
11
12 // Internal+External Includes
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 #include
22 #include
23 #include
24 #include
25
26 #include "libxl.h"
27 #pragma comment(lib,"D:\\test1\\test1\\libxl.lib")
28
29 // Std C++ Includes
30 #include
31 #include
32
33 using namespace libxl;
34 using namespace std;
35 using namespace NXOpen;
36 using std::string;
37 using std::exception;
38 using std::stringstream;
39 using std::endl;
40 using std::cout;
41 using std::cerr;
42
43
44 //------------------------------------------------------------------------------
45 // NXOpen c++ test class
46 //------------------------------------------------------------------------------
47 class MyClass
48 {
49 // class members
50 public:
51 static Session *theSession;
52 static UI *theUI;
53
54 MyClass();
55 ~MyClass();
56
57 void do_it();
58 void print(const NXString &);
59 void print(const string &);
60 void print(const char*);
61
62 private:
63 Part *workPart, *displayPart;
64 NXMessageBox *mb;
65 ListingWindow *lw;
66 LogFile *lf;
67 };
68
69 //------------------------------------------------------------------------------
70 // Initialize static variables
71 //------------------------------------------------------------------------------
72 Session *(MyClass::theSession) = NULL;
73 UI *(MyClass::theUI) = NULL;
74
75 //------------------------------------------------------------------------------
76 // Constructor
77 //------------------------------------------------------------------------------
78 MyClass::MyClass()
79 {
80
81 // Initialize the NX Open C++ API environment
82 MyClass::theSession = NXOpen::Session::GetSession();
83 MyClass::theUI = UI::GetUI();
84 mb = theUI->NXMessageBox();
85 lw = theSession->ListingWindow();
86 lf = theSession->LogFile();
87
88 workPart = theSession->Parts()->Work();
89 displayPart = theSession->Parts()->Display();
90
91 }
92
93 //------------------------------------------------------------------------------
94 // Destructor
95 //------------------------------------------------------------------------------
96 MyClass::~MyClass()
97 {
98 }
99
100 //------------------------------------------------------------------------------
101 // Print string to listing window or stdout
102 //------------------------------------------------------------------------------
103 void MyClass::print(const NXString &msg)
104 {
105 if(! lw->IsOpen() ) lw->Open();
106 lw->WriteLine(msg);
107 }
108 void MyClass::print(const string &msg)
109 {
110 if(! lw->IsOpen() ) lw->Open();
111 lw->WriteLine(msg);
112 }
113 void MyClass::print(const char * msg)
114 {
115 if(! lw->IsOpen() ) lw->Open();
116 lw->WriteLine(msg);
117 }
118
119
120
121
122 //------------------------------------------------------------------------------
123 // Do something
124 //------------------------------------------------------------------------------
125 void MyClass::do_it()
126 {
127
128 // TODO: add your code here
129
130 // book
131 Book* book = xlCreateXMLBookA();
132 book->setKey("Halil Kural", "windows-2723210a07c4e90162b26966a8jcdboe");//
133 if (book)
134 {
135 // EXCEL
136 if (book->load("D:\\123.xlsx"))
137 {
138 // sheet
139 Sheet* sheet = book->getSheet(0);
140 if (sheet)
141 {
142 //
143 sheet->writeStr(0,0," !");
144 sheet->writeNum(0,1,123);
145 }
146 //
147 book->save("D:\\123.xlsx");
148 }
149 book->release();// !!!!!
150 }
151
152 }
153
154 //------------------------------------------------------------------------------
155 // Entry point(s) for unmanaged internal NXOpen C/C++ programs
156 //------------------------------------------------------------------------------
157 // Explicit Execution
158 extern "C" DllExport void ufusr( char *parm, int *returnCode, int rlen )
159 {
160 try
161 {
162 // Create NXOpen C++ class instance
163 MyClass *theMyClass;
164 theMyClass = new MyClass();
165 theMyClass->do_it();
166 delete theMyClass;
167 }
168 catch (const NXException& e1)
169 {
170 UI::GetUI()->NXMessageBox()->Show("NXException", NXOpen::NXMessageBox::DialogTypeError, e1.Message());
171 }
172 catch (const exception& e2)
173 {
174 UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what());
175 }
176 catch (...)
177 {
178 UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, "Unknown Exception.");
179 }
180 }
181
182
183 //------------------------------------------------------------------------------
184 // Unload Handler
185 //------------------------------------------------------------------------------
186 extern "C" DllExport int ufusr_ask_unload()
187 {
188 return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
189 }
190
191
192 Caesar
193 2019 12 29
LIBXL 홈페이지
https://www.libxl.com/
https://www.libxl.com/workbook.html#addSheet
관련 자료 링크: 블로거 여러분 감사합니다!
libxl 라이브러리에서 excel 파일을 읽고 excel의 모든 테이블과 테이블의 모든 요소를 훑어봅니다.https://blog.csdn.net/haijunsm/article/details/86165419
LibXL 라이브러리 사용 설명(편 1)https://blog.csdn.net/zt_xcyk/article/details/72846042
LibXL 라이브러리 사용 설명 --- 삭제 및 수정(편2)https://blog.csdn.net/zt_xcyk/article/details/73247548
libxl 학습의 excel 읽기와 쓰기 조작https://blog.csdn.net/u010477528/article/details/53857396
libxl 라이브러리 사용https://wenku.baidu.com/view/8ff2d43a0912a2161479299f.html?from=search
libxl 라이브러리로 excel 파일 읽기https://blog.csdn.net/iamqianrenzhan/article/details/81008662
xlslib excel 파일 생성https://blog.csdn.net/byxdaz/article/details/83505475
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
LibXL 라이브러리 사용 설명 --- 삭제 및 수정(편2)https://blog.csdn.net/zt_xcyk/article/details/73247548
libxl 학습의 excel 읽기와 쓰기 조작https://blog.csdn.net/u010477528/article/details/53857396
libxl 라이브러리 사용https://wenku.baidu.com/view/8ff2d43a0912a2161479299f.html?from=search
libxl 라이브러리로 excel 파일 읽기https://blog.csdn.net/iamqianrenzhan/article/details/81008662
xlslib excel 파일 생성https://blog.csdn.net/byxdaz/article/details/83505475
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
libxl 라이브러리 사용https://wenku.baidu.com/view/8ff2d43a0912a2161479299f.html?from=search
libxl 라이브러리로 excel 파일 읽기https://blog.csdn.net/iamqianrenzhan/article/details/81008662
xlslib excel 파일 생성https://blog.csdn.net/byxdaz/article/details/83505475
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
xlslib excel 파일 생성https://blog.csdn.net/byxdaz/article/details/83505475
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.