2015-12-16 6 views
0

Итак, сейчас я создаю программу для чтения, редактирования и размещения данных из существующего файла Excel в новый файл Excel с использованием JXL Java-библиотеки , На этом этапе я просто хочу прочитать данные из существующего файла Excel и поместить его в новый. Не похоже, чтобы найти хороший способ сделать это и для будущей работы - лучший способ редактировать данные (имея определенные столбцы) и помещать их в новый файл Excel.Чтение ячеек из существующего файла Excel и запись их в новый файл Excel с использованием Java

Извините, если что-то неясно, просто получите доступ к Java и Stackoverflow.

import java.io.*; 
import jxl.*; 
import jxl.write.Number; 
import jxl.write.*; 

class Extraction { 

private String inputFile; 

String data; 

public void setInputFile(String inputFile){ 

    this.inputFile = inputFile; 

} 

public void read() throws IOException { 

    File spreadsheet = new File(inputFile); 

    Workbook w; 

    try { 

     w = Workbook.getWorkbook(spreadsheet); 

     Sheet page = w.getSheet(0); 

     File f = new File("C:\\Users\\alex\\Desktop\\New_Export.xls");                      

      if (!f.exists()){ 

       String FileName = "C:\\Users\\alex\\Desktop\\New_Export.xls"; 

       WritableWorkbook excel = Workbook.createWorkbook(new File(FileName)); 

       WritableSheet sheet = excel.createSheet("Sheet1", 0);           

        for (int y = 0; y < page.getRows(); y++){ 

         for (int x = 0; x < page.getColumns(); x++){ 

          Cell cell = page.getCell(x ,y +1); 
          CellType type = cell.getType(); 

           if(type == CellType.LABEL || type == CellType.NUMBER){ 

            data = cell.getContents(); 

            System.out.println(data); 




            //To now input the read data into the new Excel File 

            sheet.addCell(); 

           } 

         } 

         System.out.println(" "); 

        } 

       System.out.println("The File Has Successfully Been Created!"); 

       excel.write(); 

       excel.close(); 

       } 

       else{ 

        System.err.println("File is already created!"); 

       } 

    } 
    catch(Exception e){ 

     System.out.println(" "); 

    }  

}  

public static void main (String args[]) throws IOException{ 

    Extraction reading = new Extraction(); 

    reading.setInputFile("C:\\Users\\alex\\Desktop\\export.xls"); 

    reading.read(); 

} 
} 
+0

любой специальная причина использования jxl над apache poi? – BadK

+0

Нет особых причин. Может ли Apache POI быть более способным/гибким для этой задачи? –

+0

Я думаю, что вы можете выполнить свою задачу в обеих библиотеках, но, как я вижу, jxl получил последнее обновление в 2012 году (возможно, мертвое) и POI в 2015 году. Кроме того, у вас есть некоторая библиотека noname против продукта apache (которые могут знать лишь немногие, но все еще под капотом апача). Вы всегда должны использовать/учиться чему-то, что имеет лучшее будущее и поддержку, если у вас есть выбор. – BadK

ответ

1

Использование "пои" от апача, вы можете использовать код, приведенный ниже, чтобы прочитать Excel (* .xls)

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 

private void readingExcel(String fileName) { 
    try (FileInputStream file = new FileInputStream(new File(fileName))) { 
     HSSFWorkbook workbook = new HSSFWorkbook(file); 
     HSSFSheet sheet = workbook.getSheetAt(0); 
     Iterator<Row> rowIterator = sheet.iterator(); 
     for (Row row : sheet) { 
      Iterator<Cell> cellIterator = row.cellIterator(); 
      for (Cell cell : row) { 
       System.out.println(cell.getStringCellValue()); 
      } 
     } 
    } catch (IOException ioException) { 
     ioException.printStackTrace(); 
    } 
} 

Для написания, чтобы преуспеть

private File writingToExcel() { 
    HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet sheet = workbook.createSheet("Sample-sheet"); 
    Row row = sheet.createRow(0); 
    Cell cell = row.createCell(0); 
    cell.setCellValue("My Sample Value"); 

    File file = new File(sheet.getSheetName()); 
    return file; 
} 

Однако, если вы хотите использовать * .xlsx, класс, используемый для чтения, -

XSSFWorkbook workbook = new XSSFWorkbook (file); 
XSSFSheet sheet = workbook.getSheetAt(0); 
+0

Будет ли это работать, передав данные из чтения, прежде чем записать его на новый? –

+0

Технически да – sapna

Смежные вопросы