2012-06-03 65 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