4

これはこれまでの私のコードです。クエリからデータを取得し、それを Excel ドキュメントにエクスポートします。

<cfscript>
  oArray = CreateObject("java", "java.util.Arrays");
  workbook = CreateObject("java", "org.apache.poi.xssf.usermodel.XSSFWorkbook");
  workbook.init();

  myFont = workbook.createFont();
  myFont.setBoldweight(myFont.BOLDWEIGHT_BOLD);

  boldStyle = workbook.createCellStyle();
  boldStyle.setFont(myFont);
</cfscript>

<!--- Set up the headings for the Excel worksheet --->
  <cfscript>
    thisSheet = workbook.createSheet(JavaCast("string", 'invoices due'));
    rows = {};
    // we need to refer to these three rows later on
    rows[1] = thisSheet.createRow(0);
    rows[2] = thisSheet.createRow(1);
    rows[3] = thisSheet.createRow(2);
    rows[4] = thisSheet.createRow(3);

    //Report parameters explanation
    thisCell = rows[2].createCell(0, 1);
    thisCell.setCellValue(reportSum);

    // user column headings
    thisCell = rows[4].createCell(0, 1);
    thisCell.setCellValue('Value');
    thisCell.setCellStyle(boldStyle);
    thisCell = rows[4].createCell(1, 1);
    thisCell.setCellValue('Team');
    thisCell.setCellStyle(boldStyle);
    thisCell = rows[4].createCell(2, 1);
    thisCell.setCellValue('Manager');
    thisCell.setCellStyle(boldStyle);
  </cfscript>

<cfset row = 5>
<cfloop query="invoicesDue">

<cfscript>
   thisRow = thisSheet.createRow(JavaCast("int", row));
   thisCell = thisRow.createCell(0, 1);
   thisCell.setCellValue(HTMLEditFormat(invoicesDue.value));
   thisCell = thisRow.createCell(1, 1);
   thisCell.setCellValue(HTMLEditFormat(invoicesDue.ct_team));
   thisCell = thisRow.createCell(2, 1);
   thisCell.setCellValue(HTMLEditFormat(invoicesDue.manager));
   thisCell = thisRow.createCell(3, 1);  
 </cfscript>
 </cfloop>

<cfscript>
 // todo: change to datadir from getAppRoot
 outputFileName = "invoicesDue(withfundingsource)" & "_" & RandRange(00000,99999) & ".xlsx";
 fos = CreateObject("java", "java.io.FileOutputStream");
 fos.init(outputFilename);
 workbook.write(fos);
 fos.close();
</cfscript>

私がやろうとしているのは、「値」というタイトルの列を Excel のデータ形式「会計」にフォーマットすることです。私は研究をしましたが、私はかなり立ち往生しています。

何か案は?

4

1 に答える 1

3

私がすることは、Excelでファイルを作成することです。セルの1つに「アカウンティング」形式を適用します。次に、POIでセルのスタイル/データ形式を確認します。

    dataFormatIndex = theAccountingCell.getCellStyle().getDataFormat();

私のテストでは、POIは「アカウンティング」フォーマットがBuiltInFormatであると報告しました44。次のように適用できます。

    accountingStyle = workbook.createCellStyle();
    accountingStyle.setDataFormat( javacast("int", 44) ) ;

    someRow  = someSheet.createRow(0);
    someCell = someRow.createCell(0);
    someCell.setCellStyle( accountingStyle );  
    someCell.setCellValue( javacast("double", 123.75) );

すべてのBuiltInFormat値を表示するには:

 formats = createObject("java", "org.apache.poi.ss.usermodel.BuiltinFormats");
 writeDump(formats.getAll());
于 2013-01-11T17:02:41.550 に答える