vantagem:
O JXL suporta muito bem o chinês, e a operação é simples, e o método depende do nome e do significado.
O JXL é uma API Java Pure, que tem desempenho perfeitamente entre plataformas. O código pode ser executado no Windows ou Linux sem reescrever
Suporta todas as versões do Excel 95-2000 (diz-se on-line que pode apoiar o Excel 2007 no momento, mas ainda não tentou)
Gerar formato padrão do Excel 2000
Fonte de suporte, número, operações de data
Capaz de modificar as propriedades celulares
Imagens e gráficos são suportados, mas essa API tem suporte limitado para gráficos e gráficos e reconhece apenas o formato PNG.
deficiência:
Suporte de imagem ineficiente e imperfeito e suporte menos poderoso para formatos do que POI
Caso:
String times = (new SimpleDateFormat ("yyyymmddhhmmss")). // Lista de nomes do arquivo <Cox Logs> List = logSService.SelectForList (hql.toString ()); String path = request.getSession (). GetServletContext (). GetRealPath ("/") + "xls/" + (new SimpleDateFormat ("yyyymmdd")). Formato (new Date ()); Arquivo de arquivo = novo arquivo (caminho); // crie if (! File.exists () &&! File.isdirectory ()) {file.mkdir (); } Response.setContentType ("Application/vnd.ms-excel; charset = utf-8"); // // especifique o tipo de salvamento do arquivo. Response.Setcharacterencoding ("UTF-8"); Exportutil.writer_log (solicitação, fname, list, resposta); // download para localO método de exportação do Writer_log é o seguinte
/*** Gere o arquivo Excel e exporte para o computador local* @param fname Nome do arquivo* @param liste os dados a serem impressos, ou seja, a lista de dados de consultas de banco de dados*/public static void writer_log (httpServletReQuest Solicy, string fName, list list, httpslestSonsonsonsoornet. Response.Reset (); // Limpe o fluxo de saída // a seguir é o início do processamento do nome do arquivo chinês Response.Setcharacterencoding ("UTF-8"); // Defina o formato de codificação do conteúdo correspondente se (ismsBrowser (request)) fname = java.net.urlEncoder.encode (fnEst (fname)), " else fname = new String (fname.getbytes ("utf-8"), "ISO-8859-1"); Response.setheader ("Content-Disposition", "Applement; FileName ="+fname+". XLS"); Response.setContentType ("Application/MSexcel; charset = utf-8"); // Defina o tipo de saída // o processamento do nome do arquivo chinês termina // A pasta de trabalho aqui importa importar jxl.workbook; Weatitableworkbook wBook = Work.CreateWorkbook (OS); // Crie o arquivo Writabletheet Sheet de Arquivo Excel = wBook.CreateSheet ("Log do sistema", 0); // Nome da planilha CellView CellView = new CellView (); CellView.SetAUTOSIZE (TRUE); // Defina a folha de tamanho automático.SetColumnView (0, 8); // Defina a largura da célula, 0 é o número da coluna, 8 é a folha de largura.SetColumnView (1, 20); // Defina a largura da célula, 1 é o número da coluna, 20 é a folha de largura.SetColumnView (2, 24); Sheet.setColumnView (3, 20); Sheet.setColumnView (4, 30); Sheet.setColumnView (5, 13); Sheet.setColumnView (6, 15); Sheet.setColumnView (7, 32); Sheet.setColumnView (8, 15); // Defina o Excel Font WrititableFont wfont = new WritableFont (WritableFont.CreateFont ("宋体"), 22, WRITEDFONT.BOLD, FALSE, JXL.FORMAT.UNDERLINESTILYLE.no_underline, jxl.format.colour.black); // Definir o estilo da fonte da célula WritableCellFormat titleFormat = new WritableCellFormat (WFont); // Adicione a célula font titleFormat.setalignment (alignment.centre); // Definir alinhamento de centralização de texto; String [] title = {"System Log"}; // Defina o cabeçalho da tabela do Excel para (int i = 0; i <title.length; i ++) {// O que é importado aqui é importar jxl.write.label; LABEL EXTELTITLE = NOVA LABEL (I, 0, Título [I], TitleFormat); // Conteúdo da célula // Pedido de parâmetro: Iniciar a coluna, iniciar a linha, coluna final, folha de linha final.MergeCells (0, 0, 8, 0); // Localização, qual linha, que coluna Sheet.addcell (Exceltitle); // Adicione informações da célula} // Defina a extremidade do cabeçalho da tabela do Excel // a primeira linha, ou seja, o tempo de exibição, parâmetros: (coluna, linha, conteúdo) writablefont wfonttime = new writablefont (writablefont.createFont ("宋体"), 11, withitnefont.no_bold, false, jxl.at ("宋体"), 11, writablefont.no_bold, false, jxl.at ("宋体"), 11, withitnefont.no_bold, false, jxl.at ("宋体". jxl.format.colour.black); // Definir o estilo da fonte da célula WritableCellFormat titletime = new WritableCellFormat (wfonttime); // Adicione a fonte de célula titletime.setalignment (alinhamento.right); // Definir alinhamento de centralização de texto; DateFormat df = new SimpleDateFormat ("AAAYYY-MM-DD"); // Sheet.setColumnView (1, CellView); // Defina automaticamente a largura da coluna de acordo com o conteúdo do rótulo contentDate = new Label (0, 1, df.format (new Date ()), titletime); // conteúdo de células // Sheet.MergeCells (16, 1, 18, 1); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada. Se não houver fusão, você não poderá escrever uma folha.addcell (contentDate); // Adicione informações da célula // O final da primeira linha // A segunda linha mostra a barra de título da condição WrititableFont wfont2 = new WritableFont (WrititableFont.CreateFont ("宋体"), 11, WritableFont.Bold, false, jxl.format.underlinestyle.no_underline, jxl.format.colour.black; // Definir o estilo da fonte da célula WritableCellFormat titleFormat2 = new WritableCellFormat (WFONT2); // Adicionar célula font titleFormat2.SetBordder (Border.all, borderlinestyle.thin); // defina a linha de borda-sólida; titleFormat2.Setalignment (alinhamento.Centre); // Defina o alinhamento centrado no texto; titleFormat2.SetverticalAlignment (VerticalAlignment.Centre); // defina centralização vertical; Rótulo content2a = novo rótulo (0, 2, "número de série", titleFormat2); // Conteúdo da célula--1st Rótulo da grade Content2b = novo rótulo (1, 2, "Nome do usuário", TitleFormat2); // Conteúdo da célula--2º Rótulo de grade Content2C = novo rótulo (2, 2, "Record Time", TitleFormat2); // Conteúdo da célula-- 3rd Rótulo de grade Content2C = novo rótulo (2, 2, "Record Time", TitleFormat2); // Conteúdo da célula-- 3rd Rótulo de grade Content2C = novo rótulo (2, 2, "Record Time", TitleFormat2); // Conteúdo da célula-- 3rd Rótulo de grade Content2d = novo rótulo (3, 2, "Módulo de operação", TitleFormat2); // Conteúdo da célula-- 4th Grade Label Content2E = New Label (4, 2, "Operação Conteúdo", TitleFormat2); // Conteúdo da célula-- 5th Rótulo de grade Content2f = novo rótulo (5, 2, "Ação da Operação", TitleFormat2); // Conteúdo da célula-- 6th Grade Label Content2G = New Label (6, 2, "Operador IP", TitleFormat2); // Conteúdo da célula-- 7th Rótulo da grade Content2h = novo rótulo (7, 2, "Operação Organização", TitleFormat2); // Conteúdo da célula-- 8th Rótulo de grade Content2i = novo rótulo (8, 2, "nota", titleFormat2); // Conteúdo da célula-- 9th Folha de grade.MERGECELLS (0, 1, 8, 1); /*sheet.MergeCells(0, 2, 0, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição da mesclagem, se não houver mesclagem, você não pode escrevê -la; (Aqui está a linha de partida 3 a linha 5, a coluna 1) Folha.Mergucels (1, 2, 1, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição da mesclagem, se não houver mesclagem, você não pode escrevê -la; (Aqui está a linha de partida 3 a linha 5, a coluna 2) Folha.MergusCells (2, 2, 2, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 3) Folha.Mergucels (3, 2, 3, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 4) Folha.Mergucels (4, 2, 4, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 5) Folha.Mergucels (5, 2, 5, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 6) Folha.Mergucels (6, 2, 6, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 7) Folha.Mergucels (7, 2, 7, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição mesclada, se não houver mesclagem, você não poderá escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 8) Folha.Mergucels (8, 2, 8, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição da mesclagem. Se não houver fusão, você não pode escrevê -lo; (Aqui está a linha de partida 3 a linha 5, coluna 9) Folha.Mergucels (9, 2, 9, 4); // A localização, cuja linha e coluna estão na linha, ou seja, a posição da mesclagem. Se não houver fusão, você não pode escrevê -lo; (Aqui está a linha de partida 3 a linha 5, coluna 10) Folha.Mergucels (10, 2, 12, 3); // A localização, cuja linha e coluna estão na linha, ou seja, a posição da mesclagem. Se não houver fusão, você não pode escrevê -lo; (Aqui está a linha de partida 3 a linha 4, coluna 11-13) Folha.MergusCells (13, 2, 15, 3); // A localização, cuja linha e coluna estão na primeira linha, ou seja, a posição mesclada, se não houver mesclagem, você não pode escrevê -la; (Aqui está a linha de partida 3 a linha 4, colunas 14-16) Folha.MergoCecells (16, 2, 16, 4); // A localização, cuja linha e coluna estão na primeira linha, ou seja, a posição mesclada, se não houver mesclagem, você não pode escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 17) Folha.Mergucels (17, 2, 17, 4); // A localização, cuja linha e coluna estão na primeira linha, ou seja, a posição mesclada, se não houver mesclagem, você não pode escrevê -la; (Aqui está a linha de partida 3 a linha 5, coluna 18) Folha.Mergucells (18, 2, 18); // A localização, cuja linha e coluna estão na primeira linha, ou seja, a posição mesclada. Se não houver fusão, você não pode escrevê -lo; (Aqui está a linha de partida 3 a 5, coluna 19) */ Sheet.addcell (content2a); // Adicione a primeira folha de informações de célula.AddCell (Content2B); // Adicione a segunda folha de informações de célula.Addcell (Content2C); // Adicione a terceira folha de informações de célula.AddCell (Content2D); // Adicione a quarta folha de informações de células.Addcell (content2E); // Adicione a quinta folha de informações de células.AddCell (Content2F); // Adicione a sexta folha de informações de células.AddCell (Content2G); // Adicione a folha de informações da sétima célula.Addcell (Content2H); // Adicione a 8ª folha de informações de células.Addcell (content2i); // Adicione a 9ª informação de célula writitablefont wf = novo writablefont (writitablefont.createFont ("安安"), 11, writablefont.no_bold, false, jxl.format.underlinestyle.no_underline, jxl.format.colour.black); // Defina o estilo da fonte da célula WritableCellFormat WCF = new WritableCEllFormat (WF); // Adicione a fonte celular wcf.setborder (border.all, borderlinestyle.thin); // Defina a linha de borda-Solid; wcf.setverticalalInel (verticalalignment.centre); // Definir alinhamento vertical wcf.setalignment (alignment.centre); // Defina o alinhamento da centralização horizontal do texto; wcf.setWrap (true); // WRAP AUTOMÁTICO DA LINHA WRABEDFONT WF1 = NOVO WRITALFONT (WRITEDFONT.CREATEFONT ("安体"), 11, WRITEDFONT.NO_BOLD, FALSE, JXL.FORMAT.UNDERLINESTILYLE.NO_UNDERLINE, JXL.FORMAT.COLOUR.BLACK); // Definir estilo de fonte de célula WritableCellFormat WCF1 = new WritableCellFormat (WF1); // Adicione a fonte celular wcf1.setborder (border.left, borderlinestyle.thin); // defina a linha de borda-sólida; wcf1.setverticalalignment (verticalalignment.centre); // Definir alinhamento vertical wcf1.setalignment (alignment.centre); // Defina o alinhamento da centralização horizontal do texto; // informações obtidas pelo seguinte banco de dados de loop int c = 1; // o número da linha do Excel usado para looping iterator it = list.iterator (); while (it.hasnext ()) {logs tc = (logs) it.Next (); DateFormat dfmt = new SimpleDateFormat ("AAAYYY.MM"); String xh = string.valueof (c); if (xh == null) {xh = ""; } Rótulo content0 = novo rótulo (0, c+2, xh, wcf); // Nome da sequência do número de série = tc.getUserName (); if (nome == null) {name = ""; } Rótulo content1 = novo rótulo (1, c+2, nome, wcf); // nome de usuário string xrpresent = tc.getLogtime (); if (xrpresent == null) {xrpresent = ""; } Rótulo content2 = novo rótulo (2, c+2, xrpresent, wcf); // registra tempo string czmodel = tc.getModel (); if (czmodel == null) {czmodel = ""; } Rótulo content3 = novo rótulo (3, c+2, czmodel, wcf); // módulo de operação string sexo = tc.getContent (); if (sexo == null) {sex = ""; } Rótulo content4 = novo rótulo (4, c+2, sexo, wcf); // operação conteúdo string aniversário = tc.getOperate (); if (aniversário == null) {aniversário = ""; } Rótulo content5 = novo rótulo (5, c+2, aniversário, wcf); // Operação Ação String Nation = tc.getip (); if (nação == null) {nath = ""; } Rótulo content6 = novo rótulo (6, c+2, nação, wcf); // Origor da sequência IP do operador Origin = tc.getorgname (); if (origem == null) {Origin = ""; } Rótulo content7 = novo rótulo (7, c+2, origem, wcf); // ou organização string bplace = tc.getRemark (); if (bplace == null) {bplace = ""; } Rótulo content8 = novo rótulo (8, C+2, BPLace, WCF); // observa string abc = ""; Rótulo conteúdo9 = novo rótulo (9, C+2, ABC, WCF1); // sheet.set.setRowView (C+2, 600); // Defina a folha de altura da linha.SetRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.MergeCells (0, C+2, 0, C+2); // mergecells (1, c+2, 0, c+2); // Mergecells (A, B, C, D) Folha de função de mesclagem. // uma folha de número de colunas de célula.MergeCells (3, C+2, 0, C+2); // folha de número da linha da célula B.Mergucells (4, C+2, 0, C+2); // c A partir da célula [a, b], fundir -se para a coluna C folha. // D da célula [a, b], fundir -se para a linha D folha.Mergucels (6, C+2, 0, C+2); Sheet.MergeCells (7, C+2, 0, C+2); Sheet.MergeCells (8, C+2, 0, C+2); Sheet.MergeCells (9, C+2, 0, C+2); Sheet.AddCell (Content0); Sheet.AddCell (Content1); Sheet.AddCell (Content2); Sheet.AddCell (Content3); Sheet.AddCell (Content4); Sheet.AddCell (Content5); Sheet.AddCell (Content6); Sheet.AddCell (Content7); Sheet.AddCell (Content8); Sheet.AddCell (Content9); C ++; } wBook.Write (); // grava no arquivo wbook.close (); os.close (); } catch (Exceção e) {lança a nova PiikeException ("Erro de arquivo de exportação"); }}O exemplo acima explicação dos dados de exportação do JXL para o Excel é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.