繁体   English   中英

将Java对象列表转换为CSV

[英]convert java object list into CSV

我有对象列表,其中包含来自XML源的对象中的许多值:

iit.getHomeCurrency().getPrice().toString()

如果我把System.out.println(iit.getHomeCurrency()。getPrice()。toString()); 我获得了对象的完整列表。

但是,当我想将此对象转换为CSV时,使用

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(),"/n"} 
csvWriter.close();

我在csv文件中只有一行:(

码:

for(int i=0;i<contentElement.size();i++){
            JAXBElement<ListInvoiceType> invoiceTypeElement = (JAXBElement<ListInvoiceType>) contentElement.get(i);
            ListInvoiceType listInvoiceType = invoiceTypeElement.getValue();
            List<InvoiceType> invoiceTypeList = listInvoiceType.getInvoice();
            for(InvoiceType invoiceType:invoiceTypeList ){
                InvoiceHeaderType invoiceHeaderType = invoiceType.getInvoiceHead
er();
                InvoiceDetailType invoiceDetailType = invoiceType.getInvoiceDetail();                       

                InvoiceItemType iit = null;
                InvoiceAdvancePaymentItemType iapit = null;
                for(Serializable s:invoiceDetailType.getContent()){
                    if(s instanceof JAXBElement) {
                        JAXBElement<?> element = (JAXBElement)s;
                        if(element.getValue() instanceof InvoiceItemType){
                            iit = (InvoiceItemType)element.getValue();
                        }
                        else if(element.getValue() instanceof InvoiceAdvancePaymentItemType){
                            iapit = (InvoiceAdvancePaymentItemType)element.getValue();
                        }
                        else{
                            throw new Exception("xx");
                        }
                    }

                    else if(s instanceof String){

                    }
                    else{
                        throw new Exception("xx");
                    }       


                        if(iit!=null){          
                        CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));

                        csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(), iit.getCentre().getIds()  ,invoiceHeaderType.getDate().toString(),invoiceHeaderType.getInvoiceType().value(),"\r\n"});

                        csvWriter.close();

我应该怎么做才能使Java将每个对象写入到csv文件的新行中?

谢谢

主要问题似乎是您为循环的每次迭代打开一个新文件,然后移动

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));

for循环之前

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
for(Serializable s:invoiceDetailType.getContent()){
    if(s instanceof JAXBElement) {
        //... 
    }

   if( iit !=n ull){          
       csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(), iit.getCentre().getIds()  ,invoiceHeaderType.getDate().toString(),invoiceHeaderType.getInvoiceType().value(),"\r\n"});
   }

并在for循环后关闭文件

} //end for loop

 csvWriter.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM