سؤال

لدي مشكلة مع مشروع Apache POI.

لقد فشلت في الاستخدام XSSF و HSSF في ال "نفس فئة جافا". ما هي الجرة التي يجب أن أقوم بتنزيلها أو أي قطعة أثرية يجب أن أضيفها إلى Maven؟

اريد التعامل مع كليهما xls و xlsx الملفات في نفس الوقت. عندما أحصل على خطأ في إصدار Excel ، سأقوم بتغيير XSSF إلى HSSF أو HSSF إلى XSSF.

كيف يمكنني أن أفعل هذا؟

هل كانت مفيدة؟

المحلول

بدلاً من القيام بذلك ، حاول استخدام الإصدار الجديد من Apache POI 3.7 ، يحتوي على حزمة SS التي تتعامل مع كل من HSSF و XSSF دون القلق بشأن النوع

التفاصيل هنا: http://poi.apache.org/spreadsheet/index.html

نصائح أخرى

بصرف النظر عن حل حزمة SS "القياسي" ، يمكنك أيضًا استخدام ببساطة if statement لتحميل الحق بشكل صحيح workbook format إلى Workbook interface كائن ، مثل ذلك:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF.
File file = new File("YourExcelFile.xlsx");
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) {
  workbook = new HSSFWorkbook(new FileInputStream(file));
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) {
  workbook = new XSSFWorkbook(new FileInputStream(file));
} else {
  throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}

استخدم المصنع بدلاً من ذلك الذي يتعامل مع كلا من XSSF و HSSF

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))

هذا عمل بالنسبة لي:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top