精华内容
下载资源
问答
  • 获取Excel单元格数据类型(靠谱)

    千次阅读 2019-04-14 16:49:00
    VBA单元格属性NumberFormat可以获取单元格格式,比如: G/通式格式→常规 @→文本 yyyy/m/d→日期 问题: G/通式格式,无法知道值是整数还是浮点数, yyyy/m/d如果换一种日期格式就对不上了。 ...

    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), '.*"') }

     

    转载于:https://www.cnblogs.com/hyaray/p/10705780.html

    展开全文
  • 废话不多说,直接上代码,一个简单的读取Excel数据,并且设置单元格数据类型 这里插入代码片

    废话不多说,直接上代码,一个简单的读取Excel数据,并且设置单元格数据类型

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    public class Test {
    	public static void main(String[] args) throws Exception {
    		String sFullPath = "D:/exportNoRetail.xls";
      		File file = new File(sFullPath);
    
    		//file.getAbsolutePath() 获取文件的全路径
      		//创建输入流读取Excel
      		InputStream finput = new FileInputStream(file.getAbsolutePath()); 
      		HSSFWorkbook  wb = new HSSFWorkbook(finput);
      		HSSFSheet sheet = wb.getSheetAt(0);
      		finput.close();
    
    		HSSFRow row = null;//宣告一列 
      		HSSFCell cell = null;//宣告一个储存格 
      
      		for (int i = 1;i <= sheet.getLastRowNum();i++){
       			row = sheet.getRow(i);
       			for (int j = 0; j < 4; j++){
        				//设置单元格是字符串类型   
        				//长度较大的数字时,导入数据放到缓存中会变成科学计数发的形式,可以将数字转换为字符串导入
        				cell.setCellType(HSSFCell.CELL_TYPE_STRING);
        				cell = row.getCell(j);
        				System.out.print(cell+"**");
      			}
       			System.out.println();
      		} 
    	}
    }
    
    展开全文
  • 该文件是使用python来对EXCEL表格进行修改,文件虽然只有几句话,但是当初可是花费了我很多精力。希望放在这里给自己提个醒。要的朋友也可以下载
  • JAVA POI导出Excel设置单元格类型

    千次阅读 2019-01-15 17:10:54
    HSSFRow Row = sheet.createRow(sheet.getLastRowNum()+1); Row.getCell(0).setCellType...//设置单元格为数值类型 Row.getCell(0).setCellType(HSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型 Row.get...
    HSSFRow Row = sheet.createRow(sheet.getLastRowNum()+1);
    Row.getCell(0).setCellType(HSSFCell.CELL_TYPE_NUMERIC);//设置单元格为数值类型
    Row.getCell(0).setCellType(HSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型
    Row.getCell(0).setCellType(HSSFCell.CELL_TYPE_BOOLEAN);//设置单元格为布尔类型
    
    
        
    
    

     

     

    展开全文
  • 实际工作,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。 下面是单元格类型说明: 类型   CELL_TYPE_BLANK 空值(cell不为空) CELL_TYPE_BOOLEAN

    2.复杂读取

    2.1 单元格各类型数据读取

    2.1.1 基本类型

    在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。

    下面是单元格类型说明:

    类型

     

    CELL_TYPE_BLANK

    空值(cell不为空)

    CELL_TYPE_BOOLEAN

    布尔

    CELL_TYPE_ERROR

    错误

    CELL_TYPE_FORMULA

    公式

    CELL_TYPE_STRING

    字符串

    CELL_TYPE_NUMERIC

    数值

    以上单元格的类型,可以通过getCellType()方法获得,返回值为int。

    下面读取一个多类型数据Excel文件:

    图7中,数据文件格式包括字符、数字、公式、布尔。


    图7

    代码片段:

    [java]  view plain copy
    1. public static void read(InputStream inputStream) throws IOException{  
    2.         HSSFWorkbook workbook = new HSSFWorkbook(inputStream);  
    3.         //循环workbook中所有sheet  
    4.         for(int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++){  
    5.             HSSFSheet sheet = workbook.getSheetAt(sheetIndex);  
    6.             //循环该sheet中的有数据的每一行  
    7.             for(int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++){  
    8.                 HSSFRow row = sheet.getRow(rowIndex);  
    9.                 if(row == null){  
    10.                     continue;  
    11.                 }  
    12.                 //循环该行的每一个单元格  
    13.                 for(int cellnum = 0; cellnum < row.getLastCellNum(); cellnum++){  
    14.                     HSSFCell cell = row.getCell(cellnum);  
    15.                     getCellValue(cell, rowIndex, cellnum);  
    16.                 }  
    17.             }  
    18.         }  
    19.     }  
    20.   
    21.   
    22. public static void getCellValue(HSSFCell cell, int rowIndex, int cellnum){  
    23.         if(cell == null){  
    24.             return;  
    25.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){  
    26.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BLANK");  
    27.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){  
    28.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_STRING  值为:"+cell.getRichStringCellValue().getString());  
    29.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){  
    30.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_NUMERIC  值为:"+cell.getNumericCellValue());  
    31.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){  
    32.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BOOLEAN  值为:"+cell.getBooleanCellValue());  
    33.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){  
    34.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_FORMULA  值为:"+cell.getNumericCellValue()+" 公式为:"+cell.getCellFormula());  
    35.         }  
    36.         return;  
    37.     }  
    38.       

    打印预览:


    注:公式格式的单元格值为数字,所以取值的时候是通过cell.getNumericCellValue()方法,而取单元格的公式需要通过cell.getCellFormula()方法。

    2.1.2 日期类型

    Excel中的Date类型以Double型数字存储的,表示当前时间与1900年1月1日相隔的天数。所以在Excel中如果单元格格式为NUMERIC类型还需要进一步判断是否为日期类型。在读取日期单元格时需要调用HSSFDateUtil的isCellDateFormatted方法,来判断该Cell的数据格式是否是Date类型,然后通过HSSFCell的getDateCellValue方法获取Date。

    如图9,在之前Excel数据后新加了Date格式的数据


    图9

     

    代码片段:

    [java]  view plain copy
    1. public static void getCellValue(HSSFCell cell, int rowIndex, int cellnum){  
    2.         if(cell == null){  
    3.             return;  
    4.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){  
    5.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BLANK");  
    6.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){  
    7.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_STRING  值为:"+cell.getRichStringCellValue().getString());  
    8.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){  
    9.              if(HSSFDateUtil.isCellDateFormatted(cell)){  
    10.                     Date date = cell.getDateCellValue();  
    11.                     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
    12.                     System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:Date 值为:"+dateFormat.format(date));  
    13.             }else{  
    14.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_NUMERIC  值为:"+cell.getNumericCellValue());  
    15.             }  
    16.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){  
    17.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BOOLEAN  值为:"+cell.getBooleanCellValue());  
    18.         }else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){  
    19.             System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_FORMULA  值为:"+cell.getNumericCellValue()+" 公式为:"+cell.getCellFormula());  
    20.         }  
    21.         return;  
    22.     }  


    打印预览:


     图10

    2.2 自定义类型

    在Excel中有许多种数据格式,并且支持用户自定义格式。如图11。可以通过HSSFDataFormat类进行操作。getBuiltinFormat(short index)方法根据编号返回内置数据类型,getBuiltinFormat(java.lang.Stringformat)方法根据数据类型返回其编号,getBuiltinFormats()返回整个内置的数据格式列表。


    图11

    HSSFDataFormat的数据格式

    内置数据类型

    编号

    "General"

    0

    "0"

    1

    "0.00"

    2

    "#,##0"

    3

    "#,##0.00"

    4

    "($#,##0_);($#,##0)"

    5

    "($#,##0_);[Red]($#,##0)"

    6

    "($#,##0.00);($#,##0.00)"

    7

    "($#,##0.00_);[Red]($#,##0.00)"

    8

    "0%"

    9

    "0.00%"

    0xa

    "0.00E+00"

    0xb

    "# ?/?"

    0xc

    "# ??/??"

    0xd

    "m/d/yy"

    0xe

    "d-mmm-yy"

    0xf

    "d-mmm"

    0x10

    "mmm-yy"

    0x11

    "h:mm AM/PM"

    0x12

    "h:mm:ss AM/PM"

    0x13

    "h:mm"

    0x14

    "h:mm:ss"

    0x15

    "m/d/yy h:mm"

    0x16

    保留为过国际化用

    0x17 - 0x24

    "(#,##0_);(#,##0)"

    0x25

    "(#,##0_);[Red](#,##0)"

    0x26

    "(#,##0.00_);(#,##0.00)"

    0x27

    "(#,##0.00_);[Red](#,##0.00)"

    0x28

    "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)"

    0x29

    "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)"

    0x2a

    "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"

    0x2b

    "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"

    0x2c

    "mm:ss"

    0x2d

    "[h]:mm:ss"

    0x2e

    "mm:ss.0"

    0x2f

    "##0.0E+0"

    0x30

    "@" - This is text format

    0x31


    展开全文
  • 从上一篇文章我们已经可以获取某单元格数据,现在我们只要执行:MsgBox VarType(curCell)就可以获取到类型,完整代码如下: Sub Macro1() ' ' Macro1 Macro ' 宏由 cq 录制,时间: 2016/08/02 x = Sheets("Sheet1...
  • java 解析Excel 并判断解析的数据类型__Eclipse工程,纯手工,无复制
  • 我们使用Python的xlrd模块读取excel文件的内容时经常会遇到以下问题:将单元格中的整型数据读出为浮点型数据,如将4读成4.0;将单元格中的日期类型数据读出为浮点型数据,如将2018/6/13读成46713.0;将单元格...
  • C#导出EXCEL如何设置单元格类型 - _NET技术 - C# 自己上网找的资料,没有经过测试,下载谨慎
  • 最近做项目遇到的坑,百度了半天导出都为货币类型、自定义类型和常规类型,,,最后终于解决,此记录一下 ... * 设置Excel单元格为数值类型便于公式运算 * * @param workbook * @param contextstyle
  • Java读取Excel中单元格数据

    千次阅读 2018-05-21 13:53:37
    目前网上能找到的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高;POI免费。供大家参考,针对具体情况选择具体方案。 1. PageOffice读取excel import com.zhuozhengsoft.pageoffice.*; ...
  • python 读取excel中单元格的内容

    万次阅读 2018-11-02 20:25:41
    python 读取excel中单元格的内容    excel文件内容:   读取excel代码: # coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding('utf-8') import traceback class excelHandl...
  • python读取excel单元格返回类型Python通过xlrd对Excel进行读取操作时,返回的数据类型(ctype)下面5类型:0 – empty:空1 – string:字符串2 – number:数字3 – date:日期4 – boolean:布尔5 – error...
  • 利用Python实现Excel合并单元格

    千次阅读 2020-07-01 10:10:54
    利用Python实现Excel合并单元格 ...帖子 python之DataFrame写excel合并单元格 提供了一种方法,但使用会出现一些问题,比如无法处理字符串等类型数据。通过修改方法,定义了一个excel_merge_cells函数,基本可以
  • POI设置Excel单元格格式

    热门讨论 2011-12-20 15:40:19
    POI设置Excel单元格格式
  • Vue,将数据导出成excel,合并单元格

    千次阅读 热门讨论 2020-01-20 17:01:50
    前段时间接到一个做报表的项目,需要将数据导出成excel表格,表格模板中有很多表格是需要合并的,之前没有这方面的经验,也为难了好久,后来终于发现一个好用的js插件,完全能够实现我需要的功能,一块分享给大家;...
  •  return "未知类型 ";   }   }else{  return "";  }  } 下面这个是自己修改的 public String getValue(XSSFCell cell) { if (null != cell) { switch (cell.getCellTypeEnum()) { case NUMERIC: ...
  • //获取单元格类型值,返回字符串类型   private   static   String getCellValueByCell(Cell cell) {   //判断是否为null或空串   if   (cell== null   || cell.toString().trim().equals( "" )) {   ...
  • 使用ipython pandas源代码,实现EXCEL表格操作,适合做EXEL,批量大表的操作。简单易懂,配函数说明。
  • 导出Excel 设置单元格类型 for (.......) { Boolean isNum = false;//data是否为数值型 Boolean isInteger=false;//data是否为整数 Boolean isPercent=false;//data是否为百分数 if ...
  • 用易语言在excel表格读取数据,单个range直接使用ranges.读属性 (“Value”, )就可,多个ranges采用变体变量存储后,用循环方式读出数据。至于要返回文本数组,整数数组,或者文本,全凭个人喜好,但易语言,...
  • 遍历Excel获取每个单元格数据

    千次阅读 2019-03-29 15:31:50
    //包含excel中表名的字符串数组 string[] strTableNames = new string[dtSheetName.Rows.Count]; for (int k = 0; k ; k++) { strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString(); } //...
  • 文章转自:... python读取excel中单元格的内容返回的5种类型,即上面例子的ctype: ctype:  0 empty 1 string 2 number 3 date 4 boolean 5 error #
  • Excel中数据类型

    2019-11-11 17:42:01
    在Excel中主要的数据类型分四类:数值、文本、逻辑值、错误值。 数值型:大小之分,可进行运算。 数值型数据包括0~9的数字以及含有正号、负号、货币符号、百分号等任一种符号的数据。默认情况下,数值自动沿...
  • POI Excel 单元格内容类型判断并取值

    万次阅读 2017-01-04 15:15:07
    做Excel导入功能时,读取Excel单元格内容需要区分类型switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: // 数字 //如果为时间格式的内容 if (HSSFDateUtil.isCellDateFormatted(cell)) {
  • 利用Pandas拆分Excel单元格为多行并保留其他行的数据1. 需求2. Pandas解决需求2.1 准备工作2.2 Python程序执行3. Pandas实现需求过程详解 1. 需求 需求:对Excel中的C列(标红)所有单元格的内容进行拆分,同时...
  • 如何 Excel 单元格内动态获取其它 sheet 单元格的值? 1. 选中需要设置的单元格 2. 选择 数据 -> 数据有效性 -> 设置 3. 设置界面操作 设置允许类型(如自定义) -> 公式(sheetName!$cellLocation)
  • 首先我先读取到一个Excel中数据,使用List<List<object>>将数据存储起来。 然后再写入到另一个Excel文件,写入时,需要指定写入数据的格式,例如DateTime,Bool,String,Double等,这个时候我该怎么实现?
  •  最近做的一个ITFIN的项目,后台需要用POI实现导出功能,导出的数据中有文本格式,也货币格式,所以为了方便将来导出的表格做计算,存放货币的单元格需要设置为数值类型。  导出的Excel单元格都是文本...
  • python筛选excel某一列相同的数据

    万次阅读 多人点赞 2018-11-13 11:34:57
    python筛选excel某一列相同的数据 1.需要cmd下载 pip install pandas 的模板 2.注意文件的路径问题不要出错 3.还有文件的编码格式 ------encoding = 'gbk' import pandas as pd #读取excel文件信息 d...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,151
精华内容 13,260
关键字:

在excel中单元格数据类型有