有没有办法将一个Excel文件导入到Flex中的MS SQL?

我的应用程序需要一个组件,允许用户使用基于Web的Flex应用程序上载Excel文件(.xls)并将其列导入到MS SQL表中。

是否有可能使其在Flex?

如果是这样,任何例子?

提前谢谢你!

对于使用Excel文件,我使用Ben Nadel的POI包装器,可以在这里find。

https://github.com/bennadel/POIUtility.cfc

要使用它,我有一个前面的uplaod页面,我计划查看一个FTP目录,看是否有一个文件消耗。 为了说明这一点,我正在简化过程并抓取本地文件…

首先我使用createObject()为POIUtility.cfc初始化函数,以便访问这些方法。 像这样的东西:

<cfset importUploads = createObject("component", "cfcs.POIUtility").init()> 

我有CSV文件,所以我使用这个工具的CSV部分:

 <cfset csvToArrayTemp = importUploads.csvtoarray()> 

但是您将使用importUploads.ReadExcel()来代替。

我需要将这些东西放到表格中,所以我这样做:

 <cfoutput> <cfloop from="2" to="#ArrayLen(csvToArrayTemp)#" index="i"> <cftry> <cfquery datasource="mhsdoctors"> INSERT INTO [mhsdoctors].[c3design].[profilesaaa] ([ID] ,[First] ,[Middle] ,[Last] ,[Title] ,[Gender] ,[Photo] ,[School] ,[Address]) VALUES ('#csvToArrayTemp[i][13]#' ,'#csvToArrayTemp[i][2]#' ,'#csvToArrayTemp[i][3]#' ,'#csvToArrayTemp[i][1]#' ,'#csvToArrayTemp[i][4]#' ,'#csvToArrayTemp[i][12]#'' <cfif csvToArrayTemp[i][13] eq '11111111'> ,'frank-tudor-2014.jpg' <cfelseif csvToArrayTemp[i][13] eq '11111112'> ,'frank.png' <cfelse> ,'#replacenocase(csvToArrayTemp[i][15],'\\picDir\people\pictures\','','all')#' </cfif> ,'#csvToArrayTemp[i][8]#' ,'#csvToArrayTemp[i][6]#') </cfquery> <cfcatch> <cfmail from="frank@c3design.com" to="frank@emailEmergency.com" subject="The import failed">Check the file for crap data. #csvToArrayTemp[i][13]#</cfmail> </cfcatch> </cftry> </cfloop> </cfoutput> 

请注意,我正在匹配我的表字段,直到csv文件中的特定列。 我必须为所有的exception编写代码,而且我已经在图片上列举了一个这样的例子。 你很可能也需要这样做。

要做一个数据的屏幕扫描(所以你可以看到结构和抽查问题),增加你的时间,然后添加一个cfdump到你的循环interation …(注意这将吸收大量的资源,并做一个cfsetting增加超时我做99999或其他(见下文):

(把这个放在顶部)

 <cfsetting requesttimeout="999999999"> 

(在你抓取你的文件后)

 <cfdump var="#csvToArrayTemp#" abort> 

现在到POI CFC thingy。

我在这里设置我的文件variables。

 <!--- Define the local scope. ---> <cfset var local = {} /> <cfif FileExists('C:\someplace\important\1001.txt.csv')> <cfset arguments.csv = fileRead( 'C:\someplace\important\1001.txt.csv' ) /> <cfelse> <cfmail from="frank@ultraEmergency.com" to="frank@ultraEmergency.com" subject="The import failed">The file wasn't there...panic!</cfmail><cfabort> </cfif> <cfif arguments.trim> 

这下一个代码块保存我的replace片段与一些真实的单词示例,因为我通常碰到垃圾用户导入,停止我的导入工作正确。

 <!--- Remove trailing line breaks and carriage returns. ---> <cfset arguments.csv = reReplace( arguments.csv, "[\r\n]+$", "", "all" ) /> <cfset arguments.csv = replaceNoCase( arguments.csv, "Hap""""", "", "1" ) /> <cfset arguments.csv = reReplace( arguments.csv, ", Suite", " Suite", "all" ) /> <cfset arguments.csv = reReplace( arguments.csv, '14SW "U" St', '14SW U St', 'one' ) /> 

我让POI实用工具发挥黑暗的魔力。 假如一切都顺其自然,我有一张桌子充满了我所需要的数据,然后我继续进行一些额外的内务处理步骤,例如在安全的地方归档所使用的文件,以防万一我需要它作为点数据检查或手册import。

所有这些在Coldfusionpipe理部门都有一个很好的计划任务,在低stream量期间每月触发两次。

我希望这有助于或至less让你开始。

使用xlsx文件是可能的,因为它们只是内部带有xml文件的zip压缩文件。 您可以在Microsoft网站上find规格。 但请注意,它包含超过5000页。