Я работаю с инструментарием IBM и столкнулся с проблемой, когда хотел получить письмо от Gmail и обработать текст полученного файла Excel.
Используются коды Java для этой программы следующее:
public void evaluate(MbMessageAssembly inAssembly) throws MbException {
MbOutputTerminal out = getOutputTerminal("out");
MbOutputTerminal alt = getOutputTerminal("alternate");
MbMessage inMessage = inAssembly.getMessage();
MbMessageAssembly outAssembly = null;
try {
// create new message as a copy of the input
// SET OutputRoot = InputRoot;
MbMessage outMessage = new MbMessage(inMessage);
// SET OutputLocalEnvironment = InputLocalEnvironment;// UNGEFAEHR
outAssembly = new MbMessageAssembly(inAssembly, outMessage);
// Blob Data
MbElement blob = outMessage.getRootElement().getFirstElementByPath("/BLOB/BLOB");
byte[] blobInBytes = (byte[])(blob.getValue());
outMessage.getRootElement().getLastChild().delete();
// Create JSON Object
outMessage.getRootElement().createElementAsLastChild(MbJSON.PARSER_NAME);
MbElement refJSON = outMessage.getRootElement().getLastChild();
MbElement refData = refJSON.createElementAsLastChild(MbElement.TYPE_NAME, "Data", null);
// read data from byte arrays as streams of bytes(Read Excel)
InputStream stream = new ByteArrayInputStream(blobInBytes);
// creating a new file instance
// creating Workbook instance that refers to .xlsx file
XSSFWorkbook wb = new XSSFWorkbook(stream);
XSSFSheet sheet = wb.getSheetAt(1);
// Sheet sheet = workbook.getSheetAt(1);
Iterator<Row> itr = sheet.iterator();
После строки XSSFWorkbook wb = new XSSFWorkbook(stream);
процесс IBMtollkit остановится со следующей ошибкой:
Text:CHARACTER:org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Can't read content types part !
Как отделить строки от Excel после файла, полученного из gmail, а не файла из Local?