2012-06-03 70 views
0

我在做什麼?我將我的sqlite數據庫導出到csv - 至少我嘗試導出CSV格式非常奇怪

我已經完成了這兩個手動和"OpenCSV"

使用這兩種方法我都會得到很奇怪的結果。他們似乎格式不正確。列(通常由','?分隔)或特殊字符(據說在opencsv中處理)看起來應該是這樣。代碼:

CSVWriter writer = new CSVWriter(new FileWriter(file),'\n',','); 

     String[] items = new String[11]; 
     c.moveToFirst(); 

     while(!c.isAfterLast()){ 


     items[0] = c.getString(c.getColumnIndex(BaseColumns._ID)); 
     items[1] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_QRCODE)); 
     items[2] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_NAME)); 
     items[3] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_AMOUNT)); 
     items[4] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_UNIT)); 
     items[5] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_PPU)); 
     items[6] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_TOTAL)); 
     items[7] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_COMMENT)); 
     items[8] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_SHOPPING)); 
     items[9] = c.getString(c.getColumnIndex(DepotTableMetaData.CREATED_DATE)); 
     items[10] = c.getString(c.getColumnIndex(DepotTableMetaData.MODIFIED_DATE)); 

     c.moveToNext(); 
     writer.writeNext(items); 

     } 

     writer.close(); 

,這一切讓這個作爲結果:imgur-image..

我也通過FileWriter的和StringBuffer做,但它似乎給完全相同的結果...我喜歡你能不能幫我;)

我已經通過計算器看了,但找不到任何匹配的問題;/

編輯:是的,我知道,我用的是「老了,過時」光標,但在這裏,這不是問題。謝謝。

編輯2:已解決! 你必須分配一些常見的編碼!

CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(destination+"/output.csv"),"UTF-8")); 

完成了這項工作!

+0

您使用的是csv庫,但自己附加逗號... – you786

+0

讓我更新代碼.. – Aeefire

回答

3

您使用OpenCSV Writer,它將CSV文件的一行作爲字符串的數組,並自動在列和行之間生成分隔符,但不會讓OpenCSV爲您執行此操作,而是通過附加操作明確地執行此操作單個字符串中所有行的值。很顯然,OpenCSV將採用您獨特的價值,並認爲它包含一個單列,其中逗號和換行符必須進行編碼。

您應該用一個字符串數組調用writer.writeNext(),數組中的每個字符串都是表中的單個單元格。作者將爲您生成逗號和換行符。

+0

聽起來不錯,但沒有奏效。我得到了這個結果imgur link2 .. 無論如何,行正在作出正確的,但列沒有。並且仍然存在特殊字符的問題...:/ – Aeefire

+0

CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(destination +「/ output.csv」),「UTF-8」)); 完成了這項工作...仍然我會給你接受,因爲你也給了我一個提示! – Aeefire