2017-05-24 15 views
2

私は剣道のエクスポートをExcelにエクスポートしようとしています。書式設定が不足していることを除いて、正常に動作します。テンプレートを使用しているからだと思います。剣道グリッドExcel通貨に変換通貨書式

The Telerik documentationは、明示的に述べている:

をExcelにグリッドのエクスポート時にセル値をフォーマットするには、細胞の フォーマットオプションを設定します。

私はこれを試してみました、それが動作していない:

columns: [ 
    { 
     field: "EntryWage", 
     headerTemplate: entryLevelWageColumnHeading + "<span name='EntryWage' class='k-icon k-i-close remove' style='float: right;'></span>", 
     width: 125, 
     attributes: { style: "text-align:right;" }, 
     format: "{0:c}", 
     template: "#= (EntryWage != null) ? kendo.toString(EntryWage, 'C') : 'N/A' #" 
    }];  

私も(エクセルグリッドdefintiion用)この機能を持っている:

excelExport: function (e) { 
     var sheet = e.workbook.sheets[0]; 
     var row = sheet.rows[0]; 
     $("#grid .k-grid-header .k-link").each(function (index) { //for each column header in the grid... 
      row.cells[index].value = $(this).text(); //set cell text from grid column text 
      row.cells[index].background = "#0070C0"; //set cell to "blue" color 
     }); 
    }, 

は、私はここで、各セルを解析する必要がありますか?私は何か間違っているのですか? Excelへのエクスポート全体が簡単なので、これは本当に簡単だと思いますか?

答えて

2

templateは、エクスポートされるデータに何らかの影響を与える必要があります(excelExportdataSourceに基づいています)。

working example of excelExportのjsFiddleは、それぞれcellのフォーマットを変更します。

excelExportコードの違い:

excelExport: function(e) {  
    var sheet = e.workbook.sheets[0]; 

    for (var rowIndex = 0; rowIndex < sheet.rows.length; rowIndex++) { 
    var row = sheet.rows[rowIndex];   
    for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) { 
     var cell = row.cells[cellIndex]; 
     if (row.type === "data") { 
      //if (cellIndex == 2) { 
      if (sheet.rows[0].cells[cellIndex].value == "unitPrice") {// like this 
       cell.format = "number"; 
       cell.background = "#0070C0" 
       cell.hAlign = "right"; 
      } 
     } 
    }  
    } 
+0

ありがとうございます。私はそれを同様に解決した(下記参照)。 – AussieJoe

3

私はサンドマンの提案と同様に、それを解決することになりました。私は、各列(入力)から、フィールド名に基づいて自分の出力形式に基づいています。

また、グリッドの列ヘッダーをExcel列ヘッダー行に追加します。ちょっと悲しいけど、剣道はこれをやっていない。

excelExport: function (e) { 
    var sheet = e.workbook.sheets[0]; 
    var row = sheet.rows[0]; 

    //Excel output - create a header row 
    $("#grid .k-grid-header .k-link").each(function (index) { //for each column header in the grid... 
     row.cells[index].value = $(this).text(); //set cell text from grid column text 
     row.cells[index].background = "#0070C0"; //set cell to "blue" color 
    }); 

    //Excel output - column formatting 
    var formatMask = null; 
    for (var rowIndex = 1; rowIndex < sheet.rows.length; rowIndex++) { //begin on first row (skip header) 
     row = sheet.rows[rowIndex]; 
     for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) { //for each row, check each cell by field name 
      switch (this.columns[cellIndex].field) { 
       case "Field1": 
        formatMask = "###,##0"; 
        break; 
       case "Field2": 
        formatMask = "$#,##0"; 
        break; 
       case "Field3": 
        formatMask = "$#,##0"; 
        break; 
       case "Field4": 
        formatMask = "###,##0"; 
        break; 
       case "Field5": 
        formatMask = "###,##0"; 
        break; 
       case "Field6": 
        formatMask = "###,##0"; 
        break; 
       case "Field7": 
        formatMask = null; 
        row.cells[cellIndex].value = row.cells[cellIndex].value; 
        break; 
       case "Field8": 
        formatMask = "###,##0"; 
        break; 
       case "Field9": 
        formatMask = "###,##0"; 
        break; 
       case "Field10": 
        formatMask = "###,##0"; 
        break; 
       case "Field11": 
        formatMask = "###,##0"; 
        break; 
       case "Field12": 
        if (row.cells[cellIndex].value === false) { 
         row.cells[cellIndex].value = "No"; 
        } else { 
         row.cells[cellIndex].value = "Yes"; 
        } 
        break; 
       default: 
        break; 
      } 
      row.cells[cellIndex].format = formatMask; //apply column format mask 
     } 

    } 
},