Search in sources :

Example 1 with SheetPart

use of net.heartsome.cat.converter.msexcel2007.document.SheetPart in project translationstudio8 by heartsome.

the class XliffReader method read2SpreadsheetDoc.

public void read2SpreadsheetDoc(String spreadsheetDocFile, String xliffFile, String sklFile, IProgressMonitor monitor) throws InternalFileException {
    if (monitor == null) {
        monitor = new NullProgressMonitor();
    }
    monitor.beginTask(Messages.getString("msexcel.xliff2mse.task1"), 5);
    loadFile(xliffFile);
    monitor.worked(1);
    monitor.setTaskName(Messages.getString("msexcel.xliff2mse.task2"));
    try {
        SpreadsheetDocument.open(sklFile);
        monitor.worked(1);
        WorkBookPart wb = SpreadsheetDocument.workBookPart;
        List<SheetPart> sheetList = wb.getSheetParts();
        readSheet(sheetList, new SubProgressMonitor(monitor, 1));
        monitor.setTaskName(Messages.getString("msexcel.xliff2mse.task3"));
        wb.save();
        monitor.worked(1);
        try {
            ZipUtil.zipFolder(spreadsheetDocFile, SpreadsheetDocument.spreadsheetPackage.getPackageSuperRoot());
        } catch (IOException e) {
            logger.error("", e);
        }
        monitor.worked(1);
    } finally {
        SpreadsheetDocument.close();
        monitor.done();
    }
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) WorkBookPart(net.heartsome.cat.converter.msexcel2007.document.WorkBookPart) SheetPart(net.heartsome.cat.converter.msexcel2007.document.SheetPart) IOException(java.io.IOException) SubProgressMonitor(org.eclipse.core.runtime.SubProgressMonitor)

Example 2 with SheetPart

use of net.heartsome.cat.converter.msexcel2007.document.SheetPart in project translationstudio8 by heartsome.

the class XliffReader method readSheet.

private void readSheet(List<SheetPart> sheetList, IProgressMonitor monitor) throws InternalFileException {
    if (monitor == null) {
        monitor = new NullProgressMonitor();
    }
    monitor.beginTask(Messages.getString("msexcel.xliff2mse.task4"), sheetList.size() * 5);
    List<String> sheetNames = new ArrayList<String>();
    for (SheetPart sp : sheetList) {
        monitor.worked(1);
        String name = sp.getName();
        name = processContent(name);
        // 处理重复名称
        int i = 1;
        while (sheetNames.contains(name)) {
            name += i;
            i++;
        }
        sheetNames.add(name);
        sp.setSheetName(name);
        // read headers
        monitor.worked(1);
        List<HeaderFooter> headers = sp.getHeader();
        for (HeaderFooter hf : headers) {
            String content = hf.getContent();
            content = processContent(content);
            hf.setContent(content);
        }
        // update the file
        sp.setHeaderFooter(headers);
        monitor.worked(1);
        DrawingsPart drawingp = sp.getDrawingsPart();
        if (drawingp != null) {
            List<CellAnchor> aList = drawingp.getCellAnchorList();
            for (CellAnchor a : aList) {
                List<ShapeTxBody> sList = a.getShapeList();
                if (sList.size() == 0) {
                    continue;
                }
                for (ShapeTxBody s : sList) {
                    List<ShapeParagraph> pList = s.getTxBodyParagraghList();
                    for (ShapeParagraph p : pList) {
                        String content = p.getXmlContent();
                        content = processContent(content);
                        p.setXmlContent(content);
                    }
                }
            }
            drawingp.updateDrawingObject();
        }
        monitor.worked(1);
        List<Cell> cellList = sp.getCells("s");
        for (Cell c : cellList) {
            String content = c.getFullContent();
            content = processContent(content);
            c.setShareStringItemFullContent(content);
        }
        monitor.worked(1);
        // read footer
        List<HeaderFooter> footers = sp.getFoolter();
        for (HeaderFooter hf : footers) {
            String content = hf.getContent();
            content = processContent(content);
            hf.setContent(content);
        }
        // update the file
        sp.setHeaderFooter(footers);
    }
    monitor.done();
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) ArrayList(java.util.ArrayList) HeaderFooter(net.heartsome.cat.converter.msexcel2007.document.HeaderFooter) ShapeParagraph(net.heartsome.cat.converter.msexcel2007.document.drawing.ShapeParagraph) SheetPart(net.heartsome.cat.converter.msexcel2007.document.SheetPart) ShapeTxBody(net.heartsome.cat.converter.msexcel2007.document.drawing.ShapeTxBody) CellAnchor(net.heartsome.cat.converter.msexcel2007.document.drawing.CellAnchor) DrawingsPart(net.heartsome.cat.converter.msexcel2007.document.DrawingsPart) Cell(net.heartsome.cat.converter.msexcel2007.document.Cell)

Example 3 with SheetPart

use of net.heartsome.cat.converter.msexcel2007.document.SheetPart in project translationstudio8 by heartsome.

the class WorkBookPart method loadWorkSheets.

private void loadWorkSheets() throws InternalFileException, FileNotFoundException {
    sheetPartList = new ArrayList<SheetPart>();
    int ssiIndex = 0;
    StringBuffer siBf = new StringBuffer();
    try {
        String xpath = "/workbook/sheets/sheet";
        AutoPilot ap = new AutoPilot(vu.getVTDNav());
        ap.selectXPath(xpath);
        while (ap.evalXPath() != -1) {
            int index = vu.getVTDNav().getAttrVal("name");
            if (index == -1) {
                throw new InternalFileException(Messages.getString("msexcel.converter.exception.msg1"));
            }
            String name = vu.getVTDNav().toRawString(index);
            index = vu.getVTDNav().getAttrVal("sheetId");
            if (index == -1) {
                throw new InternalFileException(Messages.getString("msexcel.converter.exception.msg1"));
            }
            String id = vu.getVTDNav().toRawString(index);
            index = vu.getVTDNav().getAttrVal("r:id");
            if (index == -1) {
                throw new InternalFileException(Messages.getString("msexcel.converter.exception.msg1"));
            }
            String rid = vu.getVTDNav().toRawString(index);
            Relationship r = relsPart.getRelationshipById(rid);
            SpreadsheetUtil.assertNull(r);
            String target = r.getTarget();
            SheetPart sp = new SheetPart(name, id, target);
            ssiIndex = sp.fillShareStringTable(sst, ssiIndex, siBf);
            sheetPartList.add(sp);
        }
        // fix bug Bug #2925 转换excel文件--空指针异常,转换失败 by jason
        if (sst != null && siBf.length() != 0) {
            sst.updateShareStringTable(siBf.toString());
        }
    } catch (VTDException e) {
        logger.error("", e);
    } catch (IOException e) {
    }
}
Also used : VTDException(com.ximpleware.VTDException) AutoPilot(com.ximpleware.AutoPilot) Relationship(net.heartsome.cat.converter.msexcel2007.document.rels.Relationship) IOException(java.io.IOException) InternalFileException(net.heartsome.cat.converter.msexcel2007.common.InternalFileException)

Example 4 with SheetPart

use of net.heartsome.cat.converter.msexcel2007.document.SheetPart in project translationstudio8 by heartsome.

the class SpreadsheetReader method read2XliffFile.

/**
	 * 将内容读入到XLIFF文件
	 * @param xlfOs
	 *            XLIFF文件BufferWriter
	 * @param filterRedCell
	 *            是否需要过滤标记为红色的单元格
	 * @param monitor
	 * @throws InternalFileException
	 * @throws IOException
	 *             ;
	 */
public void read2XliffFile(String inputFile, BufferedWriter xlfOs, String sklFilePath, boolean filterRedCell, IProgressMonitor monitor) throws InternalFileException, IOException {
    this.xlfOs = xlfOs;
    if (monitor == null) {
        monitor = new NullProgressMonitor();
    }
    monitor.beginTask("", 5);
    try {
        monitor.setTaskName(Messages.getString("msexcel.mse2xliff.task2"));
        // open source file
        SpreadsheetDocument.open(inputFile);
        monitor.worked(1);
        monitor.setTaskName(Messages.getString("msexcel.mse2xliff.task3"));
        // load current workbook
        WorkBookPart wb = SpreadsheetDocument.workBookPart;
        if (filterRedCell) {
            this.filterStyleIndex = wb.getStylesPart().getFilterCellStyle();
        }
        // read worksheet
        List<SheetPart> sheetList = wb.getSheetParts();
        readSheets(sheetList, new SubProgressMonitor(monitor, 2));
        // save current document
        wb.save();
        monitor.worked(1);
        monitor.setTaskName(Messages.getString("msexcel.mse2xliff.task4"));
        // generate skl file
        saveSklFile(sklFilePath);
        monitor.worked(1);
    } finally {
        SpreadsheetDocument.close();
    }
    monitor.done();
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) WorkBookPart(net.heartsome.cat.converter.msexcel2007.document.WorkBookPart) SheetPart(net.heartsome.cat.converter.msexcel2007.document.SheetPart) SubProgressMonitor(org.eclipse.core.runtime.SubProgressMonitor)

Example 5 with SheetPart

use of net.heartsome.cat.converter.msexcel2007.document.SheetPart in project translationstudio8 by heartsome.

the class SpreadsheetReader method readSheets.

private void readSheets(List<SheetPart> sheetList, IProgressMonitor monitor) throws InternalFileException, IOException {
    if (monitor == null) {
        monitor = new NullProgressMonitor();
    }
    monitor.beginTask("", sheetList.size() * 5);
    for (SheetPart sp : sheetList) {
        // process sheet name
        String name = sp.getName();
        writeXliffFile(xliffIdex, name);
        sp.setSheetName("%%%" + xliffIdex + "%%%");
        xliffIdex++;
        monitor.worked(1);
        // read headers
        List<HeaderFooter> headers = sp.getHeader();
        readHeaderFooters(headers);
        // update the file
        sp.setHeaderFooter(headers);
        monitor.worked(1);
        // read drawing part
        DrawingsPart drawingp = sp.getDrawingsPart();
        if (drawingp != null) {
            readDrawings(drawingp);
            drawingp.updateDrawingObject();
        }
        monitor.worked(1);
        List<Cell> cellList = sp.getCells("s");
        for (Cell c : cellList) {
            if (filterStyleIndex.contains(c.getStyleIndex())) {
                // skip this cell
                continue;
            }
            String cellText = c.getValue();
            if (cellText == null || cellText.trim().length() == 0) {
                // ignore the cell
                continue;
            }
            List<Object[]> cellStyle = c.getCellCharacterStyles();
            String[] segs = segmenter.segment(cellText);
            StringBuffer bf = new StringBuffer();
            for (String seg : segs) {
                List<Object[]> s = ReaderUtil.getSegStyle(cellStyle, seg, cellText);
                if (s.size() != 0) {
                    seg = ReaderUtil.appendSegStyle(seg, s);
                }
                bf.append("%%%").append(xliffIdex++).append("%%%");
                // System.out.println(xliffIdex + ":" + seg);
                writeXliffFile(xliffIdex - 1, seg);
            }
            c.setValue(bf.toString());
        }
        monitor.worked(1);
        // read headers
        List<HeaderFooter> footers = sp.getFoolter();
        readHeaderFooters(footers);
        // update the file
        sp.setHeaderFooter(footers);
        monitor.worked(1);
    }
    monitor.done();
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) SheetPart(net.heartsome.cat.converter.msexcel2007.document.SheetPart) HeaderFooter(net.heartsome.cat.converter.msexcel2007.document.HeaderFooter) DrawingsPart(net.heartsome.cat.converter.msexcel2007.document.DrawingsPart) Cell(net.heartsome.cat.converter.msexcel2007.document.Cell)

Aggregations

SheetPart (net.heartsome.cat.converter.msexcel2007.document.SheetPart)4 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)4 IOException (java.io.IOException)2 Cell (net.heartsome.cat.converter.msexcel2007.document.Cell)2 DrawingsPart (net.heartsome.cat.converter.msexcel2007.document.DrawingsPart)2 HeaderFooter (net.heartsome.cat.converter.msexcel2007.document.HeaderFooter)2 WorkBookPart (net.heartsome.cat.converter.msexcel2007.document.WorkBookPart)2 SubProgressMonitor (org.eclipse.core.runtime.SubProgressMonitor)2 AutoPilot (com.ximpleware.AutoPilot)1 VTDException (com.ximpleware.VTDException)1 ArrayList (java.util.ArrayList)1 InternalFileException (net.heartsome.cat.converter.msexcel2007.common.InternalFileException)1 CellAnchor (net.heartsome.cat.converter.msexcel2007.document.drawing.CellAnchor)1 ShapeParagraph (net.heartsome.cat.converter.msexcel2007.document.drawing.ShapeParagraph)1 ShapeTxBody (net.heartsome.cat.converter.msexcel2007.document.drawing.ShapeTxBody)1 Relationship (net.heartsome.cat.converter.msexcel2007.document.rels.Relationship)1