Tout d' abord, la mise en place d'
un projet de système, il suffit d' exécuter, il va générer beaucoup de données, en utilisant généralement l' affichage des pages, mais pour la commodité de données de navigation, ne sont généralement une fonction, l' exportation vers Excel, et pour ajouter des données, fera un excel fonction d'importation, importés en vrac. Et maintenant , le marché a beaucoup de technologie dans ce domaine, comme l'Apache POI, JXL . Cependant, les deux techniques ont un problème, est la consommation très mémoire, mais un ensemble de modèle poi API SAX peut résoudre un problème de débordement de mémoire dans une certaine mesure, mais il y a quelques défauts de poi, telles que la version 07 décompression Excel et la décompression après le stockage se fait dans la mémoire, la consommation de mémoire est encore grande.
Et sur cette base, Alibaba a développé EasyExcel, alors ce qui est EasyExcel?
Deux, EasyExcel A propos
EasyExcel a été développé par une équipe d'Alibaba rapide, processus simple pour éviter java outil OOM Excel. EasyExcel récrit l'analyse syntaxique de poi 07 La version Excel peut être eu avec un point d' intérêt Excel 3M SAX encore besoin de la mémoire 100M est réduite à quelques M, puis un grand excel ne sera pas hors de la mémoire, 03 mode dépendant-version sax points d' intérêt. Dans la partie supérieure fait un paquet de conversion de modèle, ce qui permet aux utilisateurs de plus simple et pratique. github Adresse: https://github.com/alibaba/easyexcel , adresse de documents: https: //alibaba-easyexcel.github.io/index.html.
Troisièmement, l' importation EasyExcel d'exportation
pour créer un projet Maven, la dépendance à l'importation:
01
02
03
04
05
06
07
08
09
dix
11
12
13
14
15
16
17
18
|
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >1.1.2-beat1</ version >
</ dependency >
<!--非必要包,可以简略掉get,set方法-->
< dependency >
< groupId >org.projectlombok</ groupId >
< artifactId >lombok</ artifactId >
< version >1.18.2</ version >
</ dependency >
<!--测试-->
< dependency >
< groupId >junit</ groupId >
< artifactId >junit</ artifactId >
< version >4.12</ version >
< scope >test</ scope >
</ dependency >
|
Fichier se lit comme suit:
1. Lisez le fichier spécifié
01
02
03
04
05
06
07
08
09
dix
11
12
13
14
15
16
17
18
19
|
/**
*读取指定文件
*/
@Test
public void read(){
/*文件路径*/
String filePath = "D:\\user.xlsx";
try(InputStream fileStream=new FileInputStream(filePath) ) {
/*Sheet:表格对象,第一个参数代表表格的索引,即第几个表格,第二个参数是从第几行开始,默认第一行是0*/
Sheet sheet= new Sheet( 1 , 0 );
List<Object> read = EasyExcelFactory.read(fileStream, sheet);
for (Object object :
read) {
System.out.println(object);
}
} catch (Exception e) {
e.printStackTrace();
}
}
|
suit la sortie:
2. Excel Génération
01
02
03
04
05
06
07
08
09
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@Test
public void write() throws FileNotFoundException {
// 生成EXCEL并指定输出路径
OutputStream out = new FileOutputStream( "D:\\out.xlsx" );
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);
// 设置,第一个参数是第几个表格,第二个参数是从第几行开始
Sheet sheet = new Sheet( 1 , 0 );
//设置表格名
sheet.setSheetName( "sheet1" );
// 设置标题
Table table = new Table( 1 );
List<List<String>> titles = new ArrayList<List<String>>();
titles.add(Arrays.asList( "用户名" ));
titles.add(Arrays.asList( "年龄" ));
titles.add(Arrays.asList( "生日" ));
titles.add(Arrays.asList( "地址" ));
table.setHead(titles);
// 查询数据导出即可 比如说一次性总共查询出100条数据
List<List<String>> userList = new ArrayList<>();
for ( int i = 0 ; i < 100 ; i++) {
userList.add(Arrays.asList( "小明" + i, String.valueOf(i), new Date().toString(), "幸福路" +i+ "号" ));
}
writer.write0(userList, sheet, table);
writer.finish();
}
|
table générée: