起因
項目中需要可能變動的一些映射關系,而且是封裝成獨立的庫——一個dll文件。
思路:把excel文件導出成.csv文件,當作資源加載到項目里,讀取后拿到全部的字符,再分割處理。
添加資源
VS2013里添加資源 在所選項目上右鍵-添加-資源,彈出的窗口里選擇-導入,添加我的.csv文件,資源類型是"csv",點擊確定。
這時項目里 會有個 resource1.h 文件,里面有類似這樣的代碼:
#define IDR_CSV1 101
#define IDR_CSV2 102
這里,101 ,102 就是你添加的資源的id。
資源使用
//加載資源 string UseCustomResource(int rcId) { //定位自定義資源,如果是從本模塊定位資源,也可將句柄簡單地置為NULL即可 //HMODULE phexmodule = GetModuleHandle(L"PCommServerHandler.dll"); HMODULE phexmodule = LoadLibrary(L"PCommServerHandler.dll"); HRSRC hRsrc = FindResource(phexmodule, MAKEINTRESOURCE(rcId), TEXT("csv")); if (NULL == hRsrc) return "rcError1"; //獲取資源的大小 DWORD dwSize = SizeofResource(phexmodule, hRsrc); if (0 == dwSize) return "rcError2"; //加載資源 HGLOBAL hGlobal = LoadResource(phexmodule, hRsrc); if (NULL == hGlobal) return "rcError3"; //鎖定資源 LPVOID pBuffer = LockResource(hGlobal); if (NULL == pBuffer) return "rcError4"; string s=(char * &)pBuffer;// LPVOID ---> String s=s.substr(0,dwSize); //去除各種文件的附加信息。 return s; }
調用就很簡單一句:string fileTxt=UseCustomResource(101);
拿到的文本做進一步分割處理,加載到map里,就可以使用了,over。
讀取excel
這里是一個.csv文件的讀寫,簡單明了: http://blog.csdn.net/zhongjling/article/details/49818151
