Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel工作表(或SQLite)中的空单元格中填入上面最近的填充单元格的值_Sql_Excel_Fill_Cells - Fatal编程技术网

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

在excel工作表(或SQLite)中的空单元格中填入上面最近的填充单元格的值,sql,excel,fill,cells,Sql,Excel,Fill,Cells,我在向SQLite数据库发送查询时遇到了一个问题 问题在于,数据库(源于excel工作表)有空单元格,在同一列中应该有值,这些值是从上面的单元格中给定的 换句话说,如果值不变,excel工作表的制作者会将同一列中的单元格留空。我实际上需要这些单元格中的值 由于表/db的大小,我无法手动执行此操作,是否有方法通过编程执行此操作 我真的更喜欢sql查询方式,如果有的话 致以最良好的祝愿, Tor查询整个数据库,保持原始排序顺序,然后迭代每一行。如果某个内容为空,则使用上面的值更新它 编辑:您可以在此

我在向SQLite数据库发送查询时遇到了一个问题

问题在于,数据库(源于excel工作表)有空单元格,在同一列中应该有值,这些值是从上面的单元格中给定的

换句话说,如果值不变,excel工作表的制作者会将同一列中的单元格留空。我实际上需要这些单元格中的值

由于表/db的大小,我无法手动执行此操作,是否有方法通过编程执行此操作

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

致以最良好的祝愿,
Tor

查询整个数据库,保持原始排序顺序,然后迭代每一行。如果某个内容为空,则使用上面的值更新它

编辑:您可以在此处使用类似的方法:

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();
}
SQLiteDatabase db=SQLiteDatabase.openDatabase(“myDb.db”,null,SQLiteDatabase.OPEN\u READWRITE);
游标c=db.query(“表”,null,null,null,null,null,“定义排序顺序的列”);
如果(c!=null){
int columnCount=c.getColumnCount();
String[]lastValues=新字符串[columnCount];
while(c.moveToNext()){
ContentValues cv=新的ContentValues();
对于(int i=0;i0){
//在这里使用id
update(“table”,cv,“column=?”,新字符串[]{“id”});
}
}
c、 close();
}

但我建议您使用Excel来修复数据库。这更容易,而且您不需要理解上面的代码。

您可以在excel中执行此操作。我在这里回答了一个类似的问题:

您也可以完全在excel中执行此操作:

选择列(或您正在使用的任何范围),然后转到 编辑>转到(Ctrl+G)并单击特殊。选中空白并单击“确定”。这 将仅选择列表中的空单元格。现在输入=键, 然后按向上箭头键和ctrl-enter键

这将在每个空白单元格中放入一个公式,以与上面的单元格相等 信息技术然后,您可以复制^paste值,仅用于删除 公式


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


但我认为@maneeshas的解决方案更酷。

这是安卓的问题吗?请考虑删除标签,如果它不适用。是和否。该数据库适用于Android应用程序,虽然它不是一个Android特定的问题。标记已删除。如果忘记了数据输入,您如何知道上面的内容是正确的?我如何准确地执行该操作?