最后一个表!
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#include <map>
|
||||
#include <stdexcept>
|
||||
#include <exception>
|
||||
#include <ocilib.hpp>
|
||||
#include <libxl.h>
|
||||
#include "FromExcelToOracle.h"
|
||||
|
||||
#include "../../excel/excel.h"
|
||||
|
||||
using namespace std;;
|
||||
using namespace ocilib;
|
||||
using namespace libxl;
|
||||
|
||||
void RepairMonitoringFromExcelToOracle( const std::wstring & filePath,
|
||||
unsigned int sheetIndex,
|
||||
unsigned int titleRowIndex,
|
||||
unsigned int firstRowIndex,
|
||||
const std::string & tnsName,
|
||||
const std::string & userName,
|
||||
const std::string & password )
|
||||
{
|
||||
//防御性验证
|
||||
if ( filePath.empty() == true ||
|
||||
tnsName.empty() == true ||
|
||||
userName.empty() == true ||
|
||||
password.empty() == true )
|
||||
{
|
||||
throw runtime_error( "参数错误!" );
|
||||
}
|
||||
|
||||
//libxl对象
|
||||
Book * pBook = xlCreateBookW();
|
||||
Sheet * pSheet = nullptr;
|
||||
map<int, wstring> titleMap; //存放标题行
|
||||
unsigned int firstColumnIndex; //第一列
|
||||
unsigned int lastColumnIndex; //最后一列
|
||||
unsigned int firstRowIndex;
|
||||
unsigned int lastRowIndex;
|
||||
|
||||
//ocilib对象
|
||||
Connection * pConnection = nullptr;
|
||||
Statement * pStatement = nullptr;
|
||||
|
||||
if ( pBook == nullptr )
|
||||
{
|
||||
throw runtime_error( "libxl初始化失败!" );
|
||||
}
|
||||
|
||||
if ( pBook->load( filePath.c_str() ) != true )
|
||||
{
|
||||
throw runtime_error( "打开excel文件失败!" );
|
||||
}
|
||||
|
||||
pSheet = pBook->getSheet( sheetIndex );
|
||||
|
||||
if ( pSheet == nullptr )
|
||||
{
|
||||
throw runtime_error( "读取sheet失败失败!" );
|
||||
}
|
||||
|
||||
firstColumnIndex = pSheet->firstCol();
|
||||
lastColumnIndex = pSheet->lastCol();
|
||||
firstRowIndex = pSheet->firstRow();
|
||||
lastRowIndex = pSheet->lastRow();
|
||||
|
||||
unsigned int index = firstColumnIndex;
|
||||
|
||||
//保存标题
|
||||
while ( index <= lastColumnIndex )
|
||||
{
|
||||
wstring && title = ReadCellStringFromXlsx( pBook, sheetIndex, titleRowIndex, index, false );
|
||||
|
||||
titleMap.insert( pair<int, wstring>( index, title ) );
|
||||
|
||||
++index;
|
||||
}
|
||||
|
||||
//逐行保存数据
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
|
||||
void RepairMonitoringFromExcelToOracle( const std::wstring & filePath,
|
||||
unsigned int sheetIndex,
|
||||
unsigned int titleRowIndex,
|
||||
unsigned int firstRowIndex,
|
||||
const std::string & tnsName,
|
||||
const std::string & userName,
|
||||
const std::string & password );
|
Reference in New Issue
Block a user