gpt4 book ai didi

java - 写入时间格式(hh :mm:ss) without date in Java

转载 作者:行者123 更新时间:2023-11-30 07:49:27 24 4
gpt4 key购买 nike

我正在尝试将具有多个工作表的 Excel (.xls) 文件转换为 .csv。该代码工作正常,但我注意到某些列的数据类型正在从时间数据类型更改为 double 据类型。

示例:如果我的输入是 00:45:20 ,我得到类似 0.006168981481481482 的输出。每个工作表都有使用时间数据类型的列。

注意:我的输入没有日期部分。只有时间成分存在。我看过一些与此相关的帖子并尝试过同样的操作。但java代码只打印默认日期并排除时间部分。

我觉得必须修改 case 语句中的某些内容才能填充时间数据类型。我想要一个通用程序,以便每当有时间数据类型时我都必须以相同的格式编写它。我使用的代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class exceltst
{
static void xls(File inputFile, File outputFile,int sheet_num)
{
// For storing data into CSV files
StringBuffer data = new StringBuffer();
try
{
FileOutputStream fos = new FileOutputStream(outputFile);

// Get the workbook object for XLS file
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
// Get first sheet from the workbook
HSSFSheet sheet = workbook.getSheetAt(sheet_num);
Cell cell;
Row row;

// Iterate through each rows from first sheet
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
row = rowIterator.next();
// For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
cell = cellIterator.next();

switch (cell.getCellType())
{
case Cell.CELL_TYPE_BOOLEAN:
data.append(cell.getBooleanCellValue() + ",");
break;

case Cell.CELL_TYPE_NUMERIC:
data.append(cell.getNumericCellValue() + ",");
break;

case Cell.CELL_TYPE_STRING:
data.append(cell.getStringCellValue() + ",");
break;

case Cell.CELL_TYPE_BLANK:
data.append("" + ",");
break;

default:
data.append(cell + ",");
}


}
data.append('\n');
}

fos.write(data.toString().getBytes());
fos.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
File inputFile = new File("C:\\Call_Center_20150323.xls");
File outputFile1 = new File("C:\\live_person.csv");
xls(inputFile, outputFile1,3);
}
}

您能否帮助如何在输出文件中填充没有日期而不是 double 的时间数据类型(hh:mm:ss)?

最佳答案

您应该首先创建一个 CellStyle,然后为您的时间单元设置此样式。另外,对于 cvs 文件,您无法创建 CellStyle,您应该在 excel 文件上使用单元格样式。

对于 Excel:

CellStyle style = workBook.createCellStyle();
style.setDataFormat(workBook.createDataFormat().getFormat("hh:mm:ss"));
cell.setCellStyle(style);
cell.setCellValue("16:15:11");

对于 cvs 文件,您应该将 Cell 的值设置为字符串:

data.append("16:15:11" + ",");

关于java - 写入时间格式(hh :mm:ss) without date in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com