Hesap Tablosu Düzenleyicisi - Dosyalarla Çalışma
İçindekiler
- Desteklenen Dosyalar
- Yerel Dosyaları Aç
- LoaderService.buildColumnWidthCache
- LoaderService.buildRowHeightCache
- Dropbox’tan aç
- URL’den aç
- LoaderService.fromUrl
- LoaderService.buildCellsCache
- LoaderService.buildColumnWidthCache
- LoaderService.buildRowHeightCache
- Yeni Bir Elektronik Tablo Oluşturun
- LoaderService.fromBlank
- buildCellsCache
- buildColumnWidthCache
- buildRowHeightCache
- Çeşitli Biçimlerde Dışa Aktarma
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:
- ÇevirmekDosya sekmesi üstte
- TıklamakBilgisayardan aç Gözat iletişim kutusunu açmak için
- İstediğiniz dosya konumuna gidin.
- Seçmek için istediğiniz dosyayı tıklayın.
- TıklamakAçık.
Dosya düzenleyicide açılacaktır.
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:
- ÇevirmekDosya sekmesi üstte
- TıklamakDropbox’tan aç Dropbox dosya seçiciyi açmak için.
- Henüz oturum açmadıysanız, Dropbox hesabınızda oturum açmanız gerekir.
- İstediğiniz dosyaya gidin ve seçmek için tıklayın.
- TıklamakSeçmek altta.
Seçtiğiniz dosya Dropbox’tan açılacaktır.
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
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:
- ÇevirmekDosya sekmesi.
- TıklaYeni buton.
Düzenleyici, varsa açılan elektronik tabloyu kapatır ve yeni bir hesap tablosu açar.
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:
- ÇevirmekDosya sekmesi üstte
- Tıklamakİhracat düğme olarak.
- 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);
}