java excel通用工具类

2023-10-27

 

public class ExcelUtils {

/**

* 有时间记得重构下

* 生成excel流

* @throws IOException

* @param type xone-1 lr-2

*/

public static String createExcelIO(List<ExcelSheetUtils> sheets, String bgnDate,String orgCode,String type) throws IOException{

ByteArrayOutputStream bos=null;

InputStream input=null;

String paramString="";

XSSFWorkbook wb = getExcel(sheets, bgnDate,orgCode,type);

bos = new ByteArrayOutputStream();

wb.write(bos); // 写入bate对象

byte[] byteArray = bos.toByteArray();

input = new ByteArrayInputStream(byteArray);

paramString = streamToString(input);

if (bos != null) {

bos.close();// 操作结束,关闭文件

}

if (input != null) {

input.close();// 操作结束,关闭文件

}

return paramString;

}

/**

* 生产excel文件

* @param sheets

* @param bgnDate

* @param xls

* @param type xone-1 lr-2

* @return

* @throws IOException

*/

public static String createExcel(List<ExcelSheetUtils> sheets, String bgnDate,String xls,String orgCode,String type) throws IOException{

OutputStream os = null;

XSSFWorkbook wb = getExcel(sheets, bgnDate,orgCode,type);

String filePath = getFilePath(xls);

os = new FileOutputStream(filePath);

wb.write(os);

os.flush();

if (os!=null) {

os.close();

}

return filePath;

}

/**

* 生产excel对象

* @param sheets

* @param bgnDate

* @return

*/

private static XSSFWorkbook getExcel(List<ExcelSheetUtils> sheets, String bgnDate,String orgCode,String type){

if (type.equals("1")) {

//创建excel

XSSFWorkbook wb = new XSSFWorkbook();

//设置excel样式

XSSFCellStyle headStyle = wb.createCellStyle();

XSSFCellStyle headSmallStyle = wb.createCellStyle();

XSSFCellStyle titleStyle = wb.createCellStyle();

XSSFCellStyle contentStyle = wb.createCellStyle();

XSSFCellStyle contentStyleRed = wb.createCellStyle();

XSSFDataFormat format = wb.createDataFormat();

//内容

XSSFFont fontContent = wb.createFont();

fontContent.setFontName("Arial"); // 什么字体

fontContent.setFontHeightInPoints((short)9);

contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

contentStyle.setDataFormat(format.getFormat("TEXT"));

contentStyle.setWrapText(true);

contentStyle.setFont(fontContent);

//红色字体

XSSFFont fontred = wb.createFont();

fontred.setColor(HSSFColor.RED.index);

fontred.setFontName("Arial"); // 什么字体

fontred.setFontHeightInPoints((short)9);

contentStyleRed.setBorderLeft(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderTop(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderRight(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderBottom(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setAlignment(HSSFCellStyle.ALIGN_CENTER);

contentStyleRed.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

contentStyleRed.setDataFormat(format.getFormat("TEXT"));

contentStyleRed.setWrapText(true);

contentStyleRed.setFont(fontred);

//头部

XSSFFont fontHead = wb.createFont();

fontHead.setFontHeightInPoints((short) 12); // 字体大小

fontHead.setFontName("Arial"); // 什么字体

fontHead.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

headStyle.setDataFormat(format.getFormat("TEXT"));

headStyle.setWrapText(true);

headStyle.setFont(fontHead);

//头部小字

XSSFFont fontHeadSmall = wb.createFont();

fontHeadSmall.setFontHeightInPoints((short) 9); // 字体大小

fontHeadSmall.setFontName("Arial"); // 什么字体

fontHeadSmall.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

headSmallStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

headSmallStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

headSmallStyle.setDataFormat(format.getFormat("TEXT"));

headSmallStyle.setWrapText(true);

headSmallStyle.setFont(fontHeadSmall);

//标题

XSSFFont fontTitle = wb.createFont();

fontTitle.setFontHeightInPoints((short) 9); // 字体大小

fontTitle.setFontName("Arial"); // 什么字体

fontTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

titleStyle.cloneStyleFrom(contentStyle);

titleStyle.setFont(fontTitle);

for (ExcelSheetUtils esu : sheets) {

String[] title = esu.getTitle();

String[] contentKey = esu.getContentKey();

String sheet =esu.getSheet();

List<Map> list = esu.getContent();

//如果大标题不为空,那么就是第一页

if (!StringUtils.isEmpty(esu.getHeardTitle())) {

XSSFSheet st = wb.createSheet(sheet);

//设置列宽

st.setDefaultRowHeightInPoints(15);//这是设置整个列表的高度高

st.setDefaultColumnWidth(15);//设置整个列表的宽度

int length = title.length;

XSSFRow hrow = st.createRow(0);

XSSFCell titleCell = hrow.createCell(0);

titleCell.setCellValue(esu.getHeardTitle());

titleCell.setCellStyle(headStyle);

//参数说明:1:开始行 2:结束行 3:开始列 4:结束列

st.addMergedRegion(new CellRangeAddress(0,0,0,length - 1));

XSSFRow hrow1 = st.createRow(1);

XSSFRow hrow2 = st.createRow(2);

XSSFCell Cell2 = hrow2.createCell(0);

Cell2.setCellValue("制表:"+orgCode);

Cell2.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(2,2,0,length - 1));

XSSFRow hrow3 = st.createRow(3);

XSSFCell Cel3 = hrow3.createCell(0);

Cel3.setCellValue("开始日期:"+bgnDate+"结束日期:"+bgnDate);

Cel3.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(3,3,0,length - 1));

XSSFRow hrow4 = st.createRow(4);

XSSFCell title2Cell=hrow4.createCell(0);

title2Cell.setCellValue(sheet);

title2Cell.setCellStyle(headStyle);

st.addMergedRegion(new CellRangeAddress(4,4,0,length - 1));

XSSFRow hrow5 = st.createRow(5);

for (int i = 0; i < length; i++) {

XSSFCell cell = hrow5.createCell(i);

cell.setCellValue(new XSSFRichTextString(title[i]));

cell.setCellStyle(titleStyle);

}

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

int size = list.size();

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

XSSFRow row = st.createRow(i + 6);

Map dataRow = (Map) list.get(i);

for (int j = 0; j < contentKey.length; j++) {

XSSFCell cell = row.createCell(j);

Object eleData = dataRow.get(contentKey[j]);

if (StringUtils.isEmpty(eleData)) {

cell.setCellValue("");

cell.setCellStyle(contentStyle);

}else{

String value =eleData.toString();

cell.setCellValue(value);

if (value.startsWith("-")) {

cell.setCellStyle(contentStyleRed);

}else{

cell.setCellStyle(contentStyle);

}

}

}

}

}

}else{

XSSFSheet st = wb.createSheet(esu.getSheet());

st.setDefaultRowHeightInPoints(15);//这是设置整个列表的高度高

st.setDefaultColumnWidth(10);//设置整个列表的宽度

int length = title.length;

XSSFRow hrow = st.createRow(0);

XSSFRow hrow2 = st.createRow(1);

for (int i = 0; i < length; i++) {

XSSFCell cell = hrow2.createCell(i);

cell.setCellValue(new XSSFRichTextString(title[i]));

cell.setCellStyle(titleStyle);

}

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

int size = list.size();

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

XSSFRow row = st.createRow(i + 2);

Map dataRow = (Map) list.get(i);

for (int j = 0; j < contentKey.length; j++) {

XSSFCell cell = row.createCell(j);

Object eleData = dataRow.get(contentKey[j]);

if (StringUtils.isEmpty(eleData)) {

cell.setCellValue("");

cell.setCellStyle(contentStyle);

}else{

String value =eleData.toString();

cell.setCellValue(value);

if (value.startsWith("-")) {

cell.setCellStyle(contentStyleRed);

}else{

cell.setCellStyle(contentStyle);

}

}

}

}

}

}

}

//创建页尾

XSSFSheet st = wb.createSheet("页尾");

st.setDefaultRowHeightInPoints(15);//这是设置整个列表的高度高

st.setDefaultColumnWidth(100);//设置整个列表的宽度

XSSFRow hrow = st.createRow(0);

XSSFRow hrow2 = st.createRow(1);

XSSFCell cell = hrow2.createCell(0);

cell.setCellValue(new SimpleDateFormat("制表日期:"+"yyyy年 MM月 dd日 HH点 mm分 ss秒"+" 操作员:"+orgCode).format(new Date()));

cell.setCellStyle(titleStyle);

return wb;

} else {

// 创建excel 两融

XSSFWorkbook wb = new XSSFWorkbook();

// 设置excel样式

XSSFCellStyle headStyle = wb.createCellStyle();

XSSFCellStyle headSmallStyle = wb.createCellStyle();

XSSFCellStyle titleStyle = wb.createCellStyle();

XSSFCellStyle contentStyle = wb.createCellStyle();

XSSFCellStyle contentStyleRed = wb.createCellStyle();

XSSFDataFormat format = wb.createDataFormat();

// 内容

XSSFFont fontContent = wb.createFont();

fontContent.setFontName("Arial"); // 什么字体

fontContent.setFontHeightInPoints((short) 9);

contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

contentStyle.setDataFormat(format.getFormat("TEXT"));

contentStyle.setWrapText(true);

contentStyle.setFont(fontContent);

// 红色字体

XSSFFont fontred = wb.createFont();

fontred.setColor(HSSFColor.RED.index);

fontred.setFontName("Arial"); // 什么字体

fontred.setFontHeightInPoints((short) 9);

contentStyleRed.setBorderLeft(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderTop(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderRight(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setBorderBottom(HSSFCellStyle.BORDER_THIN);

contentStyleRed.setAlignment(HSSFCellStyle.ALIGN_CENTER);

contentStyleRed.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

contentStyleRed.setDataFormat(format.getFormat("TEXT"));

contentStyleRed.setWrapText(true);

contentStyleRed.setFont(fontred);

// 头部

XSSFFont fontHead = wb.createFont();

fontHead.setFontHeightInPoints((short) 12); // 字体大小

fontHead.setFontName("Arial"); // 什么字体

fontHead.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

headStyle.setDataFormat(format.getFormat("TEXT"));

headStyle.setWrapText(true);

headStyle.setFont(fontHead);

// 头部小字

XSSFFont fontHeadSmall = wb.createFont();

fontHeadSmall.setFontHeightInPoints((short) 9); // 字体大小

fontHeadSmall.setFontName("Arial"); // 什么字体

fontHeadSmall.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

headSmallStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

headSmallStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

headSmallStyle.setDataFormat(format.getFormat("TEXT"));

headSmallStyle.setWrapText(true);

headSmallStyle.setFont(fontHeadSmall);

// 标题

XSSFFont fontTitle = wb.createFont();

fontTitle.setFontHeightInPoints((short) 9); // 字体大小

fontTitle.setFontName("Arial"); // 什么字体

fontTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗

titleStyle.cloneStyleFrom(contentStyle);

titleStyle.setFont(fontTitle);

for (ExcelSheetUtils esu : sheets) {

String[] title = esu.getTitle();

String[] contentKey = esu.getContentKey();

String sheet = esu.getSheet();

List<Map> list = esu.getContent();

// 如果大标题不为空,那么就是第一页

if (!StringUtils.isEmpty(esu.getHeardTitle())) {

XSSFSheet st = wb.createSheet(sheet);

// 设置列宽

st.setDefaultRowHeightInPoints(17);// 这是设置整个列表的高度高

st.setDefaultColumnWidth(15);// 设置整个列表的宽度

int length = title.length;

XSSFRow hrow0 = st.createRow(0);

st.addMergedRegion(new CellRangeAddress(0, 0, 0, 5));

XSSFRow hrow1 = st.createRow(1);

XSSFCell titleCell = hrow1.createCell(0);

titleCell.setCellValue(esu.getHeardTitle());

titleCell.setCellStyle(headStyle);

// 参数说明:1:开始行 2:结束行 3:开始列 4:结束列

st.addMergedRegion(new CellRangeAddress(1, 1, 0, 5));

XSSFRow hrow2 = st.createRow(2);

XSSFCell Cell2 = hrow2.createCell(0);

Cell2.setCellValue("帐单日期: " + bgnDate + "--" + bgnDate);

Cell2.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(2, 2, 0, 5));

XSSFRow hrow3 = st.createRow(3);

XSSFCell title2Cell = hrow3.createCell(0);

title2Cell.setCellValue(sheet);

title2Cell.setCellStyle(headStyle);

st.addMergedRegion(new CellRangeAddress(3, 3, 0, 5));

// 基本信息值

Map dataRow = (Map) list.get(0);

List<Map> listMap = new ArrayList<>();

for (int i = 0; i < length; i = i + 2) {

Map map = new HashMap<>();

map.put("1", title[i] + ";" + contentKey[i]);

map.put("2", title[i + 1] + ";" + contentKey[i + 1]);

listMap.add(map);

}

int size2 = listMap.size();

for (int i = 0; i < size2; i++) {

Map map = listMap.get(i);

XSSFRow row = st.createRow(4 + i);

XSSFCell cell0 = row.createCell(0);

cell0.setCellStyle(contentStyle);

cell0.setCellValue(map.get("1").toString().split(";")[0]);

XSSFCell cell1 = row.createCell(1);

XSSFCell cell2 = row.createCell(2);

Object userName = dataRow.get(map.get("1").toString().split(";")[1]);

cell1.setCellStyle(contentStyle);

cell2.setCellStyle(contentStyle);

cell1.setCellValue(StringUtils.isEmpty(userName) ? "" : userName.toString());

st.addMergedRegion(new CellRangeAddress(4 + i, 4 + i, 1, 2));

XSSFCell cell3 = row.createCell(3);

cell3.setCellStyle(contentStyle);

cell3.setCellValue(map.get("2").toString().split(";")[0]);

XSSFCell cell4 = row.createCell(4);

XSSFCell cell5 = row.createCell(5);

Object account = dataRow.get(map.get("2").toString().split(";")[1]);

cell4.setCellStyle(contentStyle);

cell4.setCellValue(StringUtils.isEmpty(account) ? "" : account.toString());

cell5.setCellStyle(contentStyle);

st.addMergedRegion(new CellRangeAddress(4 + i, 4 + i, 4, 5));

}

} else if (esu.getSheet().equals("净资产") || esu.getSheet().equals("当前资产")) {

XSSFSheet st = wb.createSheet(esu.getSheet());

st.setDefaultRowHeightInPoints(15);// 这是设置整个列表的高度高

st.setDefaultColumnWidth(10);// 设置整个列表的宽度

int length = title.length;

XSSFRow hrow = st.createRow(0);

XSSFRow hrow2 = st.createRow(1);

for (int i = 0; i < length; i++) {

XSSFCell cell = hrow2.createCell(i);

cell.setCellValue(new XSSFRichTextString(title[i]));

cell.setCellStyle(titleStyle);

}

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

int size = list.size();

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

XSSFRow row = st.createRow(i + 2);

Map dataRow = (Map) list.get(i);

for (int j = 0; j < contentKey.length; j++) {

XSSFCell cell = row.createCell(j);

Object eleData = dataRow.get(contentKey[j]);

if (StringUtils.isEmpty(eleData)) {

cell.setCellValue("");

cell.setCellStyle(contentStyle);

} else {

String value = eleData.toString();

cell.setCellValue(value);

if (value.startsWith("-")) {

cell.setCellStyle(contentStyleRed);

} else {

cell.setCellStyle(contentStyle);

}

}

}

}

}

} else if (esu.getSheet().equals("负债情况") || esu.getSheet().equals("负债明细")

|| esu.getSheet().equals("业务流水")) {

XSSFSheet st = wb.createSheet(esu.getSheet());

st.setDefaultRowHeightInPoints(15);// 这是设置整个列表的高度高

st.setDefaultColumnWidth(10);// 设置整个列表的宽度

int length = title.length;

XSSFRow hrow0 = st.createRow(0);

st.addMergedRegion(new CellRangeAddress(0, 0, 0, length - 1));

XSSFRow hrow1 = st.createRow(1);

XSSFCell Cell1 = hrow1.createCell(0);

Cell1.setCellValue(esu.getSheet());

Cell1.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(1, 1, 0, length - 1));

XSSFRow hrow2 = st.createRow(2);

for (int i = 0; i < length; i++) {

XSSFCell cell = hrow2.createCell(i);

cell.setCellValue(new XSSFRichTextString(title[i]));

cell.setCellStyle(titleStyle);

}

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

int size = list.size();

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

XSSFRow row = st.createRow(i + 3);

Map dataRow = (Map) list.get(i);

for (int j = 0; j < contentKey.length; j++) {

XSSFCell cell = row.createCell(j);

Object eleData = dataRow.get(contentKey[j]);

if (StringUtils.isEmpty(eleData)) {

cell.setCellValue("");

cell.setCellStyle(contentStyle);

} else {

String value = eleData.toString();

cell.setCellValue(value);

if (value.startsWith("-")) {

cell.setCellStyle(contentStyleRed);

} else {

cell.setCellStyle(contentStyle);

}

}

}

}

}

} else if (esu.getSheet().equals("资产负债情况")) {

XSSFSheet st = wb.createSheet(esu.getSheet());

st.setDefaultRowHeightInPoints(15);// 这是设置整个列表的高度高

st.setDefaultColumnWidth(10);// 设置整个列表的宽度

int length = title.length;

XSSFRow hrow0 = st.createRow(0);

st.addMergedRegion(new CellRangeAddress(0, 0, 0, length - 1));

XSSFRow hrow1 = st.createRow(1);

XSSFCell Cell1 = hrow1.createCell(0);

Cell1.setCellValue(esu.getSheet());

Cell1.setCellStyle(headStyle);

st.addMergedRegion(new CellRangeAddress(1, 1, 0, length - 1));

XSSFRow hrow2 = st.createRow(2);

XSSFCell Cell2 = hrow2.createCell(0);

Cell2.setCellValue("1、资产情况");

Cell2.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(2, 2, 0, length - 1));

XSSFRow hrow3 = st.createRow(3);

XSSFCell Cell3 = hrow3.createCell(0);

Cell3.setCellValue("1.1当前资产情况");

Cell3.setCellStyle(headSmallStyle);

st.addMergedRegion(new CellRangeAddress(3, 3, 0, length - 1));

XSSFRow hrow4 = st.createRow(4);

for (int i = 0; i < length; i++) {

XSSFCell cell = hrow4.createCell(i);

cell.setCellValue(new XSSFRichTextString(title[i]));

cell.setCellStyle(titleStyle);

}

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

int size = list.size();

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

XSSFRow row = st.createRow(i + 5);

Map dataRow = (Map) list.get(i);

for (int j = 0; j < contentKey.length; j++) {

XSSFCell cell = row.createCell(j);

Object eleData = dataRow.get(contentKey[j]);

if (StringUtils.isEmpty(eleData)) {

cell.setCellValue("");

cell.setCellStyle(contentStyle);

} else {

String value = eleData.toString();

cell.setCellValue(value);

if (value.startsWith("-")) {

cell.setCellStyle(contentStyleRed);

} else {

cell.setCellStyle(contentStyle);

}

}

}

}

}

}

}

// 创建页尾

XSSFSheet st = wb.createSheet("页尾");

st.setDefaultRowHeightInPoints(15);// 这是设置整个列表的高度高

st.setDefaultColumnWidth(100);// 设置整个列表的宽度

XSSFRow hrow = st.createRow(0);

XSSFRow hrow2 = st.createRow(1);

XSSFCell cell = hrow2.createCell(0);

cell.setCellValue(new SimpleDateFormat("制表日期:" + "yyyy年 MM月 dd日 HH点 mm分 ss秒" + " 操作员:" + orgCode)

.format(new Date()));

cell.setCellStyle(titleStyle);

return wb;

}

}

/**

* 将流转换成字符串 使用Base64加密

*

* @param in输入流

* @return

* @throws IOException

*/

public static String streamToString(InputStream inputStream) throws IOException {

byte[] bt = toByteArray(inputStream);

String out = new sun.misc.BASE64Encoder().encodeBuffer(bt);

return out;

}

/**

*

* summary:将流转化为字节数组

*

* @param inputStream

* @return

* @throws IOException

*

*/

public static byte[] toByteArray(InputStream inputStream) throws IOException {

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buffer = new byte[1024 * 4];

byte[] result = null;

try {

int n = 0;

while ((n = inputStream.read(buffer)) != -1) {

out.write(buffer, 0, n);

}

result = out.toByteArray();

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally {

if (out!=null) {

out.close();

}

}

return result;

}

/**

* 获取系统路径

* @param xls

* @return

*/

public static String getFilePath(String xls) {

String path = getHeaderRealPath();

File file = new File(path);

if (!file.exists()) {

file.mkdirs();

}

return path+xls;

}

/**

* 生产文件地址

* @return

*/

private static String getHeaderRealPath() {

SimpleDateFormat dbf=new SimpleDateFormat("yyyy-MM-dd");

String dateDZD=dbf.format(new Date())+"DZD";

SimpleDateFormat dateFormat=new SimpleDateFormat("HH");

String hh=dateFormat.format(new Date());

SimpleDateFormat dateFormatmm=new SimpleDateFormat("mm");

String mm=dateFormatmm.format(new Date());

String rootPath = PropertyUtil.getValue("NAS_ROOTPATH");

String directoryName = PropertyUtil.getValue("NAS_ID_VERIFY_IMG_DIRECTORY");

if (rootPath.endsWith(File.separator)) {

return rootPath + directoryName + System.getProperty("file.separator") +dateDZD+System.getProperty("file.separator")+ hh + System.getProperty("file.separator") + mm + System.getProperty("file.separator");

} else {

return rootPath + directoryName + System.getProperty("file.separator") +dateDZD+System.getProperty("file.separator")+ hh + System.getProperty("file.separator") + mm + System.getProperty("file.separator");

}

}

/**

* 读取文件

* @param url

* @return

* @throws IOException

*/

public static String inputExcel(String url) throws IOException{

FileInputStream input=new FileInputStream(url);

String paramString = streamToString(input);

if (input != null) {

input.close();// 操作结束,关闭文件

}

return paramString;

}

/**

* 删除文件

*/

public static void deleteFileExcels() {

SimpleDateFormat dbf=new SimpleDateFormat("yyyy-MM-dd");

String dateDZD=dbf.format(new Date())+"DZD";

String rootPath = PropertyUtil.getValue("NAS_ROOTPATH");

String directoryName = PropertyUtil.getValue("NAS_ID_VERIFY_IMG_DIRECTORY");

if (rootPath.endsWith(File.separator)) {

String url = rootPath + directoryName + System.getProperty("file.separator") +dateDZD+System.getProperty("file.separator");

deleteDirectory(url);

} else {

String url =rootPath + directoryName + System.getProperty("file.separator") +dateDZD+System.getProperty("file.separator");

deleteDirectory(url);

}

}

/**

* 删除目录(文件夹)以及目录下的文件

*

* @param dir

* 被删除目录的文件路径

* @return 目录删除成功返回true,否则返回false

*/

public static boolean deleteDirectory(String dir) {

// 如果dir不以文件分隔符结尾,自动添加文件分隔符

if (!dir.endsWith(File.separator)) {

dir = dir + File.separator;

}

File dirFile = new File(dir);

// 如果dir对应的文件不存在,或者不是一个目录,则退出

if (!dirFile.exists() || !dirFile.isDirectory()) {

System.out.println("删除目录失败" + dir + "目录不存在!");

return false;

}

boolean flag = true;

// 删除文件夹下的所有文件(包括子目录)

File[] files = dirFile.listFiles();

for (int i = 0; i < files.length; i++) {

// 删除子文件

if (files[i].isFile()) {

flag = deleteFile(files[i].getAbsolutePath());

if (!flag) {

break;

}

}

// 删除子目录

else {

flag = deleteDirectory(files[i].getAbsolutePath());

if (!flag) {

break;

}

}

}

if (!flag) {

System.out.println("删除目录失败");

return false;

}

// 删除当前目录

if (dirFile.delete()) {

System.out.println("删除目录" + dir + "成功!");

return true;

} else {

System.out.println("删除目录" + dir + "失败!");

return false;

}

}

/**

* 删除单个文件

*

* @param fileName

* 被删除文件的文件名

* @return 单个文件删除成功返回true,否则返回false

*/

public static boolean deleteFile(String fileName) {

File file = new File(fileName);

if (file.isFile() && file.exists()) {

file.delete();

System.out.println("删除单个文件" + fileName + "成功!");

return true;

} else {

System.out.println("删除单个文件" + fileName + "失败!");

return false;

}

}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java excel通用工具类 的相关文章

  • 插入行而不选择任何内容?

    我正在使用 VBA 希望在特定位置插入一行而不选择它 我遇到的问题是 选择该行后 当脚本运行完毕时 电子表格会向下滚动到该行 我希望能够在不将电子表格向下滚动到插入行的情况下执行此操作 Rows i i Select ActiveCell
  • 如何抑制 Cucumber/Junit 断言堆栈跟踪

    我有一个黄瓜场景 该步骤使用assertEquals 我的结果报告显示了对最终用户不友好的堆栈跟踪 我怎样才能抑制它 Scenario Add two numbers Given I have two inputs 3 and 2 When
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 使用 Hibernate Criteria 过滤 Map 中的键和值

    我有以下持久类 public class Code ElementCollection targetClass CodeValue class MapKeyClass CodeProperty class JoinTable name co
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 在 Java 中的 JFrame/JPanel/JComponent 中添加 Web 浏览器

    我正在开发一个 Java 应用程序 需要在应用程序中使用 Web 浏览器 我见过一些应用程序这样做 例如在同一应用程序中单击左侧面板中的提要并打开右侧面板中的链接时的 RSS 阅读器 我想实现类似的功能 在java中可以做到这一点吗 Jav
  • java数学中的组合“N选择R”?

    java库中是否有内置方法可以为任何N R计算 N选择R 公式 实际上很容易计算N choose K甚至不需要计算阶乘 我们知道 公式为 N choose K is N N K K 因此 公式为 N choose K 1 is N N N
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • 用于安装 R 软件包的备用编译器:clang:错误:不支持的选项“-fopenmp”

    我正在尝试在 OS X 10 11 6 上使用 R 版本 3 4 0 安装 rJava 包 install packages rJava type source 我收到以下错误 clang o libjri jnilib Rengine o
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • 内部类的访问修饰符[重复]

    这个问题在这里已经有答案了 可能的重复 受保护 公共内部类 https stackoverflow com questions 595179 protected public inner classes 我确信这个问题已经被问过 但我找不到
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • 接口中“不能降低继承方法的可见性”的含义

    我有两个文件 public interface PrintService void print PrintDetails details class PrintDetails private String printTemplate pub
  • 在 for 循环比较中使用集合大小

    Java 中 Collections 的 size 方法是否有编译器优化 考虑以下代码 for int i 0 i

随机推荐

  • 30天自制操作系统——第一天到第二天

    第一天 光盘地址用的这个 30天自制操作系统光盘 夕雨714 博客园 cnblogs com Bz162下载地址 Bz c mos vcraft jp 启动方式 D 文档 学习科目 计算机基础 操作系统 操作系统实验 30dayMakeOS
  • JavaWeb项目(登录注册页面)全过程详细总结

    JavaWeb项目 登录注册页面 全过程总结 文章目录 JavaWeb项目 登录注册页面 全过程总结 一 环境准备与开发工具 二 创建 JavaWeb 项目 2 1 新建Dynamic Web Project项目 2 2 创建前端页面 2
  • 手机Vbus上防护用OVP简介

    手机Vbus上防护用OVP简介 作者 AirCity 2019 10 19 aircity007 sina com 1 什么是OVP OVP是Over Voltage Protection的首字母缩写 中文名是过压保护负载开关 当输入电压大
  • CentOS安装教程-解决“Warning:/dev/root does not exist”问题

    在安装CentOS时 若出现 Warning dev root does not exist could not boot 一般情况下是因为未找到安装系统盘的所在位置 例如 U盘 这时只需找到其位置 并对配置稍作修改即可 当我们使用U盘安装
  • LeetCode:二叉树的修改与构造(5道经典题目)

    LeetCode 二叉树的修改与构造 5道经典题目 本文带来与二叉树的修改与构造有关的经典题目 主要实现是C 226 翻转二叉树 106 从中序与后序遍历序列构造二叉树 105 从前序与中序遍历序列构造二叉树 654 最大二叉树 617 合
  • 安装报错ERROR: Could not find a version that satisfies the requirement tensorflow ERROR: No matching dis

    ERROR No matching distribution found for xxx的情况这可能是因为网络的问题 这时我们使用国内的镜像源来加速输入命令 python m pip install lxml 如果你安装的是别的库 请输入别
  • Java实现 LeetCode 120 三角形最小路径和

    120 三角形最小路径和 给定一个三角形 找出自顶向下的最小路径和 每一步只能移动到下一行中相邻的结点上 例如 给定三角形 2 3 4 6 5 7 4 1 8 3 自顶向下的最小路径和为 11 即 2 3 5 1 11 说明 如果你可以只使
  • 【YOLOX关键模块记录与解读】YOLOX: Exceeding YOLO Series in 2021

    目录 前言 一 主干部分的Focus网络结构 二 解耦头 三 Mosaic数据增强 四 Anchor Free 五 SimOTA标签匹配策略 六 参考资料 前言 论文地址 https arxiv org abs 2107 08430 源码地
  • uniapp引入外部js链接

    geturl let self this const url https webrtc github io adapter adapter latest js https g alicdn com cloudcallcenter SIPml
  • jenkins安装插件失败

    更改镜像库地址 去以下地址获取当前最新的地址 http mirrors jenkins ci org status html 截取上图红框中的url 在管理插件 gt 高级 中配置成下图中的格式
  • Qt中QLineEdit(取值、赋值、字体大小颜色)、QTextEdit和QPlainTextEdit

    核心 这些东西理解就可以了 下次用的时候看下笔记 能想起来就可以了 背 也背不下来 放弃吧 QString 界面设计最常用到的组件就是QLabel和QLineEdit QLabel用于显示字符串 QLineEdit用于输入和显示字符串 两个
  • 浏览器渲染原理

    浏览器渲染原理 目录 目录 浏览器渲染原理 B S架构及其运行原理 渲染过程 defer async不会阻塞页面解析 B S架构及其运行原理 b s架构是Brower Server结构 chrome浏览器渲染速度最快不同于其他浏览器 因为c
  • Transformer入门(一)——结构

    文章目录 前言 一 Transformer的产生和基础思想 1 1 Transformer的Motivation 1 2 Transformer的原始框架 1 3 关于Decoder的补充说明 二 Encoder中重要模块的具体实现 2 1
  • webpack配置devServer配置https代理与证书

    浏览器如果需要开发某些特定功能 需要https浏览器才会给予功能权限 则开发时我们需要在https环境 下面是配置一个webpack devServer的https环境 webpack config js module exports de
  • C++构造函数/拷贝控制

    1 C 构造函数 C 中构造函数 constructor 的作用是用来控制类对象的初始化过程 构造函数的作用是初始化类对象的数据成员 无论何时只要类的对象被创建 就会执行构造函数 1 1 默认构造函数 当定义一个类对象时 如果没有为对象提供
  • Git详细安装教程

    对于Git这块 我也算是个小白 最近在学习Git 所以趁此机会详细讲解一下Git的安装教程以及安装过程中遇到的问题 也欢迎大家对其补充 共同进步 1 下载Git Git的下载地址 windows系统 http gitforwindows o
  • Laravel_arse error: syntax error, unexpected '?'

    解决办法 php的版本不对 先打开composer phar 看看版本是否符合要求 之后修改服务器的php版本 我用的是wamp套餐 把php版本修改为7 2 4 建议也把编译器里的php开发环境统一为7 2 4
  • linux中嵌套循环,linux中的嵌套循环

    嵌套循环 内循环 一条循环语句可以在循环中使用任何类型的命令 包括其他循环命令 示例1 bin bash for a 1 a lt 3 a do echo Starting loop a for b 1 b lt 3 b do echo I
  • ezStudio,易用高效的业务基础平台开发工具

    摘要 本文从业务基础平台谈起 引申出与业务基础平台息息相关的开发工具 通过对国内外开发工具现状与未来趋势的描述 引导读者对开发工具有一个较为全面的了解 最后对清华同方ezONE 易众 业务基础平台中的ezStudio开发工具作了重点介绍与说
  • java excel通用工具类

    public class ExcelUtils 有时间记得重构下 生成excel流 throws IOException param type xone 1 lr 2 public static String createExcelIO L