Có ai ở đây biết về bất kỳ cách nhanh chóng, sạch sẽ nào để chuyển đổi tệp csv thành tệp xls hoặc xlsx trong java không?Chuyển đổi .csv thành .xls trong Java
Tôi có điều gì đó để quản lý tệp csv đã có sẵn và tôi cần khả năng tương thích bổ sung cho các chương trình khác.
Mã mẫu ngoài tên gói luôn được đánh giá cao.
Rất cám ơn,
Justian
Dưới đây là mã của tôi cho đến nay. Tôi cần phải loại bỏ các lợi nhuận ("\ n") từ các dòng. Một số ô của tôi chứa nhiều dòng thông tin (danh sách), vì vậy tôi có thể sử dụng "\ n" trong csv để biểu thị nhiều dòng trong một ô , nhưng xls coi chúng như thể tôi muốn đặt chúng trên một dòng mới.
Mã được sửa đổi từ Internet và một chút lộn xộn vào lúc này. Bạn có thể nhận thấy một số phương pháp không được chấp nhận, vì nó được viết vào năm 2004 và chắc chắn bỏ qua các báo cáo trả về khủng khiếp. Tôi chỉ đang sử dụng S.o.p vào lúc này để kiểm tra và tôi sẽ dọn dẹp nó sau.
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 "";
}
}
Cập nhật trong câu trả lời của tôi. Xin lỗi bạn đã phải chờ một chút. –