首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Android代码从Firebase生成CSV/ Excel文件

如何用Android代码从Firebase生成CSV/ Excel文件
EN

Stack Overflow用户
提问于 2019-09-30 19:31:56
回答 2查看 1.2K关注 0票数 0

我的android应用程序中有购物车。我使用Firebase作为数据库。我想以CSV / Excel文件作为附件邮寄购物车项目。

EN

Stack Overflow用户

发布于 2019-11-17 12:48:28

首先在你的firebase项目中安装excel4node包,然后在你的index.js中导入

代码语言:javascript
运行
复制
const xl = require('excel4node');

还要导入这些文件以进行文件处理

代码语言:javascript
运行
复制
const os = require('os');
const path = require('path');
const fs = require('fs');
const tempFilePath = path.join(os.tmpdir(), 'Excel.xlsx');
const storage = admin.storage();
const bucket = storage.bucket();

这就是返回函数应该是什么样子

代码语言:javascript
运行
复制
exports.writeFireToExcel = functions.https.onCall(async(data, context) => {

    // Create a new instance of a Workbook class
    const workbook = new xl.Workbook();
    // Add Worksheets to the workbook
    const worksheet = workbook.addWorksheet('Visa Work List');

    const ref = firebaseDb.ref('path');

    //firebase functions that return stuff must be done in a transactional way

    //start by getting snap
    return await ref.once('value').then(snapshot =>{

    var style = workbook.createStyle({
        font: {
          bold : true,
        },
      });

    //write workbook
        worksheet.cell(1, 1).string('input').style(style);
        //....write the rest of your excel
        return
        //
    }).then(function (){
        console.log('workbook filled');
        //second part of transation - write the excel file to the temp storage in firebase
        //workbook.write doesnt return a promise so ive turned it into a promise function
        return new Promise((resolve,reject) =>{
            workbook.write(tempFilePath, function (err, stats) {
                if (err) {
                    console.error(err);
                    reject(err)
                }else{
                    resolve()
                }
            });
        })
    }).then(function(){
        console.log("File written to: " + tempFilePath);
        //read the file and check it exists
        return new Promise((resolve,reject) =>{
            fs.readFile(tempFilePath, function (err, data) {
                if (err) {
                    reject(err)
                }else{
                    resolve()
                }
            })

        })

    }).then(function(){
        console.log("writing to bucket");
        //write the file to path in firebase storage 
        var fileName = 'VisaSummaryList.xlsx';
        var folderPath = uid + "/excelFile/";
        var filePathString = folderPath + fileName;

        return bucket.upload(tempFilePath, 
            { destination: filePathString}).then(function(){
                return filePathString;
            })

    }).catch(err => {
        throw err;
    });
});

此函数返回firebase存储中的文件路径。在你的android应用程序中,只需:

代码语言:javascript
运行
复制
 //firebase storage reference, result being whats returned from the firebase function
 val fbstore = FirebaseStorage.getInstance().reference.child(result)
 fbstore.getFile(myFile)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58167067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档