cfspreadsheet не может прочитать пустые строки

  1. Дана электронная таблица с N логическими строками.
  2. Где одна строка полностью пуста*
  3. cfspreadsheet action="read" вернет запрос с RecordCount из N - 1.

* Полностью пустая строка — это строка, в которой каждая ячейка на самом деле пуста. См. CELL_TYPE_BLANK в документах POI.

Может ли cfspreadsheet включать пустые строки?


person Jared Beck    schedule 08.11.2011    source источник


Ответы (2)


Нет. Поскольку данные электронной таблицы не всегда являются непрерывными, <cfspreadsheet action="read" query="queryName" ...> и <cfspreadsheet action="read" format="csv|html" ..> намеренно отсеивают пустые строки, чтобы избежать включения большого количества пустого шума. Поэтому, если в строке нет хотя бы одной непустой ячейки, она не будет обнаружена. Насколько я знаю, нет никаких настроек, чтобы переопределить это поведение. Вам нужно будет подключиться к базовой книге POI и свернуть ее самостоятельно.

person Leigh    schedule 09.11.2011

Я настроил xls следующим образом:

|Row1|Data1|
[blank]
|Row3|Data3|
[blank]
|Row5|Data5|

И запустил этот код над ним:

<cfspreadsheet action="read" src="c:\temp\book1.xlsx" name="st1">
<table border="1">
<cfloop index="iRow" from="1" to="5">
    <tr>
        <cfloop index="iCol" from="1" to="2">
            <cfoutput><td>#spreadsheetGetCellValue(st1, iRow, iCol)#&nbsp;</td></cfoutput>
        </cfloop>
    </tr>
</cfloop>
</table>

И выход был:

|Row1|Data1|
[blank]
|Row3|Data3|
[blank]
|Row5|Data5|

Чего я и ожидал.

Итак, мне кажется, что пустые строки соблюдаются нормально...?

Чем я отличаюсь от вас?

person Adam Cameron    schedule 09.11.2011
comment
Я не думаю, что это то, что он имел в виду под чтением. Я думаю, что он имел в виду чтение в формате query или csv/html. Те делают игнорируют все ПУСТЫЕ строки, вероятно, чтобы избежать возврата множества пустых записей, если между заполненными строками данных есть большой разрыв. Фокус SpreadSheetGetCellValue немного другой. Таким образом, он действительно возвращает пустую строку, даже если ячейка ПУСТА или, по существу, null. - person Leigh; 09.11.2011
comment
Конечно, извините, я не очень хорошо сформулировал (и я действительно не прочитал исходный пост полностью). Я имею в виду, что информация не недоступна, она просто недоступна через тот конкретный механизм, который использует Джаред. Поэтому я предлагаю использовать механизм, который действительно использует информацию, которую он хочет. - person Adam Cameron; 10.11.2011
comment
Ах хорошо. В этом есть смысл. Хотя им все равно может понадобиться подключиться к POI, чтобы выяснить, где начинаются и заканчиваются заполненные данные. - person Leigh; 10.11.2011