admin
2022-07-22 9adb473067a993b4e0eacf3675baf14b29da3eca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#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);
}