java中生成了一个csv文件,通过excel打开csv,数据没有分列,如何在就java语言里实现。

ps:csv中数据以“,”作为分割,不要在excel里面进行分列的操作,我需要生成的csv打开后自动分好列。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

/**
 * CSV文件示例程序
 * @version 1.0 2014/10/30
 */
public class CsvFileCreator {
    public static void main(String[] args) {
        CsvFileCreator example = new CsvFileCreator();
        example.createCsv();
    }
    
    /**
     * 创建CSV文件
     */
    public void createCsv(){
        //换行符
        final String NEW_LINE = "\n";
        //文件名称
        String fileName = "D:\\MyCsv.csv";
        
        try {
            //标题头
            String title = "序号,姓名,年龄,身高";
            
            StringBuilder csvStr = new StringBuilder();
            csvStr.append(title).append(NEW_LINE);
            
            //数据行
            for(String csvData : getCsvRows()){
                csvStr.append(csvData).append(NEW_LINE);
            }
            
            //写文件
            Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName)), "GB2312"));
            writer.write(csvStr.toString());
            writer.flush();
            writer.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    /**
     * 获取CSV行数据,各个值之间使用英文逗号分隔
     * @return List<String>
     */
    private List<String> getCsvRows(){
        List<String> result = new ArrayList<String>();
        result.add("1,Mr Zhang,20,170");
        result.add("2,Mrs Wang,18,175");
        result.add("3,Li,30,178");
        result.add("4,Zhao,19,175");
        result.add("5,Ms Feng,18,165");
        return result;
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-30
字段之间用“,”分隔即可。注意是英文的逗号。追问

能写个关键部分的代码给我看看么,学习一下

第2个回答  2014-10-30
用制表符分更好吧?
相似回答