La conversione csv, xls/xlsx, utilizzando Apache poi?

Ho bisogno di convertire i csv, xls/xlsx nel mio progetto? Come posso fare? Qualcuno può postare me alcuni esempi? Voglio farlo con Apache poi. Anche io ho bisogno di creare una cella da java lato.

OriginaleL’autore v0ld3m0rt | 2013-08-06

6 Replies
  1. 14

    Si può provare il metodo riportato di seguito per creare file xlsx utilizzando apache-pdi.

    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");
        }
    }
    grazie, ma la mia csv è | delimitati. quando sostituire la virgola con pipi sto diventando un carattere per ogni cella. che cosa devo fare????
    Si prega di confermare di aver utilizzato semplicemente con “|” o “\\|”.
    capito,, io sto usando “|” solo che ha significato logico o, avrei dovuto usare “\\|”. grazie
    Questo genera un’eccezione on line: “XSSFWorkbook cartella di lavoro = new XSSFWorkbook ();”, dicendo “NoClassDefFoundError.”
    Si dovrebbe seguire le convenzioni di denominazione. Che significa rowNum invece di RowNum. Inoltre, String[] str è preferito, piuttosto che String str[], vedere JLS 7.

    OriginaleL’autore Sankumarsingh

  2. 3

    Possiamo utilizzare SXSSF Vaso in cui siamo in grado di analizzare un file lunghi, come di seguito:

    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" );
      }
    }

    OriginaleL’autore sunderam

  3. 2

    Ho trovato SXSSFWorkbook molto, molto più veloce quindi XSSFWorkbook. Ecco il codice modificato:

    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");
        }

    OriginaleL’autore Superb Saif

  4. 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();

    OriginaleL’autore Kreedz Zhen

  5. 0

    Provare questo se si dispone di inputstream
    public static XSSFWorkbook csvToXLSX(InputStream inputStream) throws IOException {
    XSSFWorkbook cartella di lavoro = 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;
    }

    OriginaleL’autore Ravi Wadje

  6. 0
    public static void convertCsvToXlsx(String xlsLocation, String csvLocation) throws Exception {
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        SXSSFSheet sheet = workbook.createSheet("Sheet");
        AtomicReference<Integer> row = new AtomicReference<>(0);
        Files.readAllLines(Paths.get(csvLocation)).forEach(line -> {
            Row currentRow = sheet.createRow(row.getAndSet(row.get() + 1));
            String[] nextLine = line.split(",");
            Stream.iterate(0, i -> i + 1).limit(nextLine.length).forEach(i -> {
                currentRow.createCell(i).setCellValue(nextLine[i]);
            });
        });
        FileOutputStream fos = new FileOutputStream(new File(xlsLocation));
        workbook.write(fos);
        fos.flush();
    }
    Si prega di modificare la tua risposta e spiegare il vostro codice

    OriginaleL’autore Su Shaohua

Lascia un commento