对POI Java XLSX使用hashmap

对POI Java XLSX使用hashmap,java,apache-poi,Java,Apache Poi,我一直在试图编辑我的代码,以允许上传XLSX文件,并能够在网站上阅读。但经过无数次尝试,我输入到XLSX文件中的数据无法在网站上捕获。(例如:从网站下载XLSX模板后,我可以在XLSX文件中键入我想要的任何内容,并可以将其再次上载到网站,因此我不需要每次单击“新建”来不断添加新数据。我可以一次键入该XLSX文件中的所有内容并立即上载) 我被告知使用hashmap,但我不确定它的工作方式。我目前使用的代码只允许网站捕获标题,我不打算使用jxl。 在删除包含jxl的代码时,我遇到了一些错误(红色下

我一直在试图编辑我的代码,以允许上传XLSX文件,并能够在网站上阅读。但经过无数次尝试,我输入到XLSX文件中的数据无法在网站上捕获。(例如:从网站下载XLSX模板后,我可以在XLSX文件中键入我想要的任何内容,并可以将其再次上载到网站,因此我不需要每次单击“新建”来不断添加新数据。我可以一次键入该XLSX文件中的所有内容并立即上载)

我被告知使用hashmap,但我不确定它的工作方式。我目前使用的代码只允许网站捕获标题,我不打算使用jxl。
在删除包含jxl的代码时,我遇到了一些错误(红色下划线)

public HashMap getConstructJXLList_xlsx(上传文件文件,int Sheetindex){
字符串_LOC=“[PageCodeBase:getConstructJXLList]”;
HashMap_m=新的HashMap();
InputStream _=null;
试一试{
_is=File.getInputstream();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
XSSF工作手册;
XSSFS;
试一试{
工作簿=新XSSF工作簿(_为);
s=工作簿.getSheetAt(Sheetindex);
}捕获(例外e){
System.out.println(_LOC+“1.0”+“测试:”);
int _totalc=getColumns();//getColumns的下划线为红色
int _totalr=getRows();//getRows的下划线为红色
//标题r=0
字符串[]\u st=新字符串[\u totalc];
//XSSFSheet=null;
对于(int_c=0;_c<_totalc;_c++){
_st[_c]=getCell(_c,0);//getCell的下划线为红色
}
_m、 放置(“标题”);
System.out.println(_LOC+“1.0”+“_m:”+_m);
//数据r=1
List _l=new ArrayList();
对于(int _r=1;_r<_totalr;_r++){
对象[]_o=新对象[_totalc];
字符串_s_r=null;
对于(int_c=0;_c<_totalc;_c++){
_o[_c]=getCell(_c,_r);
字符串_cn=\u o[\u c].getClass().getName();
字符串_s_c=null;
如果(!isEmptyNull(_s_c)){
_s_r=“记录可用”;
}
}
如果((_o!=null)和(_o.length!=0)){
_l、 添加(_o);
}
}
_m、 put(“数据”);
System.out.println(_LOC+“1.0”+“_m:”+_m);
}
返回m;
}
你介意帮我解决这个问题吗?为什么网站中没有捕获任何数据?
显示的错误是“类型PageCodeBase的方法getColumns/getCell/getRows未定义”。给出的帮助/快速修复是创建一个新方法。但是在创建了新方法之后,我不确定在这些方法中添加什么。已经尝试过各种示例(),但我似乎仍然无法解决它。

1)摆脱
POIFSFileSystem fs=新的POIFSFileSystem(输入)因为您没有使用它

2)
input.close()在行的第一次迭代后被调用

1)去掉
POIFSFileSystem fs=新的POIFSFileSystem(输入)因为您没有使用它

2)
input.close()在行的第一次迭代后被调用

1)去掉
POIFSFileSystem fs=新的POIFSFileSystem(输入)因为您没有使用它

2)
input.close()在行的第一次迭代后被调用

1)去掉
POIFSFileSystem fs=新的POIFSFileSystem(输入)因为您没有使用它


2)
input.close()是在第一次迭代行之后调用的

我建议您使用ApachePOIAPI中的此类来管理de excel文件

org.apache.poi.ss.usermodel.Cell;
org.apache.poi.ss.usermodel.Row;
org.apache.poi.ss.usermodel.Sheet;
org.apache.poi.ss.usermodel.Workbook;
org.apache.poi.ss.usermodel.WorkbookFactory;
不是那些XSSFWorkbook,而是XSSFSheet

此外,在访问文件输入流时,请尝试以下方法:

FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
Workbook workBook = WorkbookFactory.create(stream);
workBook.getSheetAt(0);

我建议您使用ApachePOIAPI中的此类来管理de excel文件

org.apache.poi.ss.usermodel.Cell;
org.apache.poi.ss.usermodel.Row;
org.apache.poi.ss.usermodel.Sheet;
org.apache.poi.ss.usermodel.Workbook;
org.apache.poi.ss.usermodel.WorkbookFactory;
不是那些XSSFWorkbook,而是XSSFSheet

此外,在访问文件输入流时,请尝试以下方法:

FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
Workbook workBook = WorkbookFactory.create(stream);
workBook.getSheetAt(0);

我建议您使用ApachePOIAPI中的此类来管理de excel文件

org.apache.poi.ss.usermodel.Cell;
org.apache.poi.ss.usermodel.Row;
org.apache.poi.ss.usermodel.Sheet;
org.apache.poi.ss.usermodel.Workbook;
org.apache.poi.ss.usermodel.WorkbookFactory;
不是那些XSSFWorkbook,而是XSSFSheet

此外,在访问文件输入流时,请尝试以下方法:

FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
Workbook workBook = WorkbookFactory.create(stream);
workBook.getSheetAt(0);

我建议您使用ApachePOIAPI中的此类来管理de excel文件

org.apache.poi.ss.usermodel.Cell;
org.apache.poi.ss.usermodel.Row;
org.apache.poi.ss.usermodel.Sheet;
org.apache.poi.ss.usermodel.Workbook;
org.apache.poi.ss.usermodel.WorkbookFactory;
不是那些XSSFWorkbook,而是XSSFSheet

此外,在访问文件输入流时,请尝试以下方法:

FileInputStream input = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\Load_AcctCntr_Template.xlsx"));
Workbook workBook = WorkbookFactory.create(stream);
workBook.getSheetAt(0);
用这个

FileInputStream input = new FileInputStream(new File("C:/Users/admin/Desktop/Load_AcctCntr_Template.xlsx"));
Workbook wb = WorkbookFactory.create(input);
如用户3661357回答中所述。使用 工作簿而不是XSSF工作簿。 表而不是XSSFSheet。 等等

也读一下这个

*提示>在netbeans中使用ALT+SHIFT+I加载必要的包

一个有效的例子

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
公开课测验{

public static void test() {

    try {
        FileInputStream input = new FileInputStream(new File("C:/Users/kingslayer/Desktop/test/a.xlsx"));
        Workbook wb = WorkbookFactory.create(input);
        Sheet s = wb.getSheetAt(0);

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

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

                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    System.out.print(cell.getStringCellValue() + "t");
                } else if (cell.getCellType() == Cell.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 (IOException | InvalidFormatException ex) {
        Logger.getLogger(POITest.class.getName()).log(Level.SEVERE, null, ex);
    }

}

public static void main(String[] args) {
    test();
}
公共静态无效测试(){
试一试{
FileInputStream input=newfileinputstream(新文件(“C:/Users/kingslayer/Desktop/test/a.xlsx”);
工作簿wb=WorkbookFactory.create(输入);
表s=wb.getSheetAt(0);
迭代器行=s.rowIterator();
while(rows.hasNext()){
Row=rows.next();
迭代器单元格=行。单元格迭代器();
while(cells.hasNext()){
Cell Cell=(Cell)cells.next();
if(cell.getCellType()==cell.cell\u类型\u字符串){
System.out.print(cell.getStringCellValue()+“t”);
}else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
System.out.print(cell.getNumericCellValue()+“t”);
}else if(cell.cell\u TYPE\u BLANK==cell.getCellType()){
系统输出打印(“空白”);
}否则{
系统输出打印(“未知单元格类型”);
}
}
input.close();
}
}捕获(IOException | InvalidFormatException ex){
Logger.getLogger(POITest.cla