Working with GridJs Server Side

Working with GridJs Server Side

0. Set the right folder path in Config

Config.setFileCacheDirectory for the workbook cache file (required).
Config.setPictureCacheDirectory for the image files cache in the workbook (optional, the default value is _piccache in the file cache directory).

For storage details, please check this guide.

1. Implement GridCacheForStream

For local file storage, here is an example:

public class LocalFileCache extends GridCacheForStream {

    @Override
    public void saveStream(InputStream s, String uid) {
        // make sure the directory exists
        String filepath = Paths.get(Config.getFileCacheDirectory(), "streamcache", uid.replace('/', '.')).toString();
        try (FileOutputStream fos = new FileOutputStream(filepath)) {
            s.reset(); // Equivalent to s.Position = 0 in C#
            byte[] buffer = new byte[1024];
            int length;
            while ((length = s.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
            fos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public InputStream loadStream(String uid) {
        String filepath = Paths.get(Config.getFileCacheDirectory(), "streamcache", uid.replace('/', '.')).toString();
        try {
            return new FileInputStream(filepath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public boolean isExisted(String uid) {
        String filepath = Paths.get(Config.getFileCacheDirectory(), "streamcache", uid.replace('/', '.')).toString();
        return Files.exists(Paths.get(filepath));
    }

    @Override
    public String getFileUrl(String uid) {
        return "/GridJs2/GetFileUseCacheStream?id=" + uid;
    }
}

2. Write JSON from the spreadsheet file to the response stream.

GridJsWorkbook wbj = new GridJsWorkbook();
try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(response.getOutputStream())) {
    wbj.importExcelFile(filePath.toString());
    wbj.jsonToStream(gzipOutputStream, filename);
} catch (IOException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

3. Get the images/shapes from the spreadsheet file

// GridJs will automatically zip all the images/shapes into a zip stream and store it in cache using the cache implementation.
InputStream inputStream = GridJsWorkbook.CacheImp.loadStream(fileid);

4. Update spreadsheet file in cache

GridJsWorkbook gwb = new GridJsWorkbook();
// p is the update JSON, uid is the unique ID for the spreadsheet
String ret = gwb.updateCell(p, uid);

5. Save spreadsheet file in cache

GridJsWorkbook wb = new GridJsWorkbook();
// p is the update JSON, uid is the unique ID for the spreadsheet
wb.mergeExcelFileFromJson(uid, p);
wb.saveToCacheWithFileName(uid, filename, password);

For detailed info, you can check the example here:
https://github.com/aspose-cells/Aspose.Cells.Grid-for-Java/tree/master/Examples_GridJs