Я даю моему клиенту шаблон, который они должны заполнить, а затем они загружают электронную таблицу, и я прочитал файл с cfspreadsheet
, чтобы скопировать данные в таблицу базы данных.ColdFusion CFSpreadsheet читает пустые ячейки
Довольно легко. Шаблон содержит только один столбец. Клиент не может загрузить лист с более чем одним столбцом в нем. Это работало.
Так заголовок один столбец ING_CAS
, но когда я прочитал файл с cfspreadsheet
я COL_2
, COL_3
, ING_CAS
. Таким образом, не только чтение чистых ячеек, им также присваиваются имена по умолчанию из-за этого атрибута headerrow="1"
.
Я в затруднении здесь. Я продолжаю загружать шаблон и выбирать посторонние пустые строки и столбцы и удалять их, но у меня нет контроля над файлом, как только клиент получит его.
Есть ли какие-то странные настройки, которые у меня отсутствуют, что сделает cfspreadsheet
игнорировать пустые ячейки?
<cfspreadsheet action="read" src="#theFile#" query="SpreadSheetData" headerrow="1">
<cfdump var="#SpreadSheetData#" />
В итоге я написал вспомогательную функцию, которая удалила столбцы COL_ (n).
<cffunction name="CleanExcelQuery" access="public" returntype="query" output="false" hint="Strips out blank column headers picked up on read.">
<cfargument name="SpreadSheetQuery" type="query" required="true" />
<cfset var theColumnHeaders = SpreadSheetQuery.columnList>
<cfset var theNewColumnHeaders = "">
<cfloop list="#theColumnHeaders#" index="h">
<cfif uCase(left(h, 4)) IS NOT "COL_">
<cfset theNewColumnHeaders = ListAppend(theNewColumnHeaders, h)>
</cfif>
</cfloop>
<cfquery name="newSpreadSheetQuery" dbtype="query">
Select #theNewColumnHeaders#
From SpreadSheetQuery
</cfquery>
<cfreturn newSpreadSheetQuery />
</cffunction>
Вы можете показать нам свой код 'cfspreadsheet'? Я считаю, что он должен игнорировать пустые ячейки по умолчанию, иначе вся пустая таблица будет читаться каждый раз. Вы уверены, что ячейки пустые и не заполнены каким-то «невидимым» персонажем. Работает ли он так, как ожидалось, когда вы выбираете пустые строки и столбцы, а затем удаляете? –
звучит как ваш xls (x) имеет ячейки, которые объединены и центрированы, и он помещает ing_cas в col_3. попробуйте восстановить шаблон с помощью ing_cas в A1 и данных в A2 и загрузить эту новую таблицу. – Travis
Вы пытались просто скопировать значения из вашей «грязной» таблицы в новый файл, сохранить его и опубликовать? У меня была проблема, когда у клиента был какой-то странный характер выхода из диапазона просмотра и взорвал электронную таблицу. – steve