gpt4 book ai didi

types - 使用 cfspreadsheet 读取列格式

转载 作者:行者123 更新时间:2023-12-04 06:00:01 25 4
gpt4 key购买 nike

当您使用 cfspreadsheet 阅读电子表格时,是否可以获取电子表格中列或单元格的数据类型或格式? ?

我正在将电子表格数据从 Excel 电子表格转换为数据库表格。到目前为止,我只是将所有内容格式化为 varchars,但如果我可以将日期指定为日期并将整数指定为整数,那就太好了。

最佳答案

不幸的是,没有使用 cfspreadsheet或内置的电子表格功能。它们只返回显示的内容,而不返回基础值。但是,您可以通过挖掘底层 POI 来推出自己的产品 workbook .

需要牢记以下几点:

  • 与数据库表不同,电子表格列可以包含多种数据类型。仅仅因为第一个单元格包含日期并不能保证该列中的所有单元格也包含日期。因此,与任何导入一样,确保在将所有值插入数据库表之前验证所有值。
  • 这些方法仅包括填充的行和单元格。空白行和单元格被跳过。所以列值并不总是连续的。
  • 工作表、行和列索引从零 (0) 开始

  • 要进行处理,只需抓取所需的工作表并遍历行和单元格。当您遍历列时,检查单元格类型并提取原始值(即日期、字符串、数字等)

    来源: Busy Developers' Guide to HSSF and XSSF Features
    <cfscript>
    // get the sheet you want to read
    cfSheet = SpreadSheetRead("c:/path/to/somefile.xls");
    workbook = cfSheet.getWorkBook();
    sheetIndex = workbook.getActiveSheetIndex();
    sheet = workbook.getSheetAt( sheetIndex );

    // utility used to distinguish between dates and numbers
    dateUtil = createObject("java", "org.apache.poi.ss.usermodel.DateUtil");

    // process the rows and columns
    rows = sheet.rowIterator();
    while (rows.hasNext()) {
    currentRow = rows.next();
    data = {};

    cells = currentRow.cellIterator();
    while (cells.hasNext()) {
    currentCell = cells.next();

    col = {};
    col.value = "";
    col.type = "";
    col.column = currentCell.getColumnIndex()+ 1;
    col.row = currentCell.getRowIndex()+ 1;

    if (currentCell.getCellType() EQ currentCell.CELL_TYPE_STRING) {
    col.value = currentCell.getRichStringCellValue().getString();
    col.type = "string";
    }
    else if (currentCell.getCellType() EQ currentCell.CELL_TYPE_NUMERIC) {
    if (DateUtil.isCellDateFormatted(currentCell)) {
    col.value = currentCell.getDateCellValue();
    col.type = "date";
    }
    else {
    col.value = currentCell.getNumericCellValue();
    col.type = "number";
    }
    }
    else if (currentCell.getCellType() EQ currentCell.CELL_TYPE_BOOLEAN) {
    col.value = currentCell.getBooleanCellValue();
    col.type = "boolean";
    }
    // ... handle other types CELL_TYPE_BLANK, CELL_TYPE_ERROR, CELL_TYPE_FORMULA

    data["COL"& col.column] = col;
    }

    // this row is finished. display all values
    WriteDump(data);
    }
    </cfscript>

    关于types - 使用 cfspreadsheet 读取列格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028511/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com