编写并测试学生基本信息导入服务模块
This commit is contained in:
parent
0a975dd82a
commit
3dadf45919
@ -4,6 +4,8 @@ import com.codesdream.ase.exception.DataIllegalTableFormatException;
|
|||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.swing.text.html.Option;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
// 描述一张数据表
|
// 描述一张数据表
|
||||||
@ -21,11 +23,18 @@ public class DataTable {
|
|||||||
|
|
||||||
// 获得特定行的数据
|
// 获得特定行的数据
|
||||||
public Collection<String> getRow(int index){
|
public Collection<String> getRow(int index){
|
||||||
|
if(index >= getRowsSize()) throw new IndexOutOfBoundsException();
|
||||||
return dataRows.elementAt(index).getRow();
|
return dataRows.elementAt(index).getRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得特定行的数据
|
||||||
|
public Vector<String> getRowVector(int index){
|
||||||
|
if(index >= getRowsSize()) throw new IndexOutOfBoundsException();
|
||||||
|
return new Vector<>(dataRows.elementAt(index).getRow());
|
||||||
|
}
|
||||||
|
|
||||||
// 从DataReader导入特定表
|
// 从DataReader导入特定表
|
||||||
public void ImportTable(DataReader reader){
|
public void importTable(DataReader reader){
|
||||||
// 从文件中读取数据
|
// 从文件中读取数据
|
||||||
reader.readFile();
|
reader.readFile();
|
||||||
// 读取列信息
|
// 读取列信息
|
||||||
@ -44,9 +53,30 @@ public class DataTable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查找有无相关表头项
|
||||||
|
public Optional<Integer> getTitleIndex(String title){
|
||||||
|
int index = 0;
|
||||||
|
for(String dataTitle :titleCollection){
|
||||||
|
if(dataTitle.equals(title))
|
||||||
|
return Optional.of(index);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出表数据
|
||||||
|
public void exportTable(DataGenerator dataGenerator){
|
||||||
|
dataGenerator.setTableTitle(titleCollection);
|
||||||
|
for(DataTableRow row : dataRows){
|
||||||
|
dataGenerator.insertRow(row.getIndex(), row.getRow());
|
||||||
|
}
|
||||||
|
dataGenerator.save();
|
||||||
|
}
|
||||||
|
|
||||||
// 为表添加行
|
// 为表添加行
|
||||||
public void addRow(Collection<String> row){
|
public void addRow(Collection<String> row){
|
||||||
dataRows.add(new DataTableRow(dataRows.size() + 1, row));
|
Collection<String> dataRow = new ArrayList<>(row);
|
||||||
|
dataRows.add(new DataTableRow(dataRows.size() + 1, dataRow));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得表的列数
|
// 获得表的列数
|
||||||
|
@ -7,8 +7,8 @@ import java.util.Collection;
|
|||||||
// 描述数据表的行
|
// 描述数据表的行
|
||||||
@Data
|
@Data
|
||||||
public class DataTableRow {
|
public class DataTableRow {
|
||||||
int index;
|
private int index;
|
||||||
Collection<String> row;
|
private Collection<String> row;
|
||||||
|
|
||||||
public DataTableRow(int index, Collection<String> row){
|
public DataTableRow(int index, Collection<String> row){
|
||||||
this.index = index;
|
this.index = index;
|
||||||
|
@ -12,10 +12,9 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_administrative_division")
|
@Table(name = "base_administrative_division")
|
||||||
public class BaseAdministrativeDivision {
|
public class BaseAdministrativeDivision {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private int parent_id;
|
private int parentId;
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_candidate_category")
|
@Table(name = "base_candidate_category")
|
||||||
public class BaseCandidateCategory {
|
public class BaseCandidateCategory {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -12,7 +12,6 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_college")
|
@Table(name = "base_college")
|
||||||
public class BaseCollege {
|
public class BaseCollege {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -12,7 +12,6 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_ethnic")
|
@Table(name = "base_ethnic")
|
||||||
public class BaseEthnic {
|
public class BaseEthnic {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -12,7 +12,6 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_major")
|
@Table(name = "base_major")
|
||||||
public class BaseMajor {
|
public class BaseMajor {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -12,7 +12,6 @@ import javax.persistence.*;
|
|||||||
@Table(name = "base_political_status")
|
@Table(name = "base_political_status")
|
||||||
public class BasePoliticalStatus {
|
public class BasePoliticalStatus {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -24,19 +24,19 @@ public class BaseStudentInfo {
|
|||||||
// 性别
|
// 性别
|
||||||
private String sex = "";
|
private String sex = "";
|
||||||
// 民族
|
// 民族
|
||||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
|
||||||
private BaseEthnic ethnic = null;
|
private BaseEthnic ethnic = null;
|
||||||
// 学院
|
// 学院
|
||||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
|
||||||
private BaseCollege college = null;
|
private BaseCollege college = null;
|
||||||
// 专业
|
// 专业
|
||||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
|
||||||
private BaseMajor major = null;
|
private BaseMajor major = null;
|
||||||
// 政治面貌
|
// 政治面貌
|
||||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
|
||||||
private BasePoliticalStatus politicalStatus = null;
|
private BasePoliticalStatus politicalStatus = null;
|
||||||
// 省份地区
|
// 省份地区
|
||||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
|
||||||
private BaseAdministrativeDivision administrativeDivision = null;
|
private BaseAdministrativeDivision administrativeDivision = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,4 +9,5 @@ import java.util.Optional;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface BaseAdministrativeDivisionRepository extends CrudRepository<BaseAdministrativeDivision, Integer> {
|
public interface BaseAdministrativeDivisionRepository extends CrudRepository<BaseAdministrativeDivision, Integer> {
|
||||||
Optional<BaseAdministrativeDivision> findByName(String name);
|
Optional<BaseAdministrativeDivision> findByName(String name);
|
||||||
|
Optional<BaseAdministrativeDivision> findByNameContainsAndParentId(String name, int parentId);
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,20 @@
|
|||||||
package com.codesdream.ase.service;
|
package com.codesdream.ase.service;
|
||||||
|
|
||||||
|
import com.codesdream.ase.component.datamanager.DataTable;
|
||||||
import com.codesdream.ase.exception.BaseInformationAlreadyExistException;
|
import com.codesdream.ase.exception.BaseInformationAlreadyExistException;
|
||||||
import com.codesdream.ase.exception.BaseInformationIllegalException;
|
import com.codesdream.ase.exception.BaseInformationIllegalException;
|
||||||
import com.codesdream.ase.exception.BaseInformationNotExistException;
|
import com.codesdream.ase.exception.BaseInformationNotExistException;
|
||||||
import com.codesdream.ase.model.information.*;
|
import com.codesdream.ase.model.information.*;
|
||||||
import com.codesdream.ase.repository.information.*;
|
import com.codesdream.ase.repository.information.*;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
@Service
|
||||||
public class BaseInformationService implements IBaseInformationService {
|
public class BaseInformationService implements IBaseInformationService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@ -82,13 +88,21 @@ public class BaseInformationService implements IBaseInformationService {
|
|||||||
return studentInfo.isPresent();
|
return studentInfo.isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查找省级行政区域
|
||||||
@Override
|
@Override
|
||||||
public BaseAdministrativeDivision findAdministrativeDivisionByName(String name) {
|
public BaseAdministrativeDivision findAdministrativeDivisionByName(String name) {
|
||||||
Optional<BaseAdministrativeDivision> administrativeDivision =
|
Optional<BaseAdministrativeDivision> administrativeDivision =
|
||||||
administrativeDivisionRepository.findByName(name);
|
administrativeDivisionRepository.findByNameContainsAndParentId(name, 0);
|
||||||
// 检查
|
// 检查
|
||||||
if(!administrativeDivision.isPresent())
|
if(!administrativeDivision.isPresent()) {
|
||||||
throw new BaseInformationNotExistException(BaseAdministrativeDivision.class);
|
// 如果填入未知数据
|
||||||
|
administrativeDivision = administrativeDivisionRepository.findByName("未知");
|
||||||
|
if(administrativeDivision.isPresent()) {
|
||||||
|
return administrativeDivision.get();
|
||||||
|
}
|
||||||
|
else throw new BaseInformationNotExistException(BaseAdministrativeDivision.class);
|
||||||
|
|
||||||
|
}
|
||||||
return administrativeDivision.get();
|
return administrativeDivision.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,13 +158,51 @@ public class BaseInformationService implements IBaseInformationService {
|
|||||||
return studentInfo.get();
|
return studentInfo.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void studentInfoImportFromDataTable(DataTable table) {
|
||||||
|
Collection<Optional<Integer>> infoIndexOptional = new ArrayList<>();
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("学号"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("班号"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("姓名"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("性别"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("学院名称"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("专业名称"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("民族名称"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("政治面貌名称"));
|
||||||
|
infoIndexOptional.add(table.getTitleIndex("省份名称"));
|
||||||
|
|
||||||
|
Vector<Integer> infoIndex = new Vector<>();
|
||||||
|
|
||||||
|
for(Optional<Integer> infoIdx : infoIndexOptional){
|
||||||
|
if(!infoIdx.isPresent()) throw new RuntimeException("Unfit Data Table");
|
||||||
|
else infoIndex.add(infoIdx.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
int dataRowsSize = table.getRowsSize();
|
||||||
|
|
||||||
|
for(int i = 0; i <dataRowsSize; i++){
|
||||||
|
Vector<String> row = table.getRowVector(i);
|
||||||
|
BaseStudentInfo studentInfo =
|
||||||
|
constructStudentInfo(row.elementAt(infoIndex.elementAt(0)),
|
||||||
|
row.elementAt(infoIndex.elementAt(1)),
|
||||||
|
row.elementAt(infoIndex.elementAt(2)),
|
||||||
|
row.elementAt(infoIndex.elementAt(3)),
|
||||||
|
row.elementAt(infoIndex.elementAt(4)),
|
||||||
|
row.elementAt(infoIndex.elementAt(5)),
|
||||||
|
row.elementAt(infoIndex.elementAt(6)),
|
||||||
|
row.elementAt(infoIndex.elementAt(7)),
|
||||||
|
row.elementAt(infoIndex.elementAt(8)));
|
||||||
|
save(studentInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseStudentInfo constructStudentInfo(String studentId,
|
public BaseStudentInfo constructStudentInfo(String studentId,
|
||||||
String classId,
|
String classId,
|
||||||
String realName, String sex,
|
String realName, String sex,
|
||||||
String college,
|
String college,
|
||||||
String major, String ethnic,
|
String major, String ethnic,
|
||||||
String candidateCategory, String politicalStatus,
|
String politicalStatus,
|
||||||
String administrativeDivision)
|
String administrativeDivision)
|
||||||
{
|
{
|
||||||
// 检查
|
// 检查
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.codesdream.ase.service;
|
package com.codesdream.ase.service;
|
||||||
|
|
||||||
|
import com.codesdream.ase.component.datamanager.DataTable;
|
||||||
import com.codesdream.ase.model.information.*;
|
import com.codesdream.ase.model.information.*;
|
||||||
|
|
||||||
public interface IBaseInformationService {
|
public interface IBaseInformationService {
|
||||||
@ -38,8 +39,11 @@ public interface IBaseInformationService {
|
|||||||
|
|
||||||
BaseStudentInfo findStudentInfoByStudentId(String studentId);
|
BaseStudentInfo findStudentInfoByStudentId(String studentId);
|
||||||
|
|
||||||
|
// 从文件中导入学生基本信息
|
||||||
|
void studentInfoImportFromDataTable(DataTable table);
|
||||||
|
|
||||||
BaseStudentInfo constructStudentInfo(String studentId,
|
BaseStudentInfo constructStudentInfo(String studentId,
|
||||||
String classId, String realName, String sex, String college, String major, String ethnic, String candidateCategory, String politicalStatus,
|
String classId, String realName, String sex, String college, String major, String ethnic, String politicalStatus,
|
||||||
String administrativeDivision);
|
String administrativeDivision);
|
||||||
|
|
||||||
BaseStudentInfo save(BaseStudentInfo baseStudentInfo);
|
BaseStudentInfo save(BaseStudentInfo baseStudentInfo);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of base_administrative_division
|
-- Records of base_administrative_division
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
INSERT INTO `base_administrative_division` VALUES ('000000', '未知', '0');
|
||||||
INSERT INTO `base_administrative_division` VALUES ('110000', '北京市', '0');
|
INSERT INTO `base_administrative_division` VALUES ('110000', '北京市', '0');
|
||||||
INSERT INTO `base_administrative_division` VALUES ('110100', '北京市市辖区', '110000');
|
INSERT INTO `base_administrative_division` VALUES ('110100', '北京市市辖区', '110000');
|
||||||
INSERT INTO `base_administrative_division` VALUES ('110101', '北京市东城区', '110100');
|
INSERT INTO `base_administrative_division` VALUES ('110101', '北京市东城区', '110100');
|
||||||
|
@ -14,7 +14,7 @@ INSERT INTO `base_college` VALUES ('10', '计算机学院', '10');
|
|||||||
INSERT INTO `base_college` VALUES ('11', '理学院', '11');
|
INSERT INTO `base_college` VALUES ('11', '理学院', '11');
|
||||||
INSERT INTO `base_college` VALUES ('12', '管理学院', '12');
|
INSERT INTO `base_college` VALUES ('12', '管理学院', '12');
|
||||||
INSERT INTO `base_college` VALUES ('13', '人文与经法学院', '13');
|
INSERT INTO `base_college` VALUES ('13', '人文与经法学院', '13');
|
||||||
INSERT INTO `base_college` VALUES ('14', '软件学院学院', '14');
|
INSERT INTO `base_college` VALUES ('14', '软件学院', '14');
|
||||||
INSERT INTO `base_college` VALUES ('15', '生命学院', '15');
|
INSERT INTO `base_college` VALUES ('15', '生命学院', '15');
|
||||||
INSERT INTO `base_college` VALUES ('16', '外国语学院', '16');
|
INSERT INTO `base_college` VALUES ('16', '外国语学院', '16');
|
||||||
INSERT INTO `base_college` VALUES ('17', '教育实验学院', '17');
|
INSERT INTO `base_college` VALUES ('17', '教育实验学院', '17');
|
||||||
|
30
src/test/java/com/codesdream/ase/BaseInformationTest.java
Normal file
30
src/test/java/com/codesdream/ase/BaseInformationTest.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package com.codesdream.ase;
|
||||||
|
|
||||||
|
import com.codesdream.ase.component.ASESpringUtil;
|
||||||
|
import com.codesdream.ase.component.datamanager.DataExcelReader;
|
||||||
|
import com.codesdream.ase.component.datamanager.DataTable;
|
||||||
|
import com.codesdream.ase.service.IBaseInformationService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
public class BaseInformationTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IBaseInformationService informationService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ASESpringUtil springUtil;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void studentInfoImportTest(){
|
||||||
|
DataTable table = springUtil.getBean(DataTable.class);
|
||||||
|
table.importTable(new DataExcelReader("SoftInformation.xlsx"));
|
||||||
|
informationService.studentInfoImportFromDataTable(table);
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,7 @@
|
|||||||
package com.codesdream.ase;
|
package com.codesdream.ase;
|
||||||
|
|
||||||
import com.codesdream.ase.component.ASESpringUtil;
|
import com.codesdream.ase.component.ASESpringUtil;
|
||||||
import com.codesdream.ase.component.datamanager.DataExcelGenerator;
|
import com.codesdream.ase.component.datamanager.*;
|
||||||
import com.codesdream.ase.component.datamanager.DataExcelReader;
|
|
||||||
import com.codesdream.ase.component.datamanager.DataModelRepositorySearcher;
|
|
||||||
import com.codesdream.ase.component.datamanager.DataModelSearcher;
|
|
||||||
import com.codesdream.ase.repository.permission.UserRepository;
|
import com.codesdream.ase.repository.permission.UserRepository;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -105,4 +102,67 @@ public class DataManagerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Data Table 基本测试
|
||||||
|
@Test
|
||||||
|
public void dataTableBaseTest(){
|
||||||
|
DataTable table = springUtil.getBean(DataTable.class);
|
||||||
|
table.addColTitle("Name").addColTitle("Sex").addColTitle("Age");
|
||||||
|
|
||||||
|
|
||||||
|
Collection<String> dataCollection = new ArrayList<>();
|
||||||
|
dataCollection.add("Tom");
|
||||||
|
dataCollection.add("M");
|
||||||
|
dataCollection.add("18");
|
||||||
|
table.addRow(dataCollection);
|
||||||
|
dataCollection.clear();
|
||||||
|
dataCollection.add("Pat");
|
||||||
|
dataCollection.add("F");
|
||||||
|
dataCollection.add("16");
|
||||||
|
table.addRow(dataCollection);
|
||||||
|
|
||||||
|
dataCollection = table.getRow(0);
|
||||||
|
Iterator<String> iterator = dataCollection.iterator();
|
||||||
|
Assert.assertEquals(iterator.next(), "Tom");
|
||||||
|
Assert.assertEquals(iterator.next(), "M");
|
||||||
|
Assert.assertEquals(iterator.next(), "18");
|
||||||
|
|
||||||
|
dataCollection = table.getRow(1);
|
||||||
|
iterator = dataCollection.iterator();
|
||||||
|
Assert.assertEquals(iterator.next(), "Pat");
|
||||||
|
Assert.assertEquals(iterator.next(), "F");
|
||||||
|
Assert.assertEquals(iterator.next(), "16");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dataTableImportTest(){
|
||||||
|
DataTable table = springUtil.getBean(DataTable.class);
|
||||||
|
table.importTable(new DataExcelReader("DataExcelGeneratorTest.xlsx"));
|
||||||
|
Collection<String> dataCollection = table.getRow(0);
|
||||||
|
Iterator<String> iterator = dataCollection.iterator();
|
||||||
|
Assert.assertEquals(iterator.next(), "Tom");
|
||||||
|
Assert.assertEquals(iterator.next(), "M");
|
||||||
|
Assert.assertEquals(iterator.next(), "18");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dataTableExportTest(){
|
||||||
|
DataTable table = springUtil.getBean(DataTable.class);
|
||||||
|
table.addColTitle("Name").addColTitle("Sex").addColTitle("Age");
|
||||||
|
|
||||||
|
|
||||||
|
Collection<String> dataCollection = new ArrayList<>();
|
||||||
|
dataCollection.add("Tom");
|
||||||
|
dataCollection.add("M");
|
||||||
|
dataCollection.add("18");
|
||||||
|
table.addRow(dataCollection);
|
||||||
|
dataCollection.clear();
|
||||||
|
dataCollection.add("Pat");
|
||||||
|
dataCollection.add("F");
|
||||||
|
dataCollection.add("16");
|
||||||
|
table.addRow(dataCollection);
|
||||||
|
|
||||||
|
table.exportTable(new DataExcelGenerator("DataTableExport.xlsx"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user