1. Às vezes, ao exportar o Excel, você precisa exportar por categoria. Existem várias subcategorias em uma categoria principal, e existem várias subcategorias nas subcategorias, assim como a seguinte imagem:
Não é difícil conseguir isso.
A idéia é a seguinte: circule de acordo com as principais categorias. Por exemplo, o exposto acima é pedalar de acordo com as três principais categorias do campus de Zhangjiang, Xuhui Campus e Lingang Campus e depois processar as categorias menores. Como este exemplo não envolve a fusão, envolve apenas o processamento de pequenas categorias. Se você precisar processar pequenas categorias, ainda precisa lidar com elas. O princípio de implementação específico é o mesmo que as categorias menores;
Cada ciclo, grave o tipo de casa desse ciclo e o tipo de casa do último ciclo. Quando os dois são iguais, a linha final a ser mesclada ++. Caso contrário, isso significa que o tipo de casa foi concluído (desde que cada tipo seja ordenado em ordem, garantindo que o mesmo tipo seja adjacente) e comece a se fundir. A implementação específica é a seguinte:
2. Implementar o código, a ideia específica já está nos comentários
public void expStatistics (string filepath, string campuscode) {try {writableworkbook wwb = workbook.createworkbook (novo arquivo (filepath)); Jxlformatutil jfu = new jxlformatutil (); WRITBLABLEET WS = wwb.createSheet ("Estatísticas do relatório da casa", 0); String [] Tablehead = {"Nome do campus: 20", "Tipo de casa: 30", "Uso da casa: 30", "User Area (): 20"}; para (int i = 0; i <tablehead.length; i ++) {// o estilo de título de cada coluna ws.addcell (new Label (i, 0, tablehead [i] .split (":") [0], jxlformatutil.wchead)); ws.setColumnView (i, Integer.ValueOf (Tablehead [i] .split (":") [1])); } int col = 1; // Iniciar na linha 1 // As seguintes variáveis são usadas para fundir o mesmo conteúdo int percol = col; String perpurpose = ""; // O uso anterior Tipo string proposition = ""; // O tipo de uso atual int startMergucol = 1; // a primeira linha a ser fundida int endMergecol = 0; // a última linha a ser fundida de boolean = True; // Use para gravar se é o primeiro loop // exportação <ccttCampus> campus; use; if (null! = Campuscode &&! "". Equals (Campuscode)) {campusList = campusdao.findcampusbycode (campuscode); } else {campusList = campusdao.findcampus (); } para (fcxtcampus campus: campuslist) {list <fcxtBuild> builds = builddao.statisticsBuilds (campus.getcampuscode ()); // obtenha todas as informações da casa se (null! ws.addcell (novo rótulo (linha ++, col, campus.getcampusname (), jxlformatutil.wccenter)); propósito = build.getusefulpurpose (); if (flag) {// Se for o primeiro loop, inicialize perpunda para que o primeiro julgamento subsequente perpuza = propósito; bandeira = false; } ws.addcell (novo rótulo (linha ++, col, fcxtbuild.build_usefulpurpose.get (build.getusefulpurpose ()), jxlformatutil.wccenter)); if (proposit.equals (perpuros)) {endMergeCol ++; } else {// Quando os dois são diferentes, as mesmas linhas antes do fusão WS.Mergucells (1, StartMergucol, 1, endMergucol); startMergucol = col; endMergucol = startMergucol; perpuros = propósito; } ws.addcell (novo rótulo (linha ++, col, fcxtbuild.build_buildingtype.get (build.getbuildingtype ()), jxlformatutil.wccenter)); ws.addcell (novo rótulo (linha ++, col, build.getbuildarea (). tostring (), jxlformatutil.wccenter)); col ++; } ws.Mergucells (0, Percol, 0, col-1); percol = col; }} wwb.write (); wwb.close (); } catch (Exceção e) {e.printStackTrace (); }}Resumir
O exposto acima é uma explicação detalhada das idéias de linha para mesclar o mesmo conteúdo na mesma coluna ao exportar o Java Excel. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!