精华内容
下载资源
问答
  • 本文根据自己初学经验编写的使用xlwt模块设置单元格的一些基本样式,如设置单元格的背景颜色,下框线,字体,字体的颜色,设置列宽行高,插入简单的图片,详细程序如下:#!/usr/bin/env python# -*- coding: utf-8 -...

    本文根据自己初学经验编写的使用xlwt模块设置单元格的一些基本样式,如设置单元格的背景颜色,下框线,字体,字体的颜色,设置列宽行高,插入简单的图片,详细程序如下:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-” #只对当前文件的中文编码有效

    #Create by zhizaiqianli 2015-12-12 Version V1.0

    #!/usr/bin/python

    # Filename : Write_excel_Format.py

    import os

    import time

    from xlwt import *

    from Mymodule import cur_file_dir

    filename = 'TestData2.xls' #检测当前目录下是否有TestData2.xls文件,如果有则清除以前保存文件

    if os.path.exists(filename):

    os.remove(filename)

    print time.strftime("%Y-%m-%d",time.localtime(time.time())) #打印读取到当前系统时间

    wbk = Workbook(encoding='utf-8')

    sheet = wbk.add_sheet('new sheet 1', cell_overwrite_ok=True) #第二参数用于确认同一个cell单元是否可以重设值。

    style = XFStyle() #赋值style为XFStyle(),初始化样式

    for i in range(0x00,0xff): # 设置单元格背景颜色

    pattern = Pattern() # 创建一个模式

    pattern.pattern = Pattern.SOLID_PATTERN # 设置其模式为实型

    pattern.pattern_fore_colour = i

    # 设置单元格背景颜色 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, the list goes on...

    style.pattern = pattern # 将赋值好的模式参数导入Style

    Line_data = (u'测试表') #创建一个Line_data列表,并将其值赋为测试表,以utf-8编码时中文前加u

    sheet.write_merge(i, i, 0, 2, Line_data, style) #以合并单元格形式写入数据,即将数据写入以第1/2/3列合并德单元格内

    for i in range(0x00,0xff): # 设置单元格内字体样式

    fnt = Font() # 创建一个文本格式,包括字体、字号和颜色样式特性

    fnt.name = u'微软雅黑' # 设置其字体为微软雅黑

    fnt.colour_index = i # 设置其字体颜色

    fnt.bold = True

    style.font = fnt #将赋值好的模式参数导入Style

    sheet.write_merge(i,i,3,5,Line_data,style) #以合并单元格形式写入数据,即将数据写入以第4/5/6列合并德单元格内

    for i in range(0, 0x53): # 设置单元格下框线样式

    borders = Borders()

    borders.left = i

    borders.right = i

    borders.top = i

    borders.bottom = i

    style.borders = borders #将赋值好的模式参数导入Style

    sheet.write_merge(i,i,6,8,Line_data,style) #以合并单元格形式写入数据,即将数据写入以第4/5/6列合并德单元格内

    for i in range(6, 80): # 设置单元格下列宽样式

    sheet.write(0,i,Line_data,style)

    sheet.col(i).width = 0x0d00 + i*50

    path_py = "\\images\python.bmp" #读取插入图片以.py运行时路径,images和.py在同一目录下

    path_exe = "\\images\python.bmp" #读取插入图片以.exe运行时路径,.exe可以移到其他任意目录下运行但images和.exe在同一目录下

    path = cur_file_dir(path_py,path_exe) #获取文件的相对路径

    filename = path #检测当前目录下是否有python.bmp图片,

    if os.path.exists(filename):

    print u'python.bmp图片存在'

    else:

    print u'python.bmp图片不存在'

    sheet.insert_bitmap(path, 2, 9) #插入一个图片

    wbk.save('TestData2.xls') #保存TestData2.xls文件,保存到脚本或exe文件运行的目录下

    raw_input("Enter enter key to exit...") #插入一个输入命令,方便运行exe时一闪而过不到打印信息

    以cmd命令运行 Write_excel_Format.py时结果和生成表格如下所示:

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 在此示例中,我们尝试获取Excel单元格数据类型,以便我们可以使用正确的方法读取该值。要读取的数据在名为的文件中celltype.xls。下面的矩阵描述了文件的状态。|COLROW|01234----|-------------------------0|12...

    在此示例中,我们尝试获取Excel的单元格数据类型,以便我们可以使用正确的方法读取该值。要读取的数据在名为的文件中celltype.xls。下面的矩阵描述了文件的状态。|   COL

    ROW |   0       1   2   3   4

    ----|-------------------------

    0   |   1       2   A   B   TRUE

    1   |   FALSE   X   Y   Z   10package org.nhooo.example.poi;

    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;

    import org.apache.poi.ss.usermodel.CellType;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.util.Iterator;

    public class ObtainingCellType {

    public static void main(String[] args) throws Exception {

    String filename = "celltype.xls";

    try (FileInputStream fis = new FileInputStream(filename)) {

    HSSFWorkbook workbook = new HSSFWorkbook(fis);

    HSSFSheet sheet = workbook.getSheetAt(0);

    Iterator rows = sheet.rowIterator();

    while (rows.hasNext()) {

    HSSFRow row = (HSSFRow) rows.next();

    Iterator cells = row.cellIterator();

    while (cells.hasNext()) {

    HSSFCell cell = (HSSFCell) cells.next();

    CellType type = cell.getCellType();

    if (type == CellType.STRING) {

    System.out.println("[" + cell.getRowIndex() + ", "

    + cell.getColumnIndex() + "] = STRING; Value = "

    + cell.getRichStringCellValue().toString());

    } else if (type == CellType.NUMERIC) {

    System.out.println("[" + cell.getRowIndex() + ", "

    + cell.getColumnIndex() + "] = NUMERIC; Value = "

    + cell.getNumericCellValue());

    } else if (type == CellType.BOOLEAN) {

    System.out.println("[" + cell.getRowIndex() + ", "

    + cell.getColumnIndex() + "] = BOOLEAN; Value = "

    + cell.getBooleanCellValue());

    } else if (type == CellType.BLANK) {

    System.out.println("[" + cell.getRowIndex() + ", "

    + cell.getColumnIndex() + "] = BLANK CELL");

    }

    }

    }

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    }

    }

    我们的程序迭代Excel文件的行和单元格,并产生以下

    输出:[0, 0] = NUMERIC; Value = 1.0

    [0, 1] = NUMERIC; Value = 2.0

    [0, 2] = STRING; Value = A

    [0, 3] = STRING; Value = B

    [0, 4] = BOOLEAN; Value = true

    [1, 0] = BOOLEAN; Value = false

    [1, 1] = STRING; Value = X

    [1, 2] = STRING; Value = Y

    [1, 3] = STRING; Value = Z

    [1, 4] = NUMERIC; Value = 10.0

    Maven依赖

    org.apache.poi

    poi

    4.1.0

    poi.svg?label=Maven%20Central

    展开全文
  • 2.复杂读取2.1 单元格类型数据读取2.1.1 基本类型在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。下面是单元格类型说明:类型CELL_TYPE_BLANK空值(cell不为空)CELL_...

    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中,数据文件格式包括字符、数字、公式、布尔。

    4426670b77f883c02c2cbac02eccd06f.png

    图7

    代码片段:

    [java]  view plain copy

    publicstaticvoidread(InputStream inputStream)throwsIOException{

    HSSFWorkbook workbook = newHSSFWorkbook(inputStream);

    //循环workbook中所有sheet

    for(intsheetIndex =0; sheetIndex 

    HSSFSheet sheet = workbook.getSheetAt(sheetIndex);

    //循环该sheet中的有数据的每一行

    for(introwIndex =0; rowIndex <= sheet.getLastRowNum(); rowIndex++){

    HSSFRow row = sheet.getRow(rowIndex);

    if(row ==null){

    continue;

    }

    //循环该行的每一个单元格

    for(intcellnum =0; cellnum 

    HSSFCell cell = row.getCell(cellnum);

    getCellValue(cell, rowIndex, cellnum);

    }

    }

    }

    }

    publicstaticvoidgetCellValue(HSSFCell cell,introwIndex,intcellnum){

    if(cell ==null){

    return;

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BLANK");

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_STRING  值为:"+cell.getRichStringCellValue().getString());

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_NUMERIC  值为:"+cell.getNumericCellValue());

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BOOLEAN  值为:"+cell.getBooleanCellValue());

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_FORMULA  值为:"+cell.getNumericCellValue()+" 公式为:"+cell.getCellFormula());

    }

    return;

    }

    打印预览:

    7a01c2d1a0ce0fa7ff9e5d75870e6998.png

    注:公式格式的单元格值为数字,所以取值的时候是通过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格式的数据

    7a01c2d1a0ce0fa7ff9e5d75870e6998.png

    图9

    代码片段:

    [java]  view plain copy

    publicstaticvoidgetCellValue(HSSFCell cell,introwIndex,intcellnum){

    if(cell ==null){

    return;

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BLANK");

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_STRING  值为:"+cell.getRichStringCellValue().getString());

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){

    if(HSSFDateUtil.isCellDateFormatted(cell)){

    Date date = cell.getDateCellValue();

    SimpleDateFormat dateFormat = newSimpleDateFormat("yyyy-MM-dd");

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:Date 值为:"+dateFormat.format(date));

    }else{

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_NUMERIC  值为:"+cell.getNumericCellValue());

    }

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_BOOLEAN  值为:"+cell.getBooleanCellValue());

    }elseif(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){

    System.out.println("第"+(rowIndex+1)+"行,第"+(cellnum+1)+"列  cellType为:CELL_TYPE_FORMULA  值为:"+cell.getNumericCellValue()+" 公式为:"+cell.getCellFormula());

    }

    return;

    }

    打印预览:

    8a33bf4ded259c5beb6e189fbb68555c.png

    图10

    2.2 自定义类型

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

    cf3603860fdbda0d7ec709583244fcb6.png

    图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

    展开全文
  • 使用poi读取excel文件单元格的数据,若是单元格数据是数值格式,poi获取单元格的数值值: row.getCell(j).getNumericCellValue() 返回的的结果是double类型 若是单元格是int类型,那获取出来的数值也还是...

    使用poi读取excel文件单元格的数据,若是单元格数据是数值格式,poi获取单元格的数值值:

    row.getCell(j).getNumericCellValue()

    返回的的结果是double类型

    若是单元格是int类型,那获取出来的数值也还是double类型,例如:单元格是5, 获取出来的值是5.0

    但是我们需要的是单元格存储的类型,而不是double类型,这时就导致了一种问题,就是传递错误,给出的数据和接收的数据不一致。

    解决方法

    直接的方法是,以double类型来接收获取的值,然后再转换为我们需要的int类型

    double value = row.getCell(j).getNumericCellValue();//获取单元格数据
    int cellValue = new Double(value).intValue();

    单元格是int类型的情况问题解决了,但是可能会出现另外一种问题,比如,单元格存储的数值比较长,单元格会以科学计数法的方式展示这个数字,这个时候,我们获取的时候获取的会是科学计数法的数值:

    所以,有没有一种方法,单元格里的内容是什么数值,返回的就是什么数值?答案是有

    NumberToTextConverter.toText() 方法会返回单元格的初始格式 然后转化为String类型;

    如下:

    这样不管单元格是什么格式的值,都会以正确的格式返回

    展开全文
  • 单元格数据类型

    2019-09-21 07:43:23
    excel 单元格数据类型 如图 数值是可以计算的,但是文本是不以计算的 那该如何看和修改呢 如图 转载于:https://www.cnblogs.com/limingming1993/p/11323961.html...
  • 废话不多说,直接上代码,一个简单的读取Excel数据,并且设置单元格数据类型 在这里插入代码片
  • VBA中,单元格属性有NumberFormat可以获取单元格格式,比如: G/通式格式→常规 @→文本 yyyy/m/d→日期 问题: G/通式格式,无法知道值是整数还是浮点数, yyyy/m/d如果换一种日期格式就对不上了。 ...
  • 不同的单元格数据可能会被转换成不同的类型,如string,int,float,bool,Enum等。为了简洁转换代码,可以定义一个泛型方法ToValue统一处理。 using System; public class ExcelReader { protected T ToValue<...
  • python读取excel表格内不同类型数据不同类型数据对应值:#coding=utf-8import osimport xlrdfrom datetime import datetime,datenewparh = os.chdir(r"D:\Pycharm\Test\test_case\excel")filename = u'测试数据....
  • python读取excel表格内不同类型数据不同类型数据对应值:#coding=utf-8import osimport xlrdfrom datetime import datetime,datenewparh = os.chdir(r"D:\Pycharm\Test\test_case\excel")filename = u'测试数据....
  • 如何控制excel单元格数据类型

    千次阅读 2007-06-19 11:44:00
    只要把单元格的格式设置为文本就行了 Option Explicit Private Sub Command1_Click() Dim ExcelBook As Excel.Workbook Dim Esheets As Sheets Dim Esh
  • [code="java"] public String getStringCellValue(HSSFCell cell) { String strCell = ""; ... switch (cell.getCellType()) { ... case HSSFCell.CELL_TYPE_STRING: ... strCell = cell....
  • 1、POI读取Excel时判断单元格数据类型: CELL_TYPE_NUMERIC 数值型 0 CELL_TYPE_STRING 字符串型 1 CELL_TYPE_FORMULA 公式型 2 CELL_TYPE_BLANK 空值 3 CELL_TYPE_BOOLEAN 布尔型 4 CELL_TYPE_ERROR 错误 5 2、在...
  • 概述在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式。本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,...
  • ",现在要做的只是实例化API所提供的Excel基本数据类型,并将它们添加到工作表中就可以了,参考下面的代码片段: //1.添加Label对象 jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell"); ...
  • 本文以2003XLS读取方式代码块举例,可以解决单元格CELL数据类型及公式问题。 全过程比较繁琐恕不例举。 //获取公式运行结果处理cell值[以XLS举例] import org.apache.poi.hssf.usermodel.HSSFCell; import org....
  • 此文章参考了很多网上的EXCEL转HTML,但是多数都没有对带有表达式的单元格数据进行处理,或者处理了并没有按照原EXCEL数据格式取数据,其他导出EXCEL获取数据也可参考此博文 表达式类型为Cell.CELL_TYPE_...
  • 当用PHPExcel做Excel上传文件读取数据时,print_r出来的数据,竟然发现其中有几个单元格返回的是PHPExcel富文本对象,而且时间类型单元格返回的是一个不是时间戳的五位数。就像下图那样。 解决代码: //读取到...
  • 导出Excel 设置单元格类型 for (.......) { Boolean isNum = false;//data是否为数值型 Boolean isInteger=false;//data是否为整数 Boolean isPercent=false;//data是否为百分数 if ...
  • poi包出excel2003 后,单元格内的数据 正常: 单元格内 12,334.00的数据点击逗号去掉小数位按钮后变成 12,334 现在的现象 单元格内 12,334.00的数据点击逗号去掉小数位按钮后变成 $12,334 请教怎么在...
  • 想实现在单元格[i,j]中插入cellTextBox的字符,将原来的单元格字符内容隔开。代码如下: string origin = ((Range)myWorkSheet.Cells[i, j]).Text.ToString(); //此处转为string后,内容会变成system。。。一类...
  • 本节书摘来异步社区《Excel 职场手册:260招...第 15 招 利用数据验证限制单元格数据类型 如果需要限制单元格只能输入文本,不能输入数字,借助函数ISTEXT,该函数功能是检测单元格内容是否为文本,如果是文本则返...
  • 2.1 单元格类型数据读取 2.1.1 基本类型 在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。 下面是单元格类型说明: 类型   CELL_TYPE_BLANK 空值...
  •     public static String getValue(HSSFCell cell){ ... return "未知类型 ";         }       }else{   return "";   }    }
  • 一、xlwings简介imagexlwings优点...关于xlwingsxlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pan...
  • 我们在使用Python中的xlrd模块读取excel文件中的内容时经常会遇到以下问题:将单元格中的整型数据读出为浮点型数据,如将4读成4.0;将单元格中的日期类型数据读出为浮点型数据,如将2018/6/13读成46713.0;将单元格...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,429
精华内容 571
关键字:

excel单元格数据类型