Working with GridJs Server Side
Contents
[
Hide
]
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 the storage detail ,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 is exist
String filepath = Paths.get(Config.getFileCacheDirectory(), "streamcache", uid.replace('/', '.')).toString();
try (FileOutputStream fos = new FileOutputStream(filepath.toString())) {
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 implemention.
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 detail info ,you can check the example here: https://github.com/aspose-cells/Aspose.Cells-for-java/tree/master/Examples_GridJs