Заполните пустые ячейки в листе Excel (или SQLite) значением ближайшей заполненной ячейки выше - PullRequest
0 голосов
/ 12 марта 2012

Я столкнулся с проблемой при отправке запросов в базу данных SQLite.

Проблема в том, что база данных (которая исходит из таблицы Excel) имеет пустые ячейки, в которых должны быть значения, значения, которые передаются изячейка выше, в том же столбце.

Другими словами, создатель листа Excel оставил ячейки в том же столбце пустыми, если значение не изменяется.Мне действительно нужны значения в этих ячейках!

Я не могу сделать это вручную из-за размера листа / дБ, есть ли способ сделать это программно?

Я быдействительно предпочитаю способ sql-запроса, если он есть!

С наилучшими пожеланиями, Tor

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

вы можете сделать это в Excel. Я ответил на аналогичный вопрос здесь:

Пустые значения в файле Excel из CSV (не только строки)

Вы также можете сделать это полностью в Excel:

Выберите столбец (или любой диапазон, с которым вы работаете), затем перейдите к Edit> Go To (Ctrl + G) и нажмите Special. Проверьте пробелы и нажмите ОК. это выберет только пустые ячейки в списке. Теперь введите = ключ, затем стрелка вверх и ctrl-enter.

Это поместит формулу в каждую пустую ячейку, чтобы она равнялась ячейке выше. Это. Затем вы можете скопировать ^ вставить значения только для того, чтобы избавиться от формулы.

0 голосов
/ 07 февраля 2013

Аналогичным способом, предложенным @maneesha, было бы отфильтровать по пустым ячейкам, затем написать формулу «равно верхней ячейке» и затем очистить фильтр.

Но я думаю, что @maneeshas 'решение круче.

0 голосов
/ 12 марта 2012

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

Редактировать: вы можете сделать это с чем-то похожим на это здесь:

SQLiteDatabase db = SQLiteDatabase.openDatabase("myDb.db", null, SQLiteDatabase.OPEN_READWRITE);
Cursor c = db.query("table", null, null, null, null, null, "the column that defines the sort order");
if (c != null) {
    int columnCount = c.getColumnCount();
    String[] lastValues = new String[columnCount];
    while (c.moveToNext()) {
        ContentValues cv = new ContentValues();
        for (int i = 0; i < columnCount; i++) {
            String value = c.getString(i);
            if (TextUtils.isEmpty(value)) {
                // if that happens on first column you are screwed anyways.
                cv.put(c.getColumnName(i), lastValues[i]);
            } else {
                lastValues[i] = value;
            }
            // we need to save some id here
        }
        if (cv.size() > 0) {
            // use the id here
            db.update("table", cv, "column=?", new String[] { "id" });
        }
    }
    c.close();
}

Но я бы посоветовал вам использовать Excel для исправлениябаза данных.Это проще, и вам не нужно понимать код выше.

...