Ignore:
Timestamp:
Mar 10, 2010, 7:27:57 PM (9 years ago)
Author:
tabma
Message:
  • rewrite of celltype detection
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r247 r255  
    1919import org.apache.poi.poifs.filesystem.POIFSFileSystem
    2020import org.apache.poi.ss.usermodel.DataFormatter
     21import org.apache.poi.hssf.usermodel.HSSFDateUtil
    2122import dbnp.importer.Column
     23import dbnp.studycapturing.TemplateFieldType
    2224
    2325class ImporterService {
     
    4850
    4951
    50         for (HSSFCell c: sheet.getRow(sheet.getFirstRowNum())) {
     52        for (HSSFCell c: sheet.getRow(datamatrix_start)) {
    5153            def datamatrix_celltype = sheet.getRow(datamatrix_start).getCell(c.getColumnIndex()).getCellType()
     54            def headercell = sheet.getRow(sheet.getFirstRowNum()).getCell(c.getColumnIndex())
    5255
    5356            // Check for every celltype, currently redundant code, but possibly this will be
    5457            // a piece of custom code for every cell type like specific formatting
    55            
    56             switch (c.getCellType()) {
    57                     case HSSFCell.CELL_TYPE_STRING:                     
    58                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype);
    59                         break
    60                     case HSSFCell.CELL_TYPE_NUMERIC:
    61                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype);
    62                         break
     58               
     59            switch (datamatrix_celltype) {
     60                    case HSSFCell.CELL_TYPE_STRING:
     61                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING);
     62                            break
     63                    case HSSFCell.CELL_TYPE_NUMERIC:                   
     64                            if (HSSFDateUtil.isCellDateFormatted(c)) {
     65                                println("DATE")
     66                                header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.DATE)
     67                            }
     68                            else
     69                                header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.INTEGER);
     70                            break
    6371                    case HSSFCell.CELL_TYPE_BLANK:
    64                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype);
    65                         break
     72                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING);
     73                            break
    6674                    default:
    67                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype);
    68                         break
     75                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING);
     76                            break
    6977            }
    7078        }
     
    126134        }
    127135
    128     def importdata = {
    129        
     136    /**
     137    * Method to read data from a workbook and to import data into the database
     138    * by using mapping information
     139    *
     140    *
     141    * @param wb POI horrible spreadsheet formatted workbook object
     142    * @param mc array of MappingColumns
     143    * @param sheetindex sheet to use when using multiple sheets
     144    * @param rowindex first row to start with reading the actual data (NOT the header)
     145    *
     146    * @see dbnp.importer.MappingColumn
     147    */
     148    def importdata(HSSFWorkbook wb, int sheetindex, int rowindex, MappingColumn[] mc) {
     149        def sheet = wb.getSheetAt(sheetindex)
     150        def rows  = []
     151
     152        (count <= sheet.getLastRowNum()) ?
     153        (rowindex..count).each { i ->
     154
     155            def row = []
     156            for (HSSFCell c: sheet.getRow(i))
     157                //row.add(c)
     158                //row.add(df.formatCellValue(c))
     159                switch(mc[c.getColumnIndex()].celltype) {
     160                    case 0  : break
     161                    default : break
     162                }
     163
     164                rows.add(row)
     165        } : 0
    130166    }
    131167}
Note: See TracChangeset for help on using the changeset viewer.