java easyreport 导入excel、 txt 数据txt按字节导入(七)

有时候导入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<Student> {

@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<Student> 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<Map<String, Object>> mapLists) {

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

for (Map<String, Object> 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<Student> {

@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<Student> 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<Map<String, Object>> mapLists) {

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

for (Map<String, Object> 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;

时间: 2024-07-29 19:15:29

java easyreport 导入excel、 txt 数据txt按字节导入(七)的相关文章

Java版将EXCEL表数据导入到数据库中

1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls")); //获取该工作表中的第一个工作表 Sheet sheet=workBook.getSheet(0); //获取该工作表的行数,以供下面循环使用 int rowSize=sheet.getRows(); for(int i=0;i<rowSize;i++) { //编号 String

c#导入excel 绑定数据 repeat为例子

先读取Excel文件并存到dataset 1 public DataSet ExcelToDataTable(string filename, string strsheetname) 2 { 3 try 4 { 5 //源的定义 6 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Pro

使用jxls技术导入Excel模版数据(转自其他博客)

第一步:先确定好Excel导入的格式以及各表格字段值的含义 第二步:定义好解析的XML--videoConfig.xml <?xml version="1.0" encoding="UTF-8"?> <workbook> <worksheet name="Sheet1"> <section startRow="0" endRow="0"/> <loop

点餐小程序,点餐系统,管理后台批量导入excel菜品数据

点餐系统上线这段时间,有好多同学反馈,是否可以添加一个菜品批量导入的功能.由于平时比较忙,一直没有时间把菜品批量导入的功能加进来.今天正好空出来时间了,就来教大家实现下菜品批量导入的功能. 后面会把这节功能录制成视频放到点餐系统的课程里. 传送门:" rel="nofollow">点餐系统,java后台+点餐小程序 老规矩,先看效果图 选择excel菜品导入数据成功 之前有看过我课程的同学肯定知道,我之前是没有批量导入的类目的,不错,这个类目就是我们今天新加的功能. 实

实测:向MySql数据库导入excel表数据

最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成excel的.  然后另存为.csv格式的文件.  然后在phpmyadmin中选择导入操作. 但是由于插入的数据出现乱码,失败.  查找原因:因为excel默认编码格式为ANSI,而mysql数据库默认的编码方式是utf-8. 解决办法:我是用editplus将.csv格式的文件打开(打开时将“编

webapi 导入excel处理数据

参考资料     https://blog.csdn.net/pan_junbiao/article/details/82935992 https://www.cnblogs.com/dansediao/p/5482467.html https://www.cnblogs.com/shiyh/p/7478241.html excel转成datatable工具类 using System; using System.Collections.Generic; using System.Data; u

selenium+testng+java+poi进行excel的数据参数化

一,首先要配置好环境selenium+testng和poi包,selenium+testng的环境搭建就不细说了,这里有poi的包的分享https://pan.baidu.com/s/1BJEIWR57_4vwrCDy6WuBWA 下载后在项目里面添加lib文件再把所需要的poi包放入其中,并在项目里面导入其java build path中. 二,新建立一个Excel数据表. 三,代码如下: import org.testng.annotations.Test;import org.testng

Java POI 实现Excel相同数据同一颜色,不同数据颜色交替显示

目录 1.效果图 2.具体代码实现 excel 读取工具类 excel写入和测试类 1.效果图 2.具体代码实现 excel 读取工具类 package utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Ar

VB导入Excel到数据前

1.选择Excel文件版本 2.选择Excel文件 3.遍历Excel工作表 4.选择Excel工作表进行预览,前几行,或全部有效数据,显示总数据条数. 5.选择标题列所在行 6.选择数据类型 7.选择新建数据表或现有表 8.选择Excel标题对应数据表的列 9.导入数据