Java读取、创建Excel;验签,加密

需要架包:poi相关jar,Md5.jar----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.fanqi.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.json.JSONArray;
import org.json.JSONObject;

public class TestDemo1 {

	/*
	 * 读取Excel数据
	 */
	public List<Map<String, Object>> readExcel(String filename) {

		FileInputStream in;
		XSSFWorkbook workbook = null;
		try {
			in = new FileInputStream(filename);
			workbook = new XSSFWorkbook(in);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		XSSFSheet sheet = workbook.getSheetAt(0);
		int num = 0;
		List<Map<String, Object>> listCanshu = new ArrayList<Map<String, Object>>();
			for(int i=1;i<=sheet.getLastRowNum();i++){
				Map<String, Object> map = new TreeMap<String, Object>();
				String  cell0 = sheet.getRow(i).getCell(0).getStringCellValue();
				String  cell1 = sheet.getRow(i).getCell(1).getStringCellValue();
				map.put("canshu1", cell0);
				map.put("canshu2", cell1);
				listCanshu.add(map);
		}
			return listCanshu;
	}
	/*
	 * 组装成JSON形式
	 */
	public JSONArray zuZhuangCanShu(List<Map<String, Object>> listCanshu) {

		JSONArray jArray = new JSONArray();
		for(int i=0;i<listCanshu.size();i++ ){
			JSONObject json = new JSONObject(listCanshu.get(i));
			jArray.put(json);
		}
		return jArray;
	}
	/*
	 * 验签,加密
	 */
	public List signMD5(List<Map<String, Object>> l) {

		List list = new ArrayList();
		for(int i=0;i<l.size();i++){
			String str = "";
			StringBuffer buffer = null;
			byte[] result = null;
			Set set = l.get(i).entrySet();
			Iterator it = set.iterator();
			while(it.hasNext()){
				Map.Entry mapEntry = (Map.Entry) it.next();
				String key = (String) mapEntry.getKey();
				String value = (String) mapEntry.getValue();
				str = str + key + "=" + value + "&";
			}
			str = str.substring(0, str.length()-1);
			try {
				MessageDigest md = MessageDigest.getInstance("MD5");
				result = md.digest(str.getBytes());
				buffer = new StringBuffer();
				for(byte r : result){
					String s =Integer.toHexString(0xff & r);
					if(s.length()==1){
						buffer.append("0"+s);
					}else{
						buffer.append(s);
					}
				}

			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
			}
			list.add(buffer.toString());
		}

		return list;
	}

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		TestDemo1 t = new TestDemo1();
		List<Map<String, Object>> l = t.readExcel("D:\\1.xlsx");
		JSONArray jArray = t.zuZhuangCanShu(l);
		List list = t.signMD5(l);
		System.out.println(list.get(0));
		System.out.println(list.get(1));
		System.out.println(list.get(2));
	}

}


 1 package cn.fanqi.fq;
 2
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.util.ArrayList;
 7 import org.apache.poi.ss.usermodel.IndexedColors;
 8 import org.apache.poi.xssf.usermodel.XSSFCellStyle;
 9 import org.apache.poi.xssf.usermodel.XSSFFont;
10 import org.apache.poi.xssf.usermodel.XSSFRow;
11 import org.apache.poi.xssf.usermodel.XSSFSheet;
12 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
13
14 public class TestDemo {
15
16 public void createExcel() {
17
18 XSSFWorkbook x = new XSSFWorkbook();
19
20 XSSFFont font1 = x.createFont();
21 font1.setFontHeightInPoints((short) 15);
22 font1.setFontName("Pristina");
23 font1.setColor(IndexedColors.GREEN.index);
24 //font1.setColor(HSSFColor.YELLOW.index);
25 XSSFCellStyle style = x.createCellStyle();
26 style.setFont(font1);
27
28 XSSFSheet sheet = x.createSheet();
29 XSSFRow row0 = sheet.createRow(0);
30 row0.createCell(0).setCellValue("姓名");
31 row0.getCell(0).setCellStyle(style);
32 row0.createCell(1).setCellValue("性别");
33 row0.getCell(1).setCellStyle(style);
34 row0.createCell(2).setCellValue("年龄");
35 row0.getCell(2).setCellStyle(style);
36 row0.createCell(3).setCellValue("职位");
37 row0.getCell(3).setCellStyle(style);
38 row0.createCell(4).setCellValue("工作年限");
39 row0.getCell(4).setCellStyle(style);
40
41 User u = new User();
42 u.setName("郭大侠");
43 u.setSex("男");
44 u.setAge("30");
45 u.setJob("Java开发");
46 u.setExperience("2");
47
48 User u1 = new User();
49 u1.setName("陶大婶");
50 u1.setSex("男");
51 u1.setAge("28");
52 u1.setJob("Java开发");
53 u1.setExperience("3");
54
55 ArrayList<User> arrayList = new ArrayList<User>();
56 arrayList.add(u);
57 arrayList.add(u1);
58
59 for(int i=1; i<3; i++){
60 XSSFRow row = sheet.createRow(i);
61 row.createCell(0).setCellValue(arrayList.get(i-1).getName());
62 row.createCell(1).setCellValue(arrayList.get(i-1).getSex());
63 row.createCell(2).setCellValue(arrayList.get(i-1).getAge());
64 row.createCell(3).setCellValue(arrayList.get(i-1).getJob());
65 row.createCell(4).setCellValue(arrayList.get(i-1).getExperience());
66 }
67
68 try {
69 x.write(new FileOutputStream("E:\\test.xlsx"));
70 } catch (FileNotFoundException e) {
71 e.printStackTrace();
72 } catch (IOException e) {
73 e.printStackTrace();
74 }
75 }
76
77 public static void main(String[] args) {
78
79 TestDemo t = new TestDemo();
80 t.createExcel();
81 }
82 }
 
时间: 2024-08-15 21:48:59

Java读取、创建Excel;验签,加密的相关文章

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

java rsa 签名,验签

package com.fabiao; import java.security.KeyFactory;import java.security.MessageDigest;import java.security.PrivateKey;import java.security.PublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec; import o

jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需要唯一: 方案:文中用jmeter的beanshell按时间戳加随机数生成 3. 请求参数中有一个参数,会根据相应的请求参数生成(文中的sign值),接口请求会验证sign是否和相应请求参数对应: 方案: 1. 文中将生成sign的源码打包放在jmeter的lib\ext\ 下, 2. 再用jmet

.net core RSA 分段加密解密,签名验签(对接java)

参考地址: https://www.cnblogs.com/stulzq/p/7757915.html https://www.cnblogs.com/stulzq/p/8260873.html https://github.com/stulzq/RSAExtensions(XC.RSAUtil) https://www.cnblogs.com/stulzq/p/12053976.html https://github.com/stulzq/RSAExtensions (RSAExtension

C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 -变态模式【支持私钥加密,公钥解密】(二)

RSA变态模式:[私钥加密,公钥解密] 一般这种写法都是JAVA弄的..NET原生不支持.为啥,我也不清楚,大概是因为安全性问题吧,毕竟公钥是人人都可是持有的.私钥只有自己拥有. 对接注意事项:https://www.cnblogs.com/kevin860/p/9557845.html 一般方法请看:https://www.cnblogs.com/kevin860/p/9557845.html 签名一直都是[私钥加签.公钥验签]只为证明该消息是你发出来的. 这里使用了BouncyCastle1

Java实现RSA密钥对并在加解密、加签验签中应用的实例

一.项目结构 二.代码具体实现 1.密钥对生成的两种方式:一种生成公钥私文件,一种生成公钥私串 KeyPairGenUtil.java package com.wangjinxiang.genkey.util; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.KeyPair; import java.security

RSA加密解密及RSA加签验签

RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据:加签验签是私钥加签公钥验签,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签. 在金融行业在设计到数据交互传输的时候,需要考虑数据的安全性问题.下文通过介绍RSA的加密和加签两个特性,说明RSA加密技术在保障数据传输过程中的安全性以及实现数据的防篡改和防否机制的应用场景及代码

RSA加密、解密、加签、验签以及生成公私钥

RSA加解密.加验签.生成公私钥代码如下: package util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.security.KeyFactory; import java.secu

基于注解的 java 加签验签框架 checksum

checksum 基于 java 注解生成加签验签 checksum. 开源地址:github checksum 创作缘由 原来的代码中,checksum 的生成是用的工具类方法. 后来发现如下的问题: 有些字段太大,不想参与验签,但是无法方便的调整. 不同系统的 checksum 字段不同,只好把工具方法 copy 过去,改来改去. 感觉这样有很大的弊端,完全失去了灵活性. 特性 基于注解的 checksum 加签验签 Fluent 流式语法 支持灵活的策略自定义 更新记录 更新记录 快速开始