【问题标题】:Delete specific rownumbers in .csv file using java使用java删除.csv文件中的特定行号
【发布时间】:2017-02-28 14:30:03
【问题描述】:

例如:我正在尝试在 .csv 文件中搜索名称为“abc”的文本,该文件存在于多行的第 6 列中,我需要删除这些行。

我尝试了下面的代码。我能够得到第 6 列中存在文本“abc”的行号/行号,但它没有删除行。

    import java.io.BufferedReader;
import java.io.*;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;

public class ReadExcel {

    public static void main(String[] args)  throws Exception{

        String csvFile = "csv filelocation";

        CSVReader reader = new CSVReader(new FileReader(csvFile));
        List<String[]> allElements = reader.readAll();

        String [] nextLine;
        int lineNumber = 0;
        while ((nextLine = reader.readNext()) != null) {
            lineNumber++;

           if(nextLine[5].equalsIgnoreCase("abc")){
            System.out.println("Line # " + lineNumber);

            allElements.remove(lineNumber);



        }


        }

【问题讨论】:

  • 你有lines.add(nextLine)的地方,如果你只做lines.split(",")你会得到所有的值在行...那你在做什么拥有它们之后的价值?
  • 最好使用适当的库来处理引号和多行值等所有内容,例如Apache Commons CSV
  • 其实我想把所有的单元格存储在一个数组中,然后一个一个地读取。
  • 我现在尝试删除行,但无法删除。

标签: java excel csv


【解决方案1】:

为了读取 CSV 格式的文件,我目前正在使用库 super-csv。有各种各样的例子。

如果您在使用它时需要帮助,请告诉我。

【讨论】:

  • 我想我需要下载使用 super-csv 的特定库。它会逐个单元格地读取输入单元格
  • 是的!你在使用 Maven 吗?
  • 我现在正在尝试删除行,但无法删除。
  • 您要从文件中还是从内存中的列表/集中删除一行?
  • 我要删除文件中满足用户条件的所有行
【解决方案2】:

因此,如果您想使用 opencsv 库,我将开始一个新示例,用于将新内容写入 CSV 文件。我从您的示例代码中获得灵感。

List<String[]> allElements; /* This list will contain the lines that cover your criteria */ 

/*
...
*/

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
writer.writeAll(allElements);
writer.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2023-01-09
    • 2023-01-19
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多