搞定车商方案表读取。
This commit is contained in:
		@@ -21,7 +21,9 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.cpp" />
 | 
					    <ClCompile Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\..\source\Data\Datastructure\CarDealerAchievement\CarDealerAchievement.cpp" />
 | 
					    <ClCompile Include="..\..\..\source\Data\Datastructure\CarDealerAchievement\CarDealerAchievement.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\..\source\Data\Datastructure\CarDealerScheme\CarDealerScheme.cpp" />
 | 
					    <ClCompile Include="..\..\..\source\Data\Datastructure\CarDealerScheme\CarDealerScheme.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\..\source\data\excel\excel.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\..\source\main.cpp" />
 | 
					    <ClCompile Include="..\..\..\source\main.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\..\source\test\test.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\..\source\Widgets\MainFrame\QMainFrame.cpp" />
 | 
					    <ClCompile Include="..\..\..\source\Widgets\MainFrame\QMainFrame.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@@ -38,6 +40,8 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.h" />
 | 
					    <ClInclude Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\..\source\Data\Datastructure\CarDealerAchievement\CarDealerAchievement.h" />
 | 
					    <ClInclude Include="..\..\..\source\Data\Datastructure\CarDealerAchievement\CarDealerAchievement.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\..\source\Data\Datastructure\CarDealerScheme\CarDealerScheme.h" />
 | 
					    <ClInclude Include="..\..\..\source\Data\Datastructure\CarDealerScheme\CarDealerScheme.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\..\source\data\excel\excel.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\..\source\test\test.h" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <PropertyGroup Label="Globals">
 | 
					  <PropertyGroup Label="Globals">
 | 
				
			||||||
    <ProjectGuid>{B12702AD-ABFB-343A-A199-8E24837244A3}</ProjectGuid>
 | 
					    <ProjectGuid>{B12702AD-ABFB-343A-A199-8E24837244A3}</ProjectGuid>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,6 +50,12 @@
 | 
				
			|||||||
    <Filter Include="数据\数据管理\excel">
 | 
					    <Filter Include="数据\数据管理\excel">
 | 
				
			||||||
      <UniqueIdentifier>{849ef05c-ca3c-479b-ad38-3b9eae188820}</UniqueIdentifier>
 | 
					      <UniqueIdentifier>{849ef05c-ca3c-479b-ad38-3b9eae188820}</UniqueIdentifier>
 | 
				
			||||||
    </Filter>
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="测试">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{c6a0a5fd-26f9-4d8d-84a5-ce7edb04eb5f}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="excel">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{61d5dd61-6b1f-4507-bb22-4ce463ad5b85}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="..\..\..\source\main.cpp">
 | 
					    <ClCompile Include="..\..\..\source\main.cpp">
 | 
				
			||||||
@@ -70,6 +76,12 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.cpp">
 | 
					    <ClCompile Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.cpp">
 | 
				
			||||||
      <Filter>数据\数据管理\excel</Filter>
 | 
					      <Filter>数据\数据管理\excel</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\..\source\test\test.cpp">
 | 
				
			||||||
 | 
					      <Filter>测试</Filter>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\..\source\data\excel\excel.cpp">
 | 
				
			||||||
 | 
					      <Filter>excel</Filter>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <QtRcc Include="..\..\..\source\resource.qrc">
 | 
					    <QtRcc Include="..\..\..\source\resource.qrc">
 | 
				
			||||||
@@ -109,5 +121,11 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.h">
 | 
					    <ClInclude Include="..\..\..\source\Data\DataManipulation\Excel\LoadFromExcel.h">
 | 
				
			||||||
      <Filter>数据\数据管理\excel</Filter>
 | 
					      <Filter>数据\数据管理\excel</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\..\source\test\test.h">
 | 
				
			||||||
 | 
					      <Filter>测试</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\..\source\data\excel\excel.h">
 | 
				
			||||||
 | 
					      <Filter>excel</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
@@ -1,20 +1,11 @@
 | 
				
			|||||||
#include <libxl.h>
 | 
					#include <libxl.h>
 | 
				
			||||||
#include <exception>
 | 
					 | 
				
			||||||
#include "LoadFromExcel.h"
 | 
					 | 
				
			||||||
#include <stdexcept>
 | 
					#include <stdexcept>
 | 
				
			||||||
 | 
					#include "LoadFromExcel.h"
 | 
				
			||||||
 | 
					#include "../../excel/excel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
using namespace libxl;
 | 
					using namespace libxl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SetKey( Book * pBook )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if ( pBook == nullptr )
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	pBook->setKey( L"cpic", L"windows-202d21040bc4e70060bc6264a6ucu7i1" );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/************************************************
 | 
					/************************************************
 | 
				
			||||||
* \brief 从Excel文件读取车商方案表
 | 
					* \brief 从Excel文件读取车商方案表
 | 
				
			||||||
@@ -23,8 +14,8 @@ void SetKey( Book * pBook )
 | 
				
			|||||||
************************************************/
 | 
					************************************************/
 | 
				
			||||||
void LoadCarDealerSchemeFromXlsx( const wstring &           filePath,
 | 
					void LoadCarDealerSchemeFromXlsx( const wstring &           filePath,
 | 
				
			||||||
                                  unsigned int              sheetIndex,
 | 
					                                  unsigned int              sheetIndex,
 | 
				
			||||||
                                  unsigned int                    firstRowIndex,
 | 
					                                  unsigned int              startRowIndex,
 | 
				
			||||||
                                  map<wstring, CarDealerScheme> & schemeMap )
 | 
					                                  vector<CarDealerScheme> & schemeVector )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Book *  pBook  = xlCreateXMLBookW();
 | 
						Book *  pBook  = xlCreateXMLBookW();
 | 
				
			||||||
	Sheet * pSheet = nullptr;
 | 
						Sheet * pSheet = nullptr;
 | 
				
			||||||
@@ -34,7 +25,7 @@ void LoadCarDealerSchemeFromXlsx( const wstring &                 filePath,
 | 
				
			|||||||
		throw runtime_error( "libxl库加载失败!" );
 | 
							throw runtime_error( "libxl库加载失败!" );
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SetKey( pBook );
 | 
						setKey( pBook );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ( pBook->load( filePath.c_str() ) != true )
 | 
						if ( pBook->load( filePath.c_str() ) != true )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -51,8 +42,43 @@ void LoadCarDealerSchemeFromXlsx( const wstring &                 filePath,
 | 
				
			|||||||
		string errorMessage = "读取sheet失败!";
 | 
							string errorMessage = "读取sheet失败!";
 | 
				
			||||||
		errorMessage.append( pBook->errorMessage() );
 | 
							errorMessage.append( pBook->errorMessage() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pBook->release();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		throw runtime_error( errorMessage );
 | 
							throw runtime_error( errorMessage );
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int lastRowIndex     = pSheet->lastRow();
 | 
				
			||||||
 | 
						int firstRowIndex    = pSheet->firstRow();
 | 
				
			||||||
 | 
						int firstColumnIndex = pSheet->firstCol();
 | 
				
			||||||
 | 
						int rowIndex         = firstRowIndex + startRowIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( rowIndex <= lastRowIndex )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int colunmIndex = firstRowIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							const wstring && theYear       = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex, true );
 | 
				
			||||||
 | 
							const wstring && theMonth      = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 1, true );
 | 
				
			||||||
 | 
							const wstring && carDealerCode = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 2, true );
 | 
				
			||||||
 | 
							const wstring && carDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 3, true );
 | 
				
			||||||
 | 
							const wstring && manHourPrice  = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 4, true );
 | 
				
			||||||
 | 
							const wstring && partPrice     = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 5, true );
 | 
				
			||||||
 | 
							const wstring && claimSupport  = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 6, true );
 | 
				
			||||||
 | 
							const wstring && scheme        = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 7, true );
 | 
				
			||||||
 | 
							const wstring && isQualified   = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 8, true );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							CarDealerScheme carDealerScheme( theYear,
 | 
				
			||||||
 | 
							                                 theMonth,
 | 
				
			||||||
 | 
							                                 carDealerCode,
 | 
				
			||||||
 | 
							                                 manHourPrice,
 | 
				
			||||||
 | 
							                                 partPrice,
 | 
				
			||||||
 | 
							                                 claimSupport,
 | 
				
			||||||
 | 
							                                 scheme,
 | 
				
			||||||
 | 
							                                 isQualified );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							schemeVector.push_back( carDealerScheme );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rowIndex++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBook->release();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,11 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <map>
 | 
					#include <string>
 | 
				
			||||||
#include <exception>
 | 
					#include <vector>
 | 
				
			||||||
#include "../../Datastructure/CarDealerScheme/CarDealerScheme.h"
 | 
					#include "../../Datastructure/CarDealerScheme/CarDealerScheme.h"
 | 
				
			||||||
#include "../../Datastructure/CarDealerAchievement/CarDealerAchievement.h"
 | 
					#include "../../Datastructure/CarDealerAchievement/CarDealerAchievement.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LoadCarDealerSchemeFromXlsx( const std::wstring &           filePath,
 | 
				
			||||||
 | 
					                                  unsigned int                   sheetIndex,
 | 
				
			||||||
 | 
					                                  unsigned int                   startRowIndex,
 | 
				
			||||||
 | 
					                                  std::vector<CarDealerScheme> & schemeVector );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,14 +59,14 @@ public:
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	CarDealerScheme( CarDealerScheme && other )
 | 
						CarDealerScheme( CarDealerScheme && other )
 | 
				
			||||||
		: theYear( std::move(other.theYear) ),
 | 
							: theYear( std::move( other.theYear ) ),
 | 
				
			||||||
		  theMonth( std::move(other.theMonth) ),
 | 
							  theMonth( std::move( other.theMonth ) ),
 | 
				
			||||||
		  carDealerCode( std::move(other.carDealerCode) ),
 | 
							  carDealerCode( std::move( other.carDealerCode ) ),
 | 
				
			||||||
		  manHourPrice( std::move(other.manHourPrice) ),
 | 
							  manHourPrice( std::move( other.manHourPrice ) ),
 | 
				
			||||||
		  partPrice( std::move(other.partPrice) ),
 | 
							  partPrice( std::move( other.partPrice ) ),
 | 
				
			||||||
		  claimSupport( std::move(other.claimSupport) ),
 | 
							  claimSupport( std::move( other.claimSupport ) ),
 | 
				
			||||||
		  scheme( std::move(other.scheme) ),
 | 
							  scheme( std::move( other.scheme ) ),
 | 
				
			||||||
		  isQualified( std::move(other.isQualified) )
 | 
							  isQualified( std::move( other.isQualified ) )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										157
									
								
								代码/cpp/car_dealer_util/source/data/excel/excel.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								代码/cpp/car_dealer_util/source/data/excel/excel.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,157 @@
 | 
				
			|||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <windows.h>
 | 
				
			||||||
 | 
					#include <stdexcept>
 | 
				
			||||||
 | 
					#include "excel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					using namespace libxl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void setKey( libxl::Book * pBook )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( pBook != nullptr )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pBook->setKey( L"cpic", L"windows-202d21040bc4e70060bc6264a6ucu7i1" );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::wstring ReadCellStringFromXlsx( libxl::IBookT<wchar_t> * pBook,
 | 
				
			||||||
 | 
					                                     unsigned int             sheetIndex,
 | 
				
			||||||
 | 
					                                     unsigned int             rowIndex,
 | 
				
			||||||
 | 
					                                     unsigned int             colIndex,
 | 
				
			||||||
 | 
					                                     bool                     isInteger )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						using namespace libxl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::wstring returnValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int year   = 0;
 | 
				
			||||||
 | 
						int month  = 0;
 | 
				
			||||||
 | 
						int day    = 0;
 | 
				
			||||||
 | 
						int hour   = 0;
 | 
				
			||||||
 | 
						int min    = 0;
 | 
				
			||||||
 | 
						int second = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//验证
 | 
				
			||||||
 | 
						if ( pBook == nullptr )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw std::logic_error( "ReadCellStringFromXlsx pSheet参数错误!" );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ISheetT<wchar_t> * pSheet   = pBook->getSheet( sheetIndex );
 | 
				
			||||||
 | 
						CellType           cellType = pSheet->cellType( rowIndex, colIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//判断单元格类型
 | 
				
			||||||
 | 
						switch ( cellType )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case CellType::CELLTYPE_BOOLEAN: //bool类型
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									returnValue = pSheet->readBool( rowIndex, colIndex ) ? L"true" : L"false";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							case CellType::CELLTYPE_NUMBER: //数字类型,还得再判断一下是不是日期类型
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									double  cellValue = pSheet->readNum( rowIndex, colIndex );
 | 
				
			||||||
 | 
									wchar_t buffer[50]; //生成字符串的缓冲区
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( pSheet->isDate( rowIndex, colIndex ) == true )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										//是日期类型
 | 
				
			||||||
 | 
										if ( pBook->dateUnpack( cellValue,
 | 
				
			||||||
 | 
										                        &year,
 | 
				
			||||||
 | 
										                        &month,
 | 
				
			||||||
 | 
										                        &day,
 | 
				
			||||||
 | 
										                        &hour,
 | 
				
			||||||
 | 
										                        &min,
 | 
				
			||||||
 | 
										                        &second ) == false )
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											throw std::runtime_error( "转换日期格式失败!" );
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//排除bug
 | 
				
			||||||
 | 
										if ( min >= 60 )
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											hour = hour + 1;
 | 
				
			||||||
 | 
											min  = min - 60;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// if ( hour >= 24 )
 | 
				
			||||||
 | 
										// {
 | 
				
			||||||
 | 
										// 	day = day + 1;
 | 
				
			||||||
 | 
										// 	hour = hour - 24;
 | 
				
			||||||
 | 
										// }
 | 
				
			||||||
 | 
										//
 | 
				
			||||||
 | 
										// switch ( month )
 | 
				
			||||||
 | 
										// {
 | 
				
			||||||
 | 
										// case 1:
 | 
				
			||||||
 | 
										// case 3:
 | 
				
			||||||
 | 
										// case
 | 
				
			||||||
 | 
										// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										wsprintfW( buffer, L"%d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, day, hour, min, second );
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										//是数字类型, 根据isInteger参数选择输出整型或者浮点型
 | 
				
			||||||
 | 
										if ( isInteger == true )
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											wsprintfW( buffer, L"%d", static_cast<long>(cellValue) );
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											wsprintfW( buffer, L"%f", cellValue );
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									returnValue = buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							case CELLTYPE_STRING: //字符串类型,要先判断一下读取的结果是不是空值
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									const wchar_t * pValue = pSheet->readStr( rowIndex, colIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( pValue != nullptr )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										returnValue = pValue;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return returnValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					libxl::Sheet * getXlsxSheetByName( libxl::IBookT<wchar_t> * pBook, const std::wstring & sheetName )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Sheet * pSheet        = nullptr;
 | 
				
			||||||
 | 
						Sheet * pCurrentSheet = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pBook == nullptr )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw logic_error( "参数错误!" );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int sheetCount = pBook->sheetCount();
 | 
				
			||||||
 | 
						int sheetIndex = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( sheetIndex < sheetCount )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pCurrentSheet = pBook->getSheet( sheetIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wstring currentSheetName = pCurrentSheet->name();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( currentSheetName == sheetName )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								pSheet = pCurrentSheet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							sheetIndex++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return pSheet;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								代码/cpp/car_dealer_util/source/data/excel/excel.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								代码/cpp/car_dealer_util/source/data/excel/excel.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					#ifndef EXCEL_H_
 | 
				
			||||||
 | 
					#define EXCEL_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <libxl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void setKey( libxl::Book * pBook );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************
 | 
				
			||||||
 | 
					* \brief 从xlsx文件单元格中读取数据,以字符串为返回值。
 | 
				
			||||||
 | 
					* \param pBook libxl的Book对象。
 | 
				
			||||||
 | 
					* \param sheetIndex sheet的索引值
 | 
				
			||||||
 | 
					* \param rowIndex 行号
 | 
				
			||||||
 | 
					* \param colIndex 列号
 | 
				
			||||||
 | 
					* \return 返回的字符串
 | 
				
			||||||
 | 
					************************************************/
 | 
				
			||||||
 | 
					std::wstring ReadCellStringFromXlsx( libxl::IBookT<wchar_t> * pBook,
 | 
				
			||||||
 | 
					                                     unsigned int             sheetIndex,
 | 
				
			||||||
 | 
					                                     unsigned int             rowIndex,
 | 
				
			||||||
 | 
					                                     unsigned int             colIndex,
 | 
				
			||||||
 | 
					                                     bool                     isInteger );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************
 | 
				
			||||||
 | 
					* \brief 通过名称获取sheet
 | 
				
			||||||
 | 
					* \param sheetName 
 | 
				
			||||||
 | 
					* \return 
 | 
				
			||||||
 | 
					************************************************/
 | 
				
			||||||
 | 
					libxl::Sheet * getXlsxSheetByName( libxl::IBookT<wchar_t> * pBook, const std::wstring & sheetName );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
#include <QtWidgets/QtWidgets>
 | 
					#include <QtWidgets/QtWidgets>
 | 
				
			||||||
#include <QtWidgets/QApplication>
 | 
					#include <QtWidgets/QApplication>
 | 
				
			||||||
#include "Widgets/MainFrame/QMainFrame.h"
 | 
					#include "Widgets/MainFrame/QMainFrame.h"
 | 
				
			||||||
 | 
					#include "test/test.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main( int argc, char * argv[] )
 | 
					int main( int argc, char * argv[] )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -21,6 +22,10 @@ int main( int argc, char * argv[] )
 | 
				
			|||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						test();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	try
 | 
						try
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pMainFrame = new QMainFrame();
 | 
							pMainFrame = new QMainFrame();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								代码/cpp/car_dealer_util/source/test/test.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								代码/cpp/car_dealer_util/source/test/test.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include "test.h"
 | 
				
			||||||
 | 
					#include "../data/DataManipulation/Excel/LoadFromExcel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void excelTest();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void test()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						excelTest();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void excelTest()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						vector<CarDealerScheme> schemeVector;
 | 
				
			||||||
 | 
						wstring filePath = L"D:/develop/projects_win/2019/car_dealer_util/数据/PC端导入模板(管理员版).xlsx";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LoadCarDealerSchemeFromXlsx(filePath, 0, 1, schemeVector);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										4
									
								
								代码/cpp/car_dealer_util/source/test/test.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								代码/cpp/car_dealer_util/source/test/test.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void test();
 | 
				
			||||||
		Reference in New Issue
	
	Block a user