No busques más por otras webs ya que llegaste al espacio correcto, contamos con la respuesta que quieres pero sin complicaciones.
Solución:
Uso de SXSSF poi 3.8
package example;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SXSSFexample
public static void main(String[] args) throws Throwable
FileInputStream inputStream = new FileInputStream("mytemplate.xlsx");
XSSFWorkbook wb_template = new XSSFWorkbook(inputStream);
inputStream.close();
SXSSFWorkbook wb = new SXSSFWorkbook(wb_template);
wb.setCompressTempFiles(true);
SXSSFSheet sh = (SXSSFSheet) wb.getSheetAt(0);
sh.setRandomAccessWindowSize(100);// keep 100 rows in memory, exceeding rows will be flushed to disk
for(int rownum = 4; rownum < 100000; rownum++)
Row row = sh.createRow(rownum);
for(int cellnum = 0; cellnum < 10; cellnum++)
Cell cell = row.createCell(cellnum);
String address = new CellReference(cell).formatAsString();
cell.setCellValue(address);
FileOutputStream out = new FileOutputStream("tempsxssf.xlsx");
wb.write(out);
out.close();
Requiere:
- poi-ooxml-3.8.jar,
- poi-3.8.jar,
- poi-ooxml-schemas-3.8.jar,
- stax-api-1.0.1.jar,
- xml-apis-1.0.b2.jar,
- xmlbeans-2.3.0.jar,
- commons-códec-1.5.jar,
- dom4j-1.6.1.jar
Enlace útil
Vaya. Creo que estás escribiendo el libro de trabajo 944.000 veces. Su llamada wb.write(bos) está en el ciclo interno. No estoy seguro de que esto sea bastante consistente con la semántica de la clase Workbook. Por lo que puedo decir en los Javadocs de esa clase, ese método escribe el completo libro de trabajo al flujo de salida especificado. Y va a escribir cada fila que ha agregado hasta ahora una vez por cada fila a medida que crece.
Esto explica por qué también está viendo exactamente 1 fila. El primer libro de trabajo (con una fila) que se escribe en el archivo es todo lo que se muestra, y luego 7 GB de basura a partir de entonces.
A menos que tenga que escribir fórmulas o formatear, debería considerar escribir un archivo .csv. Infinitamente más simple, infinitamente más rápido, y Excel hará la conversión a .xls o .xlsx de forma automática y correcta por definición.
Al final de la página puedes encontrar las interpretaciones de otros administradores, tú igualmente puedes insertar el tuyo si lo deseas.