2016-04-17 17 views
1

Ich habe eine Anwendung, mit der der Benutzer das Tablet signieren kann und ein Bild erstellt wird. Diesen Teil habe ich mit Bestätigung bearbeitet, da ich die Bilder nach dem Erstellen und Speichern sehen kann.So erhalten Sie CSVWriter, um Blobdaten in die Zelle einzufügen

Ich schreibe sie in eine CSV-Datei mit dem folgenden Code.

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

Die Datei wird geschrieben immer erfolgreich, aber wenn ich die CSV-Datei anzuzeigen, die Spalte, die die Blob-Daten speichert sieht wie folgt aus.

B @ 2.342.342 B @ 2.123.982 B @ 3952929

Es ist wie ich eher die Unterschrift oder ein anderes Attribut der Datei nur bin Speichern aussieht als die Datei selbst.

Muss ich den Blob für Bit/Puffer in die CSV-Datei streamen?

+1

Eine typische Lösung wäre, das Bild als separate Datei zu speichern. Andernfalls müssen Sie entscheiden, wie Sie das 'byte []' aus Ihrer BLOB-Spalte in eine String-Darstellung umwandeln und dann die Zeichenfolge in Ihre CSV-Datei einfügen. – CommonsWare

Antwort

0

Nur Echo @CommonsWare. Die richtige Sache ist, den Blob auf der Festplatte als Bild zu speichern. Auf diese Weise kann es bei Bedarf leicht in eine Datei eingebettet werden. Ich speichere meine Bilder immer noch als Blobs in der db und zeige sie nur in einer Ansicht an. Wenn Sie diese Dateien in einen csv legen möchten, würde ich einen anderen Typ wie pdf betrachten.