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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 词法环境和变量环境_lexicalcategory

    词法环境和变量环境_lexicalcategory词法环境是一个理论上存在的对象。由什么组成?环境记录(environmentrecord)和对外部词法环境的引用。暂且认为这些来自不同地方的宝石,团结起来,暂时组成了一个新的对象。

    2022年8月6日
    12
  • 更新本地DNS缓存列表[通俗易懂]

    更新本地DNS缓存列表[通俗易懂]更新本地DNS缓存列表当我们以域名形式访问过目标网站后,该网站的域名和IP地址对应关系就会自动保存到本地工作站的DNS缓存列表中,日后IE浏览器会优先访问DNS缓存列表中的信息,不过一旦此时目标站点的域名和IP地址对应关系发生变动的话,DNS缓存列表中的对应解析记录不会跟着同步变化,那么日后我们再次以域名形式访问目标站点时就容易发生DNS解析不成功的故障。这个时候,…

    2022年5月5日
    94
  • python中plot实现即时数据动态显示方法[通俗易懂]

    python中plot实现即时数据动态显示方法[通俗易懂]在Matlab使用Plot函数实现数据动态显示方法总结中介绍了两种实现即时数据动态显示的方法。考虑到使用python的人群日益增多,再加上本人最近想使用python动态显示即时的数据,网上方法很少,固总结于此。示例代码importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()

    2022年6月26日
    34
  • ubuntu修改hostname

    在Ubuntu系统中,快速查看主机名有多种方法:其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于“@”符号后;其二,在终端窗口中输入命令:hostname或uname–

    2021年12月23日
    74
  • 微信开放平台PC端扫码登录[通俗易懂]

    微信开放平台PC端扫码登录[通俗易懂]最近公司给我安排一个微信登录的功能,需求是这样的:  1.登录授权    点击二维码图标后,登录界面切换为如下样式(二维码),微信扫描二维码并授权,即可成功登录;      若当前账号未绑定微信账号,扫描后提示“您的账号未绑定微信号,请先登录绑定”;      点击“返回”按钮,界面切换为账号密码登录;      若微信号绑定多个账号在,则展示所绑定全部账号的用户名和企业名,选择账号后…

    2022年4月29日
    429

发表回复

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

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