Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как считать данные из ячейки из Excel таблицы через С++ / 6 сообщений из 6, страница 1 из 1
12.11.2014, 22:44
    #38804132
svandrive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
Доброго времени суток
Прошу помощи
Есть такой фрагмент файла XML

<Data ss:Type="Number">float</Data>

Как мне отсюда считать значения параметра float? Должна же быть некая простая функция

Вот собственно, как я до этого дошел.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
TiXmlDocument xml_file("InputData.xml");             //Открытие входного файла
xml_file.LoadFile();                                          //Открываем его для чтения
TiXmlElement *xml_Worksheet, *xml_Table, *xml_Row, *xml_Cell, *xml_CellData;  // определяем переменные типа xml
xml_Worksheet = xml_file.RootElement()->FirstChildElement(); // В дереве Worksheet заходим в дочернюю ветку  
int i,j;
for (i=0;i<4;i++)                                                 
{ 
    xml_Worksheet = xml_Worksheet->NextSiblingElement();     // В цикле прыгаем с ветки на ветку, пока не найдем нужную
	if (i==3)                                                                 // Нашли  
	         { 
				xml_Table=xml_Worksheet->FirstChildElement();       // Это наша таблица, теперь находим ее дочерние ветки
				xml_Row = xml_Table->FirstChildElement();           // Каждая ветка - это строка таблицы
	  
				for(j=2;j<12;j++)                              //Прыгаем по строкам таблицы
								{
								xml_Row = xml_Row->NextSiblingElement();      //Собственно "прыжок"
								xml_Row->Print(  stdout, 1 );                 // И вывод текущей строки
								xml_Cell = xml_Row->FirstChildElement();
								xml_CellData = xml_Cell->FirstChildElement();
                                    //И теперь вот тут из xml_CellData мне нужно достать значение. КАК?

                                                               }
                }
}



Вт собственно XML FILE
Код: xml
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.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Created>2006-09-16T00:00:00Z</Created>
  <LastSaved>2006-09-16T00:00:00Z</LastSaved>
  <Version>15.00</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <AllowPNG/>
  <RemovePersonalInformation/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>4620</WindowHeight>
  <WindowWidth>15345</WindowWidth>
  <WindowTopX>0</WindowTopX>
  <WindowTopY>0</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <NumberFormat/>
  </Style>
 </Styles>
 <Worksheet ss:Name="Лист1">
  <Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="11" x:FullColumns="1"
   x:FullRows="1" ss:DefaultRowHeight="15">
   <Row ss:AutoFitHeight="0">
    <Cell><Data ss:Type="String">Time</Data></Cell>
    <Cell><Data ss:Type="String">Current_A</Data></Cell>
    <Cell><Data ss:Type="String">Current_B</Data></Cell>
    <Cell><Data ss:Type="String">Сurrent_C</Data></Cell>
    <Cell><Data ss:Type="String">Voltage_A</Data></Cell>
    <Cell><Data ss:Type="String">Voltage_B</Data></Cell>
    <Cell><Data ss:Type="String">Voltage_C</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">1</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">220</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">270</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">310</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">2</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">220</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">270</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">310</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">3</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">220</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">270</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">310</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">4</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">220</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">270</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">310</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">5</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">220</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">270</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">310</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">6</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">6</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">9</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">11</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">230</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">280</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">320</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">7</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">6</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">9</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">11</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">230</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">280</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">320</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">6</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">9</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">11</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">230</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">280</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">320</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">9</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">7</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">12</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">240</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">290</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">330</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">11</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">13</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">241</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">291</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">331</Data></Cell>
   </Row>
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <PageSetup>
    <Header x:Margin="0.3"/>
    <Footer x:Margin="0.3"/>
    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
   </PageSetup>
   <Unsynced/>
   <Selected/>
   <Panes>
    <Pane>
     <Number>3</Number>
     <ActiveRow>10</ActiveRow>
     <ActiveCol>7</ActiveCol>
    </Pane>
   </Panes>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>
...
Рейтинг: 0 / 0
13.11.2014, 04:26
    #38804211
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
Чем Вы пользуетесь, я не понял, поэтому вот несколько вариантов
Код: sql
1.
2.
3.
4.
xml_CellData->GetFirstChild>>Node<<()->nodeValue;
xml_CellData->text
xml_CellData->xml;
xml_CellData->childNode(0)->nodeValue;
...
Рейтинг: 0 / 0
13.11.2014, 04:28
    #38804213
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
_Vasilisk_
Код: plaintext
1.
xml_CellData->GetFirstChildNode()->nodeValue
...
Рейтинг: 0 / 0
13.11.2014, 18:23
    #38805363
svandrive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
Пользуюсь С++ и подключенной библиотекой Tinyxml
Порпробовал предложенные варианты - постоянно выдает ошибку типа "GetFirstChildNode: не является членом "TiXmlElement" ", или "childNode: не является членом "TiXmlElement" " соответственно.

Может мне как-то переконвертить xml_CellData из типа TiXmlElement в другой тип?
...
Рейтинг: 0 / 0
13.11.2014, 18:55
    #38805404
svandrive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
svandrive,
Спасибо, нашел решение сам)))

Код: plaintext
1.
 str1 = xml_CellData->GetText(); 



Правда вышло не в числовом, а текстовом формате, но мне подходит))
...
Рейтинг: 0 / 0
13.11.2014, 23:33
    #38805571
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные из ячейки из Excel таблицы через С++
svandriveне в числовом, а текстовом форматеТолько так. Дальше преобразовывайте сами
svandriveподключенной библиотекой TinyxmlНу так читайте его документацию
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как считать данные из ячейки из Excel таблицы через С++ / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]