スプレッドシート エディター - ファイルの操作

目次

サポートされているファイル

HTML5 スプレッドシート エディターでは、次の形式のファイルを開くことができます。

  • エクセル 1997-2003 XLS
  • エクセル 2007-2013 XLSX
  • XLSM
  • XLSB
  • XLTX
  • SpreadsheetML
  • CVS
  • OpenDocument

ローカル ファイルを開く

ローカル コンピューターからファイルをアップロードするには:

  1. 切り替えるファイルタブ上に。
  2. クリックパソコンから開く参照ダイアログを開きます。
  3. ファイルの目的の場所に移動します。
  4. 目的のファイルをクリックして選択します。
  5. クリック開ける.

ファイルがエディターで開かれます。

todo:画像_代替_文章

使い方?

ファイルのアップロード

ユーザーはローカル コンピューターからファイルを選択します。このファイルは、Web ブラウザーからサーバーにアップロードされ、によって受信されます。PrimeFaces ファイルアップロード成分。

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

ワークブックの管理

ファイルが完全にアップロードされるとすぐに、 WorkbookService.onFileUpload メソッドが動作して状況を処理します。 WorkbookService は Web ブラウザーからイベントを受け取り、ブック全体の状態を追跡します。 WorkbookService.onFileUpload は、コントロールを LoaderService に渡し、ワークブックをメモリに読み込みます。としてファイルアップロードコンポーネントは、アップロードされたファイルを入力ストリーム、LoaderService は LoaderService.fromInputStream メソッドを使用してそれをロードします。

 public void onFileUpload(FileUploadEvent e) {

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

}

上げ下ろし

方法LoaderService.fromInputStreamを読む入力ストリームfileUpload 提供成分のインスタンスを作成com.aspose.cells.Workbookクラス。このインスタンスは、ユーザーが Web ブラウザーでスプレッドシートを表示または編集し続ける限り、メモリに保持されます。ユーザーがエディターを離れるかブラウザーを閉じると、使用されていないインスタンスがメモリから自動的にアンロードされ、サーバーがクリーンに保たれます。

 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;

}

キャッシング

キャッシングは、HTML5 スプレッドシート エディターにとって非常に重要です。すべてがスムーズに機能します。 CellsService は、エディターによって読み込まれたすべてのワークブックのキャッシュ行、列、セル、およびプロパティを保持します。 LoaderService がスプレッドシートを完全にロードすると、スプレッドシートを上から下に読み取り、LoaderService.buildCellsCache、LoaderService.buildColumnWidthCache、LoaderService.buildRowHeightCache を呼び出してキャッシュをいっぱいにします。

     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 からファイルを開くには:

  1. 切り替えるファイルタブ上に。
  2. クリックドロップボックスから開く Dropbox ファイル チューザーを開きます。
  3. まだサインインしていない場合は、Dropbox アカウントにサインインする必要があります。
  4. 目的のファイルに移動し、クリックして選択します。
  5. クリック選ぶ底に。

選択したファイルが Dropbox から開かれます。

todo:画像_代替_文章

使い方?

ドロップボックスから開くボタンの使用Dropbox JavaScript セレクター API Dropbox Chooser ダイアログを開きます。 Chooser は、コールバック関数によってキャプチャされ、サーバーに送り返される、選択されたファイルの URL を提供します。サーバーは URL からスプレッドシートのインスタンスを作成し、いくつかのハウスキーピングを初期化し、DOM の更新をブラウザーに送り返します。ブラウザーは HTML をレンダリングして更新し、ユーザーは読み込まれたドキュメントを編集する準備が整います。

URLから開く

ファイルは URL から直接開くことができます。これにより、ユーザーはインターネット上で公開されているファイルを編集できます。ファイルを開くには追加**?url=場所**希望の値を持つパラメータ**位置**エディタのロード中。例えば:

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

todo:画像_代替_文章

使い方?

起動時にインスタンス化

いつワークシート ビューバックエンド Bean は、JSF によってインスタンス化されます。ポストコンストラクト方法初期化が呼び出され、LoaderService.fromUrl を使用してスプレッドシートをロードします。

キャッシング

キャッシュは、スプレッドシートが読み込まれた直後に発生します。のローダーサービス通話LoaderService.buildCellsCache, LoaderService.buildColumnWidthCacheLoaderService.buildRowHeightCacheスプレッドシートのコンテンツを 1 つずつキャッシュし、すべての操作を高速かつスムーズに保ちます。

DOM の更新

サーバー側でスプレッドシートの準備ができると、JSF コンポーネントを使用して新しい HTML が生成され、Web ブラウザーによってレンダリングされる DOM 更新がユーザーに送信されます。

     @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);

    }

新しいスプレッドシートを作成する

新しい空のスプレッドシートを作成するには:

  1. 切り替えるファイルタブ.
  2. クリック新しいボタン。

エディターは、開いているスプレッドシートがあればそれを閉じ、新しいスプレッドシートを開きます。

todo:画像_代替_文章

使い方?

新しいオブジェクトをインスタンス化する

とき新しいボタンがユーザーによってクリックされ、WorksheetView.loadBlank 、最終的に呼び出しますLoaderService.fromBlank. LoaderService は、空白のスプレッドシートの新しいインスタンスを作成します。

キャッシング

キャッシュは、スプレッドシートが読み込まれた直後に発生します。のローダーサービス通話LoaderService.buildCellsCache, LoaderService.buildColumnWidthCacheLoaderService.buildRowHeightCacheスプレッドシートのコンテンツを 1 つずつキャッシュし、すべての操作を高速かつスムーズに保ちます。

DOM の更新

サーバー側でスプレッドシートの準備ができると、JSF コンポーネントを使用して新しい HTML が生成され、Web ブラウザーによってレンダリングされる DOM 更新がユーザーに送信されます。

     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);

    }

さまざまな形式にエクスポート

ファイルを編集した後、ユーザーは変更を保存したいと思うでしょう。エディタを使用すると、変更したスプレッドシートをエクスポートしてローカル コンピュータにダウンロードできます。ファイルをエクスポートするには:

  1. 切り替えるファイルタブ上に。
  2. クリック輸出ボタンとして。
  3. ドロップダウンから目的の形式を選択します。

変更されたファイルはダウンロード用にエクスポートされます。エクスポートでは、次の形式がサポートされています。

  • エクセル 2007-2013 XLSX
  • エクセル 1997-2003 XLS
  • エクセル XLSM
  • エクセル XLSB
  • エクセル XLTX
  • エクセル XLTM
  • SpreadsheetML
  • PDF形式(PDF)
  • OpenDocument スプレッドシート (ODS)

使い方?

開いたスプレッドシートは、次を使用してユーザー指定の形式に変換されます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);

    }