2003-04-23 20:53:41 -04:00
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2007-01-15 18:11:09 -05:00
|
|
|
<!--
|
|
|
|
====================================================================
|
|
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
|
|
this work for additional information regarding copyright ownership.
|
|
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
|
|
(the "License"); you may not use this file except in compliance with
|
|
|
|
the License. You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
====================================================================
|
|
|
|
-->
|
2003-04-23 20:53:41 -04:00
|
|
|
<!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.1//EN" "../../dtd/faq-v11.dtd">
|
|
|
|
|
2003-08-06 00:30:39 -04:00
|
|
|
<faqs title="Preguntas M Frecuentes (FAQ)">
|
2003-04-23 20:53:41 -04:00
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
or qula lectura de una hoja de cculo simple lleva tanto tiempo?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<p>
|
|
|
|
Probablemente hayas habilitado el registro (logging). Dicho registro es
|
2003-08-06 00:30:39 -04:00
|
|
|
una herramienta il para la bqueda de errores (debug). Tenerlo habilitado
|
|
|
|
reducirel rendimiento en un factor de al menos 100. El registro es il para
|
|
|
|
comprender por quPOI no puede leer alg fichero o para el propio desarrollo
|
2003-04-23 20:53:41 -04:00
|
|
|
de POI.
|
|
|
|
Los errores importantes se lanzan como excepciones, lo cual significa que
|
|
|
|
probablemente no necesites el registro (log).
|
|
|
|
</p>
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
ues el "eventmodel" (modelo de evento) de HSSF?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
2003-08-06 00:30:39 -04:00
|
|
|
<p> El paquete "eventmodel" de HSSF es un nuevo API para la lectura m eficiente de ficheros
|
2003-04-23 20:53:41 -04:00
|
|
|
XML. Requiere mayor conocimiento por parte del usuario, pero reduce el consumo de memoria a
|
2003-08-06 00:30:39 -04:00
|
|
|
una dima parte. Estbasado en el modelo de eventos AWT en combinaci con SAX. Si necesita
|
|
|
|
acceso de so-lectura a un fichero XML determinado, esta es la mejor manera de hacerlo.</p>
|
2003-04-23 20:53:41 -04:00
|
|
|
</answer>
|
|
|
|
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
or quno puedo leer el documento que creutilizando Star Office 5.1?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
2003-08-06 00:30:39 -04:00
|
|
|
<p>Star Office 5.1 escribe algunos registros utilizando el viejo estdar BIFF.
|
|
|
|
Esto provoca algunos problemas con POI que so soporta BIFF8.</p>
|
2003-04-23 20:53:41 -04:00
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
or qurecibo una excepci cada vez que intento leer mi hoja de cculo?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
2003-08-06 00:30:39 -04:00
|
|
|
<p>Es posible que su hoja de cculo contenga alguna caractertica que no est
|
|
|
|
soportada actualmente por HSSF. Por ejemplo - hojas de cculo que contengan
|
|
|
|
celdas con formato RTF (rich text) no est soportadas actualmente.</p>
|
2003-04-23 20:53:41 -04:00
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
oporta HSSF hojas de cculo protegidas?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
2003-08-06 00:30:39 -04:00
|
|
|
<p>Al proteger una hoja de cculo, ta se cifra. No tocaremos el cifrado, porque no
|
2003-04-23 20:53:41 -04:00
|
|
|
tenemos el suficiente conocimiento legal y no estamos seguros de las implicaciones que
|
2003-08-06 00:30:39 -04:00
|
|
|
conllevar el intentar implementar esto. Si desea intentarlo, es libre de hacerlo y
|
|
|
|
de adirlo como un mulo enchufable (plugin). Sin embargo, no lo guardaremos aqu</p>
|
2003-04-23 20:53:41 -04:00
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
o se sabe si un campo contiene una fecha con HSSF?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
2003-08-06 00:30:39 -04:00
|
|
|
<p>Excel almacena las fechas como neros. Asla ica manera para determinar
|
|
|
|
si una celda estrealmente almacenada como una fecha consiste en mirar su formato.
|
|
|
|
Hay un modo de ayuda (helper) en HSSFDateUtil (desde la distribuci 1.7.0-dev)
|
|
|
|
que lo comprueba. Gracias a Jason Hoffman por proporcionar la soluci.</p>
|
2003-04-23 20:53:41 -04:00
|
|
|
<source>
|
|
|
|
|
|
|
|
case HSSFCell.CELL_TYPE_NUMERIC:
|
|
|
|
double d = cell.getNumericCellValue();
|
|
|
|
// test if a date!
|
|
|
|
if (HSSFDateUtil.isCellDateFormatted(cell)) {
|
|
|
|
// format in form of M/D/YY
|
|
|
|
cal.setTime(HSSFDateUtil.getJavaDate(d));
|
|
|
|
cellText =
|
|
|
|
(String.valueOf(cal.get(Calendar.YEAR))).substring(2);
|
|
|
|
cellText = cal.get(Calendar.MONTH)+1 + "/" +
|
|
|
|
cal.get(Calendar.DAY_OF_MONTH) + "/" +
|
|
|
|
cellText;
|
|
|
|
}
|
|
|
|
|
|
|
|
</source>
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
|
|
|
Estoy intentando ver un fichero XLS enviado como flujo (stream) desde un servlet y tengo
|
2003-08-06 00:30:39 -04:00
|
|
|
complicaciones. u es el problema?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<p>
|
2003-08-06 00:30:39 -04:00
|
|
|
El problema normalmente se manifiesta como un mont de caracteres basura
|
2003-04-23 20:53:41 -04:00
|
|
|
en la pantalla. El problema persiste incluso aunque hayas configurado el tipo mime
|
|
|
|
correcto.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
La respuesta breve es: no dependas de IE para mostrar un fichero binario.
|
2003-08-06 00:30:39 -04:00
|
|
|
Escribe un documento adjunto como es debido si lo envs a trav de un servlet.
|
|
|
|
Toda versi de IE tiene diferentes fallos (bugs) en este sentido.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<p>
|
2003-08-06 00:30:39 -04:00
|
|
|
El problema en la mayor de las versiones de IE reside en que no utiliza el tipo mime
|
|
|
|
de la respuesta HTTP para determinar el tipo de fichero; en su lugar utiliza la extensi
|
|
|
|
del fichero en la petici. Aspodr adir un <strong>.xls</strong> a su cadena de petici.
|
2003-04-23 20:53:41 -04:00
|
|
|
Por ejemplo: <em>http://yourserver.com/myServelet.xls?param1=xx</em>. Esto se consigue
|
2003-08-06 00:30:39 -04:00
|
|
|
filmente a trav del mapeo de URL en cualquier contenedor servlet. A veces una
|
|
|
|
petici como
|
2003-04-23 20:53:41 -04:00
|
|
|
<em>http://yourserver.com/myServelet?param1=xx&dummy=file.xls</em>
|
2003-08-06 00:30:39 -04:00
|
|
|
tambi funciona.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Para garantizar la correcta apertura del fichero en Excel desde IE, escribe
|
2003-08-06 00:30:39 -04:00
|
|
|
tu fichero a un fichero temporal bajo su raiz web desde tu servlet. Env entonces
|
|
|
|
una respuesta http al navegador para que haga una redirecci en el lado del cliente
|
|
|
|
a tu fichero temporal. (Si haces una redirecci en el lado del servidor utilizando
|
|
|
|
RequestDispatcher, tendr que adir .xls a la petici como se ha mendionado m
|
2003-04-23 20:53:41 -04:00
|
|
|
arriba)
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Date cuenta de que cuando pides un documento que se abre con un manejador externo,
|
2003-08-06 00:30:39 -04:00
|
|
|
IE a veces realiza dos peticiones al servidor web. Asque si tu proceso generador
|
2003-04-23 20:53:41 -04:00
|
|
|
es pesado, tiene sentido escribir a un fichero temporal, para que peticiones
|
2003-08-06 00:30:39 -04:00
|
|
|
mtiples utilicen el fichero estico.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Nada de esto pertenece a Excel. El mismo problema ocurre cuando intentas general
|
2003-08-06 00:30:39 -04:00
|
|
|
cualquier fichero binario dinicamente a un cliente IE. Por ejemplo, si generas
|
2003-04-23 20:53:41 -04:00
|
|
|
ficheros pdf utilizando
|
|
|
|
<link href="http://xml.apache.org/fop">FOP</link>,
|
2003-08-06 00:30:39 -04:00
|
|
|
te encontrar con los mismos problemas.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<!-- Gracias a Avik por la respuesta -->
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
|
|
|
Quiero dar formato a una celda (Data format of a cell) de una hoja excel como
|
2003-08-06 00:30:39 -04:00
|
|
|
###,###,###.#### o ###,###,###.0000. s posible hacer esto con POI?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<p>
|
2003-08-06 00:30:39 -04:00
|
|
|
HSSF no soporta todav formatos de datos personalizados, sin embargo,
|
|
|
|
deber ser una facilidad razonablemente sencilla de adir y aceptaremos
|
|
|
|
gustosos contribuciones en este ea.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Estos son los formatos incluidos que soporta:
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<link href="http://jakarta.apache.org/poi/javadocs/javasrc/org/apache/poi/hssf/usermodel/HSSFDataFormat_java.html#HSSFDataFormat">http://jakarta.apache.org/poi/javadocs/javasrc/org/apache/poi/hssf/usermodel/HSSFDataFormat_java.html#HSSFDataFormat</link>
|
|
|
|
</p>
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
o ado un borde alrededor de una celda unida (merged)?
|
2003-04-23 20:53:41 -04:00
|
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<p>
|
2003-08-06 00:30:39 -04:00
|
|
|
Ade celdas vacs alrededor de donde las celdas hubieran estado normalmente y
|
2003-04-23 20:53:41 -04:00
|
|
|
configura los bordes individualmente para cada celda.
|
|
|
|
Probablemente mejoraremos HSSF en el futuro para facilitar este proceso.
|
|
|
|
</p>
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
<faq>
|
|
|
|
<question>
|
2003-08-06 00:30:39 -04:00
|
|
|
Intentescribir valores en celdas ascomo cambiar el nombre de la hoja Excel
|
2003-04-23 20:53:41 -04:00
|
|
|
en mi lengua nativa, pero no pude hacerlo. :(
|
|
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<p>
|
|
|
|
Por defecto HSSF utiliza valores de celdas y nombres de hoja en unicode comprimido,
|
2003-08-06 00:30:39 -04:00
|
|
|
asi que para soportar la localizaci debers utilizar Unicode.
|
|
|
|
Para hacerlo debers configurarlo manualmente:
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
<source>
|
|
|
|
|
|
|
|
//
|
|
|
|
// para el nombre de la hoja
|
|
|
|
//
|
|
|
|
HSSFWorkbook wb = new HSSFWorkbook();
|
|
|
|
HSSFSheet s = wb.createSheet();
|
|
|
|
wb.setSheetName( 0, "SomeUnicodeName", HSSFWorkbook.ENCODING_UTF_16 );
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
// para el valor de la celda
|
|
|
|
//
|
|
|
|
HSSFRow r = s.createRow( 0 );
|
|
|
|
HSSFCell c = r.createCell( (short)0 );
|
|
|
|
c.setCellType( HSSFCell.CELL_TYPE_STRING );
|
|
|
|
c.setEncoding( HSSFCell.ENCODING_UTF_16 );
|
|
|
|
c.setCellValue( "\u0422\u0435\u0441\u0442\u043E\u0432\u0430\u044F" );
|
|
|
|
|
|
|
|
</source>
|
|
|
|
<p>
|
2003-08-06 00:30:39 -04:00
|
|
|
Asegate de que haces la llamada a setEncoding() antes de llamar a setCellValue(),
|
|
|
|
si no, lo que le pases no serinterpretado correctamente.
|
2003-04-23 20:53:41 -04:00
|
|
|
</p>
|
|
|
|
</answer>
|
|
|
|
</faq>
|
|
|
|
</faqs>
|