Guest User

Untitled

a guest
Aug 20th, 2024
897
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.88 KB | None | 0 0
  1. public void ConvertJsonToXlsxAndTriggerDownload(string jsonData)
  2. {
  3.     var data = JsonConvert.DeserializeObject<VoltageData>(jsonData);
  4.  
  5.     using (var package = new ExcelPackage())
  6.     {
  7.         var worksheet = package.Workbook.Worksheets.Add("Sheet1");
  8.  
  9.         worksheet.Cells[1, 1].Value = "Date";
  10.         worksheet.Cells[1, 2].Value = "MeterID";
  11.         worksheet.Cells[1, 3].Value = "Hour";
  12.         worksheet.Cells[1, 4].Value = "Voltage";
  13.  
  14.         int row = 2;
  15.  
  16.         foreach (var record in data.Records)
  17.         {
  18.             string date = record.Date;
  19.  
  20.             foreach (var meterVoltage in record.MeterVoltages)
  21.             {
  22.                 string meterId = meterVoltage.MeterID;
  23.  
  24.                 if (meterVoltage.HourlyVoltages != null)
  25.                 {
  26.                     foreach (var hourlyVoltage in meterVoltage.HourlyVoltages)
  27.                     {
  28.                         worksheet.Cells[row, 1].Value = date;
  29.                         worksheet.Cells[row, 2].Value = meterId;
  30.                         worksheet.Cells[row, 3].Value = $"{hourlyVoltage.Hour}:00";
  31.                         worksheet.Cells[row, 4].Value = hourlyVoltage.Voltage;
  32.  
  33.                         row++;
  34.                     }
  35.                 }
  36.             }
  37.         }
  38.  
  39.         // Convert Excel file to Base64 string
  40.         byte[] fileData = package.GetAsByteArray();
  41.         string base64String = Convert.ToBase64String(fileData);
  42.         string fileName = "HourVoltageData.xlsx"; // Define the file name
  43.  
  44.         // Escape the base64String for use in JavaScript
  45.         string escapedBase64String = UnityWebRequest.EscapeURL(base64String);
  46.  
  47.         // JavaScript code to trigger download
  48.         string jsFunction = $@"
  49.            function triggerFileDownload(fileName, base64Data) {{
  50.                function base64ToBlob(base64, type = 'application/octet-stream') {{
  51.                    const binaryString = atob(base64);
  52.                    const len = binaryString.length;
  53.                    const bytes = new Uint8Array(len);
  54.                    for (let i = 0; i < len; i++) {{
  55.                        bytes[i] = binaryString.charCodeAt(i);
  56.                    }}
  57.                    return new Blob([bytes], {{ type }});
  58.                }}
  59.  
  60.                const blob = base64ToBlob(base64Data, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  61.                const link = document.createElement('a');
  62.                link.href = URL.createObjectURL(blob);
  63.                link.download = fileName;
  64.                document.body.appendChild(link);
  65.                link.click();
  66.                document.body.removeChild(link);
  67.            }}
  68.            triggerFileDownload('{fileName}', '{escapedBase64String}');
  69.        ";
  70.  
  71.         Application.ExternalEval(jsFunction);
  72.     }
  73.  
  74.     Debug.Log("Excel file has been converted and download triggered.");
  75. }
Add Comment
Please, Sign In to add comment