2016-04-17 1 views
1

J'ai une application qui permet à l'utilisateur de signer la tablette et une image sera produite. Cette partie, j'ai travaillé avec la confirmation que je suis capable de voir les images après qu'ils ont été créés et enregistrés. Je les écris dans un fichier .csv avec le code suivant.Comment obtenir CSVWriter pour ajouter des données BLOB dans la cellule

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

Le fichier est écrit à se succès, mais quand je considère le fichier .csv, la colonne qui permet de sauver les données blob ressemble à ceci.

B @ 2342342 B @ 2123982 B @ 3952929

On dirait que je suis tout simplement sauver la signature ou un autre attribut du fichier plutôt que le fichier lui-même. Dois-je diffuser le blob par bit/buffer dans le fichier csv?

+1

Une solution plus typique serait de sauvegarder l'image dans un fichier séparé. Sinon, vous devrez décider comment transformer le 'byte []' de votre colonne BLOB en une représentation de chaîne, puis placez la chaîne dans votre fichier CSV. – CommonsWare

Répondre

0

Juste en écho à @CommonsWare. La bonne chose à faire est de sauvegarder le blob sur le disque en tant qu'image. De cette façon, il peut être facilement récupéré pour être intégré dans un fichier si nécessaire. Je sauvegarde toujours mes images sur le db sous forme de blobs et je les affiche dans une vue. Si vous voulez mettre ces fichiers dans un csv, je considérerais un autre type comme pdf.