Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs中的exceljs excel工作表中未填写总数据_Javascript_Node.js_Mongodb_Exceljs - Fatal编程技术网

Javascript nodejs中的exceljs excel工作表中未填写总数据

Javascript nodejs中的exceljs excel工作表中未填写总数据,javascript,node.js,mongodb,exceljs,Javascript,Node.js,Mongodb,Exceljs,我有一个报告任务,其中所有数据都应填写在excel文件中,并应通过邮件从后端发送给客户。我用excel.js编写了一个excel文件,它可以很好地处理较少的数据。若数据更像2000或超过那个obj,那个么所有数据都不会填入excel文件。下面是我尝试过的例子 下面是其中的API router.get('/:type/:fromDate/:toDate',userAuth,(req,res)=>{ if(!req.query.ids) return res.send({'messag

我有一个报告任务,其中所有数据都应填写在excel文件中,并应通过邮件从后端发送给客户。我用excel.js编写了一个excel文件,它可以很好地处理较少的数据。若数据更像2000或超过那个obj,那个么所有数据都不会填入excel文件。下面是我尝试过的例子

下面是其中的API

router.get('/:type/:fromDate/:toDate',userAuth,(req,res)=>{
    if(!req.query.ids) return res.send({'message':'Please send ID as query',statusCode:2});
    let ids = req.query.ids.split(',');
    var workbook = new Excel.Workbook();
    let type = req.params.type
    workbook.creator = ' 32';
    workbook.lastModifiedBy = '321';
    workbook.created = new Date();
    workbook.modified = new Date();
    workbook.views = [{
            x: 0, y: 0, width: 10000, height: 20000,
            firstSheet: 0, activeTab: 1, visibility: 'visible'
    }]
    var reportWorkSheet = workbook.addWorksheet( req.params.type +' Report', {
        pageSetup: { paperSize: 9, orientation: 'landscape' }
    });
    if(type === 'customers'){
        userCustomerReport(req,res ,ids , reportWorkSheet ,workbook );
    } else if(type === 'interactions'){
        userInteractionReport(req ,res, ids , reportWorkSheet ,workbook , req.params.fromDate , req.params.toDate);
    } else if(type === 'allocations'){
        userAllocationReport(req ,res,ids , reportWorkSheet ,workbook);
    } else return res.send({'message':'Please check the request type',statusCode:2});
})



commonColomns = () => ([
    { header: 'Customer Name', key: 'cName', width: 25, style: { font: { size: 12 } } },
    { header: 'Customer Phone', key: 'cPhone', width: 35, style: { font: { size: 12 } } },
    { header: 'Customer Email', key: 'cEmail', width: 35, style: { font: { size: 12 } } },
    { header: 'Customer Company Name', key: 'cCompName', width: 18, style: { font: { size: 12 } } },
    { header: 'Assigned to name', key: 'assignedTName', width: 18, style: { font: { size: 12 } } },
    { header: 'Assigned from name ', key: 'assignedFName', width: 20, style: { font: { size: 12 } } }
]);


// here i am generation all JSON data .

function  userInteractionReport(req ,res , ids ,reportWorkSheet , workbook , fromDate , toDate) {
    let idString = req.query.ids.split(',');
    let id =[];
    idString.forEach(element => {id.push(new ObjectID(element));});
    Interaction.aggregate([
        { $match:{$or: [{"assigned.toId":{$in:id}},{"assigned.fromId":{$in:id}}] ,createdTimeStamp : {$gte:Number(fromDate),$lt:Number(toDate)}} },
        { "$project": {
            "assigned": 1,
            "type": 1,
            "priority": 1,
            "customer": 1,
            "customFields": 1,
            "dateTime": 1,
            "notes":1,
            "length": { "$size": "$customFields" }
        }},
        { "$sort": { "length": -1 } },
    ])
    .then((interactions)=>{
        if(!interactions[0]){
            return res.send({'message':'No data found',statusCode:1 , "data":0})
        }
        let columns = commonColomns();
            columns.push({ header: 'type', key: 'type', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'priority', key: 'priority', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'Company Address', key: 'cAddress', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'Key Decision Maker Name', key: 'kdm', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'Key Decision Maker Phone', key: 'kdmPhone', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'Date', key: 'dateTime', width: 25, style: { font: { size: 12 } } });
            columns.push({ header: 'Notes', key: 'notes', width: 25, style: { font: { size: 12 } } });
            for (let i = 0; i < interactions[0].customFields.length; i++) {
                columns.push({ header: interactions[0].customFields[i].dName , key: interactions[0].customFields[i].dName, width: 25, style: { font: { size: 12 } } });
            }
            reportWorkSheet.columns = columns;
            interactions.forEach(interaction => {
                let  assignedTo  = interaction.assigned.toName ? interaction.assigned.toName : '';
                let  assignedFrom  = interaction.assigned.fromName ? interaction.assigned.fromName : '';
                let  companyName = interaction.customer.company ? interaction.customer.company.name : '';
                let  cAddress ;
                let  kdm,kdmPhone ;
                if(interaction.customer.company.address){
                    let companyAddress = interaction.customer.company.address ;           
                    cAddress = companyAddress.street ? companyAddress.street+' ,' : '' ;
                    cAddress = cAddress + (companyAddress.city ? companyAddress.city + ' ,' :'' );
                    cAddress = cAddress + (companyAddress.state ? companyAddress.state +' ,' :'') ;
                    cAddress = cAddress+ (companyAddress.country ? companyAddress.country+' ,':'') ;
                    cAddress = cAddress + (companyAddress.pincode ? companyAddress.pincode +' ,' :'');                    
                }

                if(interaction.customer.company.kdm){
                    kdm = interaction.customer.company.kdm.fName;
                    kdmPhone =  interaction.customer.company.kdm.phone;
                }

                let row = {
                    cName:interaction.customer.fName || '' + ' '+interaction.customer.lName || '',
                    cPhone : interaction.customer.phone.join(','),
                    assignedTName : assignedTo,
                    assignedFName : assignedFrom,
                    cEmail : interaction.email || ' ',
                    source : interaction.source || '',
                    type : interaction.type || '',
                    dateTime : interaction.dateTime ? new Date(interaction.dateTime) : '',
                    notes : interaction.notes || '',
                    priority : interaction.priority === 1 ? "High" : interaction.priority === 2 ? "Medium" : interaction.priority === 3 ? "Low" : " " ,
                    status : interaction.status||'',
                    cCompName : companyName,
                    cAddress : cAddress,
                    kdm :kdm,
                    kdmPhone:kdmPhone
                }

                for (let i = 0; i < interaction.customFields.length; i++) {
                    row[interaction.customFields[i].dName] = interaction.customFields[i].type === "dateTime" ? moment(interaction.customFields[i].value).format('l, h:mm:ss a')  : interaction.customFields[i].value || " ";
                }

                reportWorkSheet.addRow(row);
            });
            return interactions;
    }).then((interactions)=>{
        writeWorkbook(workbook , req);
        res.send({"messgae":"report send sucessfully" , "statusCode":0 ,"data":""})
    }).catch((e)=>{
        console.log(e);
    })
}


function writeWorkbook(workbook , req) {
    workbook.xlsx.writeFile('templates/excel/Report.xlsx')
    .then(function () {
        sendMail(req);
        console.log("report send successfully ");
    });
}
router.get('/:type/:fromDate/:toDate',userAuth,(req,res)=>{
如果(!req.query.ids)返回res.send({'message':'Please send ID as query',statusCode:2});
让ids=req.query.ids.split(',');
var workbook=新建Excel.workbook();
let type=req.params.type
workbook.creator='32';
workbook.lastModifiedBy='321';
workbook.created=新日期();
workbook.modified=新日期();
工作簿。视图=[{
x:0,y:0,宽:10000,高:20000,
第一页:0,活动选项卡:1,可见性:“可见”
}]
var reportWorkSheet=workbook.addWorksheet(req.params.type+'Report'{
页面设置:{纸张大小:9,方向:'横向'}
});
如果(类型==‘客户’){
userCustomerReport(req、res、ids、报告工作表、工作簿);
}else if(类型===‘交互’){
userInteractionReport(req、res、ids、报告工作表、工作簿、req.params.fromDate、req.params.toDate);
}else if(类型===‘分配’){
用户分配报告(req、res、ids、报告工作表、工作簿);
}else返回res.send({'message':'Please check the request type',statusCode:2});
})
公共列=()=>([
{标题:'Customer Name',键:'cName',宽度:25,样式:{font:{size:12}}},
{标题:'Customer Phone',键:'cPhone',宽度:35,样式:{font:{size:12}}},
{标题:'Customer Email',键:'cEmail',宽度:35,样式:{font:{size:12}}},
{标题:“客户公司名称”,键:“cCompName”,宽度:18,样式:{font:{size:12}},
{header:'Assigned to name',key:'assignedTName',宽度:18,样式:{font:{size:12}}},
{标题:'Assigned from name',键:'assignedFName',宽度:20,样式:{font:{size:12}}}
]);
//这里我生成所有JSON数据。
函数userInteractionReport(req、res、ids、报告工作表、工作簿、fromDate、toDate){
让idString=req.query.ids.split(',');
设id=[];
idString.forEach(element=>{id.push(newobjectid(element));});
交互作用([
{$match:{$or:[{“assigned.toId”:{$in:id},{“assigned.fromId”:{$in:id}],createdTimeStamp:{$gte:Number(fromDate),$lt:Number(toDate)},
{“$project”:{
“指派”:1,
“类型”:1,
"优先":一,,
“客户”:1,
“自定义字段”:1,
“日期时间”:1,
“注”:1,
“长度”:{“$size”:“$customFields”}
}},
{“$sort”:{“length”:-1},
])
.然后((交互)=>{
如果(!交互[0]){
返回res.send({'message':'No data found',状态码:1,“data:0})
}
设columns=commoncolumns();
push({header:'type',key:'type',width:25,style:{font:{size:12}}});
push({header:'priority',key:'priority',width:25,style:{font:{size:12}}});
push({header:'Company Address',key:'cadAddress',宽度:25,样式:{font:{size:12}}});
push({header:'Key Decision Maker Name',Key:'kdm',宽度:25,样式:{font:{size:12}}});
push({header:'Key Decision Maker Phone',Key:'kdmPhone',宽度:25,样式:{font:{size:12}}});
push({header:'Date',key:'dateTime',宽度:25,样式:{font:{size:12}}});
push({header:'Notes',key:'Notes',宽度:25,样式:{font:{size:12}}});
for(设i=0;i{
让assignedTo=interaction.assigned.toName?interaction.assigned.toName:“”;
让assignedFrom=interaction.assigned.fromName?interaction.assigned.fromName:“”;
让companyName=interaction.customer.company?interaction.customer.company.name:“”;
让球童穿;
让kdm,kdmPhone;
if(交互、客户、公司、地址){
让companyAddress=interaction.customer.company.address;
cAddress=companyAddress.street?companyAddress.street+',':';
CadAddress=CadAddress+(companyAddress.city?companyAddress.city+,':');
CadAddress=CadAddress+(companyAddress.state?companyAddress.state+”,“:”;
CadAddress=CadAddress+(companyAddress.country?companyAddress.country+,':');
CadAddress=CadAddress+(companyAddress.pincode?companyAddress.pincode+,':');
}
if(interaction.customer.company.kdm){
kdm=interaction.customer.company.kdm.fName;
kdmPhone=interaction.customer.company.kdm.phone;
}
让行={
cName:interaction.customer.fName | | |“+”+interaction.customer.lName | |”,
cPhone:interaction.customer.phone.join(“,”),
assignedTName:assignedTo,
assignedFName:assignedFrom,
cEmail:interaction.email | |'',
来源:interaction.source | |“”,
 // pipe from stream
 const workbook = new Excel.Workbook()
 workbook.useSharedStrings = false

 stream.pipe(workbook.xlsx.createInputStream())