NX 2차 개발 - libxl 읽기 EXCEL 사용

25266 단어
요즘 몸이 안 좋아서 블로그를 쓰지 않고 밤에 침대에 누워 물고기 싸움 방송을 본다.드라마 대저택을 보고, 여자 아나운서가 춤추는 것을 보고, 가끔 드래곤볼을 본다.
이전에 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

좋은 웹페이지 즐겨찾기