Skip to content

Commit b438d89

Browse files
876470: Culture based list and decimal separator support UG added
1 parent 481a058 commit b438d89

File tree

4 files changed

+176
-1
lines changed

4 files changed

+176
-1
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
public IActionResult Index()
2+
{
3+
List<object> data = new List<object>()
4+
{
5+
new { ItemCode= "I231", ItemName= "Chinese Combo Noodle", Quantity= "2", Rate= "125", Amount= "=PRODUCT(C2;D2)" },
6+
new { ItemCode= "I245", ItemName= "Chinese Combo Rice", Quantity= "3", Rate= "125", Amount= "=PRODUCT(C3;D3)" },
7+
new { ItemCode= "I237", ItemName= "Amritsari Chola", Quantity= "2", Rate= "225", Amount= "=PRODUCT(C4;D4)" },
8+
new { ItemCode= "I291", ItemName= "Asian Mixed Entree Platt", Quantity= "3", Rate= "165", Amount= "=PRODUCT(C5;D5)" },
9+
new { ItemCode= "I268", ItemName= "Chinese Combo Chicken", Quantity= "3", Rate= "125", Amount= "=PRODUCT(C6;D6)" },
10+
new { ItemCode= "I251", ItemName= "Chivas Regal", Quantity= "1", Rate= "325", Amount= "=PRODUCT(C7;D7)" },
11+
new { ItemCode= "I256", ItemName= "Chicken Drumsticks", Quantity= "2", Rate= "180", Amount= "=PRODUCT(C8;D8)" },
12+
new { ItemCode= "I232", ItemName= "Manchow Soup", Quantity= "2", Rate= "160", Amount= "=PRODUCT(C9;D9)" },
13+
new { ItemCode= "I290", ItemName= "Schezuan Chicken", Quantity= "3", Rate= "180", Amount= "=PRODUCT(C10;D10)" },
14+
new { ItemCode= "I229", ItemName= "Manchow Soup", Quantity= "2", Rate= "125", Amount= "=PRODUCT(C11;D11)" },
15+
new { ItemCode= "I239", ItemName= "Jw Black Lable", Quantity= "2", Rate= "175", Amount= "=PRODUCT(C12;D12)" },
16+
};
17+
ViewBag.DefaultData = data;
18+
return View();
19+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
@Html.EJS().Spreadsheet("spreadsheet").Locale("de").ListSeparator(";").ShowRibbon(false).ShowSheetTabs(false).Created("created").Sheets((sheet) =>
2+
{
3+
sheet.SelectedRange("E14").Ranges((ranges) =>
4+
{
5+
ranges.DataSource(@ViewBag.defaultData).Add();
6+
}).Rows(row =>
7+
{
8+
row.Index(12).Cells(cell => {
9+
cell.Index(3).Value("Subtotal:").Add();
10+
cell.Formula("=SUBTOTAL(9;E2:E12)").Add();
11+
}).Add();
12+
row.Cells(cell => {
13+
cell.Index(3).Value("Discount (8,5%):").Add();
14+
cell.Formula("=PRODUCT(8,5;E13)/100").Add();
15+
}).Add();
16+
row.Cells(cell => {
17+
cell.Index(3).Value("Total Amount:").Add();
18+
cell.Formula("=E13-E14").Add();
19+
}).Add();
20+
}).Columns(column => {
21+
column.Width(120).Add();
22+
column.Width(180).Add();
23+
column.Width(100).Add();
24+
column.Width(120).Add();
25+
column.Width(120).Add();
26+
}).Add();
27+
}).Render()
28+
29+
<sctipt>
30+
function loadCultureFiles(name) {
31+
ej.base.setCulture(name);
32+
ej.base.setCurrencyCode('EUR');
33+
var files = ['ca-gregorian.json', 'currencies.json', 'numbers.json', 'timeZoneNames.json', 'numberingSystems.json'];
34+
var loader = ej.base.loadCldr;
35+
var loadCulture = function (prop) {
36+
var ajax;
37+
if (prop === 'numberingSystems.json') {
38+
ajax = new ej.base.Ajax(location.origin + '/../../scripts/cldr-data/supplemental/' + files[prop], 'GET', false);
39+
} else {
40+
ajax = new ej.base.Ajax(location.origin + '/../../scripts/cldr-data/main/' + name + '/' + files[prop], 'GET', false);
41+
}
42+
ajax.onSuccess = function (value) {
43+
loader(JSON.parse(value));
44+
};
45+
ajax.send();
46+
};
47+
for (var prop = 0; prop < files.length; prop++) {
48+
loadCulture(prop);
49+
}
50+
}
51+
document.addEventListener('DOMContentLoaded', function () {
52+
loadCultureFiles('de');
53+
});
54+
55+
function created() {
56+
var spreadsheet = ej.base.getComponent(document.getElementById('spreadsheet'), 'spreadsheet');
57+
spreadsheet.cellFormat({ textAlign: 'center', fontWeight: 'bold' }, 'A1:E1');
58+
spreadsheet.numberFormat(ej.spreadsheet.getFormatFromType('Currency'), 'D2:E12');
59+
spreadsheet.numberFormat(ej.spreadsheet.getFormatFromType('Currency'), 'E13:E15');
60+
}
61+
</script>
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<ejs-spreadsheet id="spreadsheet" locale="de" listSeparator=";" showRibbon="false" showSheetTabs="false" created="created">
2+
<e-spreadsheet-sheets>
3+
<e-spreadsheet-sheet selectedRange="E14">
4+
<e-spreadsheet-ranges>
5+
<e-spreadsheet-range dataSource="ViewBag.DefaultData"></e-spreadsheet-range>
6+
</e-spreadsheet-ranges>
7+
<e-spreadsheet-rows>
8+
<e-spreadsheet-row index="12">
9+
<e-spreadsheet-cells>
10+
<e-spreadsheet-cell index="3" value="Subtotal:"></e-spreadsheet-cell>
11+
<e-spreadsheet-cell formula="=SUBTOTAL(9;E2:E12)"></e-spreadsheet-cell>
12+
</e-spreadsheet-cells>
13+
</e-spreadsheet-row>
14+
<e-spreadsheet-row>
15+
<e-spreadsheet-cells>
16+
<e-spreadsheet-cell index="3" value="Discount (8,5%):"></e-spreadsheet-cell>
17+
<e-spreadsheet-cell formula="=PRODUCT(8,5;E13)/100"></e-spreadsheet-cell>
18+
</e-spreadsheet-cells>
19+
</e-spreadsheet-row>
20+
<e-spreadsheet-row>
21+
<e-spreadsheet-cells>
22+
<e-spreadsheet-cell index="3" value="Total Amount:"></e-spreadsheet-cell>
23+
<e-spreadsheet-cell formula="=E13-E14"></e-spreadsheet-cell>
24+
</e-spreadsheet-cells>
25+
</e-spreadsheet-row>
26+
</e-spreadsheet-rows>
27+
<e-spreadsheet-columns>
28+
<e-spreadsheet-column width="120"></e-spreadsheet-column>
29+
<e-spreadsheet-column width="180"></e-spreadsheet-column>
30+
<e-spreadsheet-column width="100"></e-spreadsheet-column>
31+
<e-spreadsheet-column width="120"></e-spreadsheet-column>
32+
<e-spreadsheet-column width="120"></e-spreadsheet-column>
33+
</e-spreadsheet-columns>
34+
</e-spreadsheet-sheet>
35+
</e-spreadsheet-sheets>
36+
</ejs-spreadsheet>
37+
38+
<sctipt>
39+
function loadCultureFiles(name) {
40+
ej.base.setCulture(name);
41+
ej.base.setCurrencyCode('EUR');
42+
var files = ['ca-gregorian.json', 'currencies.json', 'numbers.json', 'timeZoneNames.json', 'numberingSystems.json'];
43+
var loader = ej.base.loadCldr;
44+
var loadCulture = function (prop) {
45+
var ajax;
46+
if (prop === 'numberingSystems.json') {
47+
ajax = new ej.base.Ajax(location.origin + '/../../scripts/cldr-data/supplemental/' + files[prop], 'GET', false);
48+
} else {
49+
ajax = new ej.base.Ajax(location.origin + '/../../scripts/cldr-data/main/' + name + '/' + files[prop], 'GET', false);
50+
}
51+
ajax.onSuccess = function (value) {
52+
loader(JSON.parse(value));
53+
};
54+
ajax.send();
55+
};
56+
for (var prop = 0; prop < files.length; prop++) {
57+
loadCulture(prop);
58+
}
59+
}
60+
document.addEventListener('DOMContentLoaded', function () {
61+
loadCultureFiles('de');
62+
});
63+
64+
function created() {
65+
var spreadsheet = ej.base.getComponent(document.getElementById('spreadsheet'), 'spreadsheet');
66+
spreadsheet.cellFormat({ textAlign: 'center', fontWeight: 'bold' }, 'A1:E1');
67+
spreadsheet.numberFormat(ej.spreadsheet.getFormatFromType('Currency'), 'D2:E12');
68+
spreadsheet.numberFormat(ej.spreadsheet.getFormatFromType('Currency'), 'E13:E15');
69+
}
70+
</script>

ej2-asp-core-mvc/spreadsheet/formulas.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,32 @@ Previously, although you could import culture-based Excel files into the Spreads
2828

2929
> Before importing culture-based Excel files, ensure that the Spreadsheet control is rendered with the corresponding culture. Additionally, launch the import/export services with the same culture to ensure compatibility.
3030
31-
When loading spreadsheet data with culture-based formula argument separators using cell data binding, local/remote data, or JSON, ensure to set the [listSeparator](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.spreadsheet.spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ListSeparator) property value as the culture-based list separator from your end. Additionally, note that when importing an Excel file, the [listSeparator](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.spreadsheet.spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ListSeparator) property will be updated based on the culture of the launched import/export service.
31+
When loading spreadsheet data with culture-based formula argument separators using cell data binding, local/remote data, or JSON, ensure to set the [listSeparator](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.spreadsheet.spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ListSeparator) property value as the culture-based list separator from your end. Additionally, note that when importing an Excel file, the [listSeparator](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.spreadsheet.spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ListSeparator) property will be updated based on the culture of the launched import/export service.
32+
33+
In the example below, the Spreadsheet control is rendered with the `German culture (de)`. Additionally, you can find references on how to set the culture-based argument separator and culture-based formatted numeric value as arguments to the formulas.
34+
35+
{% if page.publishingplatform == "aspnet-core" %}
36+
37+
{% tabs %}
38+
{% highlight cshtml tabtitle="CSHTML" %}
39+
{% include code-snippet/spreadsheet/formula-cs3/tagHelper %}
40+
{% endhighlight %}
41+
{% highlight c# tabtitle="FormulaController.cs" %}
42+
{% include code-snippet/spreadsheet/formula-cs3/formulaController.cs %}
43+
{% endhighlight %}
44+
{% endtabs %}
45+
46+
{% elsif page.publishingplatform == "aspnet-mvc" %}
47+
48+
{% tabs %}
49+
{% highlight razor tabtitle="CSHTML" %}
50+
{% include code-snippet/spreadsheet/formula-cs3/razor %}
51+
{% endhighlight %}
52+
{% highlight c# tabtitle="FormulaController.cs" %}
53+
{% include code-snippet/spreadsheet/formula-cs3/formulaController.cs %}
54+
{% endhighlight %}
55+
{% endtabs %}
56+
{% endif %}
3257

3358
## Create User Defined Functions / Custom Functions
3459

0 commit comments

Comments
 (0)