Javaでcsvファイルをxlsまたはxlsxファイルに変換する迅速でクリーンな方法を知っている人はいますか?
既に csv ファイルを管理するものがあり、他のプログラムとの追加の互換性が必要です。
パッケージ名に加えてサンプルコードは常に高く評価されています。
どうもありがとう、
ユスティアン
これまでの私のコードは次のとおりです。行からリターン ("\n") を削除する必要があります。一部のセルには複数行の情報 (リスト) が含まれているため、csv で "\n" を使用してセル内の複数行を示すことができますが、xls はこれらを新しい行に配置するつもりであるかのように扱います。
コードはインターネットから変更されており、現時点では少し面倒です。2004 年に書かれたため、いくつかの非推奨のメソッドに気付くかもしれませんが、ひどい return ステートメントは無視してください。現時点ではテストのために Sop を使用しているだけなので、後でクリーンアップします。
package jab.jm.io;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class FileConverter {
public static String ConvertCSVToXLS(String file) throws IOException {
if (file.indexOf(".csv") < 0)
return "Error converting file: .csv file not given.";
String name = FileManager.getFileNameFromPath(file, false);
ArrayList<ArrayList<String>> arList = new ArrayList<ArrayList<String>>();
ArrayList<String> al = null;
String thisLine;
DataInputStream myInput = new DataInputStream(new FileInputStream(file));
while ((thisLine = myInput.readLine()) != null) {
al = new ArrayList<String>();
String strar[] = thisLine.split(",");
for (int j = 0; j < strar.length; j++) {
// My Attempt (BELOW)
String edit = strar[j].replace('\n', ' ');
al.add(edit);
}
arList.add(al);
System.out.println();
}
try {
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new sheet");
for (int k = 0; k < arList.size(); k++) {
ArrayList<String> ardata = (ArrayList<String>) arList.get(k);
HSSFRow row = sheet.createRow((short) 0 + k);
for (int p = 0; p < ardata.size(); p++) {
System.out.print(ardata.get(p));
HSSFCell cell = row.createCell((short) p);
cell.setCellValue(ardata.get(p).toString());
}
}
FileOutputStream fileOut = new FileOutputStream(
FileManager.getCleanPath() + "/converted files/" + name
+ ".xls");
hwb.write(fileOut);
fileOut.close();
System.out.println(name + ".xls has been generated");
} catch (Exception ex) {
}
return "";
}
}