我需要在我的項目中將csv轉換爲xls/xlsx?我怎樣才能做到這一點?任何人都可以給我發些例子嗎?我想用Apache poi來做。我也需要從java端創建一個單元格。使用Apache poi將csv轉換爲xls/xlsx?
5
A
回答
9
您可以嘗試使用apache-poi創建xlsx文件的方法。
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
我們可以使用SXSSF罐中,我們可以分析如下長文件:
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
我發現SXSSFWorkbook
真快,然後XSSFWorkbook
。下面是修改後的代碼:
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
試試這一個,如果你有InputStream的 公共靜態XSSFWorkbook csvToXLSX(InputStream中的inputStream)拋出IOException異常{ XSSFWorkbook工作簿=新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;
}
相關問題
- 1. 使用Apache POI將byteArray轉換爲XSSFWorkbook
- 2. 使用Apache POI將Word轉換爲HTML
- 3. 使用Apache POI在Java中將.doc轉換爲.html
- 4. 使用Apache POI將部分.dox文檔轉換爲html
- 5. 使用Apache Poi將doc文件轉換爲html
- 6. 如何使用Apache POI將HSSFWorkbook轉換爲XSSFWorkbook?
- 7. Java:使用apache POI如何將ms word文件轉換爲pdf?
- 8. 如何使用Apache POI將.XLS轉換爲.HTML文件?
- 9. 使用Apache POI庫將Excel電子表格轉換爲HTML
- 10. 使用IKVM.Net將Apache POI .jar轉換爲.dll
- 11. 在Apache POI中使用WordToHtmlConverter轉換器
- 12. Apache Poi:從HSSF轉換爲SS?
- 13. 轉換的PPT與Apache POI
- 14. 使用Apache NiFi將CSV文件轉換爲JSON
- 15. 使用APACHE POI將PPT轉換爲圖像時,將中文字符轉換爲正方形
- 16. POI將xlsx轉換爲CSV逗號和雙引號的Java
- 17. Java:excel與csv日期轉換Apache Poi的問題
- 18. apache poi - 將Pojo列表轉換爲HSSFSheet的方法?
- 19. Apache POI - 將.html電子表格轉換爲.xls電子表格
- 20. Apache POI HWPF - 將doc文件轉換爲pdf的問題
- 21. 將字符串轉換爲日期apache POI
- 22. Apache POI將DOCX轉換爲EMF圖片格式的PDF。
- 23. 有沒有人有Apache POI將PPTX轉換爲PNG的例子
- 24. 使用Apache POI
- 25. 使用Apache POI
- 26. 使用Apache POI
- 27. 使用Apache POI將.docx轉換爲html並獲取不到文本
- 28. 如何將.docx轉換爲使用apache poi的html,其中還包括圖像
- 29. 如何使用Apache POI將我的xlsx工作表轉換爲java對象
- 30. 如何使用APACHE POI或其他方式將MS PowerPoint 2003/2007轉換爲HTML?
謝謝,但我的csv是|分隔。當我用pipi替換逗號時,每個單元格都會得到一個字符。我該怎麼辦?? – v0ld3m0rt
請確認您使用的是簡單的「|」或「\\ |」。 – Sankumarsingh
明白了,我在用「|」只有這意味着邏輯或,我應該使用「\\ |」。謝謝 – v0ld3m0rt