Le développement Android utilise POI pour générer et exporter des fichiers de rapport selon le modèle de rapport Word (tutoriel pratique)

Il y a une fonction qu'il faut utiliser pour exporter des rapports dans le projet. J'ai longtemps cherché sur Internet, et les quelques blogs que j'ai trouvés n'étaient pas assez précis. Finalement, après des tentatives incessantes, j'ai finalement réussi. Voici un enregistrement de la création d'un nouveau rapport basé sur le modèle Word. Le document Word est rempli de contenu et le document Word est exporté vers le chemin spécifié. (format docx)

1. Tout d'abord, nous devons importer le package jar suivant :
insérez la description de l'image ici
Lien de téléchargement : https://pan.baidu.com/s/1S88PX1NxXtSsafbm2tW1fw
Code d'extraction : l4z0

2. Nous ajoutons ces contenus dans build.gradle :
(1) Ajoutez dans android{} :

	packagingOptions{
    
    
        exclude 'META-INF/INDEX.LIST'
    }
    defaultConfig{
    
    
        multiDexEnabled true
    }

(2) Ajouter des dépendances{}

	implementation files('libs\\dom4j-1.6.1.jar')
    implementation files('libs\\poi-3.9-20121203.jar')
    implementation files('libs\\poi-ooxml-3.9-20121203.jar')
    implementation files('libs\\poi-ooxml-schemas-3.9-20121203.jar')
    implementation files('libs\\stax-api-1.0.1.jar')
    implementation files('libs\\xmlbeans-2.3.0.jar')

(3) Cliquez sur Sync Project with Gradle Files in File dans la barre de menus.

3. Nous devons préparer un fichier docx en tant que modèle (il peut contenir des tableaux), entrer une chaîne sous la forme $nom$ dans la position que vous devez remplacer, puis nous le remplacerons par le contenu que vous souhaitez remplir . Lorsque vous êtes prêt, créez un dossier sous src/main/appelé assets et placez-y le fichier de modèle docx.
insérez la description de l'image ici

4. Après cela, nous pouvons commencer à créer N groupes de paires clé-valeur HashMap et écrire le contenu que vous souhaitez remplir, par exemple :

	Map<String, Object> map = new HashMap<String, Object>();
	map.put("$name$", "张三");
	map.put("$sex$", "男");

5. Ensuite, nous obtenons le fichier de modèle, parcourons la carte pour remplir le contenu correspondant dans le document et sélectionnons le chemin pour exporter le nouveau fichier :

	InputStream is = context.getAssets().open("模板文件.docx");
	XWPFDocument document = new XWPFDocument(is);
	//读取段落(一般段落,页眉页脚没办法读取)
	List<XWPFParagraph> listParagraphs = document.getParagraphs();
	processParagraphs(listParagraphs, map);

	//读取页脚
	List<XWPFFooter> footerList = document.getFooterList();
	processParagraph(footerList, map);

	//处理表格
	Iterator<XWPFTable> it = document.getTablesIterator();
	while (it.hasNext()) {
    
    //循环操作表格
		XWPFTable table = it.next();
        List<XWPFTableRow> rows = table.getRows();
        for (XWPFTableRow row : rows) {
    
    //取得表格的行
        	List<XWPFTableCell> cells = row.getTableCells();
            for (XWPFTableCell cell : cells) {
    
    //取得单元格
				List<XWPFParagraph> paragraphListTable = cell.getParagraphs();
                processParagraphs(paragraphListTable, map);
			}
		}
	}
	FileOutputStream fopts = new FileOutputStream("/storage/emulated/0/poiTest/Report/测试.docx");
	document.write(fopts);
	if (fopts != null) {
    
    
		fopts.close();
	}

6. De cette manière, le fichier docs peut être exporté vers le chemin spécifié.

Je suppose que tu aimes

Origine blog.csdn.net/qq_35761934/article/details/119781249
conseillé
Classement