在不更改的情况下将字符串输入到csv文件中

时间:2013-04-29 09:04:24

标签: java csv

我正在开发一个项目,我必须从excel文件中读取一个字符串,并将其与序列一起写入csv文件。

这是我的代码:

private void readExcelSheet(String inputFile){
//Method to read the input file 
    File excelSheet = new File(inputFile);             
    set1=new LinkedHashSet<String>();
    InputStream inp = null;
    try {
        inp = new FileInputStream(excelSheet);
        wb =WorkbookFactory.create(inp);
        for(int sheetNo=0; sheetNo<wb.getNumberOfSheets();sheetNo++)
        { //counter5++;
            System.out.println(sheetNo);
            map1=new LinkedHashMap<String,ArrayList<String>>();
            Sheet sheet = wb.getSheetAt(sheetNo);
            Iterator<Row> rowIterator = sheet.iterator(); 
            while(rowIterator.hasNext()) {
                Row row = rowIterator.next();
                //array1=new ArrayList<String>();
                temp=row.getCell(0).getStringCellValue();
                System.out.println(temp);
                inputInto(temp);
            }
        }
    }catch (Exception ex) {
        ex.printStackTrace();
    }
}

public void inputInto(String temp1) throws IOException{
    FileWriter writer = new FileWriter(fileName,true);
    PrintWriter out = new PrintWriter(writer);
    out.append("\""+temp+"\"");
    out.append(",");
    out.append((countLines()+1)+"");
    System.out.println(countLines()+1);
    out.append("\n");
    out.flush();
}

public int countLines() throws IOException {
    LineNumberReader reader  = new LineNumberReader(new FileReader(fileName));
    int cnt = 0;
    String lineRead = "";
    while ((lineRead = reader.readLine()) != null) {}
    cnt = reader.getLineNumber(); 
    reader.mark(0);
    reader.reset();
    reader.close();
    return cnt;
}

public static void main(String[] args){
    Token token=new Token();
    token.readExcelSheet("D:/Workspace/sample.xlsx");
}

这里readExcelSheet是读取输入excel表的方法      inputInto是写入csv文件的方法      countLines是查找最后一个行号的方法,以便找到序列。

但是当我第一次尝试运行我的代码时,我将序列设为'1' 当我第二次运行时,我得到的序列为'11'和23,很快。

以下是我的意见:

“Horizo​​n牙科选择计划提供从任何牙医接受牙科服务的自由,同时通过在我们庞大的全国性网络中选择牙医,使会员能够节省资金并实现利益最大化。
Horizo​​n牙科选择计划提供: •三个福利水平的灵活性 •使用参与Horizo​​n牙科选择计划的牙医时,降低自付费用和更高的计划福利 •访问超过136,000名参与牙医的全国性网络 •网络内牙医折扣10%至30% •预防性牙科服务涵盖100%的允许费用 •年度免赔额 •离开网络的选择;免赔额和共同保险可能适用 有关更多信息,请下载计划详细信息 有关详细信息,请下载计划详细信息。“

任何人都可以帮助我。 感谢..

1 个答案:

答案 0 :(得分:0)

我认为你的错误是

FileWriter writer = new FileWriter(fileName,true);

当你说true时,输出文件在第二次调用中没有删除,java会在其上写入。只需删除该行中的true,我猜就可以了。