Когда я экспортирую свои вычисления с помощью 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!
Решено: найти & Замените все точки запятыми.
Вы путаете между форматом файла CSV, форматом файла ODS и представлением обоих в OpenOffice или LibreOffice.
То, что вы создаете — это файл CSV, то есть чисто текстовый файл, который содержит только текстовое представление значений. По умолчанию ваша программа на C ++ генерирует плавающие значения с точкой в качестве десятичного разделителя.
Файл ODS на самом деле представляет собой ZIP-файл, содержащий метаданные (имя создателя, дата создания, дата последней печати и т. Д.), Фактические данные и информацию о форматировании. Таким образом, файл ODS напрямую открытый по LibreOffice или OpenOffice.
Что ты открыть CSV-файл в LibreOffice или OpenOffice, вы на самом деле Импортировать Это. Это означает, что программа делает некоторые предположения относительно разделителя данных, десятичного разделителя и, если необходимо, формата даты, чтобы преобразовать текстовые значения в числовые (или даты). Эти предположения основаны на вашей локали системы. Форматирование обычно по умолчанию. В зависимости от используемой версии, диалоговое окно с опцией импорта может отображаться всегда или только при явном импорте файла (меню Файл / Импорт). Это диалоговое окно позволяет вам указать разделители и десятичные разделители, которые содержит файл CSV.
После того, как вы правильно загрузили CSV-файл, рекомендуется сохранить его в формате ODS, чтобы убедиться, что у вас больше не будет этой проблемы с импортом.
Других решений пока нет …