Excel 读取并解密

Excel 读取并解密packagecom;/****/importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjav…

大家好,又见面了,我是你们的朋友全栈君。package com;

/**

*

*/

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

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

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

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

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;

import com.utils.CryptDESUtil;

/**

* @author qu

*/

public class Main {

private static SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

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

//一下是创建新的Excel 参数

File directory = new File(“1234解密.xls”);

directory.getCanonicalPath(); //得到的是C:/test/abc

String path = directory.getAbsolutePath(); //得到的是执行程序所在的文件路径

//File filewrite=new File(“E:\\解密1234.xls”);

File filewrite=new File(path);

filewrite.createNewFile();

OutputStream os=new FileOutputStream(filewrite);

//创建工作薄

WritableWorkbook workbook = jxl.Workbook.createWorkbook(os);

//创建新的一页

WritableSheet newSheet = workbook.createSheet(“First Sheet”,0);

//一下是处理被机密的文件

Workbook wb =null;

Sheet sheet = null;

Row row = null;

List<Map<String,String>> list = null;

String cellData = null;

File directory2 = new File(“1234.xlsx”);

directory2.getCanonicalPath(); //得到的是C:/test/abc

String path2 = directory2.getAbsolutePath(); //得到的是C:/test/abc

//String filePath = “E:\\1234.xlsx”;

wb = readExcel(path2);

if(wb != null){

//用来存放表中数据

list = new ArrayList<Map<String,String>>();

//获取第一个sheet

sheet = wb.getSheetAt(0);

//获取最大行数

int rownum = sheet.getPhysicalNumberOfRows();

//获取第一行

row = sheet.getRow(0);

//获取最大列数

int colnum = row.getPhysicalNumberOfCells();

//打印行数和列数

//System.out.println(“rownum=”+rownum+”,colnum=”+colnum);

for (int i = 0; i<rownum; i++) {//遍历行数

row = sheet.getRow(i);

if(row !=null){

for (int j=0;j<colnum;j++){//遍历列

cellData = (String)getCellFormatValue(row.getCell(j));

//————

//前面参数是列,后面参数是行

String sss = CryptDESUtil.decodeDES(cellData);

Label newLabel = new Label(j,i,sss);//执行解密

newSheet.addCell(newLabel);

//————

}

}else{

break;

}

}

workbook.write();

workbook.close();

os.close();

}

System.out.println(“——–Success——–“);

}

//读取excel

public static Workbook readExcel(String filePath){

Workbook wb = null;

if(filePath==null){

return null;

}

String extString = filePath.substring(filePath.lastIndexOf(“.”));

InputStream is = null;

try {

is = new FileInputStream(filePath);

if(“.xls”.equals(extString)){

return wb = new HSSFWorkbook(is);

}else if(“.xlsx”.equals(extString)){

return wb = new XSSFWorkbook(is);

}else{

return wb = null;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return wb;

}

public static Object getCellFormatValue(Cell cell){

Object cellValue = null;

if(cell!=null){

//判断cell类型

switch(cell.getCellType()){

case Cell.CELL_TYPE_NUMERIC:{

//判断cell是否为日期格式

if(DateUtil.isCellDateFormatted(cell)){

//转换为日期格式YYYY-mm-dd

cellValue = sdf.format(cell.getDateCellValue());

}else{

//数字

cellValue = String.valueOf(cell.getNumericCellValue());

}

break;

}

case Cell.CELL_TYPE_FORMULA:{

//判断cell是否为日期格式

if(DateUtil.isCellDateFormatted(cell)){

//转换为日期格式YYYY-mm-dd

cellValue = sdf.format(cell.getDateCellValue());

}else{

//数字

cellValue = String.valueOf(cell.getNumericCellValue());

}

break;

}

case Cell.CELL_TYPE_STRING:{

cellValue = cell.getRichStringCellValue().getString();

break;

}

default:

cellValue = “”;

}

}else{

cellValue = “”;

}

return cellValue;

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154060.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • usg6000_华为防火墙usg6000web登陆

    usg6000_华为防火墙usg6000web登陆USG6000密码恢复1.如果某个管理员遗忘了密码,可以使用其它高权限的管理员账号登录设备,然后修改密码。例如,管理员admin1的密码遗忘,此时可以由管理员admin登录设备,然后修改admin1

    2022年8月6日
  • 解决:Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;

    解决:Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;发生这一错误的主要原因是Controller类中需要接收的是Date类型,但是在页面端传过来的是String类型,最终导致了这个错误。这里提供两种解决方案,一种是局部转换,一种是全局转换。一.局部转换@ControllerpublicclassUserController{ @RequestMapping(value=”/login.do”) publicStr

    2022年7月13日
  • ASP.NET MVC-api增删改查

    ASP.NET MVC-api增删改查使用ASP.NETMVC-api技术实现对数据库的增删改查创建mvcapi项目创建完毕后的目录添加模型类接着在models文件夹添加实体数据模型,引入EF数据库,具体方法参考我之前的EF文章。然后在models中添加两个类,用于反馈操作是否成功。error类publicclassError{///<summary>///错误返回对象<br/>///exp:<br/>

    2022年7月21日
  • Java最新JDK和API下载(持续同步更新于官网)

    Java最新JDK和API下载(持续同步更新于官网)Java最新JDK和API下载(持续同步更新于官网)提供涵盖所有主流操作系统(包括Windows、Linux、MacOS等)的Java最新稳定版JDK和对应API的下载以下所有JavaJDK的安装包、压缩包(免安装版)以及对应的API,均直接来自官网,没有添加其它任何额外内容;旨在便捷地获取最新版的JavaJDK(避免因地域原因被限制访问,因网络原因无法稳定有效下载等情况)更新时间:2021年3月17日…

    2022年7月26日
  • Could not find io.flutter:flutter_embedding_debug

    Could not find io.flutter:flutter_embedding_debug

    2021年10月1日
  • 大数据专业学什么,应该学习什么语言

    大数据专业学什么,应该学习什么语言大数据(bigdata),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。目前,

    2022年8月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号