zoukankan      html  css  js  c++  java
  • 获取Excel的单元格数据类型(靠谱)

    VBA中,单元格属性有NumberFormat可以获取单元格格式,比如:

    • G/通式格式→常规
    • @→文本
    • yyyy/m/d→日期

    问题:

    1. G/通式格式,无法知道值是整数还是浮点数,
    2. yyyy/m/d如果换一种日期格式就对不上了。

    所以cell.Value(12)就派上用场了,是XML格式的单元格更详细的信息。

    <xml xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
     xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
     xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
     <x:PivotCache>
      <x:CacheIndex>1</x:CacheIndex>
      <s:Schema id="RowsetSchema">
       <s:ElementType name="row" content="eltOnly">
        <s:attribute type="Col1"/>
        <s:extends type="rs:rowbase"/>
       </s:ElementType>
       <s:AttributeType name="Col1" rs:name="字段1">
        <s:datatype dt:type="dateTime"/>
       </s:AttributeType>
      </s:Schema>
      <rs:data>
       <z:row Col1="2019-04-07T00:00:00"/>
      </rs:data>
     </x:PivotCache>
    </xml>
    

    dateTime就是相应的数据类型所在位置,获取方法(AutoHotkey)

    ;返回为字符串,int|float|255|dateTime|boolean
    ;255表示字符串,boolean表示空单元格,其他还没遇到,待完善
    valueType(cell) { xml := cell.Value(12) oXML := ComObjCreate("MSXML2.DOMDocument.6.0") oXML.loadXML(xml) ;oNS := ComObjCreate("***") ;oNS.AddNamespace("x", "urn:schemas-microsoft-com:office:excel") ;oXML.SelectSingleNode("xml/x:PivotCache", oNS)
      ;不懂XML,也没搞定SelectSingleNode的命名空间,以下的方法比较Low,希望有人指点。(纯处理字符串,oDatetype其实也没什么必要) oDatatype :
    = oXML.childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0] strType := oDatatype.xml ;除了xml不知道还有什么属性更好用 Return RegExReplace(SubStr(strType,1,StrLen(strType)-3), '.*"') }
  • 相关阅读:
    java7底层源码
    google的collection
    2017年八大顶尖的技术趋势
    【译】STM32L4x6系列用户手册第四章
    FRDM-KL43开发板驱动段式液晶SLCD的实现方法
    如何根据丝印查找相关的产品型号
    Arduino Tian开发板:一个功能强大的天气预报中心
    在STM32F746G-DISCO开发板上使用Nabto + FreeRTOS的演示热泵应用
    为LPC1549 LPCXpresso评估板开发基于mbed的项目
    使用LPCXpresso开发板调试外部的电路板
  • 原文地址:https://www.cnblogs.com/hyaray/p/10705780.html
Copyright © 2011-2022 走看看