2016-09-15 4 views
0

Когда я экспортирую свои вычисления через поток в C++ в файл ODS (Apache OpenOffice), номера отображаются правильно, однако я не может делать какие-либо вычисления в этом конкретном файле ODS.[C++]: запись числовых данных в файл ODS, 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!

SOLVED: Find & Замените все точки запятыми.

+1

И как вы выполняете «экспорт»? Если вы еще этого не сделали, пожалуйста, [прочитайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), и узнайте, как создать [Минимальный, Полный и Подтверждаемый Пример] (http://stackoverflow.com/help/mcve). –

+0

Хорошо, позвольте добавить пример. –

+0

То, что вы пишете, на самом деле не является файлом ODS, а [CSV-файлом] (https://en.wikipedia.org/wiki/Comm-separated_values), когда разделитель является единственным пространством. Я не знаю, можно ли его правильно открыть в Excel, или если вам нужно его импортировать. –

ответ

0

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

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

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

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

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

+0

Спасибо за ваш ответ. Я сделал быстрое решение, изменив все точки запятыми. Затем изменение языковых настроек на английский язык полностью устранило проблему. –

Смежные вопросы