#include "pch.h"
|
#include "ExcelUtil.h"
|
#include "json/json.h"
|
#include "xlslib.h"
|
using namespace xlslib_core;
|
|
void ExcelUtil::save(list<TradeData> data, string path) {
|
list<TradeData>::iterator ele1= data.begin();
|
Json::Value root,item;
|
Json::StreamWriterBuilder writerBuilder;
|
//×Ô¶¯»»ÐÐ
|
writerBuilder.settings_["indentation"] = "";
|
item["time"] = (*ele1).time;
|
item["price"] = (*ele1).price;
|
item["num"] = (*ele1).num;
|
root[0] = item;
|
std::ostringstream os;
|
std::unique_ptr<Json::StreamWriter> jsonWriter(writerBuilder.newStreamWriter());
|
jsonWriter->write(root, &os);
|
string jsonStr = os.str();
|
CString fstr(jsonStr.c_str());
|
// AfxMessageBox(fstr);
|
|
workbook wb;
|
xf_t* xf = wb.xformat();
|
worksheet* ws;
|
ws = wb.sheet("Sheet1");
|
// ´Ó0¿ªÊ¼Êý£¬µÚ1ÐУ¬µÚ2ÁУ¬¼´C3
|
ws->label(0, 0, L"ʱ¼ä", xf);
|
ws->label(0, 1, L"¹É¼Û", xf);
|
ws->label(0, 2, L"ÊÇ·ñÕÇÍ£¼Û", xf);
|
ws->label(0, 3, L"ÊÖÊý", xf);
|
ws->label(0, 4, L"²Ù×÷ÀàÐÍ", xf);
|
|
|
int index = 0;
|
list<TradeData>::iterator ele;
|
for (ele = data.begin();ele != data.end();ele++) {
|
TradeData tradeData = *ele;
|
index++;
|
|
std::ostringstream out_str;
|
out_str << setiosflags(ios::fixed) << std::setprecision(2) << stof(tradeData.price);
|
|
|
|
string t = tradeData.time;
|
if (tradeData.cancelTime > 0)
|
{
|
t.append(" ").append(to_string(tradeData.cancelTime));
|
string cancelTimeUnit;
|
if (tradeData.cancelTimeUnit == TIME_SECOND) {
|
cancelTimeUnit = "s";
|
}
|
else if (tradeData.cancelTimeUnit == TIME_MINITE) {
|
cancelTimeUnit = "m";
|
}
|
else if (tradeData.cancelTimeUnit == TIME_HOUR) {
|
cancelTimeUnit = "h";
|
}
|
t.append(cancelTimeUnit);
|
}
|
ws->label(index, 0,t, xf);
|
ws->label(index, 1, out_str.str(), xf);
|
if (tradeData.limitPrice == LIMIT_PRICE_NORMAL) {
|
ws->label(index, 2, L"Õý³£¼Û", xf);
|
}
|
else if (tradeData.limitPrice == LIMIT_PRICE_UP) {
|
ws->label(index, 2, L"ÕÇÍ£¼Û", xf);
|
}
|
else if (tradeData.limitPrice == LIMIT_PRICE_DOWN) {
|
ws->label(index, 2, L"µøÍ£¼Û", xf);
|
}
|
ws->label(index, 3, to_string(tradeData.num), xf);
|
|
|
|
wstring operate;
|
switch (tradeData.operateType)
|
{
|
case OPERATE_BUY:
|
operate = L"Âò";break;
|
case OPERATE_BUY_CANCEL:
|
operate = L"Âò³·";break;
|
case OPERATE_SELL:
|
operate = L"Âô";break;
|
case OPERATE_SELL_CANCEL:
|
operate = L"Âô³·";break;
|
default:
|
break;
|
}
|
ws->label(index, 4, operate, xf);
|
}
|
wb.Dump(path);
|
}
|