-
python设置excel单元格数据类型为文本_Python xlwt设置excel单元格字体及格式
2020-12-06 18:39:34本文根据自己初学经验编写的使用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时结果和生成表格如下所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
-
java excel 单元格类型_Java如何获取Excel的单元格数据类型?
2021-02-27 19:40:00在此示例中,我们尝试获取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
-
java excel单元格数据格式_POI实战-java开发excel详解之单元格各类型数据读取
2021-02-27 19:42:492.复杂读取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中,数据文件格式包括字符、数字、公式、布尔。
图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;
}
打印预览:
注:公式格式的单元格值为数字,所以取值的时候是通过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
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;
}
打印预览:
图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
-
关于poi的NUMERIC读取excel单元格数值类型数字的问题
2020-12-12 11:09:48使用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:23excel 单元格数据类型 如图 数值是可以计算的,但是文本是不以计算的 那该如何看和修改呢 如图 转载于:https://www.cnblogs.com/limingming1993/p/11323961.html... -
POI读取Excel数据,设置单元格数据类型
2018-12-06 17:29:09废话不多说,直接上代码,一个简单的读取Excel数据,并且设置单元格数据类型 在这里插入代码片 -
获取Excel的单元格数据类型(靠谱)
2019-04-14 16:49:00VBA中,单元格属性有NumberFormat可以获取单元格格式,比如: G/通式格式→常规 @→文本 yyyy/m/d→日期 问题: G/通式格式,无法知道值是整数还是浮点数, yyyy/m/d如果换一种日期格式就对不上了。 ... -
Unity中如何优雅的将Excel单元格数据转换成基础类型或者数组
2020-05-22 14:04:09不同的单元格数据可能会被转换成不同的类型,如string,int,float,bool,Enum等。为了简洁转换代码,可以定义一个泛型方法ToValue统一处理。 using System; public class ExcelReader { protected T ToValue<... -
python取excel单元格数值_python读取excel文件单元格中的数据返回类型
2021-01-12 15:40:03python读取excel表格内不同类型的数据不同类型数据对应值:#coding=utf-8import osimport xlrdfrom datetime import datetime,datenewparh = os.chdir(r"D:\Pycharm\Test\test_case\excel")filename = u'测试数据.... -
python读取excel单元格格式读取数据_python读取excel文件单元格中的数据返回类型...
2021-01-14 14:04:26python读取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 -
获取Excel单元格数据内容为字符串类型的数据
2010-01-25 14:33:57[code="java"] public String getStringCellValue(HSSFCell cell) { String strCell = ""; ... switch (cell.getCellType()) { ... case HSSFCell.CELL_TYPE_STRING: ... strCell = cell.... -
jeecg导入Excel时去掉小数点,附单元格数据类型
2017-07-12 14:10:031、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、在... -
java excel单元格数据格式_Java 设置Excel条件格式(高亮条件值、应用单元格值/公式/数据条等类型)...
2021-02-13 01:15:17概述在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式。本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,... -
java excel 单元格类型_java 读取excel并设置各列数据的类型
2021-02-25 19:55:25",现在要做的只是实例化API所提供的Excel基本数据类型,并将它们添加到工作表中就可以了,参考下面的代码片段: //1.添加Label对象 jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell"); ... -
JAVA使用POI3.5读取EXCEL[多单元格数据类型处理,支持公式]
2018-09-24 19:17:31本文以2003XLS读取方式代码块举例,可以解决单元格CELL数据类型及公式问题。 全过程比较繁琐恕不例举。 //获取公式运行结果处理cell值[以XLS举例] import org.apache.poi.hssf.usermodel.HSSFCell; import org.... -
EXCEL转HTML,POI获取EXCEL带有表达式数据,获取EXCEL单元格的数据
2019-05-09 15:55:26此文章参考了很多网上的EXCEL转HTML,但是多数都没有对带有表达式的单元格的数据进行处理,或者处理了并没有按照原EXCEL的数据格式取数据,其他导出EXCEL获取数据也可参考此博文 表达式类型为Cell.CELL_TYPE_... -
关于PHPExcel上传Excel单元格富文本和时间类型读取数据问题
2018-04-28 10:20:00当用PHPExcel做Excel上传文件读取数据时,print_r出来的数据,竟然发现其中有几个单元格返回的是PHPExcel富文本对象,而且时间类型的单元格返回的是一个不是时间戳的五位数。就像下图那样。 解决代码: //读取到... -
导出Excel 设置单元格数据格式
2019-07-29 17:35:34导出Excel 设置单元格的类型 for (.......) { Boolean isNum = false;//data是否为数值型 Boolean isInteger=false;//data是否为整数 Boolean isPercent=false;//data是否为百分数 if ... -
poi包出excel2003 后,关于单元格数据类型
2013-06-21 11:08:23poi包出excel2003 后,单元格内的数据 正常: 单元格内 12,334.00的数据点击逗号去掉小数位按钮后变成 12,334 现在的现象 单元格内 12,334.00的数据点击逗号去掉小数位按钮后变成 $12,334 请教怎么在... -
求教将EXCEL的单元格数据转为string类型
2014-06-05 23:25:34想实现在单元格[i,j]中插入cellTextBox的字符,将原来的单元格字符内容隔开。代码如下: string origin = ((Range)myWorkSheet.Cells[i, j]).Text.ToString(); //此处转为string后,内容会变成system。。。一类... -
《Excel 职场手册:260招菜鸟变达人》一第 15 招 利用数据验证限制单元格数据类型...
2017-05-02 10:52:00本节书摘来异步社区《Excel 职场手册:260招...第 15 招 利用数据验证限制单元格数据类型 如果需要限制单元格只能输入文本,不能输入数字,借助函数ISTEXT,该函数功能是检测单元格内容是否为文本,如果是文本则返... -
POI实战-java开发excel详解之单元格各类型数据读取
2015-09-06 17:19:232.1 单元格各类型数据读取 2.1.1 基本类型 在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。 下面是单元格类型说明: 类型 CELL_TYPE_BLANK 空值... -
POI处理EXCEL各单元格不同数据类型…
2017-04-08 08:37:53public static String getValue(HSSFCell cell){ ... return "未知类型 "; } }else{ return ""; } } -
python xlwings单元格数据类型_xlwings使用教程,让excel飞起来!----Python读写Excel工具...
2020-12-09 12:18:08一、xlwings简介imagexlwings优点...关于xlwingsxlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pan... -
Excel中整型、日期类型和布尔类型单元格数据的读取
2018-06-13 19:20:49我们在使用Python中的xlrd模块读取excel文件中的内容时经常会遇到以下问题:将单元格中的整型数据读出为浮点型数据,如将4读成4.0;将单元格中的日期类型数据读出为浮点型数据,如将2018/6/13读成46713.0;将单元格...