如何在android中实现将sqlite导出到excel/csv文件?

2024-03-13

我正在开发 Android 应用程序,其中 SQlite 作为数据库。我想以编程方式将某些结果从数据库导出为 excel 文件格式,想要将该 excel 存储到本地设备路径 我遇到过以下链接

  • 在Android中以编程方式将SQlite数据库转换为Excel文件格式 https://stackoverflow.com/questions/13068774/sqlite-database-problematically-convert-into-excel-file-format-in-android

  • Android - 从表值生成 CSV 文件 https://stackoverflow.com/questions/4632501/android-generate-csv-file-from-table-values

  • android导出到csv并作为电子邮件附件发送 https://stackoverflow.com/questions/5401104/android-exporting-to-csv-and-sending-as-email-attachment

那么,为 Android 应用程序实现导出到 Excel 的具体过程是什么?


伙计们,这是我已经成功实施的答案

//new async task for file export to csv
private class ExportDatabaseCSVTask extends AsyncTask<String, String, Boolean> {
    private final ProgressDialog dialog = new ProgressDialog(SearchResultActivity.this);
    boolean memoryErr = false;

    // to show Loading dialog box
    @Override
    protected void onPreExecute() {
        this.dialog.setMessage("Exporting database...");
        this.dialog.show();
    }

    // to write process 
    protected Boolean doInBackground(final String... args) {

        boolean success = false;

        String currentDateString = new SimpleDateFormat(Constants.SimpleDtFrmt_ddMMyyyy).format(new Date());

        File dbFile = getDatabasePath("HLPL_FRETE.db");
        Log.v(TAG, "Db path is: " + dbFile); // get the path of db
        File exportDir = new File(Environment.getExternalStorageDirectory() + File.separator + Constants.FileNm.FILE_DIR_NM, "");

        long freeBytesInternal = new File(getApplicationContext().getFilesDir().getAbsoluteFile().toString()).getFreeSpace();           
        long megAvailable = freeBytesInternal / 1048576;

        if (megAvailable < 0.1) {               
            System.out.println("Please check"+megAvailable);
            memoryErr = true;               
        }else {             
            exportDirStr = exportDir.toString();// to show in dialogbox
            Log.v(TAG, "exportDir path::" + exportDir);
            if (!exportDir.exists()) {
                exportDir.mkdirs();
            }   
            try {
                List<SalesActivity> listdata = salesLst;
                SalesActivity sa = null;
                String lob = null;
                for (int index = 0; index < listdata.size();) {
                    sa = listdata.get(index);
                    lob = sa.getLob();
                    break;
                }
                if (Constants.Common.OCEAN_LOB.equals(lob)) {

                    file = new File(exportDir, Constants.FileNm.FILE_OFS + currentDateString + ".csv");
                } else {
                    file = new File(exportDir, Constants.FileNm.FILE_AFS + currentDateString + ".csv");
                }
                file.createNewFile();
                CSVWriter csvWrite = new CSVWriter(new FileWriter(file));


                // this is the Column of the table and same for Header of CSV
                // file
                if (Constants.Common.OCEAN_LOB.equals(lob)) {
                    csvWrite.writeNext(Constants.FileNm.CSV_O_HEADER);
                }else{
                    csvWrite.writeNext(Constants.FileNm.CSV_A_HEADER);
                }
                String arrStr1[] = { "SR.No", "CUTSOMER NAME", "PROSPECT", "PORT OF LOAD", "PORT OF DISCHARGE" };
                csvWrite.writeNext(arrStr1);

                if (listdata.size() > 0) {
                    for (int index = 0; index < listdata.size(); index++) {
                        sa = listdata.get(index);
                        String pol;
                        String pod;
                        if (Constants.Common.OCEAN_LOB.equals(sa.getLob())) {
                            pol = sa.getPortOfLoadingOENm();
                            pod = sa.getPortOfDischargeOENm();
                        } else {
                            pol = sa.getAirportOfLoadNm();
                            pod = sa.getAirportOfDischargeNm();
                        }
                        int srNo = index;
                        String arrStr[] = { String.valueOf(srNo + 1), sa.getCustomerNm(), sa.getProspectNm(), pol, pod };
                        csvWrite.writeNext(arrStr);
                    }
                    success = true;
                }
                csvWrite.close();

            } catch (IOException e) {
                Log.e("SearchResultActivity", e.getMessage(), e);
                return success;
            }
        }
        return success;
    }

    // close dialog and give msg
    protected void onPostExecute(Boolean success) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
        if (success) {
            dialogBox(Constants.Flag.FLAG_EXPRT_S);
        } else {                
            if (memoryErr==true) {
                dialogBox(Constants.Flag.FLAG_MEMORY_ERR);
            } else {
                dialogBox(Constants.Flag.FLAG_EXPRT_F);
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android中实现将sqlite导出到excel/csv文件? 的相关文章

  • 安卓无法玩ogg

    有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 如何获取.so文件的依赖项列表?

    假设我有libFoo so为 android arm 编译 我不确定它链接到什么STL实现 有options http developer android com intl ru ndk guides standalone toolchai
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • NoClassDefFoundError:无法解析:Landroid/support/v7/appcompat/R$styleable

    新手尝试完成 Google 提供的我的第一个应用程序教程 在这个致命异常的过程中 我确实导入了很多随机包来消除许多事情的 无法解析 错误 例如 ActionBarActivity EditText Fragment LayoutInflat
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 直接使用从密钥库加载的 SecretKey 时,密钥用户未经过身份验证

    我正在尝试使用 Cipher 和在 KeyStore 中加载的 SecretKey 来加密数据 但总是收到此错误 导致 android security KeyStoreException 关键用户未经过身份验证 我尝试自己创建 Secre
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • 如何在输入密码字段中插入复选框

    我希望我的网页在密码字段内显示一个复选框 用户单击复选框并查看文本形式的密码 取消选中后 再次输入其密码 This is what I want This is from the Ebay website login page 这就是我得到
  • java垃圾收集日志中的“GC--”是什么意思?

    我们打开了详细 GC 日志记录来跟踪已知的内存泄漏 并在日志中获取以下条目 3607872 687 GC 471630K gt 390767K 462208K 0 0325540 secs 3607873 213 GC 458095K gt
  • Python 3 如何检查一个值是否已经在列表中的列表中

    我的 Python 3 中有一个列表列表 mylist a x x b x x c x x x只是一些数据 我有我的代码可以做到这一点 for sublist in mylist if sublist 0 a sublist 1 subli
  • 如何与 AlarmManager 结合启动通知?

    我正在尝试弄清楚应该如何启动通知 创建通知不是我所要求的 而是一种在后台启动它的方法 这样它就不引人注目 并且用户可以做他们正在做的任何事情 它是日历 准确地说是提醒 同样重要的是要注意我正在使用AlarmManager 我应该使用什么方法
  • ng-repeat动画完成回调

    所以我有一个简单的 ng repeat 和在 javascript 中定义的输入动画 沙盒 http codepen io anri82 pen KwgGeY http codepen io anri82 pen KwgGeY Code d
  • 从 CompletableFuture.allof() 获取单独的结果

    我有一个类 它使用 CompletableFutures 向两个依赖服务发出并发请求 我的代码如下所示 Builder Slf4j public class TestClass NonNull private final ExecutorS
  • R 中分层样本的单向方差分析

    我有一个包含三组 a b c 的分层样本 这些样本是从较大的总体 N 中抽取的 所有组都有 30 个观察值 但它们在 N 中的比例不相等 因此它们的采样权重不同 我用surveyR 中的包来计算汇总统计数据和线性回归模型 并且想知道如何计算
  • 如何使用jquery在div内容更改时发出警报

    我想在 div 内容发生变化时发出警报消息 jquery api 是否为 div 元素提供了任何侦听器 绑定dom修改事件 document ready function test div bind DOMNodeInserted DOMS
  • Pandas 数据帧性能

    Pandas 确实很棒 但我真的很惊讶从 Pandas DataFrame 检索值的效率是多么低下 在下面的玩具示例中 即使是 DataFrame iloc 方法也比字典慢 100 倍以上 问题 这里的教训是否只是字典是查找值的更好方法 是
  • Angular 2打字稿调用javascript函数

    是否有正确的方法从 Angular 2 TypeScript 中的组件调用 JavaScript 函数 这是我的组件 import ElementRef AfterViewInit from angular core export clas
  • 无法运行 arquillian 测试

    我正在尝试使用 Arquillian 进行一些单元测试 但是我找不到它们在使用 Maven 部署时失败的原因 这是班级测试 package com ndeveloper spec test import javax inject Injec
  • 使用 SSL 访问 RDS - 不支持的记录版本 Unknown-0.0

    我正在使用亚马逊RDS MySQL并与SSL证书 默认证书位于http s3 amazonaws com rds downloads mysql ssl ca cert pem http s3 amazonaws com rds downl
  • PHPUnit 中的assertEquals 和assertSame 之间的区别?

    PHPUnit 包含一个assertEquals https phpunit de manual current en appendixes assertions html appendixes assertions assertEqual
  • 在 llvm 上运行 x86 程序

    是否可以使用llvm来运行x86程序 IE 我想使用 llvm 作为 x86 模拟器来运行 x86 程序 然后对 x86 程序进行检测 Thanks 我想你正在寻找LibCPU http LibCPU Org It has x86 前端 h
  • 安卓。画布缩放和平移

    我创建了自定义视图 您可以在其中触摸和缩放它 大部分作品都是在这个的帮助下创作的post http android developers blogspot com 2010 06 making sense of multitouch htm
  • 休眠在批处理文件中

    当编写批处理文件以在 Windows 机器上自动执行某些操作时 我需要暂停其执行几秒钟 通常在测试 等待循环中 等待进程启动 当时 我能找到的最好的解决方案是使用 ping 我没有骗你 来达到预期的效果 我找到了一篇更好的文章here ht
  • 在 Redhat 6.3 上安装 R 3+

    我想在我的 Red hat 集群上安装 R 其版本如下 cat etc redhat release Red Hat Enterprise Linux Server release 6 3 Santiago 当我访问 R 的主页时 这就是他
  • CQL3 现在是否需要 Cassandra 的架构?

    上周我刚刚参加了 Cassandra 速成课程 从 Thrift API 到 CQL 再到摸索 SuperColumns 才知道我不应该使用它们 而应该使用复合键 我现在正在尝试 CQL3 似乎我无法再插入到架构中未定义的列 或者在sele
  • Django - 应用程序目录中的静态文件

    在开发环境中 我想使用应用程序目录中的静态文件 settings py SITE ROOT os path dirname os path realpath file STATIC ROOT os path join SITE ROOT s
  • 如何在android中实现将sqlite导出到excel/csv文件?

    我正在开发 Android 应用程序 其中 SQlite 作为数据库 我想以编程方式将某些结果从数据库导出为 excel 文件格式 想要将该 excel 存储到本地设备路径 我遇到过以下链接 在Android中以编程方式将SQlite数据库