用的POI解析xls;
代码很短,正则表达式不熟练,不然能短三分之一... 而且坑爹的移动服务密码搞了我半个小时。
需要POI包的可以去网上找找,找不到私聊我,QQ:613258200,备注牛客。
Excel文件:

代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

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.poifs.filesystem.POIFSFileSystem;

public class POI_test {

	public static void main(String[] args) throws FileNotFoundException,
			IOException {
		getSumTimes();
	}

	public static void getSumTimes() throws FileNotFoundException, IOException {
		// 得到Excel常用对象
		POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(
				"f:/yidong.xls"));
		// 得到Excel工作簿对象
		HSSFWorkbook wb = new HSSFWorkbook(fs);
		// 得到Excel工作表对象
		HSSFSheet sheet = wb.getSheetAt(0);
		int maxRowNums = sheet.getLastRowNum();
		int second = 0;
		int minute = 0;
		int hour = 0;
		for (int i = 1; i < maxRowNums; i++) {
			// 得到Excel工作表的行
			HSSFRow row = sheet.getRow(i);
			// 得到Excel工作表指定行的单元格
			HSSFCell cell = row.getCell(4);
			String time = cell.getStringCellValue();
			for (int j = time.length() - 1; j >= 0; j--) {
				if (time.charAt(j) == '秒') {
					StringBuffer se = new StringBuffer();
					for (int k = j - 1; k >= 0 && time.charAt(k) >= 48
							&& time.charAt(k) <= 57; k--) {
						se.append(time.charAt(k));
					}
					se.reverse();
					int se_int = Integer.parseInt(se.toString());
					second += se_int;
				}
				if (time.charAt(j) == '分') {
					StringBuffer min = new StringBuffer();
					for (int k = j - 1; k >= 0 && time.charAt(k) >= 48
							&& time.charAt(k) <= 57; k--) {
						min.append(time.charAt(k));
					}
					min.reverse();
					int min_int = Integer.parseInt(min.toString());
					minute += min_int;
				}
				if (time.charAt(j) == '时') {
					StringBuffer hou = new StringBuffer();
					for (int k = j - 1; k >= 0 && time.charAt(k) >= 48
							&& time.charAt(k) <= 57; k--) {
						hou.append(time.charAt(k));
					}
					hou.reverse();
					int hour_int = Integer.parseInt(hou.toString());
					hour += hour_int;
				}
			}
		}
		minute = minute + second / 60;
		second = second % 60;
		hour = hour + minute / 60;
		minute = minute % 60;
		System.out.println("总通话时间为:" + hour + " 小时  " + minute + " 分钟 "
				+ second + " 秒 ");
	}
}
运行效果: