Guler.Editor.Premium.Tables
0.2.0-alpha.0
This is a prerelease version of Guler.Editor.Premium.Tables.
dotnet add package Guler.Editor.Premium.Tables --version 0.2.0-alpha.0
NuGet\Install-Package Guler.Editor.Premium.Tables -Version 0.2.0-alpha.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Guler.Editor.Premium.Tables" Version="0.2.0-alpha.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Guler.Editor.Premium.Tables" Version="0.2.0-alpha.0" />
<PackageReference Include="Guler.Editor.Premium.Tables" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Guler.Editor.Premium.Tables --version 0.2.0-alpha.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Guler.Editor.Premium.Tables, 0.2.0-alpha.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Guler.Editor.Premium.Tables@0.2.0-alpha.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Guler.Editor.Premium.Tables&version=0.2.0-alpha.0&prerelease
#tool nuget:?package=Guler.Editor.Premium.Tables&version=0.2.0-alpha.0&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Stylus.Premium.Tables
Stylus editör için tablo araçları premium paketi. ADR-012 implementasyonu.
⚠️ Ticari lisans gereklidir. Trial mode (30 gün) varsayılan.
⚠️ Backend-only Sprint 5 alpha — frontend formula bar / cell type dropdown UI Faz 5'te.
Özellikler (alpha)
| Modül | Method | Ne yapar |
|---|---|---|
| Formula | Evaluate(formula, ITableData) |
Excel-style formula değerlendirir: =SUM(A1:A5), =AVERAGE(B1:B10), =COUNT/MAX/MIN(...) |
| Serializer | ToCsv(html, opts?) |
RFC 4180 uyumlu CSV |
| Serializer | ToMarkdown(html) |
GitHub Flavored Markdown tablo |
| Serializer | ToTsv(html) |
Tab-separated values |
| Aggregator | ComputeColumnAggregates(html, cols, fn) |
Sütun bazında SUM/AVG/COUNT/MAX/MIN |
Kurulum
builder.Services.AddStylus();
builder.Services.AddStylusPremium(license: builder.Configuration["Stylus:LicenseKey"]);
builder.Services.AddStylusTables(opts =>
{
opts.MaxRangeCells = 100_000; // DOS guard default
opts.MaxParseDepth = 32; // nested function bombing guard
opts.EvaluationTimeoutMs = 1000; // runaway formula guard
});
Formula Evaluator kullanımı
public class ReportController(IStylusTableFormulaEvaluator eval) : ControllerBase
{
[HttpPost("/api/report/sum")]
public IActionResult Sum([FromBody] SumRequest req)
{
var table = AngleSharpTableData.Parse(req.TableHtml);
var result = eval.Evaluate(req.Formula, table);
return result.Success
? Ok(new { value = result.Value })
: BadRequest(new { error = result.ErrorMessage, position = result.ErrorPosition });
}
}
Serializer kullanımı
public class ExportController(IStylusTableSerializer serializer) : ControllerBase
{
[HttpPost("/api/export/csv")]
public IActionResult Csv([FromBody] ExportRequest req)
{
var csv = serializer.ToCsv(req.TableHtml, new CsvOptions
{
Delimiter = ';',
Culture = new CultureInfo("tr-TR"), // Excel TR uyumu
IncludeHeader = true,
});
return File(Encoding.UTF8.GetBytes(csv), "text/csv", "rapor.csv");
}
}
Aggregator kullanımı
var stats = aggregator.ComputeColumnAggregates(
tableHtml,
columnIndices: new[] { 1, 2, 3 }, // 0-tabanlı sütun index'leri
function: AggregateFunction.Sum);
foreach (var col in stats.Columns)
Console.WriteLine($"Sütun {col.ColumnIndex}: {col.Value} ({col.SampleCount} hücre)");
Locale uyarısı (önemli)
Hücre değerleri için InvariantCulture format (1234.56) önerilir. tr-TR formatı (1.234,56) tolerant parse edilir. Belirsiz string'ler InvariantCulture lehine yorumlanır:
| Hücre değeri | Yorumu | Sebep |
|---|---|---|
1234.56 |
1234.56 |
InvariantCulture standart |
1,234.56 |
1234.56 |
InvariantCulture binlik virgül |
1.234,56 |
1234.56 |
tr-TR fallback (InvariantCulture fail) |
1.234 |
1.234 |
InvariantCulture lehine (ondalık) — 1234 tr-TR yorumuna gitmez |
1234,56 |
1234.56 |
tr-TR fallback |
abc |
null |
Parse edilemedi |
docs/tr/premium-tables.md'de detaylı belgelendirme var.
DOS Guard'lar
| Limit | Default | Ne korur |
|---|---|---|
MaxRangeCells |
100.000 | =SUM(A1:A1000000) reddedilir |
MaxParseDepth |
32 | Nested formula bombing |
EvaluationTimeoutMs |
1000 | Runaway loop |
Sınırlamalar (alpha)
- 5 fonksiyon (SUM/AVERAGE/COUNT/MAX/MIN); IF/AND/OR/VLOOKUP Faz 5
- Excel-style cell ref
A-Z(26 sütun); çok-harfli (AA,AB...) Faz 5 - 1-tabanlı satır numarası (Excel ile uyum)
- Frontend formula bar UI yok (Sub-faz Faz 5 başında)
- Cell type validation (text/number/date) yok —
nulldönerse hücre atılır, SampleCount düşer - XLSX export yok (Faz 5 yan paket:
Stylus.Premium.Tables.Xlsx) - Async API yok (Faz 5
EvaluateAsyncadditive)
İlgili kaynaklar
- ADR-012:
decisions/ADR-012-table-formula-engine.md - Research:
research/dotnet-formula-evaluators.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- AngleSharp (>= 0.17.1)
- Guler.Editor.Core (>= 0.2.0-alpha.0)
- Guler.Editor.Licensing (>= 0.2.0-alpha.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.0-alpha.0 | 82 | 5/1/2026 |