coldfusion spreadsheet coldfusion-10 cfspreadsheet

coldfusion - SpreadsheetFormatRow deja de funcionar abruptamente



coldfusion-10 cfspreadsheet (2)

Como está aplicando el mismo formato en todas las filas, solo hágalo una vez , no en cada fila. El uso de SpreadsheetFormatCellRange después del bucle debería resolver el problema:

SpreadsheetFormatCellRange(excelSheet , formatHeadingRow , startRow , startCol , endRow , endCol );

Sospecho que el problema de alguna manera se relaciona con los límites máximos de estilo de Excel . Como CF es una caja negra, es difícil saber cuántos estilos crea en realidad o cómo se aplican exactamente. Sin embargo, en mi experiencia, es muy fácil exceder los límites de estilo sin siquiera saberlo. Especialmente cuando se utiliza el formato de archivo .xls anterior, cuyos límites son mucho menores. Es por eso que sugerí usar el nuevo formato .xlsx en su lugar .

El método getCustomPalette () no está definido.

Correcto. No existe en XSSF. ¿Hay alguna razón por la que necesites una paleta personalizada en lugar de simplemente definir tus propios colores , como se menciona en el otro hilo?

He visto esta publicación, pero parece que hay una resolución. De todos modos, estoy usando ColdFusion 10 para generar una hoja de cálculo de Excel. Sin embargo, cuando uso SpreadsheetFormatRow () y paso las filas para formatear, solo hace unos 3 y luego se detiene bruscamente. Aquí hay un ejemplo...

Código ColdFusion

<cfscript> rowCount = 1; headingRows = 4; // Create instance of new Spreadsheet excelSheet = SpreadsheetNew("ReportName",false); // HEADING (IMAGE) ROW FORMAT formatHeadingRow = StructNew(); formatHeadingRow.fgcolor="blue"; // Add rows to fill the header area (must add as many as we are spanning with the above image) for (x=0;x<headingRows;x++) { SpreadsheetAddRow(excelSheet,"TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST"); SpreadsheetFormatRow(excelSheet,formatHeadingRow,rowCount); rowCount++; } </cfscript> <!--- stream it to the browser ---> <cfheader name="Content-Disposition" value="inline; filename=reportName.xls"> <cfcontent type="application/vnd.ms-excel" variable="#SpreadSheetReadBinary(excelSheet)#">

y aquí hay una captura de pantalla de la hoja de Excel resultante

¿Por qué el formateo se detiene después de X número de filas y celdas? Si cambio a usar formato XML con

excelSheet = SpreadsheetNew("ReportName",true);

funciona correctamente Sin embargo, estoy usando una paleta personalizada para mis colores, así que no creo que cambiar a formato XLSX me funcione. Cuando intento y luego llamo

palette = excelSheet.getWorkbook().getCustomPalette();

Aparece un error que indica que el método getCustomPalette () no está definido.

coldfusion.runtime.java.MethodSelectionException: The getcustompalette method was not found

¿Alguien puede ayudarme a resolver esto? ¡¡¡Gracias!!!

O incluso mejor, ya que funciona con el formato XML, ¿alguien puede mostrar un ejemplo de cómo usar una paleta personalizada con XLSX (formato xml)?


Este es un problema que he visto a menudo cuando se trata de archivos xls de CF; parecen dejar de aplicar estilos después de una cierta cantidad de celdas. He podido solucionarlo obteniendo como resultado xlsx. (Pude replicar y "arreglar" tu problema al hacerlo).

excelSheet = SpreadsheetNew("ReportName",true);

...

<cfheader name="Content-Disposition" value="inline; filename=reportName.xlsx"> <cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#SpreadSheetReadBinary(excelSheet)#">