小编Far*_*Joe的帖子

损坏的文件处理

我想知道是否有人对使用Apache POI处理损坏的文件有任何建议

我正在尝试打开文件并收到此消息:

Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x1C left 2 bytes remaining still to be read.
    at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:156)
    at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:231)
    at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:480)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:301)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:95)
    at ExcelImporter.EditFileImportDialog.main(EditFileImportDialog.java:409)
Run Code Online (Sandbox Code Playgroud)

这是一个SSCCE

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class EditFileImportDialog {

    /* Omitted irrelevent code */

    public static void main(String[] args) {
        File file = new File("Z:\\Path\\To\\File_causing_the_trouble.xls");
        try {
            Workbook wb = WorkbookFactory.create(file);  // Line 409 for ref to the exception stack trace
            System.out.println(wb);
        } catch …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi

34
推荐指数
1
解决办法
2475
查看次数

JXL和Apache POI解析具有附加的图像对象

我已经尝试使用JXL和Apache POI从excel文件加载数据,到目前为止JXL机制已经正常工作.即使我在文件中嵌入了图像.

我收到了一个不会解析的源文件,我在POI中得到以下异常

Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0xE2 left 2 bytes remaining still to be read.
     at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:124)
     at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:402)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:202)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:184)
     at testXlsParsers.main(TestXlsParsers.java:19)
Run Code Online (Sandbox Code Playgroud)

并且使用jxl我得到一个超出范围的索引

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
     at java.util.ArrayList.RangeCheck(ArrayList.java:546)
     at java.util.ArrayList.get(ArrayList.java:321)
     at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:247)
     at ParserXLS.parse(ParserXLS.java:27)
     at ParserXLS.main(ParserXLS.java:46)
Run Code Online (Sandbox Code Playgroud)

文件加载到excel但不进入开放办公室,我在原始数据中唯一可以看到的是Adobe XMP Core 4.1相关对象...这似乎是问题的原因,如果我删除图像它工作正常...如果我坚持另一个jpg罚款.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18        ">
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略这个?我将如何解析此文件.

谢谢.

java excel ole jxl apache-poi

5
推荐指数
1
解决办法
2142
查看次数

读取串行端口 - 在特定时间内忽略写入串行端口的部分数据

我想每隔一段时间在串行端口上读取数据和 Arduino。所以基本上像

  1. 读一读
  2. 等待
  3. 读一读
  4. 等待
  5. 拿 ...

等等。

我面临的问题是端口将缓冲其信息,因此只要我调用等待函数,串行端口上的数据就会开始缓冲。一旦等待函数完成,我尝试再次读取数据,但我从缓冲区的开头读取数据,数据不再是当前的,而是在等待函数开始时读取的数据。

我的问题是,是否有一种我不知道的方法可以忽略在等待期间读入的数据部分,而只读取当前在串行端口上传送的内容?

到目前为止,我有类似的东西:

import serial

s = serial.Serial(path_to_my_serial_port,9600)

while True:
    print s.readline()
    time.sleep(.5)
Run Code Online (Sandbox Code Playgroud)

出于解释目的,我让 Arduino 输出自它开始循环以来的时间。通过python代码,每次调用的时间应该相隔半秒。通过串行输出,时间在不到一毫秒的时间内增加。无论睡眠时间如何,这些值都不会改变。

示例输出:

504

504

504

504

505

505

505

...
Run Code Online (Sandbox Code Playgroud)

作为我最终目标的一个想法,我想测量端口的值,等待一个时间延迟,然后看看值是多少,再等一下,看看然后是什么值,再等一下。

我目前正在Python为此使用,但对其他语言持开放态度。

python serial-port arduino

3
推荐指数
1
解决办法
5321
查看次数

PHP MYSQL UPDATE WHERE多个条件

我想知道你是否可以使用多个条件进行更新:

UPDATE participantes SET confirmado = 1 WHERE id = 19 AND id = 20 AND id = 21;
Run Code Online (Sandbox Code Playgroud)

participantes - >表

confirmmado - >表参与者的字段.

php mysql where

2
推荐指数
2
解决办法
1万
查看次数

播放歌曲后如何让pygame退出

我正在尝试使用本教程在我的脚本中运行pygame而不是Mplayer:

所以,在代码中:

import pygame     
pygame.init()
song = pygame.mixer.Sound(my_song.ogg)
clock = pygame.time.Clock()
song.play()
while True:
   clock.tick(60)
pygame.quit()
print "done"   # not appears
exit()
Run Code Online (Sandbox Code Playgroud)

这首歌很好玩,但"完成"从未打印在控制台中.该程序保持循环...如何解决?谢谢

编辑:我发现了这个,它运行良好,有10秒钟的歌曲:

import pygame
import time     
pygame.init()
song = pygame.mixer.Sound(son)
clock = pygame.time.Clock()
song.play()
while True:
  clock.tick(60)
  time.sleep(10)
  break
pygame.quit()
print "done"
exit()
Run Code Online (Sandbox Code Playgroud)

python pygame quit

1
推荐指数
1
解决办法
1962
查看次数

标签 统计

apache-poi ×2

excel ×2

java ×2

python ×2

arduino ×1

jxl ×1

mysql ×1

ole ×1

php ×1

pygame ×1

quit ×1

serial-port ×1

where ×1