php控制导出excel的单元格格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php控制导出excel的单元格格式相关的知识,希望对你有一定的参考价值。

现在已有的功能是,可以导出excel,但是导出的数据都是“常规”格式。我希望通过php判断,如果该单元格是数字,格式定为“数值”;如果该单元格是日期,格式定为“日期”。关键是怎样控制单元格格式,设置成“数值”“货币”“日期”“时间”等?我知道Java中有JXL可以实现,就不知道PHP中有什么第三方类可以实现。另外现在我在研究writeexcel,也许能实现这个功能,望用过的大虾们指点迷津~谢谢~

参考技术A 可以使用XML的XSLT技术,具体可以参考相关文档。你可以先把需要转换的东西保存成xml文件,然后使用xslt来把这个xml文件转换成excel的格式。

hutool导出excel 设置单元格日期格式 poi设置excel单元格日期格式

hutool导出导入excel很方便,但没有依赖poi,需要手动添加poi依赖。

 <properties>
        <poi.version>4.1.2</poi.version>
        <hutool.version>5.5.9</hutool.version>
    </properties>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>$hutool.version</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>$poi.version</version>
</dependency>

hutool更详细的定义样式中提到可以设置日期格式

在Excel中,由于样式对象个数有限制,因此Hutool根据样式种类分为4个样式对象,使相同类型的单元格可以共享样式对象。样式按照类别存在于StyleSet中,其中包括:
头部样式 headCellStyle
普通单元格样式 cellStyle
数字单元格样式 cellStyleForNumber
日期单元格样式 cellStyleForDate
其中cellStyleForNumber cellStyleForDate用于控制数字和日期的显示方式。

因此

import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.poi.ss.usermodel.DataFormat;
import cn.hutool.poi.excel.StyleSet;

ExcelWriter writer = ExcelUtil.getWriter();   
DataFormat dataFormat = writer.getWorkbook().createDataFormat();
//这里的日期格式化规则与SimpleDateFormat不一样,
//部分格式可参考org.apache.poi.ss.usermodel.BuiltinFormats
short format = dataFormat.getFormat("yyyy-mm-dd hh:mm:ss");
StyleSet styleSet = writer.getStyleSet();
styleSet.getCellStyleForDate()
        .setDataFormat(format);

poi内置了许多日期格式,可参考org.apache.poi.ss.usermodel.BuiltinFormats,摘录部分如下

0xe, "m/d/yy" 
0xf, "d-mmm-yy" 
0x10, "d-mmm" 
0x11, "mmm-yy" 
0x12, "h:mm AM/PM" 
0x13, "h:mm:ss AM/PM" 
0x14, "h:mm" 
0x15, "h:mm:ss" 
0x16, "m/d/yy h:mm"

以上是关于php控制导出excel的单元格格式的主要内容,如果未能解决你的问题,请参考以下文章

关于PHP导出Excel文件的单元格格式问题

c#导出EXCEL设置单元格格式?

JAVA POI 导出 EXCEL模板 怎么设置单元格格式为 文字

JAVA POI 导出 EXCEL模板 怎么设置单元格格式为 文字

C#2008报表控件导出excel格式,能实现类似excel中的合并单元格

如何设定PLSQL DEVELOPER导出的CSV文件中单元格格式为文本?