有没有办法将Excel文件导入Flex上的MS SQL?

有没有办法将Excel文件导入Flex上的MS SQL?,sql,excel,apache-flex,actionscript,coldfusion,Sql,Excel,Apache Flex,Actionscript,Coldfusion,我的应用程序需要一个组件,允许用户使用基于web的Flex应用程序上载Excel文件(.xls)并将其列导入MS SQL表 有可能在Flex上实现吗 如果有,有什么例子吗 提前非常感谢 使用xlsx文件是可能的,因为它们只是包含xml文件的zip归档文件。 您可以在Microsoft网站上找到规范。但是请注意,它包含5000多页。对于使用Excel文件,我使用Ben Nadel的POI包装,可以在这里找到 为了使用它,我有一个前上传页面,我计划在FTP目录中查找,看看是否有文件要使用。为了说明

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

有可能在Flex上实现吗

如果有,有什么例子吗


提前非常感谢

使用xlsx文件是可能的,因为它们只是包含xml文件的zip归档文件。
您可以在Microsoft网站上找到规范。但是请注意,它包含5000多页。

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

为了使用它,我有一个前上传页面,我计划在FTP目录中查找,看看是否有文件要使用。为了说明这一点,我简化了过程并获取了一个本地文件

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

<cfset importUploads = createObject("component", "cfcs.POIUtility").init()>
<cfset csvToArrayTemp = importUploads.csvtoarray()>
请注意,我正在将表格字段与csv文件中的特定列进行匹配。我必须为所有异常编写代码,我在上面的图片中放了一个例子。你很可能也需要这样做

要对数据进行屏幕扫描(以便您可以查看结构和抽查问题),请增加超时时间,然后在循环交互中添加cfdump…(注意,这将占用大量资源,并在超时时增加cfsetting I do 9999或其他内容(见下文):

(把这个放在最上面)


(抓取文件后)


现在来看看POI CFC的事情

我在那里像这样设置文件变量

<!--- 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>

文件不在那里…惊慌失措!
下一段代码用一些真实的word示例保存我的替换代码段,因为我通常会遇到垃圾用户导入,从而使导入无法正常工作

<!--- 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实用程序发挥了它的神奇作用。如果一切顺利,我会在一张表中填入我需要的数据,然后我会继续执行一些额外的管理步骤,比如将消耗的文件归档到安全的地方,以防我需要它进行数据抽查或手动导入

所有这些都是在Coldfusion管理中设置的一个很好的计划任务,在低流量期间每月触发两次


我希望这对您有所帮助,或者至少让您开始学习。

您尝试过什么?发布一些示例代码、特定问题或错误消息。这与coldfusion没有任何关系。或者确实如此。我知道在coldfusion中使用excel文件的工具(这让我想到了这个问题),我的问题是:你的应用程序coldfusion是否面临任何问题?如果你只关心flex…那么请删除coldfusion标签…@FrankTudor,我使用coldfusion是为了检索和发送数据库中的数据,我读到了一些关于使用CF做我想做的事情的内容,所以,目前我正在研究它。不,这是你想要做的o在中间层。您的主要目标是什么?导入列似乎可以用更好的方法来完成,例如使用DDL。@mx1810好的,我为您准备了一个答案。它是Excel和Coldfusion(示例是CSV),但我已经包括了您需要添加/查找的内容。请看。
<cfdump var="#csvToArrayTemp#" abort>
<!--- 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>
<!--- 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'
    ) />