Java POI les données fournies semble être dans le Bureau 2007+ XML
J'obtiens cette erreur:
org.apache.pi.poifs.système de fichiers.OfficeXmlFileException: Les données fournies semble être dans le Bureau 2007+ XML. Vous appelez de la part de PI qui traite avec OLE2 des Documents Office. Vous devez appeler une autre partie de POI pour traiter ces données (par exemple, XSSF au lieu de HSSF)
J'ai lu jeter Google et j'ai trouvé que j'ai besoin d'utiliser XSSF au lieu de HSSF parce que mon fichier Excel est xlsx, mais comme vous le voyez dans mon maven, je suis déjà à l'aide de xlsx. Où ai-je mal tourné, s'il vous plaît?
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13-beta1</version>
</dependency>
Le code, le fait de l'exception est la suivante:
POIFSFileSystem fs;
fs = new POIFSFileSystem(new FileInputStream(getFilePath()));
Mon nouveau code
public void getBColum() {
try {
OPCPackage fs;
fs = new OPCPackage.open(new File(getFilePath()));
XSSFWorkbook wb = new XSSFWorkbook(fs);
XSSFSheet sheet = wb.getSheet("Master column name - Used Car");
XSSFRow row;
CellReference cr = new CellReference("A1");
row = sheet.getRow(cr.getCol());
System.out.println(row.getCell(3));
} catch (FileNotFoundException e) {
if (logger.isDebugEnabled()) {
logger.debug("How can this error be possible? we should have already thrown an exception in the construction");
}
} catch (IOException e) {
logger.error(String.format("Exception in reading the file: %s",
e.getMessage()));
}
}
J'ai une erreur de compilation dans le new oPCPackage.open
qui est:
OPCPackage.ouvert ne peut pas être résolu à un type
- S'il vous plaît montrer le code qui a déclenché l'exception.
- je n'ai maintenant
Vous devez vous connecter pour publier un commentaire.
Selon la Apache POI Guide Rapide, le
POIFSFileSystem
(ou de la même façon,NPOIFSFileSystem
) est utilisé uniquement avec les .xls (Excel jusqu'à la version 2003) documents.L'équivalent pour .xlsx documents (Excel 2007+) est
OPCPackage
.Vous pouvez créer un
XSSFWorkbook
de laOPCPackage
:Ou vous pouvez simplement créer directement:
Généralement, il est préférable de créer le classeur à l'aide d'un
File
au lieu d'uneInputStream
, pour économiser de la mémoire.Aussi, si vous voulez un code qui ne se soucie pas de savoir si c'est un .xls ou .xlsx:
opcpackage.open
....OPCPackage.open cannot be resolved to a type
import org.apache.poi.openxml4j.opc.OPCPackage;
InvalidFormatException
queopen
lancers.OPCPackage.open
est unstatic
méthode. Essayezfs = OPCPackage.open(new File(getFilePath()));
.J'ai été en utilisant XSSF avec un fichier xlsx, mais j'ai reçu ce message d'erreur quand j'essaye de traiter un fichier qui a été cryptés et protégés par mot de passe.
Une fois que j'ai enlevé le mot de passe, tout a fonctionné comme prévu.