在excel工作表(或SQLite)填充空单元格的上面最近填充单元格的值

将查询发送到SQLite数据库时遇到问题。

问题是,数据库(源自Excel工作表)有空单元格应该有值,从上面的单元格给出的值,在同一列。

换句话说,如果值不变,Excel表格的制造者已经将同一列中的单元格留空。 我实际上需要在这些单元格中的值!

由于sheet / db的大小,我无法手动执行此操作,有没有一种方法可以通过编程实现?

我真的更喜欢sql查询的方式,如果有的话!

最好的祝愿,Tor

你可以在Excel中做到这一点。 我在这里回答了类似的问题:

CSV文件中的空白值(不只是行)

你也可以在Excel中完全做到这一点:

select列(或任何你正在使用的范围),然后去编辑>转到(Ctrl + G),然后单击特殊。 选中空白并单击确定。 这将只select列表中的空单元格。 现在键入=键,然后向上箭头和Ctrl – input。

这将在每个空白单元格中添加一个公式,使其等于它上面的单元格。 然后,您可以复制^粘贴值来摆脱公式。

你查询整个分贝,保持原来的sorting顺序,然后遍历每一行。 如果有东西是空的,用上面的值更新它。

编辑:你可能会在这里做类似的事情:

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(); } 

但我build议你使用Excel来修复数据库。 这很容易,你不需要了解上面的代码。

与@maneesha提出的方法类似的方法是过滤空白单元格,然后写入“等于上层单元格”公式,然后清除filter。

但是我认为@maneeshas的解决scheme更酷。