JAVA实现读写excle

话不多说,直接代码

1.javaExcle.Java

 

 

 

package Excel;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.text.DecimalFormat;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.poi.hssf.usermodel.HSSFDateUtil;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

 

public class javaExcle {

 

// 总行数

private int totalRow = 0;

// 总列数

private int totalCell = 0;

 

public javaExcle() {

 

}

 

public int getTotalRow() {

return totalRow;

}

 

public void setTotalRow(int totalRow) {

this.totalRow = totalRow;

}

 

public int getTotalCell() {

return totalCell;

}

 

public void setTotalCell(int totalCell) {

this.totalCell = totalCell;

}

 

public List<ArrayList<String>> read(String fileName) {

List<ArrayList<String>> dataList = new ArrayList<ArrayList<String>>();

File file = new File(fileName);

if (file == null || !file.exists()) {

return dataList;

}

try {

dataList = read(new FileInputStream(file));

 

} catch (Exception e) {

e.printStackTrace();

}

return dataList;

}

 

public List<ArrayList<String>> read(InputStream inputStream) {

List<ArrayList<String>> dataList = null;

try {

Workbook wb = new XSSFWorkbook(inputStream);

dataList = readwb(wb);

} catch (IOException e) {

e.printStackTrace();

}

return dataList;

}

 

public List<ArrayList<String>> readwb(Workbook wb) {

 

List<ArrayList<String>> dataList = new ArrayList<ArrayList<String>>();

 

DateUtil dateUnit = new DateUtil();

 

// 得到第一个shell

Sheet sheet = wb.getSheetAt(0);

this.totalRow = sheet.getPhysicalNumberOfRows();

if (this.totalRow >= 1 && sheet.getRow(0) != null) {

this.totalCell = sheet.getRow(0).getPhysicalNumberOfCells();

 

}

for (int r = 0; r < this.totalRow; r++) {

Row row = sheet.getRow(r);

if (row == null) {

continue;

}

 

ArrayList<String> rowLst = new ArrayList<String>();

for (short c = 0; c < this.getTotalCell(); c++) {

Cell cell = row.getCell(c);

String cellValue = "";

if (cell == null) {

rowLst.add(cellValue);

continue;

}

 

/** */

/** 处理数字型的,自动去零 */

if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {

/** */

/** excel,日期也是数字,在此要进行判断 */

if (HSSFDateUtil.isCellDateFormatted(cell)) {

cellValue = dateUnit.DateToString(

cell.getDateCellValue(), cellValue);

} else {

cellValue = getRightStr(cell.getNumericCellValue() + "");

}

}

/** */

/** 处理字符串型 */

else if (Cell.CELL_TYPE_STRING == cell.getCellType()) {

cellValue = cell.getStringCellValue();

}

/** */

/** 处理布尔型 */

else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {

cellValue = cell.getBooleanCellValue() + "";

}

/** */

/** 其它的,非以上几种数据类型 */

else {

cellValue = cell.toString() + "";

}

 

rowLst.add(cellValue);

}

dataList.add(rowLst);

}

return dataList;

}

 

private String getRightStr(String sNum) {

DecimalFormat decimalFormat = new DecimalFormat("#.000000");

String resultStr = decimalFormat.format(new Double(sNum));

if (resultStr.matches("^[-+]?\\d+\\.[0]+$")) {

resultStr = resultStr.substring(0, resultStr.indexOf("."));

}

return resultStr;

}

 

public static void main(String[] args) throws Exception {

List<ArrayList<String>> dataList = new javaExcle().read("d:/a.xlsx");

 

// System.out.println(dataLst);

 

for (ArrayList<String> innerLst : dataList) {

StringBuffer rowData = new StringBuffer();

for (String dataStr : innerLst) {

rowData.append(",").append(dataStr);

}

if (rowData.length() > 0) {

               

System.out.println(rowData.toString());

}

}

 

}

}

 

 

 

2. Week.Java

 

 

package Excel;

 

public enum Week {

 

MONDAY("星期一", "Monday", "Mon.", 1), TUESDAY("星期二", "Tuesday", "Tues.", 2), WEDNESDAY(

"星期三", "Wednesday", "Wed.", 3), THURSDAY("星期四", "Thursday",

"Thur.", 4), FRIDAY("星期五", "Friday", "Fri.", 5), SATURDAY("星期六",

"Saturday", "Sat.", 6), SUNDAY("星期日", "Sunday", "Sun.", 7);

 

String name_cn;

String name_en;

String name_enShort;

int number;

 

Week(String name_cn, String name_en, String name_enShort, int number) {

this.name_cn = name_cn;

this.name_en = name_en;

this.name_enShort = name_enShort;

this.number = number;

}

 

public String getChineseName() {

return name_cn;

}

 

public String getName() {

return name_en;

}

 

public String getShortName() {

return name_enShort;

}

 

public int getNumber() {

return number;

}

}

 

 

 

 

3 DateUtil.java

package Excel;

 

import java.text.ParsePosition;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

public class DateUtil {

 

private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>();

 

private static final Object object = new Object();

 

/**

 * 获取SimpleDateFormat

 *

 * @param pattern

 *            日期格式

 * @return SimpleDateFormat对象

 * @throws RuntimeException

 *             异常:非法日期格式

 */

private static SimpleDateFormat getDateFormat(String pattern)

throws RuntimeException {

SimpleDateFormat dateFormat = threadLocal.get();

if (dateFormat == null) {

synchronized (object) {

if (dateFormat == null) {

dateFormat = new SimpleDateFormat(pattern);

dateFormat.setLenient(false);

threadLocal.set(dateFormat);

}

}

}

dateFormat.applyPattern(pattern);

return dateFormat;

}

 

/**

 * 获取日期中的某数值。如获取月份

 *

 * @param date

 *            日期

 * @param dateType

 *            日期格式

 * @return 数值

 */

private static int getInteger(Date date, int dateType) {

int num = 0;

Calendar calendar = Calendar.getInstance();

if (date != null) {

calendar.setTime(date);

num = calendar.get(dateType);

}

return num;

}

 

/**

 * 增加日期中某类型的某数值。如增加日期

 *

 * @param date

 *            日期字符串

 * @param dateType

 *            类型

 * @param amount

 *            数值

 * @return 计算后日期字符串

 */

private static String addInteger(String date, int dateType, int amount) {

String dateString = null;

DateStyle dateStyle = getDateStyle(date);

if (dateStyle != null) {

Date myDate = StringToDate(date, dateStyle);

myDate = addInteger(myDate, dateType, amount);

dateString = DateToString(myDate, dateStyle);

}

return dateString;

}

 

/**

 * 增加日期中某类型的某数值。如增加日期

 *

 * @param date

 *            日期

 * @param dateType

 *            类型

 * @param amount

 *            数值

 * @return 计算后日期

 */

private static Date addInteger(Date date, int dateType, int amount) {

Date myDate = null;

if (date != null) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

calendar.add(dateType, amount);

myDate = calendar.getTime();

}

return myDate;

}

 

private static Date getAccurateDate(List<Long> timestamps) {

Date date = null;

long timestamp = 0;

Map<Long, long[]> map = new HashMap<Long, long[]>();

List<Long> absoluteValues = new ArrayList<Long>();

 

if (timestamps != null && timestamps.size() > 0) {

if (timestamps.size() > 1) {

for (int i = 0; i < timestamps.size(); i++) {

for (int j = i + 1; j < timestamps.size(); j++) {

long absoluteValue = Math.abs(timestamps.get(i)

- timestamps.get(j));

absoluteValues.add(absoluteValue);

long[] timestampTmp = { timestamps.get(i),

timestamps.get(j) };

map.put(absoluteValue, timestampTmp);

}

}

 

// 有可能有相等的情况。如2012-112012-11-01。时间戳是相等的。此时minAbsoluteValue0

// 因此不能将minAbsoluteValue取默认值0

long minAbsoluteValue = -1;

if (!absoluteValues.isEmpty()) {

minAbsoluteValue = absoluteValues.get(0);

for (int i = 1; i < absoluteValues.size(); i++) {

if (minAbsoluteValue > absoluteValues.get(i)) {

minAbsoluteValue = absoluteValues.get(i);

}

}

}

 

if (minAbsoluteValue != -1) {

long[] timestampsLastTmp = map.get(minAbsoluteValue);

 

long dateOne = timestampsLastTmp[0];

long dateTwo = timestampsLastTmp[1];

if (absoluteValues.size() > 1) {

timestamp = Math.abs(dateOne) > Math.abs(dateTwo) ? dateOne

: dateTwo;

}

}

} else {

timestamp = timestamps.get(0);

}

}

 

if (timestamp != 0) {

date = new Date(timestamp);

}

return date;

}

 

/**

 * 判断字符串是否为日期字符串

 *

 * @param date

 *            日期字符串

 * @return true or false

 */

public static boolean isDate(String date) {

boolean isDate = false;

if (date != null) {

if (getDateStyle(date) != null) {

isDate = true;

}

}

return isDate;

}

 

/**

 * 获取日期字符串的日期风格。失敗返回null

 *

 * @param date

 *            日期字符串

 * @return 日期风格

 */

public static DateStyle getDateStyle(String date) {

DateStyle dateStyle = null;

Map<Long, DateStyle> map = new HashMap<Long, DateStyle>();

List<Long> timestamps = new ArrayList<Long>();

for (DateStyle style : DateStyle.values()) {

if (style.isShowOnly()) {

continue;

}

Date dateTmp = null;

if (date != null) {

try {

ParsePosition pos = new ParsePosition(0);

dateTmp = getDateFormat(style.getValue()).parse(date, pos);

if (pos.getIndex() != date.length()) {

dateTmp = null;

}

} catch (Exception e) {

}

}

if (dateTmp != null) {

timestamps.add(dateTmp.getTime());

map.put(dateTmp.getTime(), style);

}

}

Date accurateDate = getAccurateDate(timestamps);

if (accurateDate != null) {

dateStyle = map.get(accurateDate.getTime());

}

return dateStyle;

}

 

/**

 * 将日期字符串转化为日期。失败返回null

 *

 * @param date

 *            日期字符串

 * @return 日期

 */

public static Date StringToDate(String date) {

DateStyle dateStyle = getDateStyle(date);

return StringToDate(date, dateStyle);

}

 

/**

 * 将日期字符串转化为日期。失败返回null

 *

 * @param date

 *            日期字符串

 * @param pattern

 *            日期格式

 * @return 日期

 */

public static Date StringToDate(String date, String pattern) {

Date myDate = null;

if (date != null) {

try {

myDate = getDateFormat(pattern).parse(date);

} catch (Exception e) {

}

}

return myDate;

}

 

/**

 * 将日期字符串转化为日期。失败返回null

 *

 * @param date

 *            日期字符串

 * @param dateStyle

 *            日期风格

 * @return 日期

 */

public static Date StringToDate(String date, DateStyle dateStyle) {

Date myDate = null;

if (dateStyle != null) {

myDate = StringToDate(date, dateStyle.getValue());

}

return myDate;

}

 

/**

 * 将日期转化为日期字符串。失败返回null

 *

 * @param date

 *            日期

 * @param pattern

 *            日期格式

 * @return 日期字符串

 */

public static String DateToString(Date date, String pattern) {

String dateString = null;

if (date != null) {

try {

dateString = getDateFormat(pattern).format(date);

} catch (Exception e) {

}

}

return dateString;

}

 

/**

 * 将日期转化为日期字符串。失败返回null

 *

 * @param date

 *            日期

 * @param dateStyle

 *            日期风格

 * @return 日期字符串

 */

public static String DateToString(Date date, DateStyle dateStyle) {

String dateString = null;

if (dateStyle != null) {

dateString = DateToString(date, dateStyle.getValue());

}

return dateString;

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param newPattern

 *            新日期格式

 * @return 新日期字符串

 */

public static String StringToString(String date, String newPattern) {

DateStyle oldDateStyle = getDateStyle(date);

return StringToString(date, oldDateStyle, newPattern);

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param newDateStyle

 *            新日期风格

 * @return 新日期字符串

 */

public static String StringToString(String date, DateStyle newDateStyle) {

DateStyle oldDateStyle = getDateStyle(date);

return StringToString(date, oldDateStyle, newDateStyle);

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param olddPattern

 *            旧日期格式

 * @param newPattern

 *            新日期格式

 * @return 新日期字符串

 */

public static String StringToString(String date, String olddPattern,

String newPattern) {

return DateToString(StringToDate(date, olddPattern), newPattern);

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param olddDteStyle

 *            旧日期风格

 * @param newParttern

 *            新日期格式

 * @return 新日期字符串

 */

public static String StringToString(String date, DateStyle olddDteStyle,

String newParttern) {

String dateString = null;

if (olddDteStyle != null) {

dateString = StringToString(date, olddDteStyle.getValue(),

newParttern);

}

return dateString;

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param olddPattern

 *            旧日期格式

 * @param newDateStyle

 *            新日期风格

 * @return 新日期字符串

 */

public static String StringToString(String date, String olddPattern,

DateStyle newDateStyle) {

String dateString = null;

if (newDateStyle != null) {

dateString = StringToString(date, olddPattern,

newDateStyle.getValue());

}

return dateString;

}

 

/**

 * 将日期字符串转化为另一日期字符串。失败返回null

 *

 * @param date

 *            旧日期字符串

 * @param olddDteStyle

 *            旧日期风格

 * @param newDateStyle

 *            新日期风格

 * @return 新日期字符串

 */

public static String StringToString(String date, DateStyle olddDteStyle,

DateStyle newDateStyle) {

String dateString = null;

if (olddDteStyle != null && newDateStyle != null) {

dateString = StringToString(date, olddDteStyle.getValue(),

newDateStyle.getValue());

}

return dateString;

}

 

/**

 * 增加日期的年份。失败返回null

 *

 * @param date

 *            日期

 * @param yearAmount

 *            增加数量。可为负数

 * @return 增加年份后的日期字符串

 */

public static String addYear(String date, int yearAmount) {

return addInteger(date, Calendar.YEAR, yearAmount);

}

 

/**

 * 增加日期的年份。失败返回null

 *

 * @param date

 *            日期

 * @param yearAmount

 *            增加数量。可为负数

 * @return 增加年份后的日期

 */

public static Date addYear(Date date, int yearAmount) {

return addInteger(date, Calendar.YEAR, yearAmount);

}

 

/**

 * 增加日期的月份。失败返回null

 *

 * @param date

 *            日期

 * @param monthAmount

 *            增加数量。可为负数

 * @return 增加月份后的日期字符串

 */

public static String addMonth(String date, int monthAmount) {

return addInteger(date, Calendar.MONTH, monthAmount);

}

 

/**

 * 增加日期的月份。失败返回null

 *

 * @param date

 *            日期

 * @param monthAmount

 *            增加数量。可为负数

 * @return 增加月份后的日期

 */

public static Date addMonth(Date date, int monthAmount) {

return addInteger(date, Calendar.MONTH, monthAmount);

}

 

/**

 * 增加日期的天数。失败返回null

 *

 * @param date

 *            日期字符串

 * @param dayAmount

 *            增加数量。可为负数

 * @return 增加天数后的日期字符串

 */

public static String addDay(String date, int dayAmount) {

return addInteger(date, Calendar.DATE, dayAmount);

}

 

/**

 * 增加日期的天数。失败返回null

 *

 * @param date

 *            日期

 * @param dayAmount

 *            增加数量。可为负数

 * @return 增加天数后的日期

 */

public static Date addDay(Date date, int dayAmount) {

return addInteger(date, Calendar.DATE, dayAmount);

}

 

/**

 * 增加日期的小时。失败返回null

 *

 * @param date

 *            日期字符串

 * @param hourAmount

 *            增加数量。可为负数

 * @return 增加小时后的日期字符串

 */

public static String addHour(String date, int hourAmount) {

return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);

}

 

/**

 * 增加日期的小时。失败返回null

 *

 * @param date

 *            日期

 * @param hourAmount

 *            增加数量。可为负数

 * @return 增加小时后的日期

 */

public static Date addHour(Date date, int hourAmount) {

return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);

}

 

/**

 * 增加日期的分钟。失败返回null

 *

 * @param date

 *            日期字符串

 * @param minuteAmount

 *            增加数量。可为负数

 * @return 增加分钟后的日期字符串

 */

public static String addMinute(String date, int minuteAmount) {

return addInteger(date, Calendar.MINUTE, minuteAmount);

}

 

/**

 * 增加日期的分钟。失败返回null

 *

 * @param date

 *            日期

 * @param dayAmount

 *            增加数量。可为负数

 * @return 增加分钟后的日期

 */

public static Date addMinute(Date date, int minuteAmount) {

return addInteger(date, Calendar.MINUTE, minuteAmount);

}

 

/**

 * 增加日期的秒钟。失败返回null

 *

 * @param date

 *            日期字符串

 * @param dayAmount

 *            增加数量。可为负数

 * @return 增加秒钟后的日期字符串

 */

public static String addSecond(String date, int secondAmount) {

return addInteger(date, Calendar.SECOND, secondAmount);

}

 

/**

 * 增加日期的秒钟。失败返回null

 *

 * @param date

 *            日期

 * @param dayAmount

 *            增加数量。可为负数

 * @return 增加秒钟后的日期

 */

public static Date addSecond(Date date, int secondAmount) {

return addInteger(date, Calendar.SECOND, secondAmount);

}

 

/**

 * 获取日期的年份。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 年份

 */

public static int getYear(String date) {

return getYear(StringToDate(date));

}

 

/**

 * 获取日期的年份。失败返回0

 *

 * @param date

 *            日期

 * @return 年份

 */

public static int getYear(Date date) {

return getInteger(date, Calendar.YEAR);

}

 

/**

 * 获取日期的月份。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 月份

 */

public static int getMonth(String date) {

return getMonth(StringToDate(date));

}

 

/**

 * 获取日期的月份。失败返回0

 *

 * @param date

 *            日期

 * @return 月份

 */

public static int getMonth(Date date) {

return getInteger(date, Calendar.MONTH) + 1;

}

 

/**

 * 获取日期的天数。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 

 */

public static int getDay(String date) {

return getDay(StringToDate(date));

}

 

/**

 * 获取日期的天数。失败返回0

 *

 * @param date

 *            日期

 * @return 

 */

public static int getDay(Date date) {

return getInteger(date, Calendar.DATE);

}

 

/**

 * 获取日期的小时。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 小时

 */

public static int getHour(String date) {

return getHour(StringToDate(date));

}

 

/**

 * 获取日期的小时。失败返回0

 *

 * @param date

 *            日期

 * @return 小时

 */

public static int getHour(Date date) {

return getInteger(date, Calendar.HOUR_OF_DAY);

}

 

/**

 * 获取日期的分钟。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 分钟

 */

public static int getMinute(String date) {

return getMinute(StringToDate(date));

}

 

/**

 * 获取日期的分钟。失败返回0

 *

 * @param date

 *            日期

 * @return 分钟

 */

public static int getMinute(Date date) {

return getInteger(date, Calendar.MINUTE);

}

 

/**

 * 获取日期的秒钟。失败返回0

 *

 * @param date

 *            日期字符串

 * @return 秒钟

 */

public static int getSecond(String date) {

return getSecond(StringToDate(date));

}

 

/**

 * 获取日期的秒钟。失败返回0

 *

 * @param date

 *            日期

 * @return 秒钟

 */

public static int getSecond(Date date) {

return getInteger(date, Calendar.SECOND);

}

 

/**

 * 获取日期 。默认yyyy-MM-dd格式。失败返回null

 *

 * @param date

 *            日期字符串

 * @return 日期

 */

public static String getDate(String date) {

return StringToString(date, DateStyle.YYYY_MM_DD);

}

 

/**

 * 获取日期。默认yyyy-MM-dd格式。失败返回null

 *

 * @param date

 *            日期

 * @return 日期

 */

public static String getDate(Date date) {

return DateToString(date, DateStyle.YYYY_MM_DD);

}

 

/**

 * 获取日期的时间。默认HH:mm:ss格式。失败返回null

 *

 * @param date

 *            日期字符串

 * @return 时间

 */

public static String getTime(String date) {

return StringToString(date, DateStyle.HH_MM_SS);

}

 

/**

 * 获取日期的时间。默认HH:mm:ss格式。失败返回null

 *

 * @param date

 *            日期

 * @return 时间

 */

public static String getTime(Date date) {

return DateToString(date, DateStyle.HH_MM_SS);

}

 

/**

 * 获取日期的星期。失败返回null

 *

 * @param date

 *            日期字符串

 * @return 星期

 */

public static Week getWeek(String date) {

Week week = null;

DateStyle dateStyle = getDateStyle(date);

if (dateStyle != null) {

Date myDate = StringToDate(date, dateStyle);

week = getWeek(myDate);

}

return week;

}

 

/**

 * 获取日期的星期。失败返回null

 *

 * @param date

 *            日期

 * @return 星期

 */

public static Week getWeek(Date date) {

Week week = null;

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

int weekNumber = calendar.get(Calendar.DAY_OF_WEEK) - 1;

switch (weekNumber) {

case 0:

week = Week.SUNDAY;

break;

case 1:

week = Week.MONDAY;

break;

case 2:

week = Week.TUESDAY;

break;

case 3:

week = Week.WEDNESDAY;

break;

case 4:

week = Week.THURSDAY;

break;

case 5:

week = Week.FRIDAY;

break;

case 6:

week = Week.SATURDAY;

break;

}

return week;

}

 

/**

 * 获取两个日期相差的天数

 *

 * @param date

 *            日期字符串

 * @param otherDate

 *            另一个日期字符串

 * @return 相差天数。如果失败则返回-1

 */

public static int getIntervalDays(String date, String otherDate) {

return getIntervalDays(StringToDate(date), StringToDate(otherDate));

}

 

/**

 * @param date

 *            日期

 * @param otherDate

 *            另一个日期

 * @return 相差天数。如果失败则返回-1

 */

public static int getIntervalDays(Date date, Date otherDate) {

int num = -1;

Date dateTmp = DateUtil.StringToDate(DateUtil.getDate(date),

DateStyle.YYYY_MM_DD);

Date otherDateTmp = DateUtil.StringToDate(DateUtil.getDate(otherDate),

DateStyle.YYYY_MM_DD);

if (dateTmp != null && otherDateTmp != null) {

long time = Math.abs(dateTmp.getTime() - otherDateTmp.getTime());

num = (int) (time / (24 * 60 * 60 * 1000));

}

return num;

}

}

 

 

 

4. DateStyle.java

 

package Excel;

 

public enum DateStyle {

 

YYYY_MM("yyyy-MM", false), YYYY_MM_DD("yyyy-MM-dd", false), YYYY_MM_DD_HH_MM(

"yyyy-MM-dd HH:mm", false), YYYY_MM_DD_HH_MM_SS(

"yyyy-MM-dd HH:mm:ss", false),

 

YYYY_MM_EN("yyyy/MM", false), YYYY_MM_DD_EN("yyyy/MM/dd", false), YYYY_MM_DD_HH_MM_EN(

"yyyy/MM/dd HH:mm", false), YYYY_MM_DD_HH_MM_SS_EN(

"yyyy/MM/dd HH:mm:ss", false),

 

YYYY_MM_CN("yyyyMM", false), YYYY_MM_DD_CN("yyyyMMdd", false), YYYY_MM_DD_HH_MM_CN(

"yyyyMMddHH:mm", false), YYYY_MM_DD_HH_MM_SS_CN(

"yyyyMMddHH:mm:ss", false),

 

HH_MM("HH:mm", true), HH_MM_SS("HH:mm:ss", true),

 

MM_DD("MM-dd", true), MM_DD_HH_MM("MM-dd HH:mm", true), MM_DD_HH_MM_SS(

"MM-dd HH:mm:ss", true),

 

MM_DD_EN("MM/dd", true), MM_DD_HH_MM_EN("MM/dd HH:mm", true), MM_DD_HH_MM_SS_EN(

"MM/dd HH:mm:ss", true),

 

MM_DD_CN("MMdd", true), MM_DD_HH_MM_CN("MMddHH:mm", true), MM_DD_HH_MM_SS_CN(

"MMddHH:mm:ss", true);

 

private String value;

 

private boolean isShowOnly;

 

DateStyle(String value, boolean isShowOnly) {

this.value = value;

this.isShowOnly = isShowOnly;

}

 

public String getValue() {

return value;

}

 

public boolean isShowOnly() {

return isShowOnly;

}

}

使用的jar包包括:log4j-1.2.17.jar

poi-3.7.jar

poi-3.17.jar

poi-ooxml-3.17.jar

 

 


Java中,可以使用Apache POI库来实现读取Excel文件的操作。Apache POI是一个开源的Java库,提供了对Microsoft Office格式文件(如Excel、Word和PowerPoint)的读写功能。 以下是使用Apache POI库读取Excel文件的基本步骤: 1. 导入Apache POI库的依赖: 在项目的构建文件(如Maven的pom.xml)中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建一个`Workbook`对象: ```java Workbook workbook = WorkbookFactory.create(new File("path/to/excel/file.xlsx")); ``` 3. 获取要读取的Sheet: ```java Sheet sheet = workbook.getSheetAt(0); // 读取第一个Sheet ``` 4. 遍历Sheet中的行和单元格,读取数据: ```java for (Row row : sheet) { for (Cell cell : row) { String cellValue = cell.getStringCellValue(); System.out.print(cellValue + "\t"); } System.out.println(); } ``` 完整的代码示例: ```java import org.apache.poi.ss.usermodel.*; import java.io.File; import java.io.IOException; public class ExcelReader { public static void main(String[] args) { try { Workbook workbook = WorkbookFactory.create(new File("path/to/excel/file.xlsx")); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { String cellValue = cell.getStringCellValue(); System.out.print(cellValue + "\t"); } System.out.println(); } workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值