Hesap Tablosu Düzenleyicisi - Dosyalarla Çalışma

İçindekiler

Desteklenen Dosyalar

HTML5 Elektronik Tablo Düzenleyicisi, aşağıdaki biçimlerdeki dosyaları açabilir:

  • Excel 1997-2003 XLS
  • Excel 2007-2013 XLSX
  • XLSM
  • XLSB
  • XLTX
  • SpreadsheetML
  • özgeçmiş
  • Açık Belge

Yerel Dosyaları Aç

Yerel bilgisayardan dosya yüklemek için:

  1. ÇevirmekDosya sekmesi üstte
  2. TıklamakBilgisayardan aç Gözat iletişim kutusunu açmak için
  3. İstediğiniz dosya konumuna gidin.
  4. Seçmek için istediğiniz dosyayı tıklayın.
  5. TıklamakAçık.

Dosya düzenleyicide açılacaktır.

yapılacaklar:resim_alternatif_metin

Nasıl çalışır?

Dosya yükleme

Kullanıcı, web tarayıcısından sunucuya yüklenen ve tarafından alınan yerel bilgisayardan bir dosya seçer.PrimeFaces dosyasıYükle bileşen.

 <p:fileUpload fileUploadListener="#\{workbook.onFileUpload\}" update=":ribbon :intro :sheet" />

Çalışma kitabını yönetme

Dosya tamamen yüklenir yüklenmez, durumu halletmek için WorkbookService.onFileUpload yöntemi devreye girer. WorkbookService, web tarayıcısından olayları alır ve tüm çalışma kitabının durumunu takip eder. WorkbookService.onFileUpload, çalışma kitabını belleğe yüklemek için denetimi LoaderService’e aktarır. olarakdosya yükleme bileşeni, yüklenen dosyayı birGiriş Akışı, LoaderService bunu LoaderService.fromInputStream yöntemini kullanarak yükler.

 public void onFileUpload(FileUploadEvent e) {

    this.current = loader.fromInputStream(e.getFile().getInputstream(), e.getFile().getFileName());

}

Yükleme ve boşaltma

yöntemLoaderService.fromInputStream okurGiriş Akışı fileUpload tarafından sağlananbileşen örneğini oluşturcom.aspose.cells.Workbooksınıf. Bu örnek, kullanıcı e-tabloyu web tarayıcısında görüntülemeye veya düzenlemeye devam ettiği sürece bellekte tutulur. Kullanıcı editörden ayrıldığında veya tarayıcıyı kapattığında, sunucuyu temiz tutmak için kullanılmayan örnekler otomatik olarak bellekten kaldırılır.

 public String fromInputStream(InputStream s, String name) {

    com.aspose.cells.Workbook w;

    try (InputStream i = s) {

        w = new com.aspose.cells.Workbook(i);

    } catch (Exception x) {

        return null;

    }

    String key = this.generateKey();

    this.workbooks.put(key, w);

    this.buildCellsCache(key);

    this.buildColumnWidthCache(key);

    this.buildRowHeightCache(key);

    return key;

}

Önbelleğe almak

Önbelleğe alma, HTML5 Elektronik Tablo Düzenleyicisi için çok önemlidir. Her şeyin sorunsuz çalışmasını sağlar. CellsService, düzenleyici tarafından yüklenen tüm çalışma kitaplarının önbellek satırlarını, sütunlarını, hücrelerini ve özelliklerini tutar. LoaderService bir elektronik tabloyu tamamen yüklediğinde, onu yukarıdan aşağıya okur ve LoaderService.buildCellsCache, LoaderService.buildColumnWidthCache, LoaderService.buildRowHeightCache’yi çağırarak önbelleği doldurur.

     public void buildCellsCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        int maxColumn = ws.getCells().getMaxColumn() + 1;

        maxColumn = maxColumn + 26 - (maxColumn % 26);

        int maxRow = 20 + ws.getCells().getMaxRow() + 1;

        maxRow = maxRow + 10 - (maxRow % 10);

        ArrayList<Column> columns = new ArrayList<>(maxColumn);

        ArrayList<Row> rows = new ArrayList<>(maxRow);

        for (int i = 0; i < maxColumn; i++) {

            columns.add(i, new Column(i, com.aspose.cells.CellsHelper.columnIndexToName(i)));

        }

        for (int i = 0; i < maxRow; i++) {

            rows.add(i, new Row.Builder().setId(i).build());

        }

        for (Object o : ws.getCells()) {

            com.aspose.cells.Cell c = (com.aspose.cells.Cell) o;

            rows.get(c.getRow()).putCell(c.getColumn(), cells.fromAsposeCell(c));

        }

        for (int i = 0; i < maxRow; i++) {

            for (int j = 0; j < maxColumn; j++) {

                String col = com.aspose.cells.CellsHelper.columnIndexToName(j);

                if (!rows.get(i).getCellsMap().containsKey(col)) {

                    rows.get(i).putCell(col, cells.fromBlank(j, i));

                }

            }

        }

        cells.putColumns(key, columns);

        cells.putRows(key, rows);

    }

LoaderService.buildColumnWidthCache

     public void buildColumnWidthCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> columnWidth = new ArrayList<>();

        for (int i = 0; i < cells.getColumns(key).size(); i++) {

            columnWidth.add(i, ws.getCells().getColumnWidthPixel(i));

        }

        cells.putColumnWidth(key, columnWidth);

    }

LoaderService.buildRowHeightCache

     public void buildRowHeightCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> rowHeight = new ArrayList<>();

        for (int i = 0; i < cells.getRows(key).size(); i++) {

            rowHeight.add(i, ws.getCells().getRowHeightPixel(i));

        }

        cells.putRowHeight(key, rowHeight);

    }

Dropbox’tan aç

Dropbox’tan dosya açmak için:

  1. ÇevirmekDosya sekmesi üstte
  2. TıklamakDropbox’tan aç Dropbox dosya seçiciyi açmak için.
  3. Henüz oturum açmadıysanız, Dropbox hesabınızda oturum açmanız gerekir.
  4. İstediğiniz dosyaya gidin ve seçmek için tıklayın.
  5. TıklamakSeçmek altta.

Seçtiğiniz dosya Dropbox’tan açılacaktır.

yapılacaklar:resim_alternatif_metin

Nasıl çalışır?

buDropbox’tan aç düğme kullanırDropbox JavaScript Seçici API Dropbox Seçici iletişim kutusunu açmak için. Seçici, geri arama işlevi tarafından yakalanan ve sunucuya geri gönderilen seçili dosyanın URL’sini sağlar. Sunucu, URL’den bir elektronik tablo örneği oluşturur, bazı temizlik işlerini başlatır ve DOM güncellemelerini tarayıcıya geri gönderir. Tarayıcı HTML’i oluşturur ve yeniler ve kullanıcı yüklenen belgeyi düzenlemeye hazırdır.

URL’den aç

Dosyalar doğrudan URL’lerden açılabilir. Bu, kullanıcının İnternet üzerindeki herkese açık herhangi bir dosyayı düzenlemesine izin verir. Dosya ekini açmak için**?url=konum** İstediğiniz değere sahip parametre**yer** editör yüklenirken. Örneğin:

 http://editor.aspose.com/?url=http://example.com/Sample.xlsx

yapılacaklar:resim_alternatif_metin

Nasıl çalışır?

Başlatma sırasında örneklendir

Ne zamanÇalışma Sayfası Görünümü arka uç fasulyesi, JSF tarafından başlatılırYapı Sonrası yöntemiçinde LoaderService.fromUrl kullanarak elektronik tabloyu yükleyen çağrılır.

Önbelleğe almak

Önbelleğe alma, elektronik tablo yüklendikten hemen sonra gerçekleşir. buYükleyici Hizmeti aramalarLoaderService.buildCellsCache, LoaderService.buildColumnWidthCache veLoaderService.buildRowHeightCache elektronik tablonun içeriğini önbelleğe almak ve tüm işlemleri hızlı ve sorunsuz tutmak için tek tek.

DOM güncellemeleri

Elektronik tablo sunucu tarafında hazır olduğunda, yeni HTML oluşturmak ve web tarayıcısı tarafından işlenen DOM güncellemelerini kullanıcıya göndermek için JSF bileşenleri kullanılır.

     @PostConstruct

    private void init() {

        String requestedSourceUrl = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("url");

        if (requestedSourceUrl != null) {

            try {

                this.sourceUrl = new URL(requestedSourceUrl).toString();

                this.loadFromUrl();

            } catch (MalformedURLException x) {

                msg.sendMessageDialog("The specified URL is invalid", requestedSourceUrl);

            }

        }

    }

LoaderService.fromUrl

     public String fromUrl(String url) {

        com.aspose.cells.Workbook w;

        try (InputStream i = new URL(url).openStream()) {

            w = new com.aspose.cells.Workbook(i);

        } catch (Exception x) {

            throw new RuntimeException(x);

        }

        String key = generateKey();

        workbooks.put(key, w);

        buildCellsCache(key);

        buildColumnWidthCache(key);

        buildRowHeightCache(key);

        return key;

    }

LoaderService.buildCellsCache

     public void buildCellsCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        int maxColumn = ws.getCells().getMaxColumn() + 1;

        maxColumn = maxColumn + 26 - (maxColumn % 26);

        int maxRow = 20 + ws.getCells().getMaxRow() + 1;

        maxRow = maxRow + 10 - (maxRow % 10);

        ArrayList<Column> columns = new ArrayList<>(maxColumn);

        ArrayList<Row> rows = new ArrayList<>(maxRow);

        for (int i = 0; i < maxColumn; i++) {

            columns.add(i, new Column(i, com.aspose.cells.CellsHelper.columnIndexToName(i)));

        }

        for (int i = 0; i < maxRow; i++) {

            rows.add(i, new Row.Builder().setId(i).build());

        }

        for (Object o : ws.getCells()) {

            com.aspose.cells.Cell c = (com.aspose.cells.Cell) o;

            rows.get(c.getRow()).putCell(c.getColumn(), cells.fromAsposeCell(c));

        }

        for (int i = 0; i < maxRow; i++) {

            for (int j = 0; j < maxColumn; j++) {

                String col = com.aspose.cells.CellsHelper.columnIndexToName(j);

                if (!rows.get(i).getCellsMap().containsKey(col)) {

                    rows.get(i).putCell(col, cells.fromBlank(j, i));

                }

            }

        }

        cells.putColumns(key, columns);

        cells.putRows(key, rows);

    }

LoaderService.buildColumnWidthCache

     public void buildColumnWidthCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> columnWidth = new ArrayList<>();

        for (int i = 0; i < cells.getColumns(key).size(); i++) {

            columnWidth.add(i, ws.getCells().getColumnWidthPixel(i));

        }

        cells.putColumnWidth(key, columnWidth);

    }

LoaderService.buildRowHeightCache

     public void buildRowHeightCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> rowHeight = new ArrayList<>();

        for (int i = 0; i < cells.getRows(key).size(); i++) {

            rowHeight.add(i, ws.getCells().getRowHeightPixel(i));

        }

        cells.putRowHeight(key, rowHeight);

    }

Yeni Bir Elektronik Tablo Oluşturun

Yeni bir boş e-tablo oluşturmak için:

  1. ÇevirmekDosya sekmesi.
  2. TıklaYeni buton.

Düzenleyici, varsa açılan elektronik tabloyu kapatır ve yeni bir hesap tablosu açar.

yapılacaklar:resim_alternatif_metin

Nasıl çalışır?

Yeni bir nesne örneği oluşturun

Ne zamanYeni butonu kullanıcı tarafından tıklandığında,WorksheetView.loadBlank , sonunda çağıranLoaderService.fromBlank. LoaderService, yeni bir boş elektronik tablo örneği oluşturur.

Önbelleğe almak

Önbelleğe alma, elektronik tablo yüklendikten hemen sonra gerçekleşir. buYükleyici Hizmeti aramalarLoaderService.buildCellsCache, LoaderService.buildColumnWidthCache veLoaderService.buildRowHeightCache elektronik tablonun içeriğini önbelleğe almak ve tüm işlemleri hızlı ve sorunsuz tutmak için tek tek.

DOM güncellemeleri

Elektronik tablo sunucu tarafında hazır olduğunda, yeni HTML oluşturmak ve web tarayıcısı tarafından işlenen DOM güncellemelerini kullanıcıya göndermek için JSF bileşenleri kullanılır.

     public void loadBlank() {

        this.loadedWorkbook = loader.fromBlank();

    }

LoaderService.fromBlank

     public String fromBlank() {

        com.aspose.cells.Workbook w = new com.aspose.cells.Workbook();

        String key = generateKey();

        workbooks.put(key, w);

        buildCellsCache(key);

        buildColumnWidthCache(key);

        buildRowHeightCache(key);

        return key;

    }

buildCellsCache

     public void buildCellsCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        int maxColumn = ws.getCells().getMaxColumn() + 1;

        maxColumn = maxColumn + 26 - (maxColumn % 26);

        int maxRow = 20 + ws.getCells().getMaxRow() + 1;

        maxRow = maxRow + 10 - (maxRow % 10);

        ArrayList<Column> columns = new ArrayList<>(maxColumn);

        ArrayList<Row> rows = new ArrayList<>(maxRow);

        for (int i = 0; i < maxColumn; i++) {

            columns.add(i, new Column(i, com.aspose.cells.CellsHelper.columnIndexToName(i)));

        }

        for (int i = 0; i < maxRow; i++) {

            rows.add(i, new Row.Builder().setId(i).build());

        }

        for (Object o : ws.getCells()) {

            com.aspose.cells.Cell c = (com.aspose.cells.Cell) o;

            rows.get(c.getRow()).putCell(c.getColumn(), cells.fromAsposeCell(c));

        }

        for (int i = 0; i < maxRow; i++) {

            for (int j = 0; j < maxColumn; j++) {

                String col = com.aspose.cells.CellsHelper.columnIndexToName(j);

                if (!rows.get(i).getCellsMap().containsKey(col)) {

                    rows.get(i).putCell(col, cells.fromBlank(j, i));

                }

            }

        }

        cells.putColumns(key, columns);

        cells.putRows(key, rows);

    }

buildColumnWidthCache

     public void buildColumnWidthCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> columnWidth = new ArrayList<>();

        for (int i = 0; i < cells.getColumns(key).size(); i++) {

            columnWidth.add(i, ws.getCells().getColumnWidthPixel(i));

        }

        cells.putColumnWidth(key, columnWidth);

    }

buildRowHeightCache

     public void buildRowHeightCache(String key) {

        com.aspose.cells.Workbook wb = workbooks.get(key);

        com.aspose.cells.Worksheet ws = wb.getWorksheets().get(wb.getWorksheets().getActiveSheetIndex());

        ArrayList<Integer> rowHeight = new ArrayList<>();

        for (int i = 0; i < cells.getRows(key).size(); i++) {

            rowHeight.add(i, ws.getCells().getRowHeightPixel(i));

        }

        cells.putRowHeight(key, rowHeight);

    }

Çeşitli Biçimlerde Dışa Aktarma

Dosyaları düzenledikten sonra, kullanıcı değişiklikleri kaydetmek isteyecektir. Düzenleyici, kullanıcının değiştirilen elektronik tabloyu yerel bilgisayara aktarmasına ve indirmesine izin verir. Dosyayı dışa aktarmak için:

  1. ÇevirmekDosya sekmesi üstte
  2. Tıklamakİhracat düğme olarak.
  3. Açılır listeden istediğiniz formatı seçin.

Değiştirilen dosya indirilmek üzere dışa aktarılacaktır. Aşağıdaki biçimler dışa aktarma için desteklenir:

  • Excel 2007-2013 XLSX
  • Excel 1997-2003 XLS
  • Excel XLSM
  • Excel XLSB
  • Excel XLTX
  • Excel XLTM
  • SpreadsheetML
  • Taşınabilir Belge Formatı (PDF)
  • OpenDocument Elektronik Tablosu (ODS)

Nasıl çalışır?

Açılan elektronik tablo, kullanılarak kullanıcı tarafından belirlenen biçime dönüştürülür.WorksheetView.getOutputFile.

     public StreamedContent getOutputFile(int saveFormat) {

        byte[] buf;

        String ext = null;

        switch (saveFormat) {

            case com.aspose.cells.SaveFormat.EXCEL_97_TO_2003:

                ext = "xls";

                break;

            case com.aspose.cells.SaveFormat.XLSX:

                ext = "xlsx";

                break;

            case com.aspose.cells.SaveFormat.XLSM:

                ext = "xlsm";

                break;

            case com.aspose.cells.SaveFormat.XLSB:

                ext = "xlsb";

                break;

            case com.aspose.cells.SaveFormat.XLTX:

                ext = "xltx";

                break;

            case com.aspose.cells.SaveFormat.XLTM:

                ext = "xltm";

                break;

            case com.aspose.cells.SaveFormat.SPREADSHEET_ML:

                ext = "xml";

                break;

            case com.aspose.cells.SaveFormat.PDF:

                ext = "pdf";

                break;

            case com.aspose.cells.SaveFormat.ODS:

                ext = "ods";

                break;

        }

        try {

            ByteArrayOutputStream out = new ByteArrayOutputStream();

            getAsposeWorkbook().save(out, saveFormat);

            buf = out.toByteArray();

        } catch (Exception x) {

            throw new RuntimeException(x);

        }

        return new DefaultStreamedContent(new ByteArrayInputStream(buf), "application/octet-stream", "Spreadsheet." + ext);

    }