我正在本地系统上读取一个Excel文件。我正在使用POI
jar版本3.7,但收到错误无效的标题签名;读取-2300849302551019537或十六进制0xE011BDBFEFBDBFEF,预期为-2226271756974174256或十六进制0xE11AB1A1E011CFD0。
用Excel打开xls文件可以正常工作。
它发生的代码块:有人有想法吗?
/**
* create a new HeaderBlockReader from an InputStream
*
* @param stream the source InputStream
*
* @exception IOException on errors or bad data
*/
public HeaderBlockReader(InputStream stream) throws IOException {
// At this point, we don't know how big our
// block sizes are
// So, read the first 32 bytes to check, then
// read the rest of the block
byte[] blockStart = new byte[32];
int bsCount = IOUtils.readFully(stream, blockStart);
if(bsCount != 32) {
throw alertShortRead(bsCount, 32);
}
// verify signature
long signature = LittleEndian.getLong(blockStart, _signature_offset);
if (signature != _signature) {
// Is it one of the usual suspects?
byte[] OOXML_FILE_HEADER = POIFSConstants.OOXML_FILE_HEADER;
if(blockStart[0] == OOXML_FILE_HEADER[0] &&
blockStart[1] == OOXML_FILE_HEADER[1] &&
blockStart[2] == OOXML_FILE_HEADER[2] &&
blockStart[3] == OOXML_FILE_HEADER[3]) {
throw new OfficeXmlFileException("The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)");
}
if ((signature & 0xFF8FFFFFFFFFFFFFL) == 0x0010000200040009L) {
// BIFF2 raw stream starts with BOF (sid=0x0009, size=0x0004, data=0x00t0)
throw new IllegalArgumentException("The supplied data appears to be in BIFF2 format. "
+ "POI only supports BIFF8 format");
}
// Give a generic error
throw new IOException("Invalid header signature; read "
+ longToHex(signature) + ", expected "
+ longToHex(_signature));
}
只是一个想法,如果您使用maven,请确保在资源标签过滤中将其设置为false。否则,Maven会在复制阶段损坏xls文件
我试图使用Apache POI 3.9将XLS文件转换为java中的CSV文件,但是我遇到了一些问题。当尝试转换我需要的文件时,它显示了以下错误: 我认为我使用的代码是完全正确的(它也适用于其他文件)。我认为问题出在XLS文件上,因为当我试图使用微软Excel打开它时,它也向我显示了一个关于文件类型的警告(它说它是微软Excel 3工作表)。有没有办法使用POI打开这些文件?
我要做的是询问用户是否要创建新的Excel工作簿或选择现有的Excel工作簿。选择一个现有的文件是没有问题的。然而,当我为一个新的Excel文件创建名称时,我得到一个错误:“您的文件似乎不是一个有效的OLE2文档”。 后来呢: 下面是我得到的错误:
我需要的是一种使用NPOI库打开.xls文件的方法。提前谢了。
在尝试HTTP头时,我在服务器上设置了无法访问java脚本。下面是我的代码。好心的一些帮助我解决这个问题。 Java脚本: 谢谢,我需要在java脚本上读取头值。
问题内容: 升级到Django 1.5后,我开始出现如下错误: 我已经 在文件中进行了设置。 这里发生了什么?有人假装成为Google并访问我的网站吗?还是有人错误地设置其HTTP_HOST标头的良性案例? 问题答案: 如果你ALLOWED_HOSTS的设置正确,则可能有人通过欺骗标头来探测你的站点是否存在漏洞。 Django开发人员正在讨论将其从500内部服务器错误更改为400响应
> 文件:是一个大约有100行7列的文件。XLS扩展(MS Excel 97-2003)。 问题:无法通过或读取带有R的文件。 用于尝试读取文件的代码: 提示错误: :java.lang.IllegalArgumentException:您的InputStream既不是OLE2流,也不是OOXML流)中的错误。