excel — [C ++]: записывая числовые данные в файл ODS, ODS не рассматривает их как числа

Когда я экспортирую свои вычисления с помощью ofstream в C ++ в файл ODS (Apache OpenOffice), цифры там отображаются правильно, однако я не могу выполнить какие-либо вычисления в этом конкретном файле ODS.

Например, когда я пытаюсь добавить, скажем, 0,9191 для A1 и 0,5757 для A2, = SUM (A1: A2) возвращает ноль.

Я пытался решить эту проблему с помощью ячеек форматирования, но ни одна из них не сработала. Какие-либо предложения? Спасибо.

Изменить: часть кода, которая делает экспорт работа.

string datafolder; datafolder = "c:/Users/cousinvinnie/Desktop/Code Vault/ArmaTut3/" + Jvalue;
string graph_path = datafolder + "/Graphavgs.ods"; ofstream graphavgs; graphavgs.open(graph_path);

for(int ctr = 0; ctr<cycledata; ctr++){

cyclepoints = (howmanyDC + 1) * (ctr + 1);
graphavgs<<(ctr + 1)<<" ";
calcguy = sum((wholedata.row(cyclepoints))) / nextgenpop;
secondbiggiesavg(ctr) = -log(calcguy);
graphavgs<<secondbiggiesavg(ctr)<<" ";
calcguy = sum((thirdbiggest.row(cyclepoints))) / nextgenpop;
thirdbiggiesavg(ctr)  = -log(calcguy);
graphavgs<<thirdbiggiesavg(ctr)<<" ";
calcguy = sum((matrixavgs.row(cyclepoints))) / nextgenpop;
avgmatrixdata(ctr)    = -log(calcguy);
graphavgs<<avgmatrixdata(ctr)<<" "<<endl;
}
graphavgs.close();

Этот код создает файл Graphavgs.ods. В этом файле у меня есть

   1    0.111753    0.182331    0.358724
2    0.147015    0.259202    0.48334
3    0.195855    0.362397    0.648719
4    0.25348     0.476696    0.839261
5    0.314722    0.618828    1.0633
6    0.420704    0.857286    1.37501
7    0.536699    1.1179      1.69503
8    0.76933     1.56382     2.13464
9    0.90525     1.89921     2.42443
10   1.15678     2.41533     2.82584

Теперь эти числа не рассматриваются как числа. Когда я пытаюсь работать над ними, например, = SUM (A1: A2), возвращаемое значение равно нулю.

Когда я делаю = LN (A1), возвращаемое значение равно # VALUE!

Решено: найти & Замените все точки запятыми.

0

Решение

Вы путаете между форматом файла CSV, форматом файла ODS и представлением обоих в OpenOffice или LibreOffice.

То, что вы создаете — это файл CSV, то есть чисто текстовый файл, который содержит только текстовое представление значений. По умолчанию ваша программа на C ++ генерирует плавающие значения с точкой в ​​качестве десятичного разделителя.

Файл ODS на самом деле представляет собой ZIP-файл, содержащий метаданные (имя создателя, дата создания, дата последней печати и т. Д.), Фактические данные и информацию о форматировании. Таким образом, файл ODS напрямую открытый по LibreOffice или OpenOffice.

Что ты открыть CSV-файл в LibreOffice или OpenOffice, вы на самом деле Импортировать Это. Это означает, что программа делает некоторые предположения относительно разделителя данных, десятичного разделителя и, если необходимо, формата даты, чтобы преобразовать текстовые значения в числовые (или даты). Эти предположения основаны на вашей локали системы. Форматирование обычно по умолчанию. В зависимости от используемой версии, диалоговое окно с опцией импорта может отображаться всегда или только при явном импорте файла (меню Файл / Импорт). Это диалоговое окно позволяет вам указать разделители и десятичные разделители, которые содержит файл CSV.

После того, как вы правильно загрузили CSV-файл, рекомендуется сохранить его в формате ODS, чтобы убедиться, что у вас больше не будет этой проблемы с импортом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]