amazon.de Geschenkgutscheine

Excel (XLS) Dateien mit ColdFusion 8 einlesen

Dauernd muss für irgendwelche Projekte dieses Excel-Format eingelesen werden... Bislang hab ich mir mit dem guten alten cfx_excel2query geholfen... Das versagt mir aber unter ColdFusion 8 seinen Dienst...

Also hilft man sich selbst mit dieser wundervollen UserDefinedFunction (UDF) um aus einem Excel-Sheet ein Query zu machen:

 <cfscript>
     function readXLS(filename,sheetnum) {
         // Admin-API f�r debug zwecke: adminapi.dump(varname);
 
        var adminapi = createObject("component","cfide.adminapi.base");
         // Source File
 
        var infile = createObject('java','java.io.FileInputStream').init(filename);
         // Apache POI paket zum lesen von Excel-Dateien
 
        var fs = createObject('java','org.apache.poi.poifs.filesystem.POIFSFileSystem').init(infile);
         // Excel-Workbook
10  
        var wb = createObject('java','org.apache.poi.hssf.usermodel.HSSFWorkbook').init(fs);
11          // Arbeitsblatt
12  
        var sheet = wb.getSheetAt(0);
13          // Anzahl Rows
14  
        var noRows = sheet.getLastRowNum();
15          // Erste Row (Columnnames)
16  
        var row = sheet.getRow(0);
17          // Anzahl Columns
18  
        var noCols = row.getLastCellNum();
19          // sonstiges Variablen
20  
        var i = 0;
21          var j = 0;
22          var cell = "";
23          var value = "";
24          var columnnames = "";
25          var q = "";
26  
27          // Spaltennamen holen
28  
        for (j = 0;j LT noCols;j = j + 1) {
29              try {
30                  cell=row.getCell(JavaCast('short','#j#'));
31                  // je nach Typ Daten numerisch oder als string holen
32  
                if (cell.getCellType() is 1) {
33                      columnnames = listappend(columnnames,cell.getStringCellValue());
34                  }
35                  else if (cell.getCellType() is 0) {
36                      columnnames = listappend(columnnames,cell.getNumericCellValue());
37                  }
38              } catch (Any expt) {
39                  // nothing happens
40  
            }
41          }
42          columnnames = replace(columnnames," ","","all");
43          // Query erstellen
44  
        q = querynew(columnnames);
45          // Daten holen ab Row 2
46  
        for (i = 1;i LTE noRows;i = i + 1) {
47              row=sheet.getRow(JavaCast('int','#i#'));
48              // Row hinzuf�gen
49  
            queryAddRow(q);
50              for (j = 0;j LT noCols;j = j + 1) {
51                  try {
52                      cell=row.getCell(JavaCast('short','#j#'));
53                      if (cell.getCellType() is 1) {
54                          value=cell.getStringCellValue();
55                      }
56                      else if (cell.getCellType() is 0) {
57                          value=cell.getNumericCellValue();
58                      }
59                  } catch (Any expt) {
60                      value="ups";
61                  }
62                  // Wert in Query schreiben
63  
                QuerySetCell(q,listGetAt(columnnames,j + 1),value);
64              }
65          }
66          // Datei schlie�en
67  
        infile.close();
68          // Ergebnis zur�ckgeben
69  
        return q;
70      }
71  
</cfscript>

Kommentare (Kommentar-Moderation ist aktiv. Ihr Kommentar erscheint erst nach Prüfung.)
BlogCFC was created by Raymond Camden. This blog is running version 5.9.5. Contact Blog Owner
Stoppt die Vorratsdatenspeicherung! Jetzt klicken &handeln! Willst du auch an der Aktion teilnehmen? Hier findest du alle relevanten Infos
und Materialien: