Travailler avec GridJs côté serveur
Contents
[
Hide
]
Travailler avec GridJs côté serveur
0. définir le bon chemin du dossier dans Config
Config.setFileCacheDirectory
pour le fichier cache du classeur (obligatoire).
Config.setPictureCacheDirectory
pour les fichiers cache d’images dans le classeur (optionnel, la valeur par défaut est _piccache dans le répertoire de fichier cache).
pour les détails de stockage, veuillez consulter ce guide
1. Implémenter GridCacheForStream
Pour le stockage de fichiers local, voici un exemple :
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. Écrire du JSON à partir du fichier de feuille de calcul dans le flux de réponse.
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. Obtenir les images/formes à partir du fichier de tableur.
//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. Mettre à jour le fichier de tableur en 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. Sauvegarder le fichier de tableur en 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);
Pour plus d’informations, vous pouvez consulter l’exemple ici : https://github.com/aspose-cells/Aspose.Cells-for-java/tree/master/Examples_GridJs