Compare commits
	
		
			3 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5765a4b411 | |||
| 6406fe1784 | |||
| dc162b3180 | 
@@ -1,4 +1,4 @@
 | 
				
			|||||||
#include <libxl.h>
 | 
					#include <libxl.h>
 | 
				
			||||||
#include <stdexcept>
 | 
					#include <stdexcept>
 | 
				
			||||||
#include "LoadFromExcel.h"
 | 
					#include "LoadFromExcel.h"
 | 
				
			||||||
#include "../../excel/excel.h"
 | 
					#include "../../excel/excel.h"
 | 
				
			||||||
@@ -76,10 +76,14 @@ const wchar_t *    pwszRepairRecommandationCaption[]   = {
 | 
				
			|||||||
	L"报案号",
 | 
						L"报案号",
 | 
				
			||||||
	L"推荐车商代码",
 | 
						L"推荐车商代码",
 | 
				
			||||||
	L"推荐车商名称",
 | 
						L"推荐车商名称",
 | 
				
			||||||
 | 
						L"机构",
 | 
				
			||||||
	L"出险日期",
 | 
						L"出险日期",
 | 
				
			||||||
	L"车牌号",
 | 
						L"车牌号",
 | 
				
			||||||
	L"品牌名称",
 | 
						L"品牌名称",
 | 
				
			||||||
	L"短信类型",
 | 
						L"短信类型",
 | 
				
			||||||
 | 
						L"接收人"
 | 
				
			||||||
 | 
						L"手机号"
 | 
				
			||||||
 | 
						L"短信内容"
 | 
				
			||||||
	L"发送时间",
 | 
						L"发送时间",
 | 
				
			||||||
	L"数据来源",
 | 
						L"数据来源",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -784,18 +788,18 @@ void LoadRepairRecommandationFromXlsx( const std::wstring &
 | 
				
			|||||||
		//起始列索引
 | 
							//起始列索引
 | 
				
			||||||
		int colunmIndex = pSheet->firstCol();
 | 
							int colunmIndex = pSheet->firstCol();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		wstring branchName             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring branchName             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex, true );
 | 
				
			||||||
		wstring orderNo                = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring orderNo                = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+1, true );
 | 
				
			||||||
		wstring orderType              = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring orderType              = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+2, true );
 | 
				
			||||||
		wstring notifyNo               = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring notifyNo               = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+3, true );
 | 
				
			||||||
		wstring RecommandCarDealerCode = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring RecommandCarDealerCode = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+4, true );
 | 
				
			||||||
		wstring RecommandCarDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring RecommandCarDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+5, true );
 | 
				
			||||||
		wstring damageDate             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring damageDate             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+7, true );
 | 
				
			||||||
		wstring plateNumber            = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring plateNumber            = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+8, true );
 | 
				
			||||||
		wstring brandName              = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring brandName              = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+9, true );
 | 
				
			||||||
		wstring messageType            = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring messageType            = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+10, true );
 | 
				
			||||||
		wstring messageSendingDate     = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring messageSendingDate     = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+14, true );
 | 
				
			||||||
		wstring dataSource             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true );
 | 
							wstring dataSource             = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex+15, true );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//空行跳过
 | 
							//空行跳过
 | 
				
			||||||
		if ( notifyNo.empty() == true )
 | 
							if ( notifyNo.empty() == true )
 | 
				
			||||||
@@ -1072,7 +1076,7 @@ void LoadNewRepairMonitorReportFromXlsx( const std::wstring &
 | 
				
			|||||||
* \param pszCaptionFormat 
 | 
					* \param pszCaptionFormat 
 | 
				
			||||||
* \return 
 | 
					* \return 
 | 
				
			||||||
************************************************/
 | 
					************************************************/
 | 
				
			||||||
bool checkExcelFileFormat( Book * pBook, int sheetIndex, int captionRowIndex, const wchar_t * pszCaptionFormat[], int captionCount )
 | 
					/*bool checkExcelFileFormat( Book * pBook, int sheetIndex, int captionRowIndex, const wchar_t * pszCaptionFormat[], int captionCount )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if ( pBook == nullptr )
 | 
						if ( pBook == nullptr )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -1103,4 +1107,4 @@ bool checkExcelFileFormat( Book * pBook, int sheetIndex, int captionRowIndex, co
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return isEqual;
 | 
						return isEqual;
 | 
				
			||||||
}
 | 
					}*/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -163,3 +163,41 @@ libxl::Sheet * getXlsxSheetByName( libxl::IBookT<wchar_t> * pBook, const std::ws
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return pSheet;
 | 
						return pSheet;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool checkExcelFileFormat(Book* pBook,
 | 
				
			||||||
 | 
						int             sheetIndex,
 | 
				
			||||||
 | 
						int             captionRowIndex,
 | 
				
			||||||
 | 
						const wchar_t* pszCaptionFormat[],
 | 
				
			||||||
 | 
						int             captionCount)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (pBook == nullptr)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw logic_error("Excel文件指针为空!");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (sheetIndex < 0 || captionRowIndex < 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw logic_error("标题行参数错误!");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Sheet* pSheet = pBook->getSheet(sheetIndex);
 | 
				
			||||||
 | 
						int     captionIndex = 0;
 | 
				
			||||||
 | 
						bool    isEqual = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while (captionIndex < captionCount)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							const wchar_t* pwszCaption = pSheet->readStr(captionRowIndex, captionIndex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (wcscmp(pwszCaption, pszCaptionFormat[captionIndex]) != 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								isEqual = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							captionIndex++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return isEqual;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,4 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
#ifndef EXCEL_H_
 | 
					 | 
				
			||||||
#define EXCEL_H_
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <libxl.h>
 | 
					#include <libxl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +29,20 @@ std::wstring ReadCellStringFromXlsx( libxl::IBookT<wchar_t> * pBook,
 | 
				
			|||||||
* \param sheetName 
 | 
					* \param sheetName 
 | 
				
			||||||
* \return 
 | 
					* \return 
 | 
				
			||||||
************************************************/
 | 
					************************************************/
 | 
				
			||||||
libxl::Sheet * getXlsxSheetByName( libxl::IBookT<wchar_t> * pBook, const std::wstring & sheetName );
 | 
					libxl::Sheet * getXlsxSheetByName( libxl::IBookT<wchar_t> * pBook,
 | 
				
			||||||
 | 
					                                   const std::wstring &     sheetName );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************
 | 
				
			||||||
#endif
 | 
					* \brief 核对excel表格的内容,根据pszCaptionFormat参数提供的表头数组来核对
 | 
				
			||||||
 | 
					* \param pBook excel文件指针
 | 
				
			||||||
 | 
					* \param sheetIndex 要核对的sheet索引
 | 
				
			||||||
 | 
					* \param captionRowIndex 标题行索引
 | 
				
			||||||
 | 
					* \param pszCaptionFormat 包含标题内容的字符串数组
 | 
				
			||||||
 | 
					* \param captionCount 标题数量
 | 
				
			||||||
 | 
					* \return
 | 
				
			||||||
 | 
					************************************************/
 | 
				
			||||||
 | 
					bool checkExcelFileFormat( libxl::Book *   pBook,
 | 
				
			||||||
 | 
					                           int             sheetIndex,
 | 
				
			||||||
 | 
					                           int             captionRowIndex,
 | 
				
			||||||
 | 
					                           const wchar_t * pszCaptionFormat[],
 | 
				
			||||||
 | 
					                           int             captionCount );
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										43
									
								
								code/cpp/car_dealer_util/source/util/excel/excel_util.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								code/cpp/car_dealer_util/source/util/excel/excel_util.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					#include <stdexcept>
 | 
				
			||||||
 | 
					#include <cwchar>
 | 
				
			||||||
 | 
					#include "excel_util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace libxl;
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool checkExcelFileFormat( Book *          pBook,
 | 
				
			||||||
 | 
					                           int             sheetIndex,
 | 
				
			||||||
 | 
					                           int             captionRowIndex,
 | 
				
			||||||
 | 
					                           const wchar_t * pszCaptionFormat[],
 | 
				
			||||||
 | 
					                           int             captionCount )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( pBook == nullptr )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw logic_error( "Excel文件指针为空!" );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( sheetIndex < 0 || captionRowIndex < 0 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw logic_error( "标题行参数错误!" );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Sheet * pSheet       = pBook->getSheet( sheetIndex );
 | 
				
			||||||
 | 
						int     captionIndex = 0;
 | 
				
			||||||
 | 
						bool    isEqual      = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( captionIndex < captionCount )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							const wchar_t * pwszCaption = pSheet->readStr( captionRowIndex, captionIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( wcscmp( pwszCaption, pszCaptionFormat[captionIndex] ) != 0 )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								isEqual = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							captionIndex++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return isEqual;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								code/cpp/car_dealer_util/source/util/excel/excel_util.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								code/cpp/car_dealer_util/source/util/excel/excel_util.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <libxl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************
 | 
				
			||||||
 | 
					* \brief 核对excel表格的内容,根据pszCaptionFormat参数提供的表头数组来核对
 | 
				
			||||||
 | 
					* \param pBook excel文件指针
 | 
				
			||||||
 | 
					* \param sheetIndex 要核对的sheet索引
 | 
				
			||||||
 | 
					* \param captionRowIndex 标题行索引
 | 
				
			||||||
 | 
					* \param pszCaptionFormat 包含标题内容的字符串数组
 | 
				
			||||||
 | 
					* \param captionCount 标题数量
 | 
				
			||||||
 | 
					* \return 
 | 
				
			||||||
 | 
					************************************************/
 | 
				
			||||||
 | 
					bool checkExcelFileFormat( libxl::Book *   pBook,
 | 
				
			||||||
 | 
					                           int             sheetIndex,
 | 
				
			||||||
 | 
					                           int             captionRowIndex,
 | 
				
			||||||
 | 
					                           const wchar_t * pszCaptionFormat[],
 | 
				
			||||||
 | 
					                           int             captionCount );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************
 | 
				
			||||||
 | 
					* \brief 通过名称获取sheet
 | 
				
			||||||
 | 
					* \param sheetName
 | 
				
			||||||
 | 
					* \return
 | 
				
			||||||
 | 
					************************************************/
 | 
				
			||||||
 | 
					libxl::Sheet* getXlsxSheetByName(libxl::IBookT<wchar_t>* pBook, const std::wstring& sheetName);
 | 
				
			||||||
		Reference in New Issue
	
	Block a user