Missing data in csv file after export data from JSON response #3273

Open
opened 2025-01-16 06:10:15 +00:00 by Aiman1017 · 7 comments

NOTE: This is a bug in the Chromium engine (powering Chrome and Edge). SheetJS team members have reported the issue to the Chromium project: https://issues.chromium.org/issues/390568195 . It will take time for the browser vendors to roll out a patch. Some mitigation strategies have been mentioned in this issue thread and in the SheetJS Chat


Hi everyone,

Currently I am having missing data issue after I export the json data into the csv file.

This is the first time it happens. Please refer to picture below:
image

And the JSON response looks like below:
{"response":"Success","message":[{"HERO_CASE_ID":"H-2501156207","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653341432","TT_NUM":"1-26653341432","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:11:15.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:44:50.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:44:50.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T02:57:14.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"},{"HERO_CASE_ID":"H-2501151185","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653468021","TT_NUM":"1-26653468021","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:09:54.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:22:24.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:22:24.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T01:06:34.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"}]

My logic looks like below:

JSON - Excel data mapping and manipulation:

function DataForReport2(apiData) {
    let reportData = apiData.map(data => ({
        HERO_CASE_ID: data.HERO_CASE_ID,
        CUSTOMER_NAME: data.CUST_NAME,
        DESCRIPTION: (data?.DESCRIPTION ?? '').replaceAll('\n', '<br>').replace(/^[-]/, "'-"),
        HERO_LOGGER: data.HERO_LOGGER,
        HERO_LOGGER_ID: data.HERO_LOGGER_ID,
        HERO_STATE: data.HERO_STATE,
        AREA_LOCATION: data.AREA_LOCATION,
        CASE_STATUS: data.CASE_STATUS,
        CASE_TYPE: data.CASE_TYPE,
        VIP: data.VIP,
        PACKAGE_NAME: data.PACKAGE_NAME,
        PRODUCT: data.PRODUCT,
        SEGMENT: data.SEGMENT,
        CASE_OWNER: data.CASE_OWNER,
        GROUP: data.GROUP_,
        SR_NUM: data.SR_NUM,
        TT_NUM: data.TT_NUM,
        UPDATE_REMARKS: (data?.UPDATE_REMARKS ?? '').replaceAll('\n', '<br>').replace(/^[-]/, "'-"),
        CLOSURE_TYPE: data.CLOSURE_TYPE,
        CREATED_DATE: (data?.CREATED_DATE == null) ? moment(data.CREATED_DATE).format('DD/MM/YYYY h:mm:ss a') : null,
        MONTH_YEAR: data.MONTH_YEAR,
        AGING_CLOSED: data.AGING_CLOSED,
        CLOSED_DATE: (data?.CLOSED_DATE == null) ? moment(data.CLOSED_DATE).format('DD/MM/YYYY h:mm:ss a') : null,
        AGING_UNASSIGNED: data.AGING_UNASSIGNED,
        DATE_UNASSIGNED: (data?.DATE_UNASSIGNED == null) ? moment(data.DATE_UNASSIGNED).format('DD/MM/YYYY h:mm:ss a') : null,
        AGING_ASSIGNED: data.AGING_ASSIGNED,
        ASSIGNED_DATE: (data?.ASSIGNED_DATE == null) ? moment(data.ASSIGNED_DATE).format('DD/MM/YYYY h:mm:ss a') : null,
        AGING_INPROGRESS: data.AGING_INPROGRESS,
        INPROGRESS_DATE: (data?.INPROGRESS_DATE == null) ? moment(data.INPROGRESS_DATE).format('DD/MM/YYYY h:mm:ss a') : null,
        AGING_CANCELLED: data.AGING_CANCELLED,
        CANCELLED_DATE: (data?.CANCELLED_DATE == null) ? moment(data.CANCELLED_DATE).format('DD/MM/YYYY h:mm:ss a') : null,
        AGING: data.AGING,
        RATING: data.RATING,
        FLAG: data.FLAG,
        CKC: data.CKC,
        CKC_NUM: data.CKC_NUM,
        EXT_SYS_REF: data.EXT_SYS_REF,
        STAKEHOLDER_REF: data.STAKEHOLDER_REF
    }));

    return reportData;
}

UI Logic

`const getReport = async (type) => {
await DashboardService.dailyReport(enqueueSnackbar, closeSnackbar, token, type).then(res => {
console.log(res.data.message);

        if (res.status !== 200) return;
        let getFilename = (type) => {
            if (type === 'daily') return 'HERO-DAILY-REPORT.csv'
            if (type === 'weekly') return 'HERO-WEEKLY-REPORT.csv'
            if (type === 'current-month') return `HERO-MONTHLY-REPORT(${moment().format('MMMM')}).csv`
            if (type === 'last-month') return `HERO-MONTHLY-REPORT(${moment().subtract(1, 'months').format('MMMM')}).csv`
            if (type === 'last-3-month') return `HERO-MONTHLY-REPORT(${moment().subtract(3, 'months').format('MMMM')} - ${moment().format('MMMM')}).csv`
            if (type === 'last-6-month') return `HERO-MONTHLY-REPORT(${moment().subtract(5, 'months').format('MMMM')} - ${moment().format('MMMM')}).csv`
            else return 'HERO-REPORT.csv'
        }
        // const rows = DataForReport(res.data.message);
        const rows = DataForReport2(res.data.message);
        const fileName = getFilename(type);

        // create workbook and worksheet
        const workbook = XLSX.utils.book_new();
        const worksheet = XLSX.utils.json_to_sheet(rows, {range:1});

        XLSX.utils.book_append_sheet(workbook, worksheet, "Reporting");

        XLSX.writeFile(workbook, fileName)
    })
}`

Please not that this logic is in React JS project.

NOTE: **This is a bug in the Chromium engine (powering Chrome and Edge)**. SheetJS team members have reported the issue to the Chromium project: https://issues.chromium.org/issues/390568195 . It will take time for the browser vendors to roll out a patch. Some mitigation strategies have been mentioned in this issue thread and in the [SheetJS Chat](https://sheetjs.com/chat) --- Hi everyone, Currently I am having missing data issue after I export the json data into the csv file. This is the first time it happens. Please refer to picture below: ![image](/attachments/c46896b1-2f7b-49bc-b6e4-95a16666d257) And the JSON response looks like below: `{"response":"Success","message":[{"HERO_CASE_ID":"H-2501156207","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653341432","TT_NUM":"1-26653341432","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:11:15.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:44:50.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:44:50.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T02:57:14.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"},{"HERO_CASE_ID":"H-2501151185","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653468021","TT_NUM":"1-26653468021","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:09:54.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:22:24.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:22:24.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T01:06:34.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"}]` My logic looks like below: JSON - Excel data mapping and manipulation: ``` function DataForReport2(apiData) { let reportData = apiData.map(data => ({ HERO_CASE_ID: data.HERO_CASE_ID, CUSTOMER_NAME: data.CUST_NAME, DESCRIPTION: (data?.DESCRIPTION ?? '').replaceAll('\n', '<br>').replace(/^[-]/, "'-"), HERO_LOGGER: data.HERO_LOGGER, HERO_LOGGER_ID: data.HERO_LOGGER_ID, HERO_STATE: data.HERO_STATE, AREA_LOCATION: data.AREA_LOCATION, CASE_STATUS: data.CASE_STATUS, CASE_TYPE: data.CASE_TYPE, VIP: data.VIP, PACKAGE_NAME: data.PACKAGE_NAME, PRODUCT: data.PRODUCT, SEGMENT: data.SEGMENT, CASE_OWNER: data.CASE_OWNER, GROUP: data.GROUP_, SR_NUM: data.SR_NUM, TT_NUM: data.TT_NUM, UPDATE_REMARKS: (data?.UPDATE_REMARKS ?? '').replaceAll('\n', '<br>').replace(/^[-]/, "'-"), CLOSURE_TYPE: data.CLOSURE_TYPE, CREATED_DATE: (data?.CREATED_DATE == null) ? moment(data.CREATED_DATE).format('DD/MM/YYYY h:mm:ss a') : null, MONTH_YEAR: data.MONTH_YEAR, AGING_CLOSED: data.AGING_CLOSED, CLOSED_DATE: (data?.CLOSED_DATE == null) ? moment(data.CLOSED_DATE).format('DD/MM/YYYY h:mm:ss a') : null, AGING_UNASSIGNED: data.AGING_UNASSIGNED, DATE_UNASSIGNED: (data?.DATE_UNASSIGNED == null) ? moment(data.DATE_UNASSIGNED).format('DD/MM/YYYY h:mm:ss a') : null, AGING_ASSIGNED: data.AGING_ASSIGNED, ASSIGNED_DATE: (data?.ASSIGNED_DATE == null) ? moment(data.ASSIGNED_DATE).format('DD/MM/YYYY h:mm:ss a') : null, AGING_INPROGRESS: data.AGING_INPROGRESS, INPROGRESS_DATE: (data?.INPROGRESS_DATE == null) ? moment(data.INPROGRESS_DATE).format('DD/MM/YYYY h:mm:ss a') : null, AGING_CANCELLED: data.AGING_CANCELLED, CANCELLED_DATE: (data?.CANCELLED_DATE == null) ? moment(data.CANCELLED_DATE).format('DD/MM/YYYY h:mm:ss a') : null, AGING: data.AGING, RATING: data.RATING, FLAG: data.FLAG, CKC: data.CKC, CKC_NUM: data.CKC_NUM, EXT_SYS_REF: data.EXT_SYS_REF, STAKEHOLDER_REF: data.STAKEHOLDER_REF })); return reportData; } ``` UI Logic `const getReport = async (type) => { await DashboardService.dailyReport(enqueueSnackbar, closeSnackbar, token, type).then(res => { console.log(res.data.message); if (res.status !== 200) return; let getFilename = (type) => { if (type === 'daily') return 'HERO-DAILY-REPORT.csv' if (type === 'weekly') return 'HERO-WEEKLY-REPORT.csv' if (type === 'current-month') return `HERO-MONTHLY-REPORT(${moment().format('MMMM')}).csv` if (type === 'last-month') return `HERO-MONTHLY-REPORT(${moment().subtract(1, 'months').format('MMMM')}).csv` if (type === 'last-3-month') return `HERO-MONTHLY-REPORT(${moment().subtract(3, 'months').format('MMMM')} - ${moment().format('MMMM')}).csv` if (type === 'last-6-month') return `HERO-MONTHLY-REPORT(${moment().subtract(5, 'months').format('MMMM')} - ${moment().format('MMMM')}).csv` else return 'HERO-REPORT.csv' } // const rows = DataForReport(res.data.message); const rows = DataForReport2(res.data.message); const fileName = getFilename(type); // create workbook and worksheet const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.json_to_sheet(rows, {range:1}); XLSX.utils.book_append_sheet(workbook, worksheet, "Reporting"); XLSX.writeFile(workbook, fileName) }) }` Please not that this logic is in React JS project.

@Aiman1017 we have exeactly the same problem, also with exporting to xlsx workbooks. Is it also for you that this error is only happening since a few days/ hours?

@Aiman1017 we have exeactly the same problem, also with exporting to xlsx workbooks. Is it also for you that this error is only happening since a few days/ hours?
Owner

Here is a simple smoke test using your data which seems to work correctly (it generates 2 data rows and the header row): https://jsfiddle.net/6v08fyz7/

Code (click to show)
var data = {"response":"Success","message":[{"HERO_CASE_ID":"H-2501156207","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653341432","TT_NUM":"1-26653341432","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:11:15.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:44:50.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:44:50.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T02:57:14.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"},{"HERO_CASE_ID":"H-2501151185","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653468021","TT_NUM":"1-26653468021","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:09:54.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:22:24.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:22:24.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T01:06:34.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"}]}
var ws = XLSX.utils.json_to_sheet(data.message);
var csv = XLSX.utils.sheet_to_csv(ws);
console.log(csv)

To be sure, data.message.length is 2 so the expected number of rows is 3. The actual output is shown below:

Result (click to show)
HERO_CASE_ID,CUST_NAME,DESCRIPTION,HERO_LOGGER,HERO_LOGGER_ID,HERO_STATE,AREA_LOCATION,CASE_STATUS,CASE_TYPE,VIP,PACKAGE_NAME,PRODUCT,SEGMENT,CASE_OWNER,GROUP_,SR_NUM,TT_NUM,UPDATE_REMARKS,CLOSURE_TYPE,CREATED_DATE,MONTH_YEAR,AGING_CLOSED,CLOSED_DATE,AGING_UNASSIGNED,DATE_UNASSIGNED,AGING_ASSIGNED,ASSIGNED_DATE,AGING_INPROGRESS,INPROGRESS_DATE,AGING_CANCELLED,CANCELLED_DATE,AGING,RATING,FLAG,CKC,CKC_NUM,EXT_SYS_REF,STAKEHOLDER_REF
H-2501156207,Khairul Fahmi Bin Mohd Faudzi,Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ,KHAIRUL FAHMI BIN MOHD FAUDZI,TM37246,Johor,Johor,IN-PROGRESS,Caution Report,,,Others,,,CSM HQ,1-26653341432,1-26653341432,,,2025-01-15T15:11:15.000Z,January 2025,,,1,2025-01-16T00:44:50.000Z,0,2025-01-16T00:44:50.000Z,0,2025-01-16T02:57:14.000Z,,,1,0,COMPLAINT,N,,,PRODUCT
H-2501151185,Khairul Fahmi Bin Mohd Faudzi,Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ,KHAIRUL FAHMI BIN MOHD FAUDZI,TM37246,Johor,Johor,IN-PROGRESS,Caution Report,,,Others,,,CSM HQ,1-26653468021,1-26653468021,,,2025-01-15T15:09:54.000Z,January 2025,,,1,2025-01-16T00:22:24.000Z,0,2025-01-16T00:22:24.000Z,0,2025-01-16T01:06:34.000Z,,,1,0,COMPLAINT,N,,,PRODUCT

@Aiman1017 @patriksimms At this point, we need more details to determine if there is an issue on the SheetJS side. Please join the SheetJS Chat

Here is a simple smoke test using your data which seems to work correctly (it generates 2 data rows and the header row): https://jsfiddle.net/6v08fyz7/ <details><summary><b>Code</b> (click to show)</summary> ```js var data = {"response":"Success","message":[{"HERO_CASE_ID":"H-2501156207","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653341432","TT_NUM":"1-26653341432","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:11:15.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:44:50.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:44:50.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T02:57:14.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"},{"HERO_CASE_ID":"H-2501151185","CUST_NAME":"Khairul Fahmi Bin Mohd Faudzi","DESCRIPTION":"Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ","HERO_LOGGER":"KHAIRUL FAHMI BIN MOHD FAUDZI","HERO_LOGGER_ID":"TM37246","HERO_STATE":"Johor","AREA_LOCATION":"Johor","CASE_STATUS":"IN-PROGRESS","CASE_TYPE":"Caution Report","VIP":null,"PACKAGE_NAME":"","PRODUCT":"Others","SEGMENT":null,"CASE_OWNER":null,"GROUP_":"CSM HQ","SR_NUM":"1-26653468021","TT_NUM":"1-26653468021","UPDATE_REMARKS":null,"CLOSURE_TYPE":null,"CREATED_DATE":"2025-01-15T15:09:54.000Z","MONTH_YEAR":"January 2025","AGING_CLOSED":null,"CLOSED_DATE":null,"AGING_UNASSIGNED":1,"DATE_UNASSIGNED":"2025-01-16T00:22:24.000Z","AGING_ASSIGNED":0,"ASSIGNED_DATE":"2025-01-16T00:22:24.000Z","AGING_INPROGRESS":0,"INPROGRESS_DATE":"2025-01-16T01:06:34.000Z","AGING_CANCELLED":null,"CANCELLED_DATE":null,"AGING":1,"RATING":0,"FLAG":"COMPLAINT","CKC":"N","CKC_NUM":"","EXT_SYS_REF":"","STAKEHOLDER_REF":"PRODUCT"}]} var ws = XLSX.utils.json_to_sheet(data.message); var csv = XLSX.utils.sheet_to_csv(ws); console.log(csv) ``` </details> To be sure, `data.message.length` is 2 so the expected number of rows is 3. The actual output is shown below: <details><summary><b>Result</b> (click to show)</summary> ```csv HERO_CASE_ID,CUST_NAME,DESCRIPTION,HERO_LOGGER,HERO_LOGGER_ID,HERO_STATE,AREA_LOCATION,CASE_STATUS,CASE_TYPE,VIP,PACKAGE_NAME,PRODUCT,SEGMENT,CASE_OWNER,GROUP_,SR_NUM,TT_NUM,UPDATE_REMARKS,CLOSURE_TYPE,CREATED_DATE,MONTH_YEAR,AGING_CLOSED,CLOSED_DATE,AGING_UNASSIGNED,DATE_UNASSIGNED,AGING_ASSIGNED,ASSIGNED_DATE,AGING_INPROGRESS,INPROGRESS_DATE,AGING_CANCELLED,CANCELLED_DATE,AGING,RATING,FLAG,CKC,CKC_NUM,EXT_SYS_REF,STAKEHOLDER_REF H-2501156207,Khairul Fahmi Bin Mohd Faudzi,Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.0220670909450544 br>GPS Longitude: 103.3060880871612 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Jalan tengku mariam kluang. ,KHAIRUL FAHMI BIN MOHD FAUDZI,TM37246,Johor,Johor,IN-PROGRESS,Caution Report,,,Others,,,CSM HQ,1-26653341432,1-26653341432,,,2025-01-15T15:11:15.000Z,January 2025,,,1,2025-01-16T00:44:50.000Z,0,2025-01-16T00:44:50.000Z,0,2025-01-16T02:57:14.000Z,,,1,0,COMPLAINT,N,,,PRODUCT H-2501151185,Khairul Fahmi Bin Mohd Faudzi,Caution Report: br>Issue To Report: Cable Sagging br> br>------Location Information------ br> br>State: Johor br>GPS Latitude: 2.04460423390855 br>GPS Longitude: 103.35164082829212 br> br>------Problem(s) reported------ br> br>Tegangkan kabel kendur. Kem batu 3 jalan mersing. ,KHAIRUL FAHMI BIN MOHD FAUDZI,TM37246,Johor,Johor,IN-PROGRESS,Caution Report,,,Others,,,CSM HQ,1-26653468021,1-26653468021,,,2025-01-15T15:09:54.000Z,January 2025,,,1,2025-01-16T00:22:24.000Z,0,2025-01-16T00:22:24.000Z,0,2025-01-16T01:06:34.000Z,,,1,0,COMPLAINT,N,,,PRODUCT ``` </details> @Aiman1017 @patriksimms At this point, we need more details to determine if there is an issue on the SheetJS side. Please join the [SheetJS Chat](https://sheetjs.com/chat)

@Aiman1017 are you using macOS & chromium based browser by any chance? weirdly it works for us in Safari/ Firefox and also chromium based on linux

@Aiman1017 are you using macOS & chromium based browser by any chance? weirdly it works for us in Safari/ Firefox and also chromium based on linux
Owner

@patriksimms Please join the SheetJS Chat and we can try to dig into the details

@patriksimms Please join the [SheetJS Chat](https://sheetjs.com/chat) and we can try to dig into the details
Owner

Thank you for joining the chat and helping diagnose the issue!

This is a Chromium bug.

Reproduction:

function make_obj() {
  var obj = ({});
  for(var i = 0; i < 4000000; ++i) obj[i + " " + i] = {idx: i};
  obj["!ref"] = 3;
  console.log(obj["!ref"]);
  return obj
}

var data = { Sheets: {}}; data.Sheets["abc"] = make_obj(); console.log(data.Sheets.abc["!ref"]);

This issue seems to be sensitive to the number of properties in the object

We will reopen this issue and re-close once Google fixes the bug.

Thank you for joining the chat and helping diagnose the issue! **This is a Chromium bug.** Reproduction: ```js function make_obj() { var obj = ({}); for(var i = 0; i < 4000000; ++i) obj[i + " " + i] = {idx: i}; obj["!ref"] = 3; console.log(obj["!ref"]); return obj } var data = { Sheets: {}}; data.Sheets["abc"] = make_obj(); console.log(data.Sheets.abc["!ref"]); ``` This issue seems to be sensitive to the number of properties in the object We will reopen this issue and re-close once Google fixes the bug.
sheetjs reopened this issue 2025-01-17 17:49:41 +00:00
Owner

This issue has been reported to Chromium: https://issues.chromium.org/issues/390568195

In the interim, force dense-mode worksheets by passing dense: true to json_to_sheet or read or other methods.

This issue has been reported to Chromium: https://issues.chromium.org/issues/390568195 In the interim, [force dense-mode worksheets](https://docs.sheetjs.com/docs/csf/sheet#dense-mode) by passing `dense: true` to `json_to_sheet` or `read` or other methods.
sheetjs pinned this 2025-01-17 18:27:35 +00:00
Author

Hello there Sheetjs Team,

Noted but I have solved the issue by moving the logic from Front-end portal to the Back-end server to resolved this issue as a temporary workaround.

When I am free, I'll try to add the "dense" property in my testing.

Hello there Sheetjs Team, Noted but I have solved the issue by moving the logic from Front-end portal to the Back-end server to resolved this issue as a temporary workaround. When I am free, I'll try to add the "dense" property in my testing.
Sign in to join this conversation.
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sheetjs/sheetjs#3273
No description provided.