Potrzebuję przekonwertować CSV do Xls/Xlsx w moim projekcie? Jak mogę to zrobić? Czy ktoś może zamieścić mi kilka przykładów? Chcę to zrobić z Apache poi. Też muszę utworzyć komórkę od strony Java.Konwersja csv do Xls/Xlsx za pomocą Apache poi?
5
A
Odpowiedz
9
Możesz wypróbować następujące metody tworzenia pliku xlsx za pomocą apache-poi.
public static void csvToXLSX() {
try {
String csvFileAddress = "test.csv"; //csv file address
String xlsxFileAddress = "test.xlsx"; //xlsx file address
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet("sheet1");
String currentLine=null;
int RowNum=0;
BufferedReader br = new BufferedReader(new FileReader(csvFileAddress));
while ((currentLine = br.readLine()) != null) {
String str[] = currentLine.split(",");
RowNum++;
XSSFRow currentRow=sheet.createRow(RowNum);
for(int i=0;i<str.length;i++){
currentRow.createCell(i).setCellValue(str[i]);
}
}
FileOutputStream fileOutputStream = new FileOutputStream(xlsxFileAddress);
workBook.write(fileOutputStream);
fileOutputStream.close();
System.out.println("Done");
} catch (Exception ex) {
System.out.println(ex.getMessage()+"Exception in try");
}
}
3
Możemy użyć SXSSF Jar, w których możemy analizować długi plik jak poniżej:
public static void main(String[] args) {
try {
// String fName = args[ 0 ];
String csvFileAddress = "C:\\Users\\psingh\\Desktop\\test\\New folder\\GenericDealerReport - version6.txt"; //csv file address
String xlsxFileAddress = "C:\\Users\\psingh\\Desktop\\trial\\test3.xlsx"; //xlsx file address
SXSSFWorkbook workBook = new SXSSFWorkbook(1000);
org.apache.poi.ss.usermodel.Sheet sheet = workBook.createSheet("sheet1");
String currentLine = null;
int RowNum = -1;
BufferedReader br = new BufferedReader(new FileReader(csvFileAddress));
while ((currentLine = br.readLine()) != null) {
String str[] = currentLine.split("\\|");
RowNum++;
Row currentRow = sheet.createRow(RowNum);
for (int i = 0; i < str.length; i++) {
currentRow.createCell(i)
.setCellValue(str[ i ]);
}
}
DateFormat df = new SimpleDateFormat("yyyy-mm-dd-HHmmss");
Date today = Calendar.getInstance()
.getTime();
String reportDate = df.format(today);
FileOutputStream fileOutputStream = new FileOutputStream(xlsxFileAddress);
workBook.write(fileOutputStream);
fileOutputStream.close();
//System.out.println("Done");
}
catch (Exception ex) {
System.out.println(ex.getMessage() + "Exception in try");
}
}
2
Znalazłem SXSSFWorkbook
naprawdę szybciej niż XSSFWorkbook
. Oto zmodyfikowany kod:
try {
String csvFileInput = "inputFile.csv";
String xlsxFileOutput ="outputFile.xls";
LOGGER.error(csvFileInput);
LOGGER.error(xlsxFileOutput);
SXSSFWorkbook workBook = new SXSSFWorkbook();
Sheet sheet = workBook.createSheet(transformBean.getOutputFileName());
String currentLine = null;
int RowNum = 0;
BufferedReader br = new BufferedReader(new FileReader(csvFileInput));
while ((currentLine = br.readLine()) != null) {
String str[] = currentLine.split(",");
RowNum++;
Row currentRow = sheet.createRow(RowNum);
for (int i = 0; i < str.length; i++) {
currentRow.createCell(i).setCellValue(str[i]);
}
}
FileOutputStream fileOutputStream = new FileOutputStream(xlsxFileOutput);
workBook.write(fileOutputStream);
fileOutputStream.close();
System.out.println("Done");
} catch (Exception ex) {
System.out.println(ex.getMessage() + "Found Exception");
}
0
if(new File(newFileName).isFile()) return;
@SuppressWarnings("resource")
HSSFWorkbook wb = new HSSFWorkbook();
Row xlsRow;
Cell xlsCell;
HSSFSheet sheet = wb.createSheet("sheet1");
int rowIndex = 0;
for(CSVRecord record : CSVFormat.EXCEL.parse(new FileReader(fileName))) {
xlsRow = sheet.createRow(rowIndex);
for(int i = 0; i < record.size(); i ++){
xlsCell = xlsRow.createCell(i);
xlsCell.setCellValue(record.get(i));
}
rowIndex ++;
}
FileOutputStream out = new FileOutputStream(newFileName);
wb.write(out);
out.close();
0
Spróbuj tego, jeśli masz InputStream public static XSSFWorkbook csvToXLSX (InputStream InputStream) wyrzuca IOException { XSSFWorkbook skoroszyt = new XSSFWorkbook();
try(BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
Sheet sheet = workBook.createSheet("sheet1");
String currentLine=null;
int rowNum=0;
while ((currentLine = br.readLine()) != null) {
String[] str = currentLine.split(",");
rowNum++;
Row currentRow=sheet.createRow(rowNum);
for(int i=0;i<str.length;i++){
currentRow.createCell(i).setCellValue(str[i]);
}
}
log.info("CSV file converted to the workbook");
return workBook;
} catch (Exception ex) {
log.error("Exception while converting csv to xls {}",ex);
}finally {
if (Objects.nonNull(workBook)) {
workBook.close();
}
}
return workBook;
}
Powiązane problemy
- 1. Kopiowanie arkusza kalkulacyjnego za pomocą Apache POI
- 2. Automatyczne przeliczanie komentarzy za pomocą apache-poi
- 3. odczytać plik Excela za pomocą Apache POI
- 4. Ustawianie formatu daty za pomocą Apache POI
- 5. Odśwież tabelę przestawną za pomocą Apache POI
- 6. Usuwanie arkusza Excela za pomocą Apache POI
- 7. Wstaw etykietę kolumny do tabeli przestawnej za pomocą Apache POI?
- 8. Utwórz kolumnę tylko do odczytu za pomocą apache poi
- 9. Dodawanie notatek do slajdu PowerPoint za pomocą Apache POI
- 10. Apache poi format daty
- 11. Edycja istniejących plików Excela za pomocą jxl api/Apache POI
- 12. Otrzymuj identyfikator referencyjnej komórki Cell za pomocą Apache POI
- 13. Odczytywanie danych z xlsx za pomocą SXSSFSheet Apache POI
- 14. Konwertuj Word na HTML za pomocą Apache POI
- 15. jak odczytać wartość wszystkich komórek za pomocą Apache POI?
- 16. Ustawienie części zawartości komórki pogrubioną za pomocą apache poi?
- 17. Tworzenie i zmienianie tabel Excel za pomocą Apache POI
- 18. Konwersja RDA do csv
- 19. Wiersze POI Apache numer
- 20. Apache POI SXSSF i XSSF
- 21. Apache POI Performance
- 22. Apache poi page breaks
- 23. Apache POI: SXSSFWorkbook.dispose() nie istnieje
- 24. Apache POI - wyjście do dokumentu Docx
- 25. Konwersja pliku csv na json za pomocą C#
- 26. Apache POI Table-Totals Excel
- 27. konwersja CSV/XLS do JSON?
- 28. Apache POI waluty danych format
- 29. JAVA Apache POI Excel: dodawanie granic do zakresu komórek
- 30. Używanie kolorów niestandardowych z SXSSF (Apache POI)
dzięki, ale mój csv to | rozdzielone. kiedy zastępuję przecinek pipi, otrzymuję po jednym znaku na komórkę. co powinienem zrobić?? – v0ld3m0rt
Potwierdź, że użyłeś po prostu "|" lub "\\ |". – Sankumarsingh
rozumiem, użyłem "|" tylko co znaczyło logiczne lub, powinienem był użyć "\\ |". dzięki – v0ld3m0rt