Excel 在Groovy/grails中上载CSV文件并在上载之前检查其类型

Excel 在Groovy/grails中上载CSV文件并在上载之前检查其类型,excel,grails,csv,Excel,Grails,Csv,我有一个上传CSV文件以创建联系人的应用程序。我在上传文件之前检查文件是否为CSV。如果不是CSV,则通知用户仅选择CSV文件。我是这样做的 if (file.getContentType() != "application/vnd.ms-excel") { //Notifies the user return } 只要系统上安装了Microsoft Excel,这项功能就可以正常工作。在系统上没有安装MS Excel的情况下,如何执行此操作

我有一个上传
CSV
文件以创建联系人的应用程序。我在上传文件之前检查文件是否为
CSV
。如果不是
CSV
,则通知用户仅选择
CSV
文件。我是这样做的

 if (file.getContentType() != "application/vnd.ms-excel") {
       //Notifies the user
                return
 } 

只要系统上安装了Microsoft Excel,这项功能就可以正常工作。在系统上没有安装MS Excel的情况下,如何执行此操作?

您可以使用以下插件从文件中提取内容:

然后使用以下代码将文件头与您想要的已存在的头列表进行比较:

def verifyCsvFile = {file->
    def iWantTheseHeaders=['a','b','c'] //you can get this from config or constants
    file.eachCsvLine { tokens ->


        //First row in the represents the headeres of the csv/xls file. 
        if(index == 0){
            def headers =[]
            tokens.each{
                headers.add(it.trim())
            }

            isValidColumns = headers.containsAll(iWantTheseHeaders)
            // check if Required columns were found 
            if(!isValidColumns){
                return false
            }
        }


    }
} 

这是Groovy还是JavaScript代码?CSV通常只是纯文本,所以我能想到的唯一方法是通过CSV解析器运行它。如果失败,则通知用户该文件无效。