7
7
function filledCell ( cell ) {
8
8
return cell !== '' && cell != null ;
9
9
}
10
- function loadFileData ( filename ) {
11
- if ( gk_isXlsx && gk_xlsxFileLookup [ filename ] ) {
12
- try {
13
- var workbook = XLSX . read ( gk_fileData [ filename ] , { type : 'base64' } ) ;
14
- var firstSheetName = workbook . SheetNames [ 0 ] ;
15
- var worksheet = workbook . Sheets [ firstSheetName ] ;
16
-
17
- // Convert sheet to JSON to filter blank rows
18
- var jsonData = XLSX . utils . sheet_to_json ( worksheet , { header : 1 , blankrows : false , defval : '' } ) ;
19
- // Filter out blank rows (rows where all cells are empty, null, or undefined)
20
- var filteredData = jsonData . filter ( row => row . some ( filledCell ) ) ;
21
-
22
- // Heuristic to find the header row by ignoring rows with fewer filled cells than the next row
23
- var headerRowIndex = filteredData . findIndex ( ( row , index ) =>
24
- row . filter ( filledCell ) . length >= filteredData [ index + 1 ] ?. filter ( filledCell ) . length
25
- ) ;
26
- // Fallback
27
- if ( headerRowIndex === - 1 || headerRowIndex > 25 ) {
28
- headerRowIndex = 0 ;
29
- }
30
-
31
- // Convert filtered JSON back to CSV
32
- var csv = XLSX . utils . aoa_to_sheet ( filteredData . slice ( headerRowIndex ) ) ; // Create a new sheet from filtered array of arrays
33
- csv = XLSX . utils . sheet_to_csv ( csv , { header : 1 } ) ;
34
- return csv ;
35
- } catch ( e ) {
36
- console . error ( e ) ;
37
- return "" ;
38
- }
39
- }
40
- return gk_fileData [ filename ] || "" ;
41
- }
42
- </ script >
10
+
43
11
< head >
44
12
< meta charset = "UTF-8" >
45
13
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
@@ -1334,4 +1302,4 @@ <h1>Nancy’s Chemistry Paper 4 Revision</h1>
1334
1302
loadNextQuestion ( ) ;
1335
1303
</ script >
1336
1304
</ body >
1337
- </ html >
1305
+ </ html >
0 commit comments