diff --git a/OriginAnyParser.cpp b/OriginAnyParser.cpp index 7def1f6..3bab475 100644 --- a/OriginAnyParser.cpp +++ b/OriginAnyParser.cpp @@ -2176,7 +2176,12 @@ void OriginAnyParser::getCurveProperties(const string &cvehd, unsigned int cvehd stmp.str(cvehd.substr(0x4A)); GET_SHORT(stmp, width) } - int col_index = findColumnByName((int)ispread, name); + unsigned short dataID = 0; + stmp.str(cvehd.substr(0x04)); + GET_SHORT(stmp, dataID) + int col_index = dataID > 0 ? findColumnByDatasetIndex((int)ispread, dataID - 1) : -1; + if (col_index == -1) + col_index = findColumnByName((int)ispread, name); if (col_index != -1) { spreadSheets[ispread].columns[col_index].name = name; diff --git a/OriginParser.cpp b/OriginParser.cpp index b0171ba..ca97a47 100644 --- a/OriginParser.cpp +++ b/OriginParser.cpp @@ -230,3 +230,13 @@ int OriginParser::findColumnByName(int spread, const string &name) } return -1; } + +int OriginParser::findColumnByDatasetIndex(int spread, unsigned int datasetIndex) const +{ + const size_t columnsCount = spreadSheets[spread].columns.size(); + for (unsigned int i = 0; i < columnsCount; i++) { + if (spreadSheets[spread].columns[i].index == datasetIndex) + return i; + } + return -1; +} diff --git a/OriginParser.h b/OriginParser.h index d49508a..03bedeb 100644 --- a/OriginParser.h +++ b/OriginParser.h @@ -51,6 +51,7 @@ class ORIGIN_EXPORT OriginParser void convertSpreadToExcel(std::vector::size_type spread); int findColumnByName(int spread, const std::string &name); + int findColumnByDatasetIndex(int spread, unsigned int datasetIndex) const; private: bool iequals(const std::string &, const std::string &, diff --git a/tests/examples/2folder-with-graphs.opj.out.orig b/tests/examples/2folder-with-graphs.opj.out.orig index 3839a8a..261c43f 100644 --- a/tests/examples/2folder-with-graphs.opj.out.orig +++ b/tests/examples/2folder-with-graphs.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 4 windows. Origin project Tree 2folder-with-graphs 2022-01-15 17:31:39 diff --git a/tests/examples/column-dataid-collision.opj b/tests/examples/column-dataid-collision.opj new file mode 100644 index 0000000..8474383 Binary files /dev/null and b/tests/examples/column-dataid-collision.opj differ diff --git a/tests/examples/column-dataid-collision.opj.1.dat.orig b/tests/examples/column-dataid-collision.opj.1.dat.orig new file mode 100644 index 0000000..ec6e6d8 --- /dev/null +++ b/tests/examples/column-dataid-collision.opj.1.dat.orig @@ -0,0 +1,4 @@ +ABCDEFGHIJK; ABCDEFGHIJK; +1; 2; +2; 4; +3; 5; diff --git a/tests/examples/column-dataid-collision.opj.out.orig b/tests/examples/column-dataid-collision.opj.out.orig new file mode 100644 index 0000000..54a2d4f --- /dev/null +++ b/tests/examples/column-dataid-collision.opj.out.orig @@ -0,0 +1,22 @@ +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +Project has 1 windows. +Origin project Tree +column-dataid-collision 2006-04-29 17:26:12 +Parsing status = 1 +OPJ PROJECT "examples/column-dataid-collision.opj" VERSION = 9.75 +number of datasets = 2 +number of spreadsheets = 1 +number of matrices = 0 +number of excels = 0 +number of functions = 0 +number of graphs = 0 +number of notes = 0 +Spreadsheet 1 + Name: Data1 + Label: + Columns: 2 + Column 1 : ABCDEFGHIJK / type : 0, rows : 3 + Column 2 : ABCDEFGHIJK / type : 1, rows : 3 +saved to examples/column-dataid-collision.opj.1.dat +ABCDEFGHIJKABCDEFGHIJK + Data: diff --git a/tests/examples/crash.opj.out.orig b/tests/examples/crash.opj.out.orig index 1e205db..70daddb 100644 --- a/tests/examples/crash.opj.out.orig +++ b/tests/examples/crash.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 1 windows. Origin project Tree bar 2013-01-31 10:11:35 diff --git a/tests/examples/data+graph-7.0.opj.out.orig b/tests/examples/data+graph-7.0.opj.out.orig index 6943226..80530ab 100644 --- a/tests/examples/data+graph-7.0.opj.out.orig +++ b/tests/examples/data+graph-7.0.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 2 windows. Origin project Tree data+graph-7.0 2006-04-29 17:26:12 diff --git a/tests/examples/reciprocal-scale-x.opj.out.orig b/tests/examples/reciprocal-scale-x.opj.out.orig index 331e57e..d92117a 100644 --- a/tests/examples/reciprocal-scale-x.opj.out.orig +++ b/tests/examples/reciprocal-scale-x.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 2 windows. Origin project Tree reciprocal-scale-x 2024-11-07 21:34:57