2015-06-26 3 views
0

Я пытаюсь сохранить файл excel, но по какой-то причине я не могу его сохранить. Вот ошибка, которую я получаю при открытии сохраненного файла.Как сохранить файл excel

«Excel не может открыть файл [имя файла], поскольку формат файла или расширение файла недействительны».

Вот код, который я использую для сохранения в файл excel, это определенно .xlsx, что я делаю неправильно?

public static void saveFile(int lineCoutner, String Closed, Elements ticketNumber, String College, String customerCalled, String firstResponse, String ResolutionTime){ 

    try { 
     String filename = "C:/Users/ross/Desktop/Work/Ticketing.xlsx"; 
     @SuppressWarnings("resource") 
     HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet sheet = workbook.createSheet("FirstSheet"); 

     HSSFRow rowhead = sheet.createRow((short)0); 
     rowhead.createCell(0).setCellValue("Ticket"); 
     rowhead.createCell(1).setCellValue("Reason for Contact"); 
     rowhead.createCell(2).setCellValue("Resolution OutCome"); 
     rowhead.createCell(3).setCellValue("TimeCustomerCalled"); 
     rowhead.createCell(4).setCellValue("First Reponse"); 
     rowhead.createCell(5).setCellValue("Time Resolution"); 
     rowhead.createCell(6).setCellValue("College"); 

     HSSFRow row = sheet.createRow((short)1); 
     row.createCell(0).setCellValue(ticketNumber.text()); 
     row.createCell(1).setCellValue(Closed); 
     row.createCell(2).setCellValue(Closed); 
     row.createCell(3).setCellValue(customerCalled); 
     row.createCell(4).setCellValue(firstResponse); 
     row.createCell(5).setCellValue(ResolutionTime); 
     row.createCell(6).setCellValue(College); 

     FileOutputStream fileOut = new FileOutputStream(filename); 
     workbook.write(fileOut); 
     fileOut.close(); 
     System.out.println("Your excel file has been generated!"); 

    } catch (Exception ex) { 
     System.out.println(ex); 
    } 
} 
+0

Я не уверен в Java, но на PHP, если что-то не так с вашими значениями переменных, файл сгенерирован, но поврежден, так как сценарий не запускался так, как должен. Может быть, отладка каждой переменной, которая используется в методе 'setCellValue'? –

+1

@FabianoAraujo Похож на java для меня. –

+1

Росс, ваше название и ваш вопрос не совпадают. –

ответ

0

Первая строка текста на веб-сайте HSSF говорит:

HSSF чистая реализация Java ТОИ проекта формата '97 файла (-2007) Excel.

Так что .xlsx является неправильным расширением. Попробуйте .xls. Возможно, Excel пытается открыть его как новый файл формата из-за его расширения, т. Е. Он не проверяет старые форматы, что потребует времени и сделает его более медленным, чем нужно для поиска цели. на самом деле не хочет занимать время.

+0

Большое спасибо – Ross

0

HSSF используется для файлов xsl.
Если вам нужен формат xslx, вы должны использовать XSSF.

Кроме того, POI-библиотека использует много памяти при чтении/записи файлов; поэтому в случае исключения OOM использовать SXSSF (потоковая версия XSSF).

Удачи.

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