Search in sources :

Example 1 with HeaderFooter

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

the class SpreadsheetReader method readHeaderFooters.

private void readHeaderFooters(List<HeaderFooter> headerFooters) throws IOException {
    for (HeaderFooter hf : headerFooters) {
        String content = ReaderUtil.reCleanTag(hf.getContent());
        String[] lcr = splitHeaderFooter(content);
        StringBuffer skl = new StringBuffer();
        for (String s : lcr) {
            if (s.length() == 0) {
                continue;
            }
            StringBuffer text = new StringBuffer();
            readSplitedContent(s, skl, text);
            if (text.length() == 0) {
                continue;
            }
            writeXliffFile(xliffIdex - 1, text.toString());
        }
        hf.setContent(ReaderUtil.cleanTag(skl.toString()));
    }
}
Also used : HeaderFooter(net.heartsome.cat.converter.msexcel2007.document.HeaderFooter)

Example 2 with HeaderFooter

use of net.heartsome.cat.converter.msexcel2007.document.HeaderFooter 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 HeaderFooter

use of net.heartsome.cat.converter.msexcel2007.document.HeaderFooter 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

HeaderFooter (net.heartsome.cat.converter.msexcel2007.document.HeaderFooter)3 Cell (net.heartsome.cat.converter.msexcel2007.document.Cell)2 DrawingsPart (net.heartsome.cat.converter.msexcel2007.document.DrawingsPart)2 SheetPart (net.heartsome.cat.converter.msexcel2007.document.SheetPart)2 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)2 ArrayList (java.util.ArrayList)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