我在这个网站上创建了一个帐户,因为我已经困难了几天了。我正在尝试制作一个可以登录安全网站并下载某个Excel文件的java程序(使用有效的凭据,没有任何违法行为!)
但是,当我尝试打开excel文件时,我得到NotOle2FileException
。我正在尝试下载/读取的文件是一个excel文件,但它托管在一个SharePoint环境中,该环境会自动使用Excel Web App打开它......我得到的标题签名是0x6C6D74683C0A0A0A
,应该是0xE11AB1A1E011CFD0
(< - Excel OLE2格式)......
有没有人知道我得到的文件签名是指什么?它是否必须以某种方式对嵌入在网站上的excel文件做任何事情?
Codewise我正在尝试这个:
URLConnection uc = anchor.click().getUrl().openConnection();
Workbook workbook;
workbook = getWorkbook(uc);
private Workbook getWorkbook(URLConnection uc) throws IOException {
Workbook workbook = null;
System.out.println(uc.getURL());
if (uc.getURL().toString().endsWith("xls")) {
workbook = new XSSFWorkbook(uc.getInputStream());
} else if (uc.getURL().toString().endsWith("xlsx")) {
workbook = new HSSFWorkbook(uc.getInputStream());
} else {
throw new IllegalArgumentException("The specified path is not an excel file");
}
return workbook;
}
锚点指的是网站上链接到excel文件的元素(不能硬编码,因为我希望能够根据用户输入下载不同的文件)基本上:href
属性锚链接到以.xlsx
编辑:所以签名将是一个htmlpage,但是当我试图将其保存为HtmlPage时,我收到以下错误:
java.lang.ClassCastException: com.gargoylesoftware.htmlunit.UnexpectedPage cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlPage
答案 0 :(得分:0)
找到解决方案,感谢评论说它是一个Html页面!
基本上我首先将它放在'UnexpectedPage'对象中,使用.getInputStream作为excel文件的输入流。只需添加2行代码:)