0

I'm very new to salesforce and lwc , i'm trying to Export some static and some dynamic data in a csv using LWC Salesforce and succeeded in that( except with a new column has been added from the second line .) ![enter image description here

In the above image : There are two issues i'm facing :

  • 1.First row (A1) name needs to be just Name . i have passed just 'Name',You can see in below code s=[] ( Undefined is added automatically ).Due to the lwc example i'm using . I need some help in removing unwanted code.
  • 2.From the second row , Unwanted column is being added, Whenever i used '\n' to change row . The following is the lwc code**

.

/ Row 1 : Static Data (so adding directly in array S[]) /

` exportToCSV() {  

let s =["Name","Example Data","Field Type","Data Category","Data Category Definition","Data Classification"]; 
                            ==>  [this.columnHeaderLists1] ==> Data from Apex 
          for(let d in this.columnHeaderLists1){
        s.push("\"" + this.columnHeaderLists1[d] + "\"");
      }
      s.push("\n");

****/*  Row 2 :Dynaimic data fetching from Apex using Lwc Wire */****
      for(let key in this.columnHeaderList){
        let t;              ==> [this.columnHeaderLists] ==> Data from Apex
        t = this.columnHeaderList[key].subcolumn;
        for(let key in t){
          s.push("\"" + t[key] + "\"");
      }
      
    }
    s.push("\n");
   
    }
  

    //Passing the s[] to column headers 
          let columnHeader = s;
 **[ I'm not using the belowc code , which requires a pojo*/  /* Our code has data from multiple queries so , it is complex to add a pojo and utilize the below code ]**
        let jsonKeys = [];
          var jsonRecordsData = []; 
          console.log('length ',jsonRecordsData.length);
          let csvIterativeData;  
          let csvSeperator  
          let newLineCharacter;  
          csvSeperator = ",";  
          newLineCharacter = "\n";  
         // csvIterativeData = "";  
          csvIterativeData += columnHeader.join(csvSeperator);  
          csvIterativeData += newLineCharacter;  
          for (let i = 0; i < jsonRecordsData.length; i++) {  
            let counter = 0;  
            for (let iteratorObj in jsonKeys) {  
              let dataKey = jsonKeys[iteratorObj];  
              if (counter > 0) {  csvIterativeData += csvSeperator;  }  
              if (  jsonRecordsData[i][dataKey] !== null &&  
                jsonRecordsData[i][dataKey] !== undefined  
              ) {  csvIterativeData += '"' + jsonRecordsData[i][dataKey] + '"';  
              } else {  csvIterativeData += '""';  
              }  
              counter++;  
            }  
            csvIterativeData += newLineCharacter;  
          }  
          console.log("csvIterativeData", csvIterativeData);  
          this.hrefdata = "data:text/csv;charset=utf-8," + encodeURI(csvIterativeData);  
        }     }`

Exaplanation:

We are basically passing the data to array S[] (using s.push) . We have pushed data to row . After 1 row of data we are using '\n' to go new line . . Right after using '\n' cursor is movng to next row and also an empty column is being created in the next row. (Can be observed from row:2) 1.In row2 we need to pass data from A2 . But Due to empty column . Data is populating from B2. I need help in resolving this . Is that a right approach of passing values to the csv Desired Out-put : enter image description here Any suggestion is appreciated , Thankyou .

4
  • Hi Tarun, Please use the edit tools to format your code properly. – Rahul Gawale Nov 6 '20 at 8:25
  • Could you edit to show an example of what a complete outcome is supposed to look like? I don't understand this multi-level header thing you have going on. – David Reed Nov 6 '20 at 15:06
  • Note also that your CSV generation is missing large parts of the CSV spec (such as it is). You are failing to handle embedded quotes and commas, in particular. Consider using a popular library like PapaParse instead of reinventing the wheel. – David Reed Nov 6 '20 at 15:07
  • Hi , Thanks for the response . Apologize for not explaining it right , i have edited and added explanation of what is happenning and what is desired output . Any suggestion would be helpful . Thankyou. – Tarun teja Nov 6 '20 at 18:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.