crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Excel и QT, Слияние данных
neue
  опции профиля:
сообщение 15.5.2013, 2:28
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 14.5.2013
Пользователь №: 3834

Спасибо сказали: 0 раз(а)




Репутация:   0  


На работе меня настигла следующая задача:

Есть много-много файлов excel одинаковой структуры. Необходимо собрать данные с итогов всех таблиц, просуммировать и занести в другой файл excel (в конечную таблицу), которым потом пользователь сможет манипулировать. Также необходимо вывести некоторые данные, но для них нет определенной таблицы, и диаграммы. Необходимости в отображении файлов с исходными данными, в принципе, нет, интересуют только итоговые таблицы.

Вроде, задача и не самая сложная, но, учитывая мой крайне небогатый опыт в программировании, меня поставила в некоторый тупик.

Для начала, не могу сообразить, как мне выбрать несколько excel файлов и просуммировать итоги.

Буду рад дельному совету (если возможно, с примером кода), ибо, как обычно это в России бывает, "результат нужен был вчера". <_<


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
nikita
  опции профиля:
сообщение 15.5.2013, 7:42
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 34
Регистрация: 19.10.2012
Пользователь №: 3570

Спасибо сказали: 2 раз(а)




Репутация:   0  


На самом деле задача не сложная, при условии одинаковой структуры таблиц во всех файлах!
1. Открываешь файл
2. Пока не конец файла считываешь строку
3. Разбиваешь строку на части по разделителю (чаще всего это ";")
4. Заносишь каждую часть в переменную (суммируешь и т.д.)
5. Открываешь следующий файл (к пункту 1)
6. Открываешь для записи новый файл
7. Заносишь в строку через ";" свои данные и записываешь строку в файл

P.S.: Это алгоритм работы с данными, как нарисовать линии таблиц и т.п. я к сожалению не знаю

вот код по считыванию данных
  QFile f(filename);
  if(f.open(QIODevice::ReadOnly))
  {
      QByteArray arr;
      QString s;
      QStringList sl;
      f.readLine();
      while(!f.atEnd())
      {
          arr = f.readLine();
          s = arr.constData();
          sl = s.split(";");
          if(sl.size() < (Количества столбцов в таблице))
          {
              qDebug()<<QObject::trUtf8("Ошибка!");
            return;
          }
          bool ok;
                //!!!!!!!!!!!!!!!!!!!!!!!!!!! Считывание данных из ячеек!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          double val = sl[1].toDouble(&ok);
      }
  }
  else
      qDebug()<<QObject::trUtf8("Файл не открыт!");
  f.close();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 22:06