Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Linux perl程序提取特定语言中包含日期值的Office Open XML单元格_Xml_Perl - Fatal编程技术网

使用Linux perl程序提取特定语言中包含日期值的Office Open XML单元格

使用Linux perl程序提取特定语言中包含日期值的Office Open XML单元格,xml,perl,Xml,Perl,我正在尝试使用perl读取包含日期的Excel文件(2007+格式,它是一个包含大量xml文件的zip文件) 我可以按定义的格式提取日期信息 通过分析给定的xml工作表文件sheet(x).xml(x=1,2,3,…,n)以及存储日期格式的文件styles.xml 然而,我遇到的问题与一个特定的问题有关 日期格式的类型。我正在阅读的日期包含日期和月份名称,这就是我的问题所在。我在任何内部xml文件中都找不到任何信息来告诉我 文件保存时使用的语言。因此,我无法使用Excel中显示的perl程序以所

我正在尝试使用perl读取包含日期的Excel文件(2007+格式,它是一个包含大量xml文件的zip文件)

我可以按定义的格式提取日期信息 通过分析给定的xml工作表文件sheet(x).xml(x=1,2,3,…,n)以及存储日期格式的文件styles.xml

然而,我遇到的问题与一个特定的问题有关 日期格式的类型。我正在阅读的日期包含日期和月份名称,这就是我的问题所在。我在任何内部xml文件中都找不到任何信息来告诉我 文件保存时使用的语言。因此,我无法使用Excel中显示的perl程序以所需语言读取/复制具有给定月和日值的日期格式

那么,有没有什么方法可以确定Excel文件保存的语言,或者用perl程序重现Excel中的值

使用法语版Excel,我注意到以下格式保存在我正在分析的Excel文件的style.xml文件中:

<numFmt numFmtId="171" formatCode="[$-F400]h:mm:ss\ AM/PM"/>

<numFmt numFmtId="176" formatCode="[$-809]dd\ mmmm\ yyyy;@"/>

相关的格式化单元格条目包括:

迪曼奇1号詹维尔1900

1900年1月1日

那么,国家代码是否在值“[$-F400]”和“[$-809]”中的某个位置?如果有,是否有这些代码及其关联国家/地区值的列表 打开XML文件格式定义?我已经扫描了文件

Ecma Office开放XML第1部分-基础知识和标记语言参考(带ANt书签)1


但未找到任何信息

文件的文件类型(扩展名)是什么?另请参见,谢谢您提供的信息。文件扩展名是.xlsx、.xlsm等。我应该提到我已经看过这些perl模块,不幸的是,这两个模块都不能解决我的问题。你能发布一个指向示例excel文件的链接吗?还可以使用您使用的Perl代码更新您的帖子。如果excel文件设置正确,则日期字段不会存储为格式化值。它们使用1900-01-00之后的天数。接受Håkon的建议并使用S::R::ExcelXML。然后再次询问您对此是否有问题。谢谢,但我对dd mm yyyy等表格的日期没有问题。我的问题是2020年6月2日星期二表格的日期,即包含月份和/或日期名称的日期。这些格式(存储在内部XML文件styles.XML中)与我在最初的问题中引用的格式类似。然后,根据创建Excel文件时使用的语言,结果可以在Excel中显示为:2020年6月2日星期二或2020年6月2日Mardi 2 Juin。但是,perl模块电子表格::ParseExcel总是将这些日期解释为英语,因此结果总是在2020年6月2日星期二。