用 java 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法 .

在用java 读取excel文件时会有这样的情况的发生 文件内容 18:05 读出后 6:05 原因是引用jxl 时有个pattern类用的是12时制的时间,所以...., 要自己写个方法来再次将它读出的时间进行转换.

 

package  blogic;



import  jxl.Cell;
import  jxl.DateCell;
import  jxl.Sheet;
import  jxl.Workbook;
import  jxl.read.biff.BiffException;
import  java.io.IOException;
import  java.io.InputStream;
import  java.text.SimpleDateFormat;
import  java.io.FileInputStream;
import  java.io.File;

/**
 * <概要描述> 倒入考勤表
 * 
 * 
@author xx
 * 
@version 1.0 2008/01/07
 
*/

public   class  readExcel  {
    
/**
     * <概要描述> excle文件中时间类型数据格式转换
     * 
     * 
@param excle文件中时间类型数据
     * 
@return String
     * 
@throws 无
     
*/

    
public static String FormateTime(Cell formatecell) {
        
try {
            java.util.Date mydate 
= null;
            DateCell datecll 
= (DateCell) formatecell;
            mydate 
= datecll.getDate();
            
long time = (mydate.getTime() / 1000- 60 * 60 * 8;
            mydate.setTime(time 
* 1000);
            SimpleDateFormat formatter 
= new SimpleDateFormat("HH:mm");
            
return formatter.format(mydate);
        }
 catch (Exception e) {
            e.printStackTrace();
            
return null;
        }

    }


    
/**
     * <概要描述> 读excle文件
     * 
     * 
@param 文件路径
     * 
@return 动态数组
     * 
@throws IOException
     * 
@throws BiffException
     * 
@throws 无
     
*/

    
public void ReadExcelToDb(String filePath) {
        Workbook rwb 
= null;
        
boolean flag = true;
        String OndutyDate
=null;
        String onTime
=null;
        String offTime 
= null;
        String Remark 
= null;
        String WorkTime 
= null;
        String OverTime 
= null;
        String WorkFlag 
= null;
        
int rowStart = 7;//cc.NUMBER_7;// 程序从文件的第几行开始读
        try {
            InputStream is 
= new FileInputStream(filePath);
            rwb 
= Workbook.getWorkbook(is);
            rwb 
= Workbook.getWorkbook(new File(filePath));
            
// 取得文件的第一个 sheet;
            Sheet rs = rwb.getSheet(0);
            
//读取文件中数据
                String year = rs.getCell(42).getContents();
                String month 
= rs.getCell(52).getContents();

                
// 上面条件都符合后开始读取文件
                for (int k = rowStart; k < rs.getRows(); k++{
                    
if (flag == false{
                        
break;
                    }

                    String day 
= rs.getCell(0, k).getContents();
                    
// 当文件的日期列,数据为空时停止操作
                    if (day.equals("")) {
                        
break;
                    }

                    
// 将日期转换成YYYY-MM-DD格式
                    OndutyDate = year + "-" + month + "-" + day;
                    Cell onTimeCell 
= rs.getCell(2, k);
                     onTime 
= String.valueOf(FormateTime(onTimeCell));
                     Cell offTimeCell 
= rs.getCell(3, k);
                     offTime 
= String.valueOf(FormateTime(offTimeCell));
                     Remark 
= rs.getCell(4, k).getContents();
                     WorkTime 
= rs.getCell(5, k).getContents();
                     OverTime 
= rs.getCell(6, k).getContents();
                     WorkFlag 
= rs.getCell(7, k).getContents();
                     System.out.println(OndutyDate);
                        System.out.println(onTime);
                        System.out.println(offTime);
                        System.out.println(Remark);
                        System.out.println(WorkTime);
                        System.out.println(OverTime);
                        System.out.println(WorkFlag);
                }

                
            rwb.close();
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
    }

    
public static void main(String args[]){
        readExcel readexcel
=new readExcel();
        String filePath
="C:/modual.xls";
        readexcel.ReadExcelToDb(filePath);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。您可以使用第三方库,如Apache POI,读取Excel表格并将其转化为JSON数据。以下是Java代码示例: ```java // 导入依赖 import org.apache.poi.ss.usermodel.*; import org.json.*; import java.io.*; import java.util.*; public class ExcelToJsonConverter { public static void main(String[] args) throws Exception { // 读取Excel文件 Workbook workbook = WorkbookFactory.create(new File("data.xlsx")); // 读取第一个工作表 Sheet sheet = workbook.getSheetAt(0); // 获取表头行 Row headerRow = sheet.getRow(0); // 遍历每一行 JSONArray rows = new JSONArray(); for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { Row row = sheet.getRow(i); JSONObject obj = new JSONObject(); // 遍历每一列 for (int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j); String columnName = headerRow.getCell(j).getStringCellValue(); obj.put(columnName, getCellValue(cell)); } rows.put(obj); } // 输出JSON数据 System.out.println(rows.toString()); } // 获取单元格的值 private static Object getCellValue(Cell cell) { switch (cell.getCellType()) { case BLANK: return null; case BOOLEAN: return cell.getBooleanCellValue(); case ERROR: throw new RuntimeException("Cell contains an error"); case NUMERIC: return cell.getNumericCellValue(); case STRING: return cell.getStringCellValue(); case FORMULA: return getCellValue(cell.getCachedFormulaResultType() == CellType.NUMERIC ? cell : cell.getSheet().getRow(cell.getRowIndex()).getCell(cell.getColumnIndex())); default: throw new RuntimeException("Cell type not supported"); } } } ``` 请注意,此代码示例仅适用于Excel表格中的简单数据类型,如字符串、数字和布尔值。对于复杂数据类型,如日期和时间,您需要编写自定义的转换逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值