excel内容通过apache poi读取后读出来为数字,转为日期类型

11 篇文章 0 订阅
4 篇文章 0 订阅

        需求:需要将2022-07-22的日期存到excel并且存入数据库中,但是发现直接读取存入会变成44764,这是由于这个从1899年12月30号到这2022年7月22号的天数,解决方案:

(1)poi官方给出了一个工具类,但是有版本要求(最新poi没有这个类,本次基于4.1.0版本操作

public static void main(String[] args){
        String timeStr = "44764";  //这个数字为已经从excel读取到的数据字符串
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        System.out.println("time:"+sdf.format(HSSFDateUtil.getJavaDate(Double.valueOf(timeStr))));
    }

(2)自行加天数

Apache POI是一个开源的Java库,用于读取和写入Microsoft Office格式的文件,如Excel、Word等。不过需要注意的是,POI本身并不直接支持将Excel转换为PDF格式的文件,因为这种转换涉及到复杂的页面布局和渲染问题,这通常需要额外的工具或库来完成。 要使用JavaExcel转换为PDF,你可以采取以下几种方法: 1. 利用第三方库:例如使用iText或Apache PDFBox,结合POI库来实现。首先使用POI读取Excel文件的内容,然后利用这些第三方库将内容渲染成PDF格式。 2. 使用转换工具:有一些开源或商业软件提供了转换工具,比如LibreOffice或OpenOffice,这些软件支持命令行操作,可以通过Java代码调用命令行来实现Excel到PDF的转换。 3. 寻找专门的转换API服务:一些在线服务提供API接口,可以通过编程方式调用这些API,上传Excel文件并接收转换后的PDF文件。 下面是一个简化的例子,展示如何结合使用Apache POI和iText来将Excel文件转换为PDF: ```java import org.apache.poi.ss.usermodel.*; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import java.io.*; public class ExcelToPdfConverter { public static void main(String[] args) throws Exception { // 读取Excel文件 FileInputStream inputStream = new FileInputStream("example.xlsx"); Workbook workbook = WorkbookFactory.create(inputStream); Sheet sheet = workbook.getSheetAt(0); // 创建PDF文档对象 Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); document.open(); // 遍历Excel表格并添加到PDF文档中 for (Row row : sheet) { PdfPTable pdfTable = new PdfPTable(row.getLastCellNum()); for (Cell cell : row) { switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: pdfTable.addCell(new Phrase(cell.getStringCellValue(), new Font(Font.NORMAL))); break; // 其他类型数据处理... } } document.add(pdfTable); } // 关闭文档 document.close(); workbook.close(); inputStream.close(); } } ``` 这个例子仅提供了一个基本的转换框架,实际应用中可能需要处理更复杂的情况,比如格式转换、图片处理等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值