El desarrollo de Android utiliza puntos de interés para generar y exportar archivos de informe de acuerdo con la plantilla de informe de Word (tutorial práctico)

Hay una función que debe usarse para exportar informes en el proyecto. Busqué durante mucho tiempo en Internet y los pocos blogs que encontré no eran lo suficientemente específicos. Finalmente, después de continuos intentos, finalmente lo logré. Aquí hay un registro de cómo crear un nuevo informe basado en la plantilla de Word. El documento de Word se llena con contenido y el documento de Word se exporta a la ruta especificada. (formato docx)

1. Primero, necesitamos importar el siguiente paquete jar:
inserte la descripción de la imagen aquí
Enlace de descarga: https://pan.baidu.com/s/1S88PX1NxXtSsafbm2tW1fw
Código de extracción: l4z0

2. Agregamos estos contenidos en build.gradle:
(1) Agregar en android{}:

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

(2) Agregar dependencias{}

	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) Haga clic en Sincronizar proyecto con archivos Gradle en Archivo en la barra de menú.

3. Necesitamos preparar un archivo docx como plantilla (puede contener tablas), ingrese una cadena en forma de $nombre$ en la posición que necesita reemplazar, y luego lo reemplazaremos con el contenido que desea completar . Cuando esté listo, cree una carpeta en src/main/llamada assets y coloque el archivo de plantilla docx en ella.
inserte la descripción de la imagen aquí

4. Después de eso, podemos comenzar a crear N grupos de pares clave-valor de HashMap y escribir el contenido que desea completar, por ejemplo:

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

5. Luego obtenemos el archivo de plantilla, recorremos el mapa para completar el contenido correspondiente en el documento y seleccionamos la ruta para exportar el nuevo archivo:

	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 esta forma, el archivo docs se puede exportar a la ruta especificada.

Supongo que te gusta

Origin blog.csdn.net/qq_35761934/article/details/119781249
Recomendado
Clasificación