簡體   English   中英

如何使用 Android 代碼從 Firebase 生成 CSV/Excel 文件

[英]How to generate CSV/ Excel file from Firebase with Android code

我的 android 應用程序中有購物車。 我正在使用 Firebase 作為數據庫。 我想將購物車物品作為 CSV / Excel 文件作為附件郵寄。

首先,您必須從 firebase 中獲取所有數據。

從 Firebase 數據庫讀取數據

然后你必須從數據中生成 csv 文件。

如何在 android 上創建 a.csv

之后,您可以將 csv 文件從其路徑作為郵件附件發送

如何在 Android 中發送帶有文件附件的 email

首先在您的 firebase 項目中安裝 excel4node package,然后將其導入您的 index.js

const xl = require('excel4node');

也導入這些文件處理

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();

這就是您返回 function 的樣子

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;
    });
});

function 返回 firebase 存儲中的文件路徑。 在您的 android 應用程序中:

 //firebase storage reference, result being whats returned from the firebase function
 val fbstore = FirebaseStorage.getInstance().reference.child(result)
 fbstore.getFile(myFile)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM