читать xlsx и импортировать его

Я пытаюсь создать класс для чтения файла XLSX при загрузке его на веб-сайт.
У меня есть код для загрузки файла на сервер. Файл можно загрузить, но он не может получить данные из Excel.
Могу ли я узнать, как решить или изменить этот код, чтобы данные можно было увидеть в Интернете?
Я знаю. есть несколько других повторяющихся вопросов, но после попытки эти ответы не могут работать для меня.
Если я удалю строку public static void... , я получу эту ошибку: Пакет должен содержать часть типа контента [M1.13]

public HashMap getConstructJXLList_xlsx(UploadedFile File, int Sheetindex) {
    String _LOC = "[PageCodeBase: getConstructJXLList_xlsx]";

    HashMap _m = new HashMap();
    return _m;
}

    //InputStream _is = null;

    public static void main(String[] args)
        {
            try {
            FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
            org.apache.poi.ss.usermodel.Workbook wb = WorkbookFactory.create(input);
            org.apache.poi.ss.usermodel.Sheet s = wb.getSheetAt(0);

            Iterator<Row> rows = s.rowIterator();

                    while (rows.hasNext())
                    {
                        Row row = rows.next();
                        Iterator cells = row.cellIterator();
                        while (cells.hasNext())
                        {
                            XSSFCell cell = (XSSFCell) cells.next();

                            if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
                            {
                                System.out.print(cell.getStringCellValue() + "t");
                            }
                            else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
                            {
                                System.out.print(cell.getNumericCellValue() + "t");
                            }
                            else if(cell.CELL_TYPE_BLANK==cell.getCellType()) 
                                System.out.print( "BLANK " ); 
                            else 
                                System.out.print("Unknown cell type");
                        }
                input.close();
            }
                }
            catch (Exception e)
            {
                e.printStackTrace();
            }
}

Если я просто запущу основной метод, описанный выше, это будет вывод:
0000002b SystemOut O [RedirectLogin: requiredRights]1.0en1102.xhtml
0000002b SystemOut O [En1102: doEn1102_command_readfileAction]1.0
0000002b SystemOut O [En1102 : onPageLoadBegin]1.0
кажется, сервер даже не прогнал этот код выше..

Я могу просто загрузить шаблон Excel на веб-сайте, и он будет сохранен на моем рабочем столе. Файл будет содержать заголовок заголовка, и я могу ввести в ячейки любые данные, которые захочу.


person Cassie    schedule 21.05.2014    source источник
comment
возможный дубликат org.apache.poi.POIXMLException: org .apache.poi.openxml4j.exceptions.InvalidFormatException:   -  person ithofm    schedule 21.05.2014
comment
@ithofm Привет, спасибо, что дали мне эту ссылку. Это немного помогает. Теперь ошибок нет, но данные на сайте по-прежнему не собираются.   -  person Cassie    schedule 21.05.2014
comment
Вы говорите, что код работает с локальным файлом, но не в вашем веб-приложении? Если вы просто запустите свой основной метод сверху, что получится на выходе? Не могли бы вы также предоставить дополнительную информацию о своем веб-приложении, пожалуйста? Как это работает, как вы сохраняете загруженный файл? Файл полностью записан перед загрузкой?   -  person ithofm    schedule 21.05.2014
comment
@ithofm Если я просто запущу его, файл будет загружен, и предполагается, что он покажет все данные, которые я ввел в Excel. Но данные, которые я ввел в Excel, не будут отображаться на веб-сайте. Сразу после того, как я загрузил лист Excel XLSX, я могу ввести любую информацию на листе Excel. После этого я могу загрузить этот файл Excel в Интернет, и Интернет покажет данные.   -  person Cassie    schedule 22.05.2014
comment
После того, как я ввел любые данные, которые мне нужны, в Excel: i.stack.imgur.com/6CWV4. jpg Данные, показанные в Интернете, говорят об отсутствии результатов i.stack.imgur.com/ztR9k. jpg   -  person Cassie    schedule 22.05.2014
comment
хорошо, вернемся к основному: пожалуйста, измените свой код выше и поместите некоторые статические данные в HashMap _m, прежде чем вернуть его следующим образом: HashMap _m = new HashMap(); _m.put("x1", "y1"); _m.put("x2", "x2"); return _m; Затем попробуйте еще раз, пожалуйста, и прокомментируйте, если вы видите что-то на своем веб-сайте после загрузки или нет.   -  person ithofm    schedule 22.05.2014
comment
Вот полный метод, попробуйте его, пожалуйста: HashMap _m = новый HashMap(); _m.put(x1, y1); _m.put(x2, x2); вернуть _м; }   -  person ithofm    schedule 22.05.2014
comment
@ithofm Нет, на сайте по-прежнему ничего нет. Данные, показанные в Интернете, говорят об отсутствии результатов [ссылка] (i.stack.imgur.com/ztR9k.jpg)   -  person Cassie    schedule 22.05.2014
comment
Хорошо, пожалуйста, предоставьте больше информации и поместите ее в свой вопрос, пожалуйста. Начните с ответов на мои вопросы сверху: если вы просто запустите свой основной метод сверху, каков будет результат? Не могли бы вы также предоставить дополнительную информацию о своем веб-приложении, пожалуйста? Как это работает, как вы сохраняете загруженный файл? Файл полностью записан перед загрузкой? Трудно помочь, не зная, что ты на самом деле делаешь.   -  person ithofm    schedule 22.05.2014
comment
Очевидно, что ваших знаний о Java и всей среде недостаточно для выполнения этой задачи. И stackoverflow создан для получения ответов на конкретные проблемы... хотя вам нужно гораздо больше. Я советую вам обратиться к вашим колледжам за дополнительной поддержкой.   -  person ithofm    schedule 22.05.2014
comment
@ithofm Да, я понимаю. Но все равно спасибо за терпение и помощь!   -  person Cassie    schedule 22.05.2014


Ответы (1)


Чтобы прочитать файлы xlsx, вы должны использовать:

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

XSSFWorkbook wb;
XSSFSheet sheet;
XSSFRow row;
XSSFCell cell;

FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
wb = new XSSFWorkbook(input );
person yushulx    schedule 22.05.2014
comment
Привет. Я попробовал оба кода, которые вы мне дали, и коды, которые у меня есть выше. Оба не работают. Можно загрузить файл, но с пустыми данными. - person Cassie; 22.05.2014
comment
в другом java-файле мне нужно вызвать это, getConstructJXLList_xlsx, чтобы заставить его работать. В этом случае мой код не работает, потому что под этим кодом getConstructJXLList_xlsx ничего нет? Есть только HashMap _m = new HashMap(); и вернуть _m; - person Cassie; 22.05.2014