有时候导入txt文件不一定是采用分隔符方式导入,而是采用按字节、字符长度导入,比如银联对账文件。

导入txt数据

姓名 年龄科目分数

陈寻  12语文67

王老五12语文80

柯景腾13语文78

沈佳宜14语文88

王小贱15语文60

黄小仙12语文54

李大仁14语文76

程又青13语文58

方茴  12语文87

沈晓棠13语文89

林嘉茉14语文68

赵烨  14语文50

苏凯  12语文78

乔燃  13语文90

我们采用iso8859-1单字节编码读取文件数据,一个汉字占2字节。

导入demo

package example;

import java.io.File;

import java.io.FileInputStream;

import java.util.List;

import java.util.Map;

import model.Student;

import test.AbstractTxtTest;

import com.easyReport.read.checker.GEValuePropertyChecker;

import com.easyReport.read.checker.LEValuePropertyChecker;

import com.easyReport.read.checker.PropertyChecker;

import com.easyReport.read.temp.ReadTemp;

import com.easyReport.read.temp.TxtBytePropertyTemp;

import com.easyReport.read.temp.TxtReadTemp;

public class TestTxtByte extends AbstractTxtTest {

@Override

public void test() {

FileInputStream fileInputStream;

try {

fileInputStream = new FileInputStream(new File("testFile/test7.txt"));

testReadBean(fileInputStream);

//testReadMap(fileInputStream);

fileInputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

protected ReadTemp bulidReadTemp() {

//模板批次设置构造方法,一次读取10行

TxtReadTemp readTemp = new TxtReadTemp(1,10);

readTemp.setEncode("iso8859-1");

readTemp.addPropertyTemp(new TxtBytePropertyTemp("姓名", "name",0,6));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("年龄", "age",6,8));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("科目", "course.name",8,12));

//大于等于60小于等于80

readTemp.addPropertyTemp(new TxtBytePropertyTemp("分数", "course.score",new PropertyChecker[]{

new GEValuePropertyChecker(60),new LEValuePropertyChecker(80)

},12,14));

return readTemp;

}

@Override

protected void writeBeanList(List modelLists) {

System.out.println("--------------bean---------------");

for (Student s : modelLists) {

System.out.println(s.getName() + "|"

+ s.getAge()+s.getCourse().getName()+"|"+s.getCourse().getScore());

}

}

@Override

protected void writeMapList(List> mapLists) {

System.out.println("--------------map---------------");

for (Map m : mapLists) {

System.out.println(m.get("name") + "|" + m.get("age")+"|" + m.get("course.name")+"|" + m.get("course.score"));

}

}

}

导入模板见红色字体部分,我们设置编码为iso8859-1,读取文件将按照设置编码输入流读取,同事使用TxtBytePropertyTemp属性模板设置读起始位置等。

运行结果:

--------------bean---------------

陈寻|12语文|67.0

王老五|12语文|80.0

柯景腾|13语文|78.0

王小贱|15语文|60.0

李大仁|14语文|76.0

--------------bean---------------

林嘉茉|14语文|68.0

苏凯|12语文|78.0

第5行,分数值必须小于等于80.0;

第7行,分数值必须大于等于60.0;

第9行,分数值必须大于等于60.0;

第10行,分数值必须小于等于80.0;

第11行,分数值必须小于等于80.0;

第13行,分数值必须大于等于60.0;

第15行,分数值必须小于等于80.0;

我们也可以采用按字符长度读取文件。

导入数据我们做修改,姓名使用3字符长度。

姓名 年龄科目分数

陈寻 12语文67

王老五12语文80

柯景腾13语文78

沈佳宜14语文88

王小贱15语文60

黄小仙12语文54

李大仁14语文76

程又青13语文58

方茴 12语文87

沈晓棠13语文89

林嘉茉14语文68

赵烨 14语文50

苏凯 12语文78

乔燃 13语文90

导入demo

package example;

import java.io.File;

import java.io.FileInputStream;

import java.util.List;

import java.util.Map;

import model.Student;

import test.AbstractTxtTest;

import com.easyReport.read.checker.GEValuePropertyChecker;

import com.easyReport.read.checker.LEValuePropertyChecker;

import com.easyReport.read.checker.PropertyChecker;

import com.easyReport.read.temp.ReadTemp;

import com.easyReport.read.temp.TxtBytePropertyTemp;

import com.easyReport.read.temp.TxtReadTemp;

public class TestTxtByte extends AbstractTxtTest {

@Override

public void test() {

FileInputStream fileInputStream;

try {

fileInputStream = new FileInputStream(new File("testFile/test7.txt"));

testReadBean(fileInputStream);

//testReadMap(fileInputStream);

fileInputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

protected ReadTemp bulidReadTemp() {

//模板批次设置构造方法,一次读取10行

TxtReadTemp readTemp = new TxtReadTemp(1,10);

/*readTemp.setEncode("iso8859-1");

readTemp.addPropertyTemp(new TxtBytePropertyTemp("姓名", "name",0,6));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("年龄", "age",6,8));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("科目", "course.name",8,12));

//大于等于60小于等于80

readTemp.addPropertyTemp(new TxtBytePropertyTemp("分数", "course.score",new PropertyChecker[]{

new GEValuePropertyChecker(60),new LEValuePropertyChecker(80)

},12,14));*/

readTemp.addPropertyTemp(new TxtBytePropertyTemp("姓名", "name",0,3));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("年龄", "age",3,5));

readTemp.addPropertyTemp(new TxtBytePropertyTemp("科目", "course.name",5,7));

//大于等于60小于等于80

readTemp.addPropertyTemp(new TxtBytePropertyTemp("分数", "course.score",new PropertyChecker[]{

new GEValuePropertyChecker(60),new LEValuePropertyChecker(80)

},7,9));

return readTemp;

}

@Override

protected void writeBeanList(List modelLists) {

System.out.println("--------------bean---------------");

for (Student s : modelLists) {

System.out.println(s.getName() + "|"

+ s.getAge()+s.getCourse().getName()+"|"+s.getCourse().getScore());

}

}

@Override

protected void writeMapList(List> mapLists) {

System.out.println("--------------map---------------");

for (Map m : mapLists) {

System.out.println(m.get("name") + "|" + m.get("age")+"|" + m.get("course.name")+"|" + m.get("course.score"));

}

}

}

没有设置编码,默认采用GBK编码。

运行结果:

--------------bean---------------

陈寻|12语文|67.0

王老五|12语文|80.0

柯景腾|13语文|78.0

王小贱|15语文|60.0

李大仁|14语文|76.0

--------------bean---------------

林嘉茉|14语文|68.0

苏凯|12语文|78.0

第5行,分数值必须小于等于80.0;

第7行,分数值必须大于等于60.0;

第9行,分数值必须大于等于60.0;

第10行,分数值必须小于等于80.0;

第11行,分数值必须小于等于80.0;

第13行,分数值必须大于等于60.0;

第15行,分数值必须小于等于80.0;

java txt数据导入excel,java easyreport 导入excel、 txt 数据txt按字节导入(七)相关推荐

  1. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  2. java横向导出excel_利用Java进行Excel的数据导入导出

    1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...

  3. java 导入excel工具类_java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据: 导出数据到Excel,Excel文件不存在会创建. 使用的是poi处理,兼容Excel. 对反射不够理解,目前先 ...

  4. 关于使用Java后台导入excel文件,读取数据后,更新数据库,并返回数据给到前端的相关问题总结

    在之前的项目中,使用到了Java后台读取excel文件数据的功能点,本想着该功能点已经做过了,这一类的应该都大差不离,不过在刚结束的一个项目中,现实给我深深的上了一课,特此编写此片博客,以作记录,并给 ...

  5. java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...

    java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...

  6. java导出wps文件怎么打开,怎么把excel表格导入word-用java将数据导出到wps表格中,怎么实现...

    如何把WPS表格转换成Excel 1.首先,用WPS 打开需要操作的Excel文件. 2.点下WPS 表格右下角的"分页预览",查看需要PDF文档的表格的页面情况二页, 3.(这一 ...

  7. Java poi导入合并单元格的excel数据【最完整】附pom文件和excel截图

    代码如下: package com.haha.demo;import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermo ...

  8. java excel 导入 加校验_POI实现excel各种验证和导入的思路总结

    制定标准 导入总是与导出相辅相成的,无规矩不成方圆.所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板. 这样可以减少验证的工作量. 例如时间的规范[yyyy-MM-dd],获取单元格的时 ...

  9. @excel注解_Excel导入导出Java解决方案推荐

    今天锋哥介绍一款Excel导入导出Java解决方案Easy-POI,以前我们用POI,麻烦点,Easy-POI是封装好的,用起来Easy点,封装过,性能好,所以大伙有空可以研究下: Easy-POI ...

  10. java excel导出2007_java操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

最新文章

  1. ICCV 2019:谷歌获最佳论文!中国入选论文最多,中科院、清华领跑
  2. 基于postfix一步一步构建Mailserver,支持虚拟用户,支持WebMail
  3. 印度资深数字货币研究员::我为什么选择BCH?
  4. 【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题
  5. QT的QScriptEngine类的使用
  6. 个性化 服务器运行失败,VirtualBox 运行失败
  7. Android Glide 加载圆形图片(绝对实用)
  8. 在上司面前硬不起来?教你如何快速将字符串转换为可执行代码
  9. linux里面vim自动显示行号,linux中vim永久显示行号、开启语法高亮
  10. 长肥管道(LFT)中TCP的艰难处境与打法
  11. 9.3. where 优化
  12. 【Foreign】字符串匹配 [KMP]
  13. matlab 画m,Matlab画直线(Bresenhamline.m)
  14. 台式计算机可以发射无线网络,台式电脑无线网卡怎么发射WIFI信号!
  15. java struts2教程_Struts2学习教程之入门小白的开始基础
  16. 威斯康星大学硕士计算机科学,2020年威斯康星大学麦迪逊分校排名TFE Times美国最佳计算机科学硕士专业排名第12...
  17. 如果你的电脑只能安装三个软件, 你会选择哪三个?
  18. 解决no-console异常
  19. Peekaboo——项目系统设计与数据库设计
  20. 贝叶斯分析-学习笔记(超干的干货)

热门文章

  1. Java @Bean 概念和使用
  2. APP测试— 测试工具mokey
  3. THINKPHP 5.0.7 开启多语言模式
  4. 另辟蹊径,在小程序中获取是否关注公众号
  5. 【报告分享】2021年Q4移动互联网行业数据研究报告-极光(附下载)
  6. 如何在工作中保持稳定的情绪?探索内心的平静和心态的健康
  7. 内网渗透:九、certutil-远程下载绕过
  8. ElGamal密码及其安全性证明
  9. 54.怎么实现线程的安全
  10. opencv学习(三十三)之霍夫变换