2013-07-18 5 views
-4

Я пытаюсь записать данные на лист excel. Но пока я использую workbook.write (fileout), он терпит неудачу. Я прошел через Интернет, но все говорят, что проблема в build path. Я использовал ooxml_schemas-1.1.jar, который все предлагали, но не использовали. Может ли кто-нибудь помочь мне с этим? Заранее спасибоЗапись данных на лист excel через java

+0

Пожалуйста, отправьте трассировку стека и фрагмент кода, который вызывает ошибку. – AlexR

ответ

2

Вы можете сделать это, используя Apache POI.

Apache POI - это мощная библиотека Java для работы с различными форматами файлов Microsoft Office, такими как Excel, Power Point, Visio, MS Word и т. Д. Имя POI было изначально аббревиатурой для Poor Obfuscation Implementation, справедливо относясь к тому факту, что форматы файлов, казалось, были преднамеренно запутаны, но плохо, так как они были успешно реконструированы.

+0

Кроме того, префикс HSSF для связанных с Excel классов означает «Horrible Spreadsheet Format» :) – ivarni

2

создать новый файл Excel

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
//.. 
HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("Sample sheet"); 
//Create a new row in current sheet 
Row row = sheet.createRow(0); 
//Create a new cell in current row 
Cell cell = row.createCell(0); 
//Set value to new value 
cell.setCellValue("Blahblah"); 

и чем записать данные в файл, что первенствует

HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("Sample sheet"); 

Map<String, Object[]> data = new HashMap<String, Object[]>(); 
data.put("1", new Object[] {"Emp No.", "Name", "Salary"}); 
data.put("2", new Object[] {1d, "John", 1500000d}); 
data.put("3", new Object[] {2d, "Sam", 800000d}); 
data.put("4", new Object[] {3d, "Dean", 700000d}); 

Set<String> keyset = data.keySet(); 
int rownum = 0; 
for (String key : keyset) { 
    Row row = sheet.createRow(rownum++); 
    Object [] objArr = data.get(key); 
    int cellnum = 0; 
    for (Object obj : objArr) { 
     Cell cell = row.createCell(cellnum++); 
     if(obj instanceof Date) 
      cell.setCellValue((Date)obj); 
     else if(obj instanceof Boolean) 
      cell.setCellValue((Boolean)obj); 
     else if(obj instanceof String) 
      cell.setCellValue((String)obj); 
     else if(obj instanceof Double) 
      cell.setCellValue((Double)obj); 
    } 
} 

try { 
    FileOutputStream out = 
      new FileOutputStream(new File("C:\\new.xls")); 
    workbook.write(out); 
    out.close(); 
    System.out.println("Excel written successfully.."); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы