/**
* 生成内容的头信息
* @param title:标题
* @param custId:单位账号
* @param custName:单位名称
* @param serialNumber:流水号
* @param tradeDate:交易日期
* @param teller:操作柜员
* @param totalNum:总笔数
* @return
* @throws Exception
*/
private String generateHeaderOfMsg(String title,String custId,String custName,String serialNumber,
String tradeDate,String teller,String totalNum) throws Exception{
Integer[] lens = {10,30,10,30,10,30}; // 每一列的长度
// 拼接字符串
StringBuffer sb = new StringBuffer();
// 表名
sb.append(getarateValueOfOne("", lens[0], 0)); // 空格
sb.append(getarateValueOfOne("", lens[1], 0)); // 空格
sb.append(" ");
sb.append(title+"\r\n\r\n");
// 第一行
sb.append(getarateValueOfOne("单位账号:", lens[0], 0)); // 单位账号
sb.append(getarateValueOfOne(custId, lens[1], 0)); // 单位账号
sb.append(getarateValueOfOne("单位名称:", lens[2], 0)); // 单位名称
sb.append(getarateValueOfOne(custName, lens[3], 0)); // 单位名称
sb.append(getarateValueOfOne("业务流水号:", lens[4], 0)); // 业务流水号
sb.append(serialNumber+"\r\n"); // 业务流水号
// 第二行
sb.append(getarateValueOfOne("交易日期:", lens[0], 0)); // 交易日期
sb.append(getarateValueOfOne(tradeDate, lens[1], 0)); // 交易日期
sb.append(getarateValueOfOne("操作柜员:", lens[2], 0)); // 操作柜员
sb.append(getarateValueOfOne(teller, lens[3], 0)); // 操作柜员
sb.append(getarateValueOfOne("总笔数:", lens[2], 0)); // 总笔数
sb.append(totalNum+"\r\n"); // 总笔数
return sb.toString();
}
/**
* 拼接每一个数据格格的值
* @param orgStr 此列的值是什么
* @param maxLen 传过来的此列长度
* @param locType: 0左;1中;2右 字符转在单元格中的位置
* @return
* @throws Exception
*/
public static String getarateValueOfOne(String orgStr,Integer maxLen,Integer locType) throws Exception{
String valu = "";
if(orgStr==null){
orgStr = "";
}
int len = orgStr.getBytes("GB18030").length;//设置编码方式,有的需要返回特定的编码格式,这里面返回的是GB18030,同时返回字符串的长度
if(locType==0){ // 左对齐
// 拼接
valu += orgStr;
int lenmore = maxLen-len; // 剩下的单元格
// 拼接后面的空格
for(int i=0;i<lenmore;i++){
valu += " ";
}
}else if(locType==2){ // 右对齐
int lenmore = maxLen-len; // 剩下的单元格
// 拼接后面的空格
for(int i=0;i<lenmore;i++){
valu += " ";
}
// 拼接
valu += orgStr;
}else{ // 居中
int pre = (maxLen-len)/2; // 值后面的空格
int aft = maxLen-len-pre; // 值后面的空格
// 拼接前面的空格
for(int i=0;i<pre;i++){
valu += " ";
}
// 拼接
valu += orgStr;
// 拼接后面的空格
for(int i=0;i<aft;i++){
valu += " ";
}
}
return valu;
}
/**
* 获得一个集合中字符串的最大长度
* @param list
* @return
* @throws Exception
*/
public static int findMaxLen(List<String> list) throws Exception{
int maxLen = 0;
for(String str : list){
if(str==null){
str = "";
}
int len = str.getBytes("GB18030").length;
if(len>maxLen){
maxLen = len;
}
}
// 偶数
if(maxLen % 2 != 0){
maxLen = maxLen+1;
}
return maxLen;
* 生成内容的头信息
* @param title:标题
* @param custId:单位账号
* @param custName:单位名称
* @param serialNumber:流水号
* @param tradeDate:交易日期
* @param teller:操作柜员
* @param totalNum:总笔数
* @return
* @throws Exception
*/
private String generateHeaderOfMsg(String title,String custId,String custName,String serialNumber,
String tradeDate,String teller,String totalNum) throws Exception{
Integer[] lens = {10,30,10,30,10,30}; // 每一列的长度
// 拼接字符串
StringBuffer sb = new StringBuffer();
// 表名
sb.append(getarateValueOfOne("", lens[0], 0)); // 空格
sb.append(getarateValueOfOne("", lens[1], 0)); // 空格
sb.append(" ");
sb.append(title+"\r\n\r\n");
// 第一行
sb.append(getarateValueOfOne("单位账号:", lens[0], 0)); // 单位账号
sb.append(getarateValueOfOne(custId, lens[1], 0)); // 单位账号
sb.append(getarateValueOfOne("单位名称:", lens[2], 0)); // 单位名称
sb.append(getarateValueOfOne(custName, lens[3], 0)); // 单位名称
sb.append(getarateValueOfOne("业务流水号:", lens[4], 0)); // 业务流水号
sb.append(serialNumber+"\r\n"); // 业务流水号
// 第二行
sb.append(getarateValueOfOne("交易日期:", lens[0], 0)); // 交易日期
sb.append(getarateValueOfOne(tradeDate, lens[1], 0)); // 交易日期
sb.append(getarateValueOfOne("操作柜员:", lens[2], 0)); // 操作柜员
sb.append(getarateValueOfOne(teller, lens[3], 0)); // 操作柜员
sb.append(getarateValueOfOne("总笔数:", lens[2], 0)); // 总笔数
sb.append(totalNum+"\r\n"); // 总笔数
return sb.toString();
}
/**
* 拼接每一个数据格格的值
* @param orgStr 此列的值是什么
* @param maxLen 传过来的此列长度
* @param locType: 0左;1中;2右 字符转在单元格中的位置
* @return
* @throws Exception
*/
public static String getarateValueOfOne(String orgStr,Integer maxLen,Integer locType) throws Exception{
String valu = "";
if(orgStr==null){
orgStr = "";
}
int len = orgStr.getBytes("GB18030").length;//设置编码方式,有的需要返回特定的编码格式,这里面返回的是GB18030,同时返回字符串的长度
if(locType==0){ // 左对齐
// 拼接
valu += orgStr;
int lenmore = maxLen-len; // 剩下的单元格
// 拼接后面的空格
for(int i=0;i<lenmore;i++){
valu += " ";
}
}else if(locType==2){ // 右对齐
int lenmore = maxLen-len; // 剩下的单元格
// 拼接后面的空格
for(int i=0;i<lenmore;i++){
valu += " ";
}
// 拼接
valu += orgStr;
}else{ // 居中
int pre = (maxLen-len)/2; // 值后面的空格
int aft = maxLen-len-pre; // 值后面的空格
// 拼接前面的空格
for(int i=0;i<pre;i++){
valu += " ";
}
// 拼接
valu += orgStr;
// 拼接后面的空格
for(int i=0;i<aft;i++){
valu += " ";
}
}
return valu;
}
/**
* 获得一个集合中字符串的最大长度
* @param list
* @return
* @throws Exception
*/
public static int findMaxLen(List<String> list) throws Exception{
int maxLen = 0;
for(String str : list){
if(str==null){
str = "";
}
int len = str.getBytes("GB18030").length;
if(len>maxLen){
maxLen = len;
}
}
// 偶数
if(maxLen % 2 != 0){
maxLen = maxLen+1;
}
return maxLen;
}
上面就是操作打印的字符串操作,感觉思路很好,虽然不是自己想出来,感觉很好,就分享一下了,希望以后用到的时候,可以直接拿出来用