필자는이 코드를 매우 자주 작업하고 있으며 막 다른 방향으로 라우팅하는 경우 단순한 헤드를주고 싶습니다. 이제 im은 다른 .csv 파일에서 동일한 셀을 mathch하고 한 행을 다른 CSV 파일로 복사하는 지점입니다. 문제는 실제로 specfic 라인에서 쓰는 것이 가능할 것입니다. 예를 들어 2 셀이 50 행에 일치하면 50 행에 다시 쓰고 싶습니다. 나는 아마 hashmap에 모든 것을 추출 할 것이라고 가정하고 있습니다. 그런 다음 .csv 파일에 다시 씁니다. 더 쉬운 방법이 있습니까?슈퍼 csv를 사용하여 Java로 csv에 다시 작성
예를 들어 사람 세부 정보가있는 하나의 CSV가 있고 다른 하나에는 실제 사람이 살고있는 곳의 속성 세부 정보가 있습니다. 나는 속성 정보를 사람 CSV로 복사하고 정확한 사람 세부 정보와 일치 시키려합니다. . 다음과 같은 상황이처럼이 당신의 코멘트에서 의미
public class Old {
public static void main(String [] args) throws IOException
{
List<String[]> cols;
List<String[]> cols1;
int row =0;
int count= 0;
boolean b;
CsvMapReader Reader = new CsvMapReader(new FileReader("file1.csv"), CsvPreference.EXCEL_PREFERENCE);
CsvMapReader Reader2 = new CsvMapReader(new FileReader("file2.csv"), CsvPreference.EXCEL_PREFERENCE);
try {
cols = readFile("file1.csv");
cols1 = readFile("fiel2.csv");
String [] headers = Reader.getCSVHeader(true);
headers = header(cols1,headers
} catch (IOException e) {
e.printStackTrace();
return;
}
for (int j =1; j<cols.size();j++) //1
{
for (int i=1;i<cols1.size();i++){
if (cols.get(j)[0].equals(cols1.get(i)[0]))
{
}
}
}
}
private static List<String[]> readFile(String fileName) throws IOException
{
List<String[]> values = new ArrayList<String[]>();
Scanner s = new Scanner(new File(fileName));
while (s.hasNextLine()) {
String line = s.nextLine();
values.add(line.split(","));
}
return values;
}
public static void csvWriter (String fileName, String [] nameMapping) throws FileNotFoundException
{
ICsvListWriter writer = new CsvListWriter(new PrintWriter(fileName),CsvPreference.STANDARD_PREFERENCE);
try {
writer.writeHeader(nameMapping);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String[] header(List<String[]> cols1, String[] headers){
List<String> list = new ArrayList<String>();
String [] add;
int count= 0;
for (int i=0;i<headers.length;i++){
list.add(headers[i]);
}
boolean c;
c= true;
while(c) {
add = cols1.get(0);
list.add(add[count]);
if (cols1.get(0)[count].equals(null))// this line is never read errpr
{
c=false;
break;
} else
count ++;
}
String[] array = new String[list.size()];
list.toArray(array);
return array;
}
난 당신이 예를 줄 수, 당신이 달성하고자하는 것을 이해 확실하지 않다? – Thomas
예를 들어 사람 세부 정보가있는 Csv가 하나 있고 다른 사람에게는 실제 사람이 살고있는 곳의 속성 세부 정보가 있습니다. 속성 세부 정보를 사람 CSV에 복사하고 올바른 사람 세부 정보와 일치 시키려합니다. 이것이 의미가되기를 바랍니다. @Thomas –
FYI [Super CSV 2.0.0-beta-1] (http://supercsv.sourceforge.net/release_notes.html)이 출시되었습니다. 여기에는 많은 버그 수정과 새로운 기능 (Maven 지원 및 중첩 된 속성 및 배열/컬렉션 매핑을위한 새로운 Dozer 확장 기능 포함)이 포함되어 있습니다. –