Android 如何让CSVWriter将blob数据添加到单元格中

Android 如何让CSVWriter将blob数据添加到单元格中,android,sqlite,csv,blob,writer,Android,Sqlite,Csv,Blob,Writer,我有一个应用程序,允许用户在平板电脑上签名,并生成图像。这部分我已经与确认工作,因为我能够查看图像后,他们被创建和保存 我正在用下面的代码将它们写入一个.csv文件 //region - Create CSV file writer = new CSVWriter(new FileWriter(sdCardPath + "Orders_Summary_Report.csv"), ',', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DE

我有一个应用程序,允许用户在平板电脑上签名,并生成图像。这部分我已经与确认工作,因为我能够查看图像后,他们被创建和保存

我正在用下面的代码将它们写入一个.csv文件

//region - Create CSV file
            writer = new CSVWriter(new FileWriter(sdCardPath + "Orders_Summary_Report.csv"), ',', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, "\r\n");
            //writer.writeNext(CSVcursor.getColumnNames()); //Write the column headings first before the looping starts
            String [] headings = ("Order Id,Item ID,Item Name,Item Price,Item Count,Item Total,Paid Amount,VOID Order,Payment Method,Order Signature,Member/Authorization,Tab Number,Order Time").split(",");
            writer.writeNext(headings);

            for(CSVcursor.moveToFirst(); !CSVcursor.isAfterLast(); CSVcursor.moveToNext()) //Loop through all results (use row count of table)
            {
                String[] entries = (CSVcursor.getInt(CSVcursor.getColumnIndex("orderId"))+ ","
                        +CSVcursor.getInt(CSVcursor.getColumnIndex("itemId"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("itemName"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("itemPrice")) + ","
                        +CSVcursor.getInt(CSVcursor.getColumnIndex("itemCount"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("itemTotal"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("orderPaid"))+ ","
                        +CSVcursor.getInt(CSVcursor.getColumnIndex("orderVoid"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("orderType"))+ ","
                        +CSVcursor.getBlob(CSVcursor.getColumnIndex("orderSignature"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("referenceId"))+ ","
                        +CSVcursor.getInt(CSVcursor.getColumnIndex("orderTab"))+ ","
                        +CSVcursor.getString(CSVcursor.getColumnIndex("orderTime"))).split(","); //Split the string by the delimiter
                writer.writeNext(entries); //Write current row of DB to file
                writer.flush(); //Flush the stream
            }
            writer.close();
文件正在成功写入,但当我查看.csv文件时,保存blob数据的列如下所示

B@2342342 B@2123982 B@3952929

看起来我只是保存文件的签名或其他属性,而不是保存文件本身


我需要按位/缓冲区将blob流式传输到csv文件中吗?

只需回显@commonware即可。正确的做法是将blob作为am映像保存到磁盘。这样,如果需要的话,它可以很容易地被检索并嵌入到文件中。我仍然将图像作为blob保存到数据库中,并在视图中显示它们。如果你想把这些文件放入CSV,我会考虑另一种类型的PDF。

< P>只是回响“普通SWALWARE”。正确的做法是将blob作为am映像保存到磁盘。这样,如果需要的话,它可以很容易地被检索并嵌入到文件中。我仍然将图像作为blob保存到数据库中,并在视图中显示它们。如果你想把这些文件放入CSV,我会考虑另一种类型的PDF。

一个更典型的解决方案是将图像保存为一个单独的文件。否则,您需要决定如何将BLOB列中的
字节[]
转换为字符串表示形式,然后将字符串放入CSV文件中。更典型的解决方案是将图像另存为一个单独的文件。否则,您需要决定如何将BLOB列中的
字节[]
转换为某种字符串表示形式,然后将字符串放入CSV文件中。