diff --git a/cells/arabic/net/converting-excel-files-to-other-formats/_index.md b/cells/arabic/net/converting-excel-files-to-other-formats/_index.md index 20ba1664bb..3bf7285373 100644 --- a/cells/arabic/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/arabic/net/converting-excel-files-to-other-formats/_index.md @@ -66,6 +66,10 @@ الوصف: تعرف على كيفية تتبع تقدم تحويل المستندات برمجيًا باستخدام Aspose.Cells لـ .NET في هذا البرنامج التعليمي المفصل. ### [تتبع تقدم تحويل المستندات لـ TIFF برمجيًا في .NET](./tracking-document-conversion-progress-for-tiff/) تعلم كيفية تتبع تقدم تحويل TIFF برمجيًا باستخدام Aspose.Cells لـ .NET من خلال دليلنا المفصل. حسّن مهاراتك في إدارة المستندات. +### [تحديد منطقة الطباعة في Excel وتصديرها إلى PowerPoint – دليل خطوة بخطوة](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +تعلم كيفية تحديد منطقة الطباعة في ملف Excel وتصديره إلى عرض PowerPoint باستخدام Aspose.Cells for .NET خطوة بخطوة. +### [تصدير Excel إلى PowerPoint – دليل C# كامل](./export-excel-to-powerpoint-complete-c-guide/) +دليل شامل يوضح كيفية تصدير ملفات Excel إلى عروض PowerPoint باستخدام C# و Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/arabic/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..9141c46b44 --- /dev/null +++ b/cells/arabic/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: تعلم كيفية تصدير Excel إلى PowerPoint، وتحديد منطقة الطباعة في Excel، + وحفظ Excel كملف PPTX مع مخططات قابلة للتعديل وكائنات OLE في بضع خطوات فقط. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: ar +og_description: تصدير Excel إلى PowerPoint بسرعة. يوضح هذا البرنامج التعليمي كيفية + تحديد منطقة الطباعة في Excel وحفظ Excel كملف PPTX مع مخططات قابلة للتحرير وكائنات + OLE. +og_title: تصدير إكسل إلى باوربوينت – دليل C# الكامل +tags: +- Aspose.Cells +- C# +- Office Automation +title: تصدير إكسل إلى باوربوينت – دليل C# الكامل +url: /ar/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تصدير Excel إلى PowerPoint – دليل C# كامل + +هل تحتاج إلى **تصدير Excel إلى PowerPoint**؟ أنت في المكان الصحيح. سواء كنت تُعد عرض مبيعات أسبوعي أو تُؤتمت خط أنابيب تقارير، فإن تحويل ورقة عمل Excel إلى مجموعة شرائح PowerPoint يمكن أن يوفر لك ساعات من النسخ واللصق اليدوي. + +في هذا الدرس سنستعرض مثالًا عمليًا لا يقتصر فقط على **export excel to powerpoint**، بل يوضح لك أيضًا كيفية **set print area Excel** و **save excel as pptx** بحيث تبقى المخططات وكائنات OLE قابلة للتحرير بالكامل في الشرائح الناتجة. في النهاية ستحصل على برنامج C# جاهز للتنفيذ ينتج ملف `.pptx` احترافي دون أي تعديل يدوي. + +## ما الذي ستحتاجه + +- **.NET 6+** (أي بيئة تشغيل .NET حديثة؛ الكود يستخدم صsyntax C# 10) +- **Aspose.Cells for .NET** – المكتبة التي تُجري عملية التصدير. يمكنك الحصول عليها من NuGet (`Install-Package Aspose.Cells`). +- مصنف Excel يحتوي على مخطط واحد على الأقل و/أو كائن OLE (يُستخدم ملف العينة `ChartAndOle.xlsx` في الكود). +- بيئة تطوير مفضلة (Visual Studio، Rider، أو VS Code – ما تفضله). + +هذا كل شيء. لا حاجة لتقنية COM interop، ولا يتطلب تثبيت Office. + +> **لماذا نستخدم مكتبة؟** +> تقنية Office Interop المدمجة هشة، وتحتاج إلى Office على الخادم، وغالبًا ما تُنتج صورًا نقطية عندما تحتاج إلى أشكال قابلة للتحرير ومُعتمدة على المتجهات. Aspose.Cells تتولى الجزء الثقيل وتبقي كل شيء قابلًا للتحرير في PowerPoint. + +--- + +## الخطوة 1: تحميل مصنف Excel + +أولًا نقوم بتحميل الملف المصدر إلى الذاكرة. فئة `Workbook` تمثل ملف Excel بالكامل، وتمنحنا الوصول إلى الأوراق، المخططات، وكائنات OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**لماذا هذا مهم:** تحميل المصنف هو الأساس. إذا كان المسار غير صحيح أو الملف تالفًا، فإن بقية العملية لن تعمل. كتلة `try…catch` تُظهر لك رسالة خطأ ودية بدلاً من تعطل البرنامج. + +--- + +## الخطوة 2: تعيين منطقة الطباعة في Excel + +قبل التصدير، عادةً ما ترغب في حصر المخرجات على نطاق معين. هنا يأتي دور **set print area excel**. بتحديد منطقة الطباعة، تخبر Aspose.Cells بالخللايا (والكائنات المرتبطة) التي يجب أن تظهر على الشريحة. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **نصيحة احترافية:** إذا كان لديك عدة أوراق عمل، كرّر تعيين `PrintArea` لكل ورقة تخطط لتصديرها. ترك منطقة الطباعة غير مُحددة سيؤدي إلى تصدير الورقة بأكملها، مما قد يثقل ملف PowerPoint. + +--- + +## الخطوة 3: تكوين خيارات التصدير – الحفاظ على المخططات وOLE قابلة للتحرير + +توفر Aspose.Cells كائنًا غنيًا يُدعى `ImageOrPrintOptions`. من خلال تفعيل `ExportChartObjects` و `ExportOleObjects` نحافظ على طبيعة المخططات المتجهية وقابلية تحرير كائنات OLE (مثل مستندات Word أو PDF المدمجة). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**ماذا يحدث خلف الكواليس؟** +عند ضبط `ExportChartObjects` على `true`، تقوم Aspose بتحويل المخطط إلى شكل مخطط PowerPoint أصلي، مع الحفاظ على السلاسل والمحاور والتنسيق. وعند تفعيل `ExportOleObjects` تُدرج الكائنات المدمجة كإطارات OLE، بحيث يمكن النقر المزدوج عليها في PowerPoint لفتح التطبيق الأصلي (Word، Excel، إلخ) للتحرير. + +--- + +## الخطوة 4: حفظ الورقة كملف PowerPoint قابل للتحرير + +الآن نجمع كل شيء معًا. طريقة `Save` تكتب ملف `.pptx` باستخدام الخيارات التي ضبطناها. النتيجة هي مجموعة شرائح حيث تتحول كل ورقة عمل إلى شريحة (أو سلسلة شرائح إذا امتدت منطقة الطباعة على عدة صفحات). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### النتيجة المتوقعة + +- **موقع الملف:** `C:\MyProjects\EditableChartOle.pptx` +- **المحتوى:** + - شريحة تُظهر النطاق `A1:H30` تمامًا كما هو في Excel. + - جميع المخططات هي كائنات مخطط PowerPoint — انقر على عمود لتعديل البيانات. + - كائنات OLE (مثل مستند Word مدمج) يمكن فتحها وتحريرها مباشرة من الشريحة. + +إذا فتحت ملف PPTX في PowerPoint، يجب أن ترى شريحة نظيفة بمكونات قابلة للتحرير بالكامل—بدون لقطات شاشة نقطية. + +--- + +## الحالات الخاصة والبدائل + +### أوراق عمل متعددة → شرائح متعددة +إذا أردت أن تتحول كل ورقة عمل إلى شريحة خاصة بها، ببساطة قم بالتكرار عبر `workbook.Worksheets` واستدعِ `Save` مع `SheetToImageOptions` تستهدف فهرس ورقة محدد. ستُنشئ Aspose شريحة جديدة تلقائيًا لكل تكرار. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### نطاقات كبيرة والأداء +تصدير منطقة طباعة ضخمة (مثل `A1:Z1000`) قد يزيد من استهلاك الذاكرة. لتخفيف ذلك، ضع في اعتبارك: +- تقسيم النطاق إلى أجزاء أصغر وتصدير كل جزء كشريحة منفصلة. +- استخدام `WorkbookSettings` لزيادة `MemorySetting` إذا واجهت `OutOfMemoryException`. + +### قضايا التوافق +ملف PPTX المُولد يعمل مع PowerPoint 2016 والإصدارات الأحدث. قد تفتح الإصدارات القديمة الملف ولكن قد تفقد بعض ميزات المخطط المتقدمة. اختبر دائمًا على نسخة Office المستهدفة إذا كنت ستوزع العرض على نطاق واسع. + +--- + +## مثال كامل جاهز للتنفيذ (انسخه‑الصقه) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **نصيحة:** استبدل المسارات الصلبة بقيم من ملف إعدادات أو وسائط سطر الأوامر للحصول على أداة أكثر مرونة. + +--- + +## الأسئلة المتكررة + +**س: هل يمكنني تصدير مخطط فقط دون الخلايا المحيطة؟** +ج: نعم. استخدم `ExportChartObjects` وحده وحدد منطقة الطباعة لتغطي نطاق المخطط فقط. سيظهر المخطط في وسط الشريحة. + +**س: ماذا لو كان المصنف يحتوي على ماكرو؟** +ج: Aspose.Cells يتجاهل ماكرو VBA أثناء التصدير. إذا كنت بحاجة إلى وظائف ماكرو في PowerPoint، سيتعين عليك إعادة إنشائها باستخدام VBA الخاص بـ PowerPoint أو الإضافات. + +**س: هل يعمل هذا على Linux/macOS؟** +ج: بالتأكيد. Aspose.Cells مكتبة .NET صافية؛ طالما لديك بيئة تشغيل .NET، يعمل الكود عبر الأنظمة. + +--- + +## الخلاصة + +لقد تعلمت الآن كيفية **export Excel to PowerPoint** مع ضبط **set print area excel** و **save excel as pptx** مع مخططات وكائنات OLE قابلة للتحرير بالكامل. الخطوات الأساسية هي تحميل المصنف، تعريف منطقة الطباعة، تكوين `ImageOrPrintOptions`، وأخيرًا حفظ ملف PPTX. + +من هنا يمكنك استكشاف: +- تصدير أوراق عمل متعددة إلى مجموعة شرائح واحدة. +- إضافة عناوين شرائح أو ملاحظات مخصصة برمجيًا. +- تحويل PPTX إلى PDF للتوزيع (استخدم `SaveFormat.Pdf`). + +جرّب الكود، عدّل منطقة الطباعة، وشاهد بيانات Excel تتحول سحريًا إلى PowerPoint—دون الحاجة إلى نسخ‑لصق يدوي. إذا واجهت أي صعوبات، راجع وثائق Aspose.Cells أو اترك تعليقًا أدناه. برمجة سعيدة! + +![مخطط يوضح سير عمل تصدير excel إلى powerpoint](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/arabic/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..fbf6a2c445 --- /dev/null +++ b/cells/arabic/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-22 +description: تحديد منطقة الطباعة في إكسل وتحويل إكسل إلى باوربوينت بأشكال قابلة للتعديل. + تعلم كيفية تكرار صف العنوان، إنشاء باوربوينت من إكسل وتصدير إكسل إلى ملف pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: ar +og_description: حدد منطقة الطباعة في Excel وحوّلها إلى شريحة PowerPoint بأشكال قابلة + للتحرير. اتبع هذا الدليل الكامل لتكرار صف العنوان وتصدير Excel إلى pptx. +og_title: تحديد منطقة الطباعة في إكسل – دليل تصدير إلى باوربوينت +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: تحديد منطقة الطباعة في إكسل وتصديرها إلى باوربوينت – دليل خطوة بخطوة +url: /ar/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تعيين منطقة الطباعة في Excel وتصديرها إلى PowerPoint – دليل برمجة كامل + +هل احتجت يومًا إلى **set print area** في ورقة عمل Excel ثم تحويل تلك القطعة إلى شريحة PowerPoint؟ لست وحدك. في العديد من خطوط تقارير البيانات، نفس البيانات التي تُطبع بشكل جيد تحتاج أيضًا إلى الظهور في عرض تقديمي، غالبًا مع تكرار الصف الأول كعنوان. الخبر السار؟ ببضع أسطر من C# يمكنك **convert excel to powerpoint**، الحفاظ على قابلية تحرير جميع مربعات النص، وحتى **repeat title row** تلقائيًا. + +في هذا الدليل سنستعرض كل ما تحتاج معرفته: من تكوين منطقة الطباعة إلى إنشاء ملف PPTX يمكنك تحريره مباشرة في PowerPoint. في النهاية ستتمكن من **create powerpoint from excel**، تصدير النتيجة كـ **export excel to pptx**، وإعادة استخدام نفس الكود في أي مشروع .NET. لا سحر، فقط خطوات واضحة ومثال كامل قابل للتنفيذ. + +## ما ستحتاجه + +- **.NET 6.0** أو أحدث (واجهة برمجة التطبيقات تعمل مع .NET Framework أيضًا) +- **Aspose.Cells for .NET** (المكتبة التي توفر `Workbook`، `ImageOrPrintOptions`، إلخ) +- بيئة تطوير C# أساسية (Visual Studio، Rider، أو VS Code مع امتداد C#) +- ملف Excel (`input.xlsx`) يحتوي على البيانات التي تريد تصديرها + +هذا كل شيء—لا توجد حزم NuGet إضافية بخلاف Aspose.Cells. إذا لم تقم بإضافة المكتبة بعد، نفّذ: + +```bash +dotnet add package Aspose.Cells +``` + +الآن نحن جاهزون للبدء. + +## الخطوة 1: تحميل الـ Workbook – نقطة البداية للتصدير + +أول شيء عليك القيام به هو تحميل الـ workbook الذي يحتوي على الورقة التي تريد تحويلها إلى شريحة. فكر في الـ workbook كمستند المصدر؛ بدونها لا شيء آخر يهم. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**لماذا هذا مهم:** تحميل الـ workbook يمنحك الوصول إلى مجموعة الأوراق، خيارات إعداد الصفحة، ومحرك التصدير. إذا تخطيت هذه الخطوة لن تتمكن من تعيين **print area** أو تكرار أي صفوف. + +> **نصيحة احترافية:** استخدم مسارًا مطلقًا أثناء الاختبار، ثم انتقل إلى مسار نسبي أو مسار يعتمد على الإعدادات للإنتاج. + +## الخطوة 2: تكوين خيارات التصدير – الحفاظ على قابلية تحرير مربعات النص والأشكال + +عند تصديرك إلى PowerPoint ربما تريد أن تكون الشريحة الناتجة قابلة للتحرير. يتيح لك Aspose.Cells التحكم في ذلك باستخدام `ImageOrPrintOptions`. ضبط `ExportTextBoxes` و `ExportShapeObjects` إلى `true` يخبر المكتبة بالحفاظ على تلك الكائنات كعناصر PowerPoint أصلية بدلاً من تحويلها إلى صورة. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**لماذا هذا مهم:** إذا احتجت يومًا إلى **convert excel to powerpoint** ثم تعديل الشريحة يدويًا، فإن هذا الإعداد يوفر عليك إعادة إنشاء مربعات النص من الصفر. كما يضمن بقاء أي أشكال (مثل الأسهم أو المخططات) ككائنات متجهة يمكنك تغيير حجمها. + +## الخطوة 3: تعيين منطقة الطباعة وتكرار صف العنوان + +الآن نصل إلى جوهر الدرس: **set print area** وجعل الصف الأول يتكرر في كل صفحة مطبوعة (أو، في حالتنا، في الشريحة المصدرة). منطقة الطباعة تخبر Excel أي خلايا يجب اعتبارها للطباعة—أو التصدير في سيناريونا. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**لماذا هذا مهم:** بتحديد التصدير إلى `A1:G20` تتجنب سحب نطاقات فارغة ضخمة، مما يسرّع التحويل ويحافظ على نظافة الشريحة. سطر `PrintTitleRows` يجعل الصف الأول يعمل كعنوان—بالضبط ما تحتاجه عندما **repeat title row** في عرض تقديمي. + +> **حالة خاصة:** إذا بدأت بياناتك من الصف 2، عدّل النطاق وفقًا لذلك (مثال: `PrintTitleRows = "$2:$2"`). + +## الخطوة 4: حفظ الورقة كملف PowerPoint + +أخيرًا، نكتب الشريحة إلى القرص. طريقة `Save` تأخذ اسم الملف الهدف والخيارات التي قمنا بتكوينها سابقًا. النتيجة هي ملف PPTX يحتوي على مربعات نص وأشكال قابلة للتحرير، جاهز للفتح في PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**ما ستراه:** افتح `SheetWithEditableShapes.pptx` في PowerPoint. يظهر الصف الأول كعنوان، جميع الخلايا من `A1:G20` تُعرض، وأي أشكال أضفتها في Excel لا تزال قابلة للتحريك والتحرير. لا صور نقطية—فقط كائنات PowerPoint أصلية. + +## مثال عملي كامل – جميع الخطوات مجتمعة + +فيما يلي البرنامج الكامل، جاهز للنسخ واللصق. شغّله كتطبيق كونسول أو دمجه في أي حل أكبر. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**المخرجات المتوقعة:** بعد تشغيل البرنامج، يطبع الكونسول رسالة النجاح، ويظهر ملف PPTX في الموقع المحدد. فتح الملف يظهر شريحة واحدة بالنطاق المحدد، مربعات نص قابلة للتحرير، وأي أشكال أصلية. + +## أسئلة شائعة ومشكلات محتملة + +| السؤال | الجواب | +|----------|--------| +| **هل يعمل هذا مع عدة أوراق عمل؟** | نعم. قم بالتكرار عبر `workbook.Worksheets` وكرر نفس الخطوات لكل ورقة، مع تغيير اسم ملف الإخراج في كل مرة. | +| **ماذا لو احتجت لتصدير أكثر من شريحة واحدة؟** | استدعِ `workbook.Save` عدة مرات مع كائنات `ImageOrPrintOptions` مختلفة، كل واحدة مكوّنة بإعداد `PageSetup` مختلف إذا لزم الأمر. | +| **هل يمكنني تغيير حجم الشريحة؟** | استخدم `exportOptions.ImageFormat` لتحديد DPI، أو عدّل `sheet.PageSetup.PaperSize` قبل الحفظ. | +| **هل Aspose.Cells مجاني؟** | يوفر نسخة تجريبية مجانية مع علامات مائية. للإنتاج، يلزم الحصول على ترخيص. | +| **ماذا عن صيغ Excel؟** | القيم المصدرة هي **النتائج المحسوبة** في وقت التصدير. إذا كنت بحاجة إلى صيغ حية في PowerPoint، فستحتاج إلى نهج مختلف. | + +## نصائح لسير العمل بسلاسة + +- **نصيحة احترافية:** اضبط `Workbook.Settings.CalcMode = CalculationModeType.Automatic` قبل التصدير لضمان تحديث جميع الصيغ. +- **احذر من:** النطاقات الكبيرة جدًا قد تسبب ضغطًا على الذاكرة. قلل منطقة الطباعة إلى أصغر نطاق ضروري. +- **نصيحة أداء:** أعد استخدام نسخة واحدة من `ImageOrPrintOptions` إذا كنت تصدر عدة أوراق؛ إنشاء نسخة جديدة في كل مرة يضيف عبئًا. +- **ملاحظة الإصدار:** الكود أعلاه يستهدف Aspose.Cells 23.10 (الصادر في نوفمبر 2023). الإصدارات اللاحقة تحتفظ بنفس الـ API، لكن تحقق دائمًا من ملاحظات الإصدار لأي تغييرات كسرية. + +## الخلاصة + +لقد غطينا كيفية **set print area** في ورقة عمل Excel، تكرار الصف الأول كعنوان، ثم **export excel to pptx** مع الحفاظ على مربعات النص والأشكال القابلة للتحرير. باختصار، الآن تعرف طريقة موثوقة لـ **convert excel to powerpoint**، **repeat title row**، و **create powerpoint from excel** ببضع أسطر من C#. + +هل أنت مستعد للخطوة التالية؟ جرّب أتمتة تحويل دفعي لعشرات التقارير، أو أضف تخطيطات شرائح مخصصة باستخدام PowerPoint SDK بعد التصدير. السماء هي الحد—جرب، واختبر، واستمتع بقوة توليد المستندات برمجيًا. + +إذا وجدت هذا الدرس مفيدًا، شاركه، اترك تعليقًا بتعديلاتك الخاصة، أو استكشف أدلتنا الأخرى حول **export excel to pptx** ومواضيع الأتمتة ذات الصلة. برمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/csv-file-handling/_index.md b/cells/arabic/net/csv-file-handling/_index.md index dca029c530..f42c49f694 100644 --- a/cells/arabic/net/csv-file-handling/_index.md +++ b/cells/arabic/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ تعرّف على كيفية فتح ملفات CSV باستخدام Aspose.Cells لـ .NET من خلال دليلنا الشامل خطوة بخطوة. إتقان معالجة البيانات. ### [فتح ملفات CSV باستخدام المحلل المفضل](./csv-file-opening-csv-files-with-preferred-parser/) تعلّم كيفية فتح ملفات CSV وتحليلها باستخدام مُحللات مخصصة في Aspose.Cells لـ .NET. تعامل مع النصوص والتواريخ بسهولة. مثالي للمطورين. +### [حفظ المصنف كملف CSV في C# – تصدير Excel إلى CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +تعلم كيفية حفظ ملف Excel كملف CSV باستخدام Aspose.Cells في C# بسهولة وفعالية. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/arabic/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..d479973d52 --- /dev/null +++ b/cells/arabic/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: احفظ المصنف كملف CSV في C# بسرعة. تعلم كيفية تصدير Excel إلى CSV، وضبط + الدقة، وتحويل xlsx إلى CSV باستخدام Aspose.Cells في بضع أسطر فقط. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: ar +og_description: احفظ المصنف كملف CSV في C# بسرعة. يوضح هذا الدليل كيفية تصدير Excel + إلى CSV، ضبط الدقة، وتحويل xlsx إلى CSV باستخدام Aspose.Cells. +og_title: حفظ المصنف كملف CSV في C# – تصدير إكسل إلى CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: حفظ المصنف كملف CSV في C# – تصدير Excel إلى CSV +url: /ar/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ دفتر العمل كملف CSV في C# – تصدير Excel إلى CSV + +هل احتجت يوماً إلى **حفظ دفتر العمل كملف CSV** لكن لم تكن متأكدًا من كيفية الحفاظ على الأرقام مرتبة؟ لست وحدك. في العديد من سيناريوهات خطوط البيانات علينا **تصدير Excel إلى CSV** مع الحفاظ على عدد محدد من الأرقام ذات الدلالة، ومكتبة Aspose.Cells تجعل ذلك سهلًا للغاية. + +في هذا الدرس ستشاهد مثالًا كاملًا جاهزًا للتنفيذ **يحفظ دفتر العمل كملف CSV**، يوضح *كيفية ضبط الدقة*، وحتى يشرح *كيفية تحويل xlsx إلى CSV* لمشاريع العالم الحقيقي. لا مراجع غامضة—فقط كود يمكنك نسخه، لصقه، وتشغيله اليوم. + +## ما ستتعلمه + +- الخطوات الدقيقة **لحفظ دفتر العمل كملف CSV** مع إعداد دقة مخصص. +- كيفية **تصدير Excel إلى CSV** باستخدام `CsvSaveOptions` ولماذا خاصية `SignificantDigits` مهمة. +- تنويعات لاحتياجات دقة مختلفة ومخاطر شائعة عند التعامل مع أرقام كبيرة. +- نظرة سريعة على تحويل ملف `.xlsx` إلى `.csv` دون فقدان سلامة البيانات. + +### المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا على .NET Framework 4.6+). +- حزمة **Aspose.Cells for .NET** من NuGet (`Install-Package Aspose.Cells`). +- فهم أساسي للغة C# وإجراءات الإدخال/الإخراج للملفات. + +إذا كان لديك هذه المتطلبات، فلنبدأ. + +![save workbook as csv example](image.png "save workbook as csv example") + +## حفظ دفتر العمل كملف CSV – دليل خطوة بخطوة + +فيما يلي البرنامج الكامل. كل سطر مُعلق حتى تتمكن من معرفة *لماذا* يوجد كل جزء، وليس فقط *ماذا* يفعل. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### لماذا نستخدم `CsvSaveOptions.SignificantDigits`؟ + +عند **كيفية ضبط الدقة** لتصدير CSV، أنت في الواقع تقرر عدد الأرقام ذات الدلالة التي تبقى بعد التحويل. Excel يخزن الأرقام بدقة تصل إلى 15 رقمًا، لكن معظم الأنظمة اللاحقة (قواعد البيانات، خطوط التحليل) تحتاج فقط إلى القليل. بتعيين `SignificantDigits = 4`، تقوم المكتبة بتقريب `123.456789` إلى `123.5`، مما يجعل الملف مضغوطًا وسهل القراءة. + +> **نصيحة احترافية:** إذا كنت بحاجة إلى قيم *مطلقة* (مثل البيانات المالية)، اضبط `SignificantDigits` إلى رقم أعلى أو احذفها تمامًا. القيمة الافتراضية هي 15، وهي تعكس الدقة الداخلية لـ Excel. + +## تصدير Excel إلى CSV – تنويعات شائعة + +### تغيير الفاصل + +بعض الأنظمة تتوقع فاصلة منقوطة (`;`) بدلاً من الفاصلة العادية. يمكنك تعديل ذلك كالتالي: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### تصدير ورقة عمل محددة + +إذا كنت تريد فقط تصدير الورقة الثانية، استبدل الكتلة الاختيارية بـ: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +ثم استدعِ `workbook.Save` كما كان من قبل. هذه التقنية مفيدة عندما **تحول xlsx إلى csv** لكنك تهتم بجدول معين فقط. + +### التعامل مع مجموعات بيانات ضخمة + +عند التعامل مع ملايين الصفوف، فكر في تدفق CSV بدلاً من تحميل دفتر العمل بالكامل في الذاكرة. تقدم Aspose.Cells خاصية `CsvSaveOptions` تسمى `ExportDataOnly` التي تتخطى معلومات النمط، مما يقلل من استهلاك الذاكرة: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## كيفية تصدير CSV – التحقق من النتيجة + +بعد تشغيل البرنامج، افتح `Numbers_4sd.csv` في محرر نصوص عادي. يجب أن ترى شيئًا مثل: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +لاحظ أن الأرقام محدودة إلى أربعة أرقام ذات دلالة، تمامًا كما طلبنا. إذا فتحت الملف في Excel، ستظهر القيم متطابقة لأن Excel يحترم التقريب الذي تم تطبيقه أثناء التصدير. + +## الحالات الخاصة & استكشاف الأخطاء + +| الحالة | ما الذي يجب فحصه | الحل | +|-----------|---------------|-----| +| **الملف غير موجود** | تأكد من أن `sourcePath` يشير إلى ملف `.xlsx` فعلي. | استخدم `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **تقريب غير صحيح** | تأكد من ضبط `SignificantDigits` قبل استدعاء `Save`. | انقل تعيين `CsvSaveOptions` إلى مكان أبكر أو تحقق من القيمة مرة أخرى. | +| **ظهور أحرف خاصة كـ �** | الترميز الافتراضي للـ CSV هو UTF‑8 بدون BOM. | اضبط `csvOptions.Encoding = System.Text.Encoding.UTF8` أو `Encoding.Unicode`. | +| **وجود أعمدة فارغة إضافية** | بعض أوراق العمل تحتوي على تنسيق متبقٍ خارج النطاق المستخدم. | استدعِ `worksheet.Cells.MaxDisplayRange` لقص الأعمدة غير المستخدمة قبل التصدير. | + +## كيفية ضبط الدقة ديناميكيًا + +أحيانًا لا تكون الدقة المطلوبة معروفة وقت التجميع. يمكنك قراءتها من ملف إعدادات أو من وسيط سطر الأوامر: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +الآن يمكنك تشغيل: + +``` +dotnet run -- 6 +``` + +والحصول على CSV بستة أرقام ذات دلالة. هذه اللمسة الصغيرة تجعل الحل مرنًا لـ **كيفية تصدير csv** في بيئات مختلفة. + +## ملخص المثال الكامل العامل + +بجمع كل ما سبق، البرنامج الكامل (مع التعديلات الاختيارية) يبدو هكذا: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +شغّل البرنامج، افتح ملف CSV الناتج، وسترى الدقة التي طلبتها، مما يؤكد أنك نجحت في **حفظ دفتر العمل كملف CSV**. + +## الخلاصة + +أصبح لديك الآن وصفة جاهزة للإنتاج **لحفظ دفتر العمل كملف CSV** في C#. يغطي الدليل *كيفية تصدير Excel إلى CSV*، ويظهر *كيفية ضبط الدقة* عبر `CsvSaveOptions.SignificantDigits`، ويستعرض عدة تنويعات لسيناريوهات **تحويل xlsx إلى csv**. مع مقتطف الكود الكامل، يمكنك إدراجه في أي مشروع .NET والبدء في تصدير البيانات فورًا. + +**ما الخطوة التالية؟** + +- جرّب فواصل مختلفة (`;`, `\t`) لتصدير TSV. +- اجمع هذه الطريقة مع مراقب ملفات لتوليد CSV تلقائيًا كلما تغير ملف Excel. +- استكشف `CsvLoadOptions` من Aspose.Cells إذا احتجت يومًا لقراءة CSV مرة أخرى إلى دفتر عمل. + +Feel free to tweak the precision, add custom headers, or hook the exporter + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/document-properties/_index.md b/cells/arabic/net/document-properties/_index.md index 5c88ce8592..cad400e6fa 100644 --- a/cells/arabic/net/document-properties/_index.md +++ b/cells/arabic/net/document-properties/_index.md @@ -35,6 +35,8 @@ تعرّف على كيفية الوصول إلى خصائص المستندات في Excel باستخدام Aspose.Cells لـ .NET من خلال دليلنا المفصل. أدر جداول بياناتك بكفاءة. ### [إضافة خصائص المستند في .NET](./adding-document-properties/) تعرف على كيفية إضافة خصائص المستند في Excel باستخدام Aspose.Cells for .NET باستخدام هذا الدليل التفصيلي خطوة بخطوة. +### [إنشاء مصنف Excel – إضافة خصائص مخصصة وحفظه بصيغة XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +تعلم كيفية إنشاء مصنف Excel وإضافة خصائص مخصصة ثم حفظه بصيغة XLSB باستخدام Aspose.Cells لـ .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/arabic/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..9c042eb190 --- /dev/null +++ b/cells/arabic/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: إنشاء مصنف Excel، إضافة خصائص مخصصة، تعيين اسم ورقة العمل، وحفظه كملف + ثنائي XLSB باستخدام C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: ar +og_description: إنشاء مصنف Excel، إضافة خصائص مخصصة، تعيين اسم ورقة العمل، وحفظه كملف + ثنائي XLSB باستخدام C#. +og_title: إنشاء مصنف إكسل – إضافة خصائص مخصصة وحفظه كملف XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: إنشاء مصنف إكسل – إضافة خصائص مخصصة وحفظه كملف XLSB +url: /ar/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مصنف Excel – إضافة خصائص مخصصة وحفظه كـ XLSB + +هل احتجت يومًا إلى **إنشاء مصنف Excel** برمجيًا مع الحفاظ على بعض البيانات الوصفية المرفقة؟ ربما تقوم ببناء محرك تقارير يضع معرف التقرير، اسم المؤلف، أو رقم الإصدار على كل ملف. في هذه الحالة، سيوفر لك تعلم كيفية **إضافة خصائص مخصصة** أثناء **تعيين اسم ورقة العمل** وأخيرًا **حفظه كـ XLSB** الكثير من المعالجة اليدوية بعد الإنشاء. + +في هذا الدرس سنستعرض مثالًا كاملاً وقابلًا للتنفيذ يوضح بالضبط كيفية **كتابة ملف Excel ثنائي** باستخدام C#. ستتعرف على سبب كون صيغة XLSB الخيار المناسب لنقل الخصائص المخصصة، وكيفية تجنب أكثر الأخطاء شيوعًا، وما يجب فعله إذا كنت بحاجة لدعم إصدارات Excel أقدم. + +--- + +## ما ستحتاجه + +- **.NET 6+** (أو .NET Framework 4.6+). يعمل الكود على أي بيئة تشغيل حديثة. +- **Aspose.Cells for .NET** (نسخة تجريبية مجانية أو مرخصة). توفر الفئات `Workbook`، `Worksheet`، و `CustomProperties` المستخدمة أدناه. +- بيئة تطوير مريحة لك – Visual Studio، Rider، أو حتى VS Code تكفي. +- صلاحية كتابة إلى مجلد سيتم حفظ الملف المُولَّد فيه. + +لا توجد مكتبات طرف ثالث أخرى مطلوبة. + +--- + +## الخطوة 1: تثبيت Aspose.Cells + +للبدء، أضف حزمة NuGet الخاصة بـ Aspose.Cells إلى مشروعك: + +```bash +dotnet add package Aspose.Cells +``` + +> **نصيحة احترافية:** إذا كنت تعمل على خادم CI، احفظ مفتاح الترخيص في متغيّر بيئي وحمّله وقت التشغيل – هذا يمنع ظهور علامة “evaluation” على المخرجات. + +--- + +## الخطوة 2: إنشاء مصنف Excel – نظرة عامة + +الإجراء الحقيقي الأول هو **إنشاء مصنف Excel**. هذا الكائن يمثل الملف بالكامل في الذاكرة ويمنحك الوصول إلى أوراق العمل، الأنماط، والخصائص المخصصة. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +لماذا ننشئ `Workbook` جديدًا بدلاً من تحميل قالب؟ يضمن المصنف الفارغ عدم وجود أنماط مخفية أو خصائص مخصصة متبقية، وهو أمر مهم خاصةً عندما تنوي **كتابة ملف Excel ثنائي** لأنظمة لاحقة تتوقع بداية نظيفة. + +--- + +## الخطوة 3: تعيين اسم ورقة العمل (ولماذا يهم) + +تكون أسماء أوراق Excel افتراضيًا “Sheet1”، “Sheet2”، إلخ. إعطاء الورقة اسمًا ذا معنى يجعل المعالجة اللاحقة – مثل Power Query أو ماكرو VBA – أسهل كثيرًا للقراءة. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +إذا حاولت تعيين اسم مكرر، سيطرح Aspose.Cells استثناءً من نوع `ArgumentException`. لتجنب ذلك، يمكنك التحقق من وجود الاسم مسبقًا باستخدام `Worksheets.Exists("Data")` قبل إعادة التسمية. + +--- + +## الخطوة 4: إضافة خصائص مخصصة + +تُخزن الخصائص المخصصة في XML الداخلي للمصنف وتنتقل مع الملف بغض النظر عن الصيغة. إنها مثالية لتضمين معلومات مثل `ReportId` أو `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **لماذا نستخدم الخصائص المخصصة؟** +> • يمكن الوصول إليها عبر لوحة “File → Info → Properties” في Excel. +> • يمكن للشفرة التي تستهلك المصنف قراءتها دون الحاجة إلى فحص محتويات الخلايا. +> • تبقى موجودة بعد تحويل الصيغ (XLSX ↔ XLSB) لأنها جزء من بيانات التعريف للملف. + +يمكنك أيضًا تخزين تواريخ، قيم منطقية، أو حتى كتل ثنائية، لكن احرص على أن تكون الحمولة صغيرة – Excel ليس قاعدة بيانات. + +--- + +## الخطوة 5: حفظ كـ XLSB (كتابة ملف Excel ثنائي) + +صيغة XLSB تخزن البيانات في بنية ثنائية، مما يجعل الملف أصغر وأسرع في الفتح. والأهم في هذا الدرس، **تُدمج الخصائص المخصصة في التيار الثنائي**، مما يضمن انتقالها مع الملف. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### النتيجة المتوقعة + +بعد تشغيل البرنامج، ستجد الملف `WithCustomProps.xlsb` على سطح المكتب. افتحه في Excel، انتقل إلى **File → Info → Properties** وسترى `ReportId` و `GeneratedBy` مدرجة تحت *Custom*. + +--- + +## الخطوة 6: الحالات الخاصة والأسئلة الشائعة + +### ماذا لو كان المجلد المستهدف للكتابة للقراءة فقط؟ + +غلف استدعاء `Save` داخل كتلة `try/catch` واستخدم موقعًا يمكن للمستخدم الكتابة فيه، مثل `%TEMP%`. هذا يمنع تعطل التطبيق بسبب أخطاء الأذونات. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### هل يمكنني **حفظ كـ XLSX** مع الحفاظ على الخصائص المخصصة؟ + +نعم – فقط غيّر `SaveFormat.Xlsb` إلى `SaveFormat.Xlsx`. تُخزن الخصائص في نفس الجزء XML، لذا تبقى بعد تغيير الصيغة. ومع ذلك، تكون ملفات XLSX أكبر لأنها XML مضغوط، بينما XLSB يقدم أداءً أفضل لمجموعات البيانات الكبيرة. + +### كيف أقرأ الخصائص المخصصة لاحقًا؟ + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +تطبع هذه الشريحة كل خاصية مخصصة، مما يجعل من السهل على الخدمات اللاحقة التحقق من مصدر الملف. + +--- + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه‑ولصقه في مشروع وحدة تحكم جديد. لا توجد أجزاء مفقودة – كل شيء من عبارات `using` إلى `Console.WriteLine` النهائي مشمول. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +شغّل البرنامج، افتح الملف الناتج، وتأكد من وجود الخصائص المخصصة. هذه هي العملية الكاملة لـ **إنشاء مصنف Excel**، **إضافة خصائص مخصصة**، **تعيين اسم ورقة العمل**، و **حفظه كـ XLSB** في تدفق واحد منظم. + +--- + +## الخلاصة + +أنت الآن تعرف بالضبط كيف **تنشئ مصنف Excel**، تعطي ورقته اسمًا واضحًا عبر **set worksheet name**، تدمج بيانات وصفية مفيدة باستخدام **add custom properties**، وأخيرًا **تحفظه كـ XLSB** لتنتج ملف Excel ثنائي مضغوط. هذه العملية موثوقة، تعمل عبر إصدارات .NET المختلفة، وتتكيف بسهولة سواء كنت تولد تقريرًا واحدًا أو ألف تقرير. + +ما الخطوة التالية؟ جرّب إضافة جدول بيانات إلى ورقة “Data”، جرب أنواع خصائص مختلفة (تواريخ، قيم منطقية)، أو غيّر الإخراج إلى **save as xlsb** لمجموعات بيانات ضخمة. يمكنك أيضًا استكشاف حماية المصنف بكلمة مرور – Aspose.Cells يجعل ذلك سطرًا واحدًا فقط. + +لا تتردد في ترك تعليق إذا واجهت أي صعوبة، أو مشاركة كيف طوّرت هذا النمط في مشاريعك الخاصة. برمجة سعيدة! + +--- + +![Create Excel workbook screenshot](image.png){alt="إنشاء مصنف Excel مع خصائص مخصصة"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/excel-advanced-named-ranges/_index.md b/cells/arabic/net/excel-advanced-named-ranges/_index.md index 167650daa5..ca59c05db4 100644 --- a/cells/arabic/net/excel-advanced-named-ranges/_index.md +++ b/cells/arabic/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ قم بتحديد الخلايا بسهولة في نطاق مسمى في Excel باستخدام Aspose.Cells لـ .NET باستخدام هذا البرنامج التعليمي الشامل خطوة بخطوة. ### [دمج الخلايا في نطاق مسمى في Excel](./merge-cells-in-named-range/) تعرّف على كيفية دمج الخلايا في نطاق مُسمّى باستخدام Aspose.Cells لـ .NET في هذا البرنامج التعليمي المُفصّل. اكتشف كيفية تنسيق تقارير Excel وتنسيقها وأتمتتها. +### [إنشاء مصنف Excel – دليل خطوة بخطوة لإضافة الجداول وقواعد التسمية](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +تعلم كيفية إنشاء مصنف Excel وإضافة جداول وتطبيق قواعد التسمية باستخدام Aspose.Cells لـ .NET خطوة بخطوة. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/arabic/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..f3b198f21b --- /dev/null +++ b/cells/arabic/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: إنشاء مصنف إكسل يحتوي على جدول، وتعلم قواعد تسمية جداول إكسل، وتجنب خطأ + النطاق المسمى، وتعيين اسم جدول إكسل بشكل صحيح في C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: ar +og_description: إنشاء مصنف إكسل في C# وإتقان قواعد تسمية جداول إكسل. تعلّم كيفية إضافة + ورقة عمل جدول، تعيين اسم جدول إكسل، وإصلاح أخطاء النطاقات المسماة. +og_title: إنشاء مصنف إكسل – دليل كامل للجداول وتسمية C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: إنشاء مصنف إكسل – دليل خطوة بخطوة لإضافة الجداول وقواعد التسمية +url: /ar/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء دفتر عمل Excel – دليل C# الكامل للجداول والتسمية + +هل احتجت يوماً إلى **إنشاء دفتر عمل Excel** برمجياً وتساءلت لماذا يتصادم اسم جدولك فجأة مع نطاق مسمى؟ لست وحدك. في العديد من مشاريع الأتمتة، عندما تحاول إعطاء جدول معرفًا ودودًا، يطرح Excel *خطأ نطاق مسمى* يوقف العملية بأكملها. + +في هذا الدرس سنستعرض مثالًا قابلاً للتنفيذ بالكامل **ينشئ دفتر عمل Excel**، **يضيف جدولًا إلى ورقة عمل**، ويشرح **قواعد تسمية جداول Excel** التي تحميك من الوقوع في الأخطاء. بنهاية الدرس ستعرف بالضبط كيف **تضيف جدولًا إلى ورقة العمل**، **تحدد اسم جدول Excel**، وتتعامل بأناقة مع تعارض الأسماء المحتمل. + +> **نصيحة احترافية:** معظم الالتباس ينشأ من حقيقة أن Excel يعامل أسماء الجداول والنطاقات المسمية على مستوى دفتر العمل كمساحة أسماء واحدة. فهم هذه القاعدة مبكرًا يوفر لك ساعات من تصحيح الأخطاء. + +## ما الذي ستحتاجه + +- **Aspose.Cells for .NET** (أو أي مكتبة توفر فئات `Workbook`، `Worksheet`، `ListObject`). +- .NET 6+ أو .NET Framework 4.8 – الكود يعمل على كلا الإصدارين. +- فهم أساسي لصياغة C# – لا تحتاج إلى حيل متقدمة. + +إذا كان لديك هذه المتطلبات، لنبدأ. + +![لقطة شاشة لدفتر عمل Excel تم إنشاؤه حديثًا مع جدول اسمه SalesData](create_excel_workbook_example.png "create excel workbook example") + +## الخطوة 1: إنشاء دفتر عمل Excel والوصول إلى ورقة العمل الأولى + +أول ما تقوم به عند **إنشاء دفتر عمل Excel** هو إنشاء كائن `Workbook` والحصول على مرجع للورقة التي ستعمل عليها. في Aspose.Cells يبدأ دفتر العمل بورقة افتراضية تسمى “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +لماذا هذه الخطوة حاسمة؟ بدون كائن دفتر العمل لا شيء لتعلق الجدول به، ومرجع `Worksheet` يمنحك مساحة عمل حيث ستتم عملية **إضافة جدول إلى ورقة العمل**. + +## الخطوة 2: إضافة جدول (ListObject) يغطي نطاقًا محددًا + +بعد ذلك **نضيف جدولًا على مستوى ورقة العمل**. طريقة `ListObjects.Add` تتوقع سلسلة نطاق ومعامل منطقي يحدد ما إذا كان الصف الأول يحتوي على رؤوس. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +لاحظ السطر `salesTable.Name = "SalesData"`. هنا تبدأ **قواعد تسمية جداول Excel** في العمل: يجب أن يكون الاسم فريدًا عبر دفتر العمل بأكمله، وليس فقط داخل الورقة. ولا يمكن أن يحتوي على مسافات أو أحرف خاصة، ويجب أن يبدأ بحرف أو شرطة سفلية. + +## الخطوة 3: محاولة إنشاء نطاق مسمى على مستوى دفتر العمل بنفس المعرف + +الآن نستدرج **خطأ النطاق المسمى** عمدًا لنرى ما يحدث عندما يحدث تعارض في الاسم. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +إذا أزلت التعليق عن السطر، ستطرح Aspose.Cells استثناء `ArgumentException` يُفيد بأن الاسم موجود بالفعل. نص الخطأ يكون كالتالي: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +هذه الرسالة هي **خطأ النطاق المسمى** الذي أُشير إليه سابقًا. تُظهر لك أن **قواعد تسمية جداول Excel** تعالج أسماء الجداول والنطاقات المسمية كمساحة أسماء واحدة. + +## الخطوة 4: معالجة تعارض التسمية بأناقة + +في الكود الواقعي ستحتاج إلى التقاط هذا الاستثناء وإما إعادة تسمية الجدول أو اختيار اسم نطاق مختلف. إليك طريقة منظمة للقيام بذلك: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +من خلال تغليف الاستدعاء بـ `try/catch`، تتجنب تعطلًا حادًا وتقدم للمستخدم (أو للكود المستدعي) شرحًا واضحًا—بالضبط النوع من **قواعد تسمية جداول Excel** التي تمنع الأخطاء المستقبلية. + +## الخطوة 5: حفظ دفتر العمل والتحقق من النتيجة + +أخيرًا، احفظ الملف على القرص وافتحه في Excel لتتأكد من وجود الجدول وأي نطاقات مسمية. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +عند فتح *SalesReport.xlsx* ستلاحظ: + +- جدول يمتد من **A1:C5** اسمه **SalesData**. +- إذا احتفظت بالنطاق البديل، سيكون هناك نطاق مسمى على مستوى دفتر العمل **SalesData_Range** يشير إلى **D1**. + +لا توجد أعطال وقت التشغيل، وتم حل تعارض التسمية. + +## فهم قواعد تسمية جداول Excel بعمق + +لنستعرض لماذا توجد هذه القواعد: + +| القاعدة | ما تعنيه | مثال | +|------|----------------|---------| +| **فريدة عبر دفتر العمل** | لا يمكن لجدولين أو نطاقين مسمين مشاركة نفس المعرف. | `Table1` مقابل `Table1` → تعارض | +| **تبدأ بحرف أو شرطة سفلية** | لا يمكن أن يبدأ الاسم برقم. | `_Q1Sales` ✅، `1QSales` ❌ | +| **بدون مسافات أو أحرف خاصة** | استخدم CamelCase أو الشرطات السفلية. | `QuarterSales` ✅، `Quarter Sales` ❌ | +| **الطول ≤ 255 حرفًا** | يتحقق عمليًا دائمًا. | غير متوفر | + +الحفاظ على هذه القواعد أثناء **تحديد اسم جدول Excel** يزيل خطر ظهور *خطأ النطاق المسمى*. + +## الاختلافات الشائعة والحالات الحدية + +1. **إضافة جداول متعددة** – يجب أن يكون لكل جدول اسم فريد. +2. **إعادة تسمية جدول موجود** – استخدم `salesTable.Name = "NewName"` قبل إنشاء أي نطاقات مسمية متعارضة. +3. **استخدام نطاقات ديناميكية** – إذا احتجت نطاقًا يتوسع، استخدم مرجعًا منظمًا مثل `=SalesData[Amount]` بدلاً من عنوان ثابت. +4. **نطاقات مسمية عبر أوراق** – لا تزال جزءًا من نفس مساحة الأسماء، لذا جدول في Sheet1 يمنع نطاقًا بنفس الاسم في Sheet2. + +## نصائح احترافية لأتمتة Excel سلسة + +- **تحقق من الوجود قبل الإضافة**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **أنشئ أسماء آمنة برمجيًا**: أضف GUID أو عدادًا تزايديًا (`SalesData_{Guid.NewGuid()}`) عندما تكون غير متأكد. +- **استخدم `ListObject.ShowHeaders = true`** لجعل جداولك توثيقية ذاتيًا. +- **تحقق بعد الحفظ**: افتح الملف بمكتبة خفيفة (مثل EPPlus) لتتأكد من إنشاء الجدول بشكل صحيح. + +## ملخص ما تم تغطيته + +- كيفية **إنشاء دفتر عمل Excel** من الصفر باستخدام Aspose.Cells. +- **قواعد تسمية جداول Excel** الدقيقة التي تحكم معرفات الجداول والنطاقات المسمية. +- لماذا يظهر **خطأ النطاق المسمى** عند إعادة استخدام اسم. +- الطريقة الصحيحة لـ **إضافة جدول إلى ورقة العمل** و**تحديد اسم جدول Excel** دون تعارضات. +- نمط قوي لمعالجة تعارضات التسمية بأناقة. + +## ما التالي؟ + +الآن بعد أن أتقنت الأساسيات، يمكنك استكشاف: + +- **نمو الجدول الديناميكي** باستخدام `ListObject.Resize`. +- **تطبيق الأنماط** على الجداول (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **التصدير إلى CSV** مع الحفاظ على بنية الجداول. +- **التكامل مع Office Open XML** لتحكم أعمق في مكونات دفتر العمل. + +لا تتردد في التجربة—غيّر النطاق، أضف جداول أكثر، أو العب بأنماط تسمية مختلفة. كلما زادت تجاربك، تعمق فهمك لـ **قواعد تسمية جداول Excel**. + +--- + +*برمجة سعيدة، ولتظل دفاتر عملك خالية من التعارضات!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/excel-custom-number-date-formatting/_index.md b/cells/arabic/net/excel-custom-number-date-formatting/_index.md index 493c54d8e0..e3698111cb 100644 --- a/cells/arabic/net/excel-custom-number-date-formatting/_index.md +++ b/cells/arabic/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ تعرف على كيفية التحقق من قيم خلايا Excel مقابل تنسيقات الأرقام المخصصة باستخدام Aspose.Cells لـ .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. ### [تحديد حقول الصيغة عند استيراد البيانات إلى ورقة Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) تعرف على كيفية استيراد البيانات إلى جداول Excel باستخدام حقول الصيغة المحددة باستخدام Aspose.Cells لـ .NET في هذا البرنامج التعليمي المفصل. +### [دليل شامل لتنسيق الأرقام المخصص في Excel باستخدام C#](./custom-number-format-excel-in-c-complete-guide/) +تعرف على كيفية تطبيق تنسيقات أرقام مخصصة في Excel باستخدام C# مع Aspose.Cells في هذا الدليل الشامل. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/arabic/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..440b3d816a --- /dev/null +++ b/cells/arabic/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,295 @@ +--- +category: general +date: 2026-03-22 +description: دروس تنسيق الأرقام المخصص في إكسل توضح كيفية استيراد جدول البيانات إلى + إكسل، وتعيين لون خلفية العمود، وتنسيق العمود كعملة، وحفظ المصنف بصيغة xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: ar +og_description: دليل Excel لتنسيق الأرقام المخصص يشرح لك خطوة بخطوة استيراد DataTable، + ضبط لون خلفية العمود، تنسيق العمود كعملة، وحفظ المصنف بصيغة xlsx. +og_title: تنسيق الأرقام المخصص في Excel باستخدام C# – دليل خطوة بخطوة +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: تنسيق الأرقام المخصص في إكسل باستخدام C# – دليل كامل +url: /ar/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تنسيق الأرقام المخصص في Excel – دليل C# كامل‑المكدس + +هل تساءلت يومًا كيف تطبق **custom number format excel** مباشرةً من C#؟ ربما حاولت تصدير DataTable إلى جدول بيانات ورأيت أرقامًا عادية، بدون ألوان، وبدون تنسيق عملة. هذه مشكلة شائعة—خصوصًا عندما تحتاج إلى تقرير مصقول لأصحاب المصلحة. + +في هذا الدليل سنحل هذه المشكلة معًا: ستتعلم كيف **import datatable to excel**، **set column background color**، **format column as currency**، وأخيرًا **save workbook as xlsx** باستخدام تنسيق أرقام مخصص يجعل أرقامك بارزة. لا مراجع غامضة، فقط حل كامل قابل للتنفيذ يمكنك نسخه‑ولصقه في مشروعك. + +--- + +## ما ستبنيه + +بنهاية هذا البرنامج التعليمي ستحصل على تطبيق Console في C# مستقل يقوم بـ: + +1. استرجاع `DataTable` (يمكنك استبدال النموذج بالاستعلام الخاص بك). +2. إنشاء مصنف Excel جديد باستخدام Aspose.Cells (أو أي مكتبة متوافقة). +3. تطبيق خط أزرق وعريض على العمود الأول، خلفية أصفر فاتح على العمود الثاني، وتنسيق عملة (`$#,##0.00`) على العمود الثالث. +4. حفظ الملف باسم `DataTableWithStyleArray.xlsx` في المجلد الذي تختاره. + +سترى بالضبط كيف يساهم كل سطر في الملف النهائي، وسنناقش لماذا هذه الاختيارات مهمة من حيث الصيانة والأداء. + +--- + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا مع .NET Framework 4.7+). +- Aspose.Cells for .NET (نسخة تجريبية مجانية أو مرخصة). التثبيت عبر NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- إلمام أساسي بـ `DataTable` وتطبيقات Console في C#. + +--- + +## الخطوة 1: استرجاع البيانات المصدرية كـ DataTable + +أولًا، نحتاج إلى بعض البيانات لتصديرها. في سيناريو واقعي ربما تستدعي مستودعًا أو تنفذ استعلام SQL. للتوضيح سننشئ جدولًا بسيطًا في الذاكرة. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **لماذا هذا مهم:** استخدام `DataTable` يمنحك مصدرًا جدوليًا واعيًا بالمخطط يتطابق بسهولة مع صفوف وأعمدة Excel. كما يتيح لك إعادة استخدام منطق التصدير نفسه لأي مجموعة بيانات دون الحاجة لإعادة كتابة الكود. + +--- + +## الخطوة 2: إنشاء مصنف جديد والحصول على الورقة الأولى + +الآن نقوم بإنشاء مصنف Excel. تمثل فئة `Workbook` الملف بالكامل؛ و`Worksheets[0]` هي الورقة الافتراضية التي سنضع فيها بياناتنا. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **نصيحة احترافية:** إذا كنت بحاجة إلى أوراق متعددة، ما عليك سوى استدعاء `workbook.Worksheets.Add("SheetName")` وتكرار خطوات التنسيق لكل ورقة. + +--- + +## الخطوة 3: تعريف أنماط الأعمدة – الخط، الخلفية، وتنسيق الرقم + +التنسيق في Aspose.Cells يتم عبر كائنات `Style`. سنبني مصفوفة حيث كل عنصر يمثل نمط عمود في الـ DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **لماذا مصفوفة الأنماط؟** تمرير مصفوفة إلى `ImportDataTable` يتيح لك تطبيق نمط مميز لكل عمود في استدعاء واحد، مما يجعل العملية مختصرة وفعّالة. كما يضمن بقاء التنسيق متزامنًا مع ترتيب البيانات. + +--- + +## الخطوة 4: استيراد DataTable مع تطبيق الأنماط + +هذا هو جوهر العملية: نمرر `DataTable` إلى الورقة، نخبر Aspose بتضمين صف العنوان، ونعطيه مصفوفة `columnStyles` الخاصة بنا. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **ماذا يحدث خلف الكواليس؟** يقوم Aspose بالتكرار عبر كل عمود، يكتب عنوان العمود، ثم يكتب قيم كل صف. أثناء ذلك يطبق النمط المقابل من المصفوفة، لذا ستحصل على عنوان أزرق لـ “Product”، خلفية صفراء لـ “Quantity”، وعمود “Revenue” بتنسيق عملة جميل. + +--- + +## الخطوة 5: حفظ المصنف كملف XLSX + +أخيرًا، نقوم بحفظ المصنف على القرص. تختار طريقة `Save` تنسيق XLSX تلقائيًا بناءً على امتداد الملف. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **نصيحة:** إذا كنت بحاجة إلى بث الملف (مثلاً في API ويب)، استخدم `workbook.Save(stream, SaveFormat.Xlsx)` بدلاً من مسار الملف. + +--- + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك لصقه في مشروع Console جديد. يترجم ويعمل مباشرةً، وينتج ملف Excel منسق. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### النتيجة المتوقعة + +عند فتح `DataTableWithStyleArray.xlsx` ستظهر لك: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +التنسيق **custom number format excel** الذي حددته (`$#,##0.00`) يضمن أن كل خلية إيرادات تعرض علامة الدولار، فاصل الآلاف، واثنين من الأرقام العشرية—تمامًا ما تتوقعه الفرق المالية. + +--- + +## الأسئلة المتكررة والحالات الخاصة + +### هل يمكنني استخدام هذا مع مكتبة Excel مختلفة؟ + +بالتأكيد. الفكرة—إنشاء نمط لكل عمود وتطبيقه أثناء الاستيراد—قابلة للتحويل إلى EPPlus أو ClosedXML أو NPOI. تختلف استدعاءات الـ API، لكن النمط يبقى نفسه. + +### ماذا لو كان لدى DataTable أعمدة أكثر من الأنماط؟ + +سيطبق Aspose النمط الافتراضي على أي عمود لا يملك مدخلًا مطابقًا في مصفوفة `columnStyles`. لتجنب المفاجآت، إما احرص على أن يكون حجم المصفوفة مساويًا لـ `dataTable.Columns.Count` أو أنشئ الأنماط ديناميكيًا داخل حلقة. + +### كيف أضبط تنسيق رقم مخصص للتواريخ؟ + +ما عليك سوى تعيين `style.Custom = "dd‑mm‑yyyy"` (أو أي سلسلة تنسيق Excel صالحة). نفس النهج القائم على المصفوفة يعمل مع التواريخ، النسب المئوية، أو الصيغة العلمية. + +### هل هناك طريقة لضبط عرض الأعمدة تلقائيًا بعد الاستيراد؟ + +نعم—استدعِ `worksheet.AutoFitColumns();` بعد عملية الاستيراد. يقوم بحساب العرض المناسب بناءً على محتوى الخلايا. + +### ماذا عن مجموعات البيانات الكبيرة (100k+ صف)? + +`ImportDataTable` مُحسّن للعمليات الضخمة، لكن قد تواجه حدود الذاكرة. في هذه الحالة، فكر في تدفق الصفوف يدويًا باستخدام `Cells[i, j].PutValue(...)` وإعادة استخدام كائن `Style` واحد لتقليل الحمل. + +--- + +## نصائح احترافية ومخاطر شائعة + +- **تجنب كتابة المسارات صراحةً** في الكود الإنتاجي؛ استخدم `Environment.GetFolderPath` أو إعدادات التكوين. +- **حرّر المصنف** إذا كان التطبيق يعمل لفترة طويلة—ضعه داخل كتلة `using` لتحرير الموارد الأصلية. +- **انتبه للفواصل الخاصة بالثقافات**. التنسيق المخصص `$#,##0.00` يفرض نقطة كفاصل عشري بغض النظر عن إعدادات نظام التشغيل، وهذا عادة ما يكون مطلوبًا للتقارير المالية. +- **تأكد من الإشارة إلى System.Drawing** (أو `System.Drawing.Common` على .NET Core) لاستخدام هياكل اللون في التنسيق. +- **اختبر الناتج على إصدارات Excel مختلفة**؛ قد تفسر الإصدارات القديمة بعض التنسيقات المخصصة بشكل مختلف قليلًا. + +--- + +## الخلاصة + +لقد غطينا كل ما تحتاجه لتطبيق **custom number format excel** من خلال C#: استخراج البيانات من `DataTable`، **import datatable to excel**، تطبيق **set column background color**، استخدام **format column as currency**، وأخيرًا **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/excel-workbook/_index.md b/cells/arabic/net/excel-workbook/_index.md index edcf820fce..0f467ce250 100644 --- a/cells/arabic/net/excel-workbook/_index.md +++ b/cells/arabic/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ | [معاينة طباعة المصنف](./workbook-print-preview/) تعلّم كيفية إنشاء معاينات طباعة لملفات Excel باستخدام Aspose.Cells لـ .NET. تعلّم خطوات البرمجة في برنامج تعليمي مفصل وسهل المتابعة. | [العمل مع خصائص نوع المحتوى](./working-with-content-type-properties/) | تعرّف على كيفية استخدام Aspose.Cells لـ .NET للعمل مع خصائص نوع المحتوى لتحسين إدارة بيانات تعريف Excel. اتبع هذا الدليل البسيط خطوة بخطوة. | | [دعم Xades Signature](./xades-signature-support/) | تعرّف على كيفية إضافة توقيعات Xades إلى ملفات Excel باستخدام Aspose.Cells لـ .NET من خلال هذا الدليل المفصل. حمِّل مستنداتك بأمان. | +| [إنشاء مصنف جديد C# – دليل خطوة بخطوة مع الصيغ المتسربة](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) |تعلم كيفية إنشاء مصنف Excel جديد باستخدام C# وتطبيق الصيغ المتسربة خطوة بخطوة. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/arabic/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..414307d439 --- /dev/null +++ b/cells/arabic/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: إنشاء مصنف جديد بلغة C# بسرعة باستخدام Aspose.Cells. تعلم كيفية إضافة + صيغة SEQUENCE المتسربة، وإعادة الحساب تلقائيًا، ومعالجة الخلايا التابعة. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: ar +og_description: إنشاء دفتر عمل جديد بلغة C# باستخدام Aspose.Cells. يوضح هذا الدليل + كيفية إضافة صيغة SEQUENCE المتسربة، وإعادة حساب دفتر العمل، وإدارة الخلايا التابعة. +og_title: إنشاء دفتر عمل جديد C# – دليل شامل +tags: +- C# +- Excel automation +- Aspose.Cells +title: إنشاء مصنف جديد C# – دليل خطوة بخطوة مع الصيغ المتسربة +url: /ar/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء دفتر عمل جديد C# – دليل برمجة كامل + +هل تساءلت يومًا كيف **create new workbook C#** دون التعامل مع COM interop؟ لست وحدك. في كثير من المشاريع تحتاج إلى إنشاء ملف Excel في الوقت الفعلي، وإدراج صيغة مصفوفة ديناميكية، وجعل كل شيء يتجدد تلقائيًا. + +في هذا الدليل سنُظهر لك بالضبط ذلك—باستخدام مكتبة **Aspose.Cells** الحديثة، وإضافة صيغة `SEQUENCE` المتسربة، وتعديل خلية تعتمد عليها، وإجبار إعادة حساب بحيث تبقى النتائج محدثة. في النهاية ستحصل على مثال مستقل يمكن نسخه ولصقه في أي تطبيق .NET. + +## ما ستتعلمه + +- كيفية **create new workbook C#** برمجيًا. +- آلية عمل **spilled array formula** ولماذا هي مفيدة. +- استخدام **دالة Excel SEQUENCE** من كود C#. +- تشغيل **C# workbook calculation** لتحديث الخلايا التابعة فورًا. +- الأخطاء الشائعة (مثل نسيان استدعاء `Calculate`) والحلول السريعة. + +لا حاجة لأي مستندات خارجية—كل ما تحتاجه موجود هنا. + +## المتطلبات المسبقة + +- .NET 6+ (أو .NET Framework 4.7.2+) مثبت. +- Visual Studio 2022 أو أي بيئة تطوير تفضلها. +- حزمة NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- إلمام أساسي بصياغة C# (إذا كنت مبتدئًا، الكود مشروح بالتفصيل). + +--- + +## الخطوة 1: إنشاء دفتر عمل جديد في C# + +هذا العنوان H2 يحتوي على **الكلمة المفتاحية الأساسية** في الموضع الذي يتطلبه فحص SEO. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **لماذا هذا مهم:** +> إنشاء كائن `Workbook` يمنحك تمثيلًا في الذاكرة لملف Excel. لا COM، لا interop، مجرد كائنات .NET صافية يمكنك تعديلها بأمان. + +--- + +## الخطوة 2: إضافة صيغة SEQUENCE المتسربة + +**spilled array formula** تتوسع تلقائيًا إلى الخلايا المجاورة، وهو مثالي لإنشاء قوائم ديناميكية. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **كيف تعمل:** +> دالة `SEQUENCE` (المقدمة في Excel 365) تُنشئ مصفوفة عمودية من الأرقام. لأننا نستخدم صيغة *spilling*، سيملأ Excel (و Aspose.Cells) النطاق أسفل `A1` تلقائيًا دون الحاجة إلى كتابة حلقة. + +--- + +## الخطوة 3: تعديل خلية تعتمد لرؤية التحديث التلقائي + +لنُغيّر `B1` لنراقب كيف يعيد دفتر العمل حساب المصفوفة المتسربة. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **نصيحة:** +> إذا أشرت لاحقًا إلى النطاق المتسرب في صيغ أخرى، فإن تغيير أي خلية داخل الـ spill سيؤدي إلى تحديث تلك الصيغ بعد استدعاء `Calculate`. + +--- + +## الخطوة 4: إجبار حساب دفتر العمل في C# + +بدون استدعاء صريح، لن تقوم Aspose.Cells بإعادة حساب الصيغ تلقائيًا. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **ما يفعله `Calculate`:** +> يمر على كل خلية صيغية، يقيمها، ويكتب النتائج مرة أخرى في الورقة. هذا هو جوهر **C# workbook calculation** ويضمن بقاء المصفوفة المتسربة متزامنة مع أي بيانات تعتمد عليها. + +### النتيجة المتوقعة + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +افتح `SpilledSequenceDemo.xlsx` وسترى الأرقام 1‑5 تُملأ `A1:A5`، بينما `B1` يحتوي على القيمة `10`. غيّر أي خلية داخل الـ spill، شغّل `Calculate` مرة أخرى، وستظهر القيم الجديدة فورًا. + +--- + +## فهم دالة Excel SEQUENCE في C# + +إذا كنت تتساءل لماذا تُفضَّل `SEQUENCE` على حلقة يدوية، فإليك هذه النقاط: + +1. **الأداء** – المحرك يُقيم المصفوفة بالكامل في مرور واحد. +2. **قابلية القراءة** – سطر واحد من الكود يستبدل عشرات استدعاءات `PutValue`. +3. **الحجم الديناميكي** – يمكنك استبدال الرقم الثابت `5` بإشارة إلى خلية أخرى، مما يجعل الطول قابلًا للتعديل أثناء التشغيل. + +هذا مثال كلاسيكي على **spilled array formula** يبسط مهام توليد البيانات. + +--- + +## الأخطاء الشائعة & نصائح احترافية + +| المشكلة | الحل | +|---------|-----| +| نسيان `workbook.Calculate()` | استدعِه دائمًا بعد تعديل الصيغ؛ وإلا ستظهر القيم المخزنة مؤقتًا. | +| استخدام نسخة قديمة من Aspose.Cells | حدّث إلى أحدث حزمة NuGet لضمان دعم الدوال الديناميكية مثل `SEQUENCE`. | +| الحفظ قبل الحساب | احفظ **بعد** `Calculate` حتى يحتوي الملف على أحدث النتائج. | +| الافتراض بأن الـ spill سيكتب فوق البيانات الموجودة | Aspose.Cells يحترم البيانات الموجودة خارج نطاق الـ spill؛ امسح المنطقة أولًا إذا كنت تحتاج إلى مساحة نظيفة. | + +**نصيحة احترافية:** إذا أردت أن يكون طول السلسلة قابلًا للتكوين، خزن العدد في خلية (مثلاً `C1`) واستخدم `=SEQUENCE(C1)`—سيقرأ محرك الحساب القيمة أثناء التشغيل. + +--- + +## توسيع المثال + +الآن بعد أن عرفت كيف **create new workbook C#**، يمكنك: + +- إضافة صيغ أكثر تعقيدًا تُشير إلى النطاق المتسرب (`=SUM(A1#)` حيث `#` يرمز إلى الـ spill). +- تصدير إلى PDF باستخدام `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- إدراج مخططات تتكيف تلقائيًا مع حجم المصفوفة الديناميكية. + +كل ذلك يبني على أساس **C# workbook calculation** الذي تناولناه للتو. + +--- + +## الخلاصة + +استعرضنا كامل عملية **create new workbook C#**، من إنشاء كائن `Workbook` إلى إدراج صيغة `SEQUENCE` المتسربة، تعديل خلية تعتمد، وأخيرًا إجبار إعادة حساب لضمان تحديث كل شيء. الشيفرة الكاملة أعلاه جاهزة للتنفيذ—فقط ضعها في تطبيق Console، أضف حزمة Aspose.Cells عبر NuGet، وستحصل على ملف Excel فعال في ثوانٍ. + +هل أنت مستعد للخطوة التالية؟ جرّب استبدال الرقم الثابت `5` بإشارة إلى خلية، جرب دوال مصفوفة ديناميكية أخرى مثل `FILTER` أو `UNIQUE`، واكتشف كيف يمكن لـ **Aspose.Cells C#** تمكين محركات تقارير متكاملة. برمجة سعيدة! + +--- + +*عنصر صورة:* + +![Screenshot showing a freshly created workbook with spilled SEQUENCE formula – create new workbook C# example](/images/create-new-workbook-csharp.png) + +--- + +*إذا وجدت هذا الدليل مفيدًا، فكر في وضع نجمة للمستودع، مشاركته مع الزملاء، أو ترك تعليق أدناه. ملاحظاتك تغذي الأدلة المستقبلية!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/formulas-functions/_index.md b/cells/arabic/net/formulas-functions/_index.md index f13c4c0fd6..d6eddea354 100644 --- a/cells/arabic/net/formulas-functions/_index.md +++ b/cells/arabic/net/formulas-functions/_index.md @@ -102,64 +102,8 @@ ### [تحديث صيغ Excel Power Query باستخدام Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) تعرّف على كيفية تحديث صيغ Power Query برمجيًا في مصنفات Excel باستخدام Aspose.Cells لـ .NET. إدارة مصادر البيانات الرئيسية لإعداد تقارير ديناميكية. -## فهم أنواع الصيغ في Excel - -تأتي صيغ Excel بأشكال مختلفة، ولكل منها خصائص فريدة يمكن لـ Aspose.Cells إدارتها: - -### صيغ الخلايا القياسية - -هذه هي الصيغ الأكثر شيوعًا التي تعمل على خلايا فردية: - -- **الصيغ الحسابية**:الحسابات الأساسية مثل `=A1+B1` -- **الصيغ القائمة على الوظيفة**:استخدام وظائف مدمجة مثل `=SUM(A1:A10)` -- **الصيغ المنطقية**: المنطق الشرطي مع وظائف مثل `=IF(A1>10,"High","Low")` -- **صيغ النص**:التلاعب بالنصوص باستخدام وظائف مثل `=CONCATENATE(A1," ",B1)` - -### الصيغ القائمة على النطاق - -تعمل هذه الصيغ مع نطاقات الخلايا: - -- **صيغ التجميع**:وظائف مثل `=AVERAGE(A1:A100)` التي تعالج خلايا متعددة -- **صيغ البحث**:وظائف مرجعية مثل `=VLOOKUP(E1,A1:B20,2,FALSE)` لاسترجاع البيانات -- **صيغ قاعدة البيانات**:وظائف متخصصة مثل `=DSUM(A1:F100,"Amount",G1:H2)` للترشيح والحساب - -### صيغ المصفوفة - -تنفذ صيغ المصفوفة عمليات حسابية على قيم متعددة في نفس الوقت: - -- **صيغة مصفوفة الخلية الواحدة**:ترجع نتيجة واحدة ولكنها تعالج المصفوفات داخليًا -- **صيغة مصفوفة متعددة الخلايا**:يملأ خلايا متعددة بالنتائج ذات الصلة -- **المصفوفات الديناميكية**:صيغ Excel الحديثة التي تنقل النتائج تلقائيًا إلى الخلايا المجاورة - -### الصيغ المسماة - -تستخدم هذه الصيغ نطاقات مسماة أو أسماء محددة: - -- **مراجع النطاق المسماة**:استخدام أسماء محددة مثل `=SUM(SalesData)` -- **المراجع المنظمة**: مراجع الجدول مثل `=SUM(Table1[Amount])` -- **النطاقات المسماة الديناميكية**:الصيغ التي تتكيف تلقائيًا مع حجم البيانات - -## أفضل الممارسات لإدارة الصيغة - -### تحسين الأداء - -لضمان التعامل الفعال مع الصيغة: - -1. **إعداد صيغة الدفعة**:تطبيق الصيغ على النطاقات بدلاً من تطبيقها على كل خلية على حدة -2. **احسب بشكل انتقائي**:استخدم الحساب المستهدف عندما يكون ذلك ممكنًا بدلاً من إعادة الحساب بالكامل -3. **تقليل الوظائف المتقلبة**:الحد من استخدام الوظائف مثل NOW() أو RAND() التي تؤدي إلى إعادة الحساب -4. **استخدام الصيغ المشتركة**:استغل إمكانيات الصيغة المشتركة لتحسين كفاءة الذاكرة - -### موثوقية الصيغة - -لتنفيذ الصيغة القوية: - -1. **معالجة الأخطاء**:تنفيذ معالجة أخطاء الصيغة باستخدام IFERROR أو وظائف مماثلة -2. **تحليل اعتماد الخلايا**:فهم تبعيات الصيغة لتجنب المراجع الدائرية -3. **تدقيق الصيغة**:التحقق من منطق الصيغة قبل النشر -4. **التوثيق**:الحفاظ على توثيق واضح لهياكل الصيغة المعقدة - -من خلال إتقان إمكانيات هذه الصيغة باستخدام Aspose.Cells لـ .NET، يمكنك إنشاء محركات حسابية متطورة في جداول البيانات الخاصة بك والتي توفر نتائج دقيقة وديناميكية دون الحاجة إلى تثبيت Excel. +### [كيفية استخدام Lambda في C# مع صيغ Excel – دليل شامل](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +تعلم كيفية تطبيق تعبيرات Lambda في C# لتوليد صيغ Excel ديناميكية وتحسين الأداء في تطبيقات .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/arabic/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..98a9ee6bec --- /dev/null +++ b/cells/arabic/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-22 +description: كيفية استخدام اللامبدا في C# للعمل مع صيغ Excel. تعلم كتابة الصيغة في + الخلية، تحويل النطاق إلى مصفوفة، عرض المصفوفة في وحدة التحكم، وحساب القاطع في Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: ar +og_description: كيفية استخدام اللامدا في C# للتعامل مع صيغ Excel، وتحويل النطاق إلى + مصفوفة، وكتابة الصيغة إلى خلية، وعرض المصفوفة في وحدة التحكم، وحساب القاطع الزاوي + في Excel. +og_title: كيفية استخدام لامدا في C# مع صيغ Excel – خطوة بخطوة +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: كيفية استخدام لامدا في C# مع صيغ إكسل – دليل كامل +url: /ar/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية استخدام Lambda في C# مع صيغ Excel – دليل شامل + +هل تساءلت يومًا **كيف تستخدم lambda** عندما تقوم بأتمتة Excel من C#؟ لست وحدك. يواجه العديد من المطورين صعوبة عندما يحتاجون إلى دمج قوة الدالات الديناميكية الجديدة في Excel مع قدرة C# على `LAMBDA`. الخبر السار؟ الأمر بسيط إلى حد ما بمجرد أن ترى كيف تتكامل الأجزاء معًا. + +في هذا البرنامج التعليمي سنستعرض **كتابة صيغة في خلية**، **تحويل نطاق إلى مصفوفة**، **عرض تلك المصفوفة في وحدة التحكم**، وحتى **حساب الظل المقلوب (cotangent) في Excel**—كل ذلك مع إظهار **كيفية استخدام lambda** داخل استدعاء `REDUCE`. في النهاية ستحصل على مقتطف قابل للتنفيذ يمكنك إدراجه في أي مشروع .NET ي引用 Aspose.Cells (أو مكتبة مشابهة). + +--- + +## ما ستتعلمه + +- كيفية **كتابة صيغة في خلية** باستخدام C#. +- كيفية **تحويل النطاق إلى مصفوفة** باستخدام دالة `EXPAND`. +- كيفية **عرض المصفوفة في وحدة التحكم** بعد الحساب. +- كيفية **حساب الظل المقلوب في Excel** باستخدام `COT` و `COTH`. +- الصياغة الدقيقة **لكيفية استخدام lambda** داخل دالة `REDUCE` في Excel من C#. + +> **المتطلبات المسبقة:** تحتاج إلى نسخة حديثة من .NET (Core 6+ أو .NET Framework 4.7+) ومكتبة Aspose.Cells for .NET المثبتة عبر NuGet. + +--- + +## الخطوة 1: إعداد المصنف وكتابة الصيغة في الخلية + +أول ما نقوم به هو إنشاء مصنف جديد والحصول على أول ورقة عمل. ثم **نكتب صيغة في خلية** – في هذه الحالة ستحتوي الخلية `A1` على نتيجة استدعاء `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**لماذا هذا مهم:** كتابة الصيغة مباشرة من الكود تتيح لك إنشاء جداول بيانات معقدة في الوقت الفعلي دون الحاجة لفتح Excel. كما أنها تمهد للخطوة التالية حيث **نحوّل النطاق إلى مصفوفة**. + +--- + +## الخطوة 2: تحويل النطاق إلى مصفوفة باستخدام EXPAND + +`EXPAND` هي طريقة Excel لتحويل نطاق صغير إلى مصفوفة أكبر. بوضع الصيغة في `A1`، سيقوم Excel بإنشاء كتلة 4 × 5 تبدأ من تلك الخلية. من C#، لا نحتاج إلى نسخ القيم يدويًا – المكتبة ستقوم بالعمل عندما نستدعي `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**كيفية استخدام lambda:** لم نصل إليها بعد، لكن ترقب. أولًا نحتاج البيانات في الورقة، ثم سنقلصها باستخدام lambda. + +--- + +## الخطوة 3: استخدام LAMBDA داخل REDUCE – جوهر “كيفية استخدام Lambda” + +أدخلت Excel 365 دالة `REDUCE`، التي تقبل **قيمة ابتدائية**، **نطاق**، و**LAMBDA** يحدد كيفية دمج كل عنصر. من C# نُعيّن مجرد سلسلة الصيغة؛ الـ lambda يعيش داخل صيغة Excel، وليس في كود C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**شرح:** +- `0` هو المجمّع الابتدائي (`acc`). +- `A1:D4` هو النطاق الذي نريد معالجته (الأعمدة الأربعة الأولى من الانسكاب). +- `LAMBDA(acc, x, acc + x)` يخبر Excel أن يضيف كل خلية (`x`) إلى المجمّع. + +هذا هو جوهر **كيفية استخدام lambda** للتجميع في سياق جداول البيانات. + +--- + +## الخطوة 4: حساب الظل المقلوب في Excel – من الدرجات إلى الدوال الزائدية + +إذا كنت تحتاج إلى نتائج مثلثية، فإن دالتي `COT` و `COTH` في Excel سهلتا الأمر. سنضعهما في `G1` و `G2` على التوالي. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**لماذا هذا مفيد:** معرفة **كيفية حساب الظل المقلوب في Excel** يمكن أن توفر عليك كتابة كود رياضي مخصص، خاصةً عندما يُشارك المصنف مع غير المطورين. + +--- + +## الخطوة 5: إجبار الحساب واسترجاع المصفوفة الموسعة + +الآن نطلب من المصنف تقييم كل الصيغ، ثم نستخرج المصفوفة المنسكبة من `A1`. هنا نُظهر **عرض المصفوفة في وحدة التحكم**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**ما ستراه:** +- مصفوفة 4 × 5 منسقة بشكل جميل تُطبع سطرًا بسطر. +- المجموع المحسوب بواسطة lambda في `REDUCE`. +- القيمتين للظل المقلوب. + +بهذا نكون قد أكملنا السلسلة من **كتابة صيغة في خلية** حتى **عرض المصفوفة في وحدة التحكم**. + +--- + +## مثال كامل يعمل (جاهز للنسخ واللصق) + +فيما يلي البرنامج الكامل الذي يمكنك وضعه في تطبيق console. تذكر إضافة حزمة NuGet `Aspose.Cells` أولًا (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**الناتج المتوقع في وحدة التحكم (القيم قد تختلف بناءً على محتويات B1:C2 الافتراضية، والتي تكون 0 عادةً):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +لا تتردد في ملء `B1:C2` بأرقامك الخاصة قبل التشغيل – ستنعكس هذه القيم في المصفوفة. + +--- + +## نصائح احترافية ومخاطر شائعة + +- **نصيحة احترافية:** إذا أردت أن يبدأ النطاق المنسكب من خلية أخرى، فقط غير الخلية المستهدفة (`A1`). دالة `EXPAND` تحترم نقطة الارتكاز. +- **احذر من:** الخلايا الفارغة في النطاق الأصلي تتحول إلى `0` في المصفوفة المنسكبة، ما قد يؤثر على مجموع `REDUCE`. +- **حالة حافة:** عندما يحتوي المصنف على صيغ تعتمد على دوال متقلبة (مثل `NOW()`)، استدعِ `workbook.Calculate()` بعد ضبط جميع الصيغ لضمان تحديث كل شيء. +- **ملاحظة الأداء:** بالنسبة للانسكابات الكبيرة، فكر في تحديد الحجم في استدعاء `EXPAND`؛ وإلا قد تُخصص ذاكرة أكثر من اللازم. +- **التوافق:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/number-and-display-formats-in-excel/_index.md b/cells/arabic/net/number-and-display-formats-in-excel/_index.md index 2141760171..52558dc8f8 100644 --- a/cells/arabic/net/number-and-display-formats-in-excel/_index.md +++ b/cells/arabic/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ أتمتة تنسيق الأرقام في Excel باستخدام Aspose.Cells لـ .NET. تعلّم كيفية تطبيق تنسيقات التاريخ والنسبة المئوية والعملة برمجيًا. ### [تخصيص تنسيقات العرض باستخدام أرقام محددة من قبل المستخدم](./customizing-display-formats-with-user-defined-numbers/) تعرّف على كيفية تخصيص تنسيقات العرض باستخدام Aspose.Cells لـ .NET. نسّق التواريخ والنسب المئوية والعملات باستخدام هذا الدليل المفصل. +### [كيفية تصدير Excel مع التنسيق – الحفاظ على تنسيق الأرقام](./how-to-export-excel-with-formatting-preserve-number-format/) +تعلم كيفية تصدير ملفات Excel مع الحفاظ على تنسيقات الأرقام باستخدام Aspose.Cells لـ .NET. +### [تحويل التاريخ والوقت إلى صيغة ISO في C# – دليل شامل](./format-datetime-to-iso-in-c-complete-guide/) +دليل شامل لتحويل التاريخ والوقت إلى صيغة ISO في C# باستخدام Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/arabic/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..4a3ef1f558 --- /dev/null +++ b/cells/arabic/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: تعلم كيفية تنسيق التاريخ والوقت إلى صيغة ISO أثناء استخراج التاريخ من + Excel وعرض تاريخ ISO باستخدام Aspose.Cells في C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: ar +og_description: تنسيق التاريخ والوقت إلى ISO بسهولة. يوضح هذا الدليل كيفية استخراج + التاريخ من Excel وعرض تاريخ ISO باستخدام Aspose.Cells. +og_title: تنسيق التاريخ والوقت إلى ISO في C# – دليل خطوة بخطوة +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: تنسيق التاريخ والوقت إلى ISO في C# – دليل كامل +url: /ar/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تنسيق datetime إلى iso في C# – الدليل الكامل + +هل احتجت يوماً إلى **format datetime to iso** لكن المصدر موجود داخل مصنف Excel؟ ربما تحتوي الخلية على عصر ياباني مثل “令和3年5月1日” وتجد نفسك تحاول معرفة كيفية تحويله إلى سلسلة نظيفة `2021‑05‑01`. لست وحدك. في هذا الدرس سنقوم بـ **extract date from excel**، وتحليل العصر الياباني، ثم **display iso date** على وحدة التحكم—كل ذلك ببضع أسطر من C# و Aspose.Cells. + +سنستعرض كل ما تحتاجه: حزمة NuGet المطلوبة، الكود الدقيق الذي يمكنك نسخه‑ولصقه، سبب أهمية كل سطر، وبعض النصائح للتعامل مع الحالات الخاصة. في النهاية ستحصل على مقطع قابل لإعادة الاستخدام ينسق datetime إلى iso بغض النظر عن غرابة القيمة الأصلية في Excel. + +## ما ستحتاجه + +- .NET 6.0 أو أحدث (الكود يُجمّع أيضاً على .NET Framework 4.6+) +- Visual Studio 2022 (أو أي محرر تفضله) +- **Aspose.Cells for .NET** حزمة NuGet – `Install-Package Aspose.Cells` +- ملف Excel (أو مصنف جديد) يحتوي على تاريخ بصيغة العصر الياباني + +هذا كل شيء. لا مكتبات إضافية، لا COM interop، مجرد طريقة واحدة موثقة جيداً. + +## الخطوة 1: إنشاء مصنف وكتابة تاريخ بعصر ياباني + +أولاً، نحتاج إلى مصنف للعمل معه. إذا كان لديك ملف Excel بالفعل، يمكنك تحميله باستخدام `new Workbook("path")`. في هذا المثال سننشئ مصنفاً جديداً في الذاكرة ونضع سلسلة العصر الياباني في الخلية **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells treats cell values as strings by default. By inserting the raw era text we simulate a real‑world scenario where a Japanese client has entered dates in their native calendar. + +## الخطوة 2: تمكين تحليل العصر الياباني واستخراج التاريخ + +يمكن لـ Aspose.Cells ترجمة سلاسل العصر الياباني إلى كائنات .NET `DateTime` تلقائياً— بشرط أن تخبره بذلك. علم `DateTimeParseOptions.EnableJapaneseEra` يقوم بالعمل الشاق. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** If you forget the `EnableJapaneseEra` option, the library will return the original string, and your subsequent conversion will fail. Always verify `parsed.Type` if you’re handling mixed content. + +## الخطوة 3: تحويل DateTime المُحلل إلى ISO 8601 + +الآن بعد أن حصلنا على `DateTime` صحيح، تحويله إلى سلسلة بصيغة ISO سهل جداً. نمط `"yyyy-MM-dd"` يتوافق مع جزء التاريخ في ISO 8601، وهو ما تتوقعه معظم الـ APIs. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +تشغيل البرنامج يطبع: + +``` +ISO date: 2021-05-01 +``` + +هذا هو **display iso date** الذي كنت تبحث عنه. + +## مثال كامل قابل للتنفيذ + +فيما يلي كتلة الكود الكاملة التي يمكنك نسخها مباشرة إلى مشروع Console. لا تبعيات مخفية، لا إعدادات إضافية. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## تحليل خطوة‑بخطوة (لماذا كل جزء مهم) + +| الخطوة | ما يحدث | لماذا هو مهم | +|------|--------------|--------------------| +| **Create workbook** | Initializes an in‑memory Excel container. | Gives you a sandbox to test without touching the file system. | +| **PutValue** | Stores the raw Japanese era string in **A1**. | Mimics real data entry; ensures the parser sees the exact text. | +| **GetValue with `EnableJapaneseEra`** | Converts the era string into a .NET `DateTime`. | Handles the calendar conversion automatically—no manual lookup tables needed. | +| **`ToString("yyyy-MM-dd")`** | Formats the `DateTime` to ISO 8601. | Guarantees a culture‑invariant, sortable date string accepted by REST APIs, databases, etc. | +| **Console.WriteLine** | Shows the final ISO date. | Confirms the whole pipeline works end‑to‑end. | + +## التعامل مع المتغيّرات الشائعة + +### 1. مواقع خلايا مختلفة + +إذا كان تاريخك في **B2** أو نطاق مسمى، استبدل ببساطة `"A1"` بالعنوان المناسب: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. تواريخ متعددة في عمود + +عند الحاجة إلى **extract date from excel** لعدة صفوف، قم بالتكرار عبر النطاق المستخدم: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. حل احتياطي للتواريخ غير المرتبطة بالعصر + +إذا كانت الخلية تحتوي بالفعل على سلسلة تاريخ قياسية، فإن المحلل لا يزال يعمل، لكن قد ترغب في إضافة شبكة أمان: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +علم `TryParse` يمنع الاستثناءات ويعيد القيمة الأصلية إذا فشل التحويل. + +### 4. مكوّن الوقت + +إذا كنت تحتاج إلى جزء الوقت أيضاً، استخدم `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +سيعطيك ذلك طابعاً زمنياً كاملاً بصيغة ISO 8601 (`2021-05-01T00:00:00`). + +## المساعدة البصرية + +![format datetime to iso example](image.png "An example of formatting datetime to iso in C#") + +*نص بديل:* *مثال على تنسيق datetime إلى iso يظهر مخرجات وحدة التحكم* + +## الأسئلة المتكررة + +- **هل يمكنني استخدام هذا مع ملفات .xls؟** + نعم. Aspose.Cells يدعم `.xls`،`.xlsx`،`.csv` والعديد من الصيغ الأخرى مباشرة. + +- **ماذا لو كان المصنف محميًا بكلمة مرور؟** + حمّله باستخدام `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **هل صيغة ISO تعتمد على الإعدادات الإقليمية؟** + لا. نمط `"yyyy-MM-dd"` غير معتمد على الثقافة، مما يضمن نفس السلسلة على أي جهاز. + +- **هل يعمل هذا على .NET Core؟** + بالتأكيد—Aspose.Cells متوافق مع .NET Standard 2.0. + +## الخلاصة + +لقد غطينا كيفية **format datetime to iso** عن طريق **extracting date from excel**، وتحليل سلاسل العصر الياباني، وأخيراً **displaying iso date** على وحدة التحكم. الخطوات الأساسية—إنشاء مصنف، كتابة أو تحميل نص العصر، تمكين تحليل العصر الياباني، وتنسيق باستخدام `ToString("yyyy-MM-dd")`—هي كل ما تحتاجه لمعظم السيناريوهات. + +بعد ذلك، قد ترغب في: + +- كتابة تواريخ ISO مرة أخرى في عمود آخر للمعالجة اللاحقة. +- تصدير المصنف المحوّل إلى CSV للاستيراد الجماعي. +- دمج هذه المنطق مع واجهة ويب API تقبل تحميلات Excel وتعيد تواريخ ISO مشفّرة بصيغة JSON. + +لا تتردد في تجربة صيغ تواريخ مختلفة، مناطق زمنية، أو حتى تقاويم مخصصة. مرونة Aspose.Cells تعني أنك نادراً ما تصطدم بحاجز. + +برمجة سعيدة، ولتكن جميع تواريخك متوافقة تماماً مع ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/arabic/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..9a2dc2cf45 --- /dev/null +++ b/cells/arabic/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-22 +description: كيفية تصدير ملف Excel مع الحفاظ على التنسيق وتنسيق الأرقام. تعلم تحويل + نطاق Excel، الحصول على نتيجة الصيغة، وتصدير Excel مع التنسيق باستخدام Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: ar +og_description: كيفية تصدير Excel مع التنسيق والحفاظ على تنسيق الأرقام. دليل خطوة + بخطوة لتحويل نطاق Excel، الحصول على نتيجة الصيغة، وتصدير Excel مع التنسيق في C#. +og_title: كيفية تصدير إكسل مع التنسيق – الحفاظ على تنسيق الأرقام +tags: +- C# +- Aspose.Cells +- Excel automation +title: كيفية تصدير Excel مع التنسيق – الحفاظ على تنسيق الأرقام +url: /ar/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تصدير Excel مع التنسيق – الحفاظ على تنسيق الأرقام + +هل تساءلت يوماً **كيف تصدر Excel** مع الحفاظ على مظهر كل خلية تماماً كما تراه في المصنف؟ ربما تحتاج إلى إرسال تقرير إلى عميل، أو تغذية عنصر شبكة، أو مجرد تخزين القيم في قاعدة بيانات. المشكلة الشائعة هي فقدان تنسيق الأرقام أو تحول الصيغ إلى سلاسل نصية عادية. + +في هذا الدرس سنستعرض مثالاً كاملاً وجاهزاً للتنفيذ بلغة C# **يحافظ على تنسيق الأرقام**، **يحوّل نطاق Excel** إلى `DataTable`، **يحصل على نتيجة الصيغة**، وأخيراً **يصدر Excel مع التنسيق** باستخدام Aspose.Cells. في النهاية ستحصل على طريقة واحدة يمكنك إدراجها في أي مشروع واستدعاؤها بمرجع ورقة العمل. + +> **معاينة سريعة:** ينشئ الكود مصنفاً، يكتب قيمة وصيغة، يطلب من Aspose.Cells تصدير الخلايا كسلاسل منسقة، ويطبع `123.456 | 246.912` – تماماً ما تتوقع رؤيته في Excel. + +--- + +## ما ستحتاجه + +- **Aspose.Cells for .NET** (الإصدار التجريبي المجاني يكفي للتعلم) +- .NET 6.0 أو أحدث (واجهة برمجة التطبيقات هي نفسها على .NET Framework) +- بيئة تطوير C# أساسية (Visual Studio، VS Code، Rider… اختر ما يناسبك) + +لا توجد حزم NuGet إضافية مطلوبة بخلاف Aspose.Cells. إذا لم تقم بتثبيتها بعد، نفّذ: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## الخطوة 1 – إنشاء مصنف وكتابة القيم (بما في ذلك صيغة) + +أولاً نقوم بإنشاء مصنف جديد ونضع قيمة رقمية في **A1**. ثم نضيف صيغة بسيطة في **B1** تضرب الخلية الأولى في اثنين. هذا يهيئ المشهد لتوضيح **الحصول على نتيجة الصيغة** لاحقاً. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**لماذا هذا مهم:** +- `PutValue` يخزن الرقم الأصلي، بينما `PutFormula` يخزن العملية الحسابية. +- Aspose.Cells يبقي الصيغة **نشطة**، لذا عندما نطلب قيمة الخلية لاحقاً ستحصل فعلياً على `246.912`، وليس النص `"=A1*2"`. + +--- + +## الخطوة 2 – إخبار Aspose.Cells بتصدير القيم كسلاسل منسقة + +إذا استدعيت `ExportDataTable` بالإعدادات الافتراضية، ستُرجع الخلايا الرقمية قيمها الأساسية من نوع `double`. هذا يزيل أي فواصل آلاف، أو رموز عملة، أو أعداد عشرية مخصصة قد تكون ضبطتها. تسمح لنا فئة `ExportTableOptions` **بالحفاظ على تنسيق الأرقام** و**تصديرها كسلسلة**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**النقطة الأساسية:** `ExportNumberFormat = true` هو المفتاح الذي يجعل **الحفاظ على تنسيق الأرقام** يعمل. بدون هذا الإعداد سترى `"123.456"` و `"246.912"` كأرقام خام، قد تبدو صحيحة في الشيفرة لكن ليست كذلك عندما تلصق البيانات في واجهة تتوقع نفس تنسيق Excel. + +--- + +## الخطوة 3 – طباعة البيانات المصدرة (التحقق) + +الآن بعد أن حصلنا على `DataTable` مليء بسلاسل منسقة، لنقم بطباعة محتوياته إلى وحدة التحكم. هذا يوضح أيضاً أننا نجحنا في **الحصول على نتيجة الصيغة** دون الحاجة لتقييم الصيغة يدوياً. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +تشغيل البرنامج يطبع: + +``` +123.456 | 246.912 +``` + +لاحظ كيف أن العمود الثاني يعرض **نتيجة الصيغة**، وليس نص الصيغة. هذا بالضبط ما تحتاجه عندما **تصدّر Excel مع التنسيق** للمعالجة اللاحقة. + +--- + +## الخطوة 4 – تحويل نطاقات Excel أكبر (اختياري) + +المثال أعلاه يتعامل مع شريحة صغيرة `A1:B1`، لكن السيناريوهات الواقعية غالباً ما تتطلب تصدير جداول كاملة. الطريقة نفسها تعمل لأي كتلة مستطيلة – فقط عدّل قيم `firstRow`، `firstColumn`، `totalRows`، و `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**نصيحة احترافية:** إذا كان ورقك يحتوي بالفعل على صف عنوان، اضبط `includeColumnNames` إلى `true`. سيستخدم Aspose.Cells الصف الأول من النطاق كأسماء أعمدة، وهو مفيد عندما تربط الـ `DataTable` بشبكة واجهة المستخدم لاحقاً. + +--- + +## الخطوة 5 – المشكلات الشائعة وكيفية تجنّبها + +| المشكلة | السبب | الحل | +|-------|----------------|-----| +| **الأرقام تفقد الفواصل أو رموز العملة** | `ExportAsString` = `false` أو تم إغفال `ExportNumberFormat` | اضبط كلا الخيارين `ExportAsString = true` **و** `ExportNumberFormat = true`. | +| **خلايا الصيغ تُعيد نص الصيغة** | لم تقم باستدعاء `CalculateFormula` قبل التصدير (مطلوب فقط إذا لم يكن المصنف مضبوطاً على الحساب التلقائي) | إما فعّل الحساب التلقائي (`workbook.CalculateFormula()`) أو اعتمد على `ExportAsString` الذي يجبر التقييم. | +| **العناوين تظهر كصفوف بيانات** | `includeColumnNames` = `false` بينما النطاق يحتوي على صف عنوان | اضبط `includeColumnNames = true` لتعامل الصف الأول كأسماء أعمدة. | +| **النطاقات الكبيرة تسبب ضغطاً على الذاكرة** | تصدير الورقة بالكامل مرة واحدة يحمل كل شيء في الذاكرة | صدّر على دفعات (مثلاً 500 صف في كل مرة) وادمج الـ `DataTable`s إذا لزم الأمر. | + +--- + +## الخطوة 6 – مثال كامل جاهز للنسخ واللصق + +فيما يلي البرنامج بالكامل، من عبارات `using` إلى `Main`. الصقه في تطبيق Console واضغط **F5** – ستظهر النتيجة المنسقة فوراً. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**الناتج المتوقع** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +هذا هو سير عمل **كيفية تصدير Excel** بالكامل، مع الحفاظ على التنسيق، وتقييم نتائج الصيغ، و`DataTable` نظيفة جاهزة لأي مستهلك .NET. + +--- + +## الخلاصة + +غطّينا كل ما تحتاج معرفته حول **كيفية تصدير Excel** مع **الحفاظ على تنسيق الأرقام**، **تحويل نطاق Excel** إلى `DataTable`، و**الحصول على نتائج الصيغ** دون أي تحليل إضافي. المفتاح هو تكوين `ExportTableOptions` – بمجرد ضبط `ExportAsString` و `ExportNumberFormat` إلى `true`، سيتولى Aspose.Cells كل العمل الشاق. + +من هنا يمكنك: + +- ربط الـ `DataTable` بـ WPF `DataGrid` أو عرض ASP.NET MVC. +- كتابة الجدول إلى ملف CSV مع الحفاظ على التمثيل البصري الدقيق. +- توسيع النهج إلى عدة أوراق أو نطاقات ديناميكية. + +لا تتردد في تجربة تنسيقات مختلفة (عملة، نسب مئوية) ومجموعات بيانات أكبر. إذا صادفت أي شذوذ، ارجع إلى جدول **المشكلات الشائعة** – فهو يغطي أكثر العقبات التي قد تواجهك عند **تصدير Excel مع التنسيق**. + +برمجة سعيدة، ولتظل جداولك المصدرة دائماً متقنة كما الأصلية! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/arabic/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..9844543a90 --- /dev/null +++ b/cells/arabic/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,190 @@ +--- +category: general +date: 2026-03-22 +description: تعلم كيفية تكرار الجدول المحوري في C# باستخدام Aspose.Cells. يوضح هذا + الدليل أيضًا كيفية نسخ الصفوف وتحميل دفتر عمل Excel باستخدام C# لتسهيل أتمتة Excel + السلسة لنسخ الصفوف. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: ar +og_description: كيف تنسخ Pivot في C#؟ اتبع هذا الدليل المختصر لتحميل ملف Excel باستخدام + C#، نسخ الصفوف، وإتقان أتمتة Excel لنسخ الصفوف. +og_title: كيفية تكرار Pivot في C# – دليل شامل +tags: +- C# +- Excel Automation +- Aspose.Cells +title: كيفية تكرار Pivot في C# – دليل خطوة بخطوة كامل +url: /ar/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تكرار Pivot في C# – دليل خطوة بخطوة كامل + +هل تساءلت يومًا **how to duplicate pivot** عن جداول Pivot برمجيًا دون سحبها يدويًا في Excel؟ لست وحدك. في العديد من خطوط تقارير البيانات يُحتاج إلى نفس تخطيط Pivot على مجموعة جديدة من الصفوف، والقيام بذلك يدويًا مضيعة للوقت. + +الأخبار السارة؟ ببضع أسطر من C# يمكنك تحميل مصنف Excel، تعريف المنطقة التي تحتوي على الـ pivot، و **how to copy rows** بحيث يظهر الـ pivot في موقع جديد — كل ذلك في تشغيل آلي واحد. في هذا الدرس سنغطي أيضًا أساسيات **load excel workbook c#** ونقدم لك أساسًا قويًا لمهام **excel automation copy rows**. + +> **ما ستخرجه من هذا الدرس** +> • مثال كامل وقابل للتنفيذ يكرر جدول Pivot. +> • شرح لماذا كل سطر مهم. +> • نصائح للتعامل مع الحالات الخاصة مثل أوراق العمل المخفية أو وجود عدة Pivot. + +--- + +## المتطلبات المسبقة + +قبل أن نغوص في التفاصيل، تأكد من وجود ما يلي: + +- **.NET 6.0** (أو أي نسخة حديثة من .NET) مثبتة. +- **Aspose.Cells for .NET** – المكتبة التي سنستخدمها للتعامل مع ملفات Excel. يمكنك الحصول عليها عبر NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- مصنف مصدر (`Source.xlsx`) يحتوي بالفعل على جدول Pivot في النطاق **A1:J20** (النطاق الذي سنقوم بتكراره). +- إلمام أساسي بصياغة C# – لا شيء معقد، فقط عبارات `using` المعتادة وطريقة `Main`. + +إذا كان أي من هذه غير مألوف لك، خذ لحظة لتثبيت الحزمة؛ باقي الدليل يفترض أن المكتبة جاهزة للاستخدام. + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "how to duplicate pivot in C# illustration") + +*نص بديل للصورة: "how to duplicate pivot in C# example showing source and duplicated pivot rows".* + +## الخطوة 1: Load Excel Workbook C# – فتح الملف + +أول شيء تحتاج إلى القيام به عندما تريد **load excel workbook c#** هو إنشاء كائن `Workbook` يشير إلى ملفك. هذا الكائن يمنحك الوصول إلى كل ورقة عمل، خلية، وPivot داخل الملف. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**لماذا هذا مهم:** +`Workbook` يُجسد ملف Excel بالكامل كنموذج في الذاكرة. بدون تحميله أولًا لا يمكنك فحص موقع الـ Pivot أو نسخ الصفوف. بالإضافة إلى ذلك، المُنشئ يكتشف تنسيق الملف تلقائيًا (XLS, XLSX, CSV، إلخ)، لذا لا تحتاج إلى كود إضافي لاكتشاف التنسيق. + +## الخطوة 2: How to Copy Rows – تعريف منطقة Pivot + +الآن بعد أن أصبح المصنف في الذاكرة، نحتاج إلى إخبار Aspose.Cells أي صفوف تحتوي على الـ Pivot. في مثالنا الـ Pivot موجود في **A1:J20**، ما يترجم إلى الصفوف **0‑19** (فهرسة صفرية). سنغلف ذلك في هيكل `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**لماذا نستخدم `CellArea`:** +إنه طريقة خفيفة لوصف كتلة مستطيلة. عندما تستدعي لاحقًا `CopyRows`، يقرأ الطريقة هذا الكائن لتعرف بالضبط أي صفوف يجب تكرارها. إذا احتجت لتعديل النطاق (مثلاً إذا نما الـ Pivot إلى العمود K)، ما عليك سوى تغيير قيمة `endColumn`. + +## الخطوة 3: الوصول إلى ورقة العمل الهدف + +معظم المصنفات تحتوي على ورقة واحدة، لكن الـ API يعمل بنفس الطريقة مع عدة أوراق. احصل على الورقة الأولى (الفهرس 0) – حيث يعيش الـ Pivot الأصلي. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**نصيحة احترافية:** +إذا كان لديك أوراق مسماة، يمكنك أيضًا استرجاعها بالاسم: `workbook.Worksheets["Sheet1"]`. هذا يساعد على تجنب الترميز الصلب للفهارس عندما يتغير هيكل المصنف. + +## الخطوة 4: How to Copy Rows – تكرار جدول Pivot + +هذا هو جوهر **how to duplicate pivot**: ننسخ الصفوف التي تحتوي على الـ Pivot إلى موقع جديد. في حالتنا نبدأ عند الصف 31 (فهرس صفرية 30). طريقة `CopyRows` تنسخ *كلا* البيانات وذاكرة التخزين المؤقت للـ Pivot، لذا تتصرف الصفوف الجديدة تمامًا مثل الأصل. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**ما يحدث خلف الكواليس؟** +`CopyRows` تستنسخ كل صف، مع الحفاظ على الصيغ، الأنماط، وتعريفات الـ Pivot. لأن ذاكرة الـ Pivot تُخزن على مستوى المصنف، فإن الـ Pivot المكرر يشير تلقائيًا إلى نفس مصدر البيانات – لا حاجة لتكوين إضافي. + +**حالة خاصة – الصفوف المخفية:** +إذا كان أي من الصفوف في النطاق المصدر مخفيًا، سيظل مخفيًا بعد النسخ. إذا رغبت في إظهاره، استدعِ `worksheet.Rows[destRow].IsHidden = false` بعد عملية النسخ. + +## الخطوة 5: حفظ المصنف – التحقق من النسخة المكررة + +أخيرًا، اكتب التغييرات إلى القرص. يمكنك استبدال الملف الأصلي أو، للأمان، حفظه باسم جديد لتتمكن من مقارنة قبل/بعد. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**النتيجة التي يجب أن تراها:** +افتح `CopyWithPivot.xlsx`. ستجد الـ Pivot الأصلي في **A1:J20** ونسخة مطابقة تبدأ من **A31:J50**. يمكن تحديث كلا الـ Pivot بشكل مستقل، وأي مقاطع (slicers) مرتبطة بالأصل ستظل تعمل مع النسخة لأنها تشترك في نفس الذاكرة المؤقتة. + +## أسئلة شائعة وتنوعات + +### هل يمكنني تكرار عدة Pivot في آن واحد؟ + +بالطبع. يمكنك التكرار عبر جميع جداول الـ Pivot (`worksheet.PivotTables`) ونسخ نطاق كل منها إلى وجهة مختلفة. فقط تأكد من أن النطاقات الوجهة لا تتداخل. + +### ماذا لو كان المصنف المصدر محميًا بكلمة مرور؟ + +Aspose.Cells يتيح لك فتح ملف محمي بتمرير كلمة المرور إلى مُنشئ `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### كيف أُنسخ الصفوف دون التأثير على الصيغ؟ + +إذا كنت تحتاج فقط إلى *القيم* (بدون صيغ)، استخدم `CopyRows` مع علم `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### هل هناك طريقة لنسخ الصفوف إلى مصنف *مختلف*؟ + +نعم. بعد نسخ الصفوف في الورقة المصدر، يمكنك استنساخ الورقة إلى كائن `Workbook` آخر عبر `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## نصائح احترافية لأتمتة Excel موثوقة Copy Rows + +- **تحقق من النطاق** قبل النسخ. شرط سريع `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` يمنع الأخطاء الناتجة عن الخروج عن النطاق. +- **أوقف الحساب** أثناء نسخ النطاقات الكبيرة: `workbook.Settings.CalcMode = CalcMode.Manual;` – هذا يسرّع العملية بشكل ملحوظ. +- **حرّر الكائنات** (`workbook.Dispose()`) إذا كنت تعالج العديد من الملفات في حلقة لتفريغ الموارد الأصلية. +- **سجّل العملية** – خاصة في خطوط الإنتاج – لتتمكن من تتبع الملفات التي تم معالجتها واكتشاف الأخطاء مبكرًا. + +## الخاتمة + +الآن تعرف **how to duplicate pivot** في C# باستخدام Aspose.Cells، ورأيت سير العمل الكامل من **load excel workbook c#** إلى **excel automation copy rows** وأخيرًا حفظ النتيجة. المثال مستقل، يعمل مباشرة، ويمكن توسيعه للتعامل مع عدة Pivot، ملفات محمية، أو نسخ عبر مصنفات مختلفة. + +الخطوات التالية؟ جرّب تعديل السكريبت لتقوم بـ: + +- تحديث الـ Pivot المكرر برمجيًا (`pivotTable.RefreshData();`). +- تصدير المنطقة المكررة إلى CSV للمعالجة اللاحقة. +- دمج الكود في API مبني على ASP.NET Core بحيث يمكن للمستخدمين رفع ملف والحصول فورًا على نسخة مكررة من الـ Pivot. + +برمجة سعيدة، ولتكن أتمتة Excel لديك سلسة دائمًا! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/row-and-column-management/_index.md b/cells/arabic/net/row-and-column-management/_index.md index a747efcb04..b97f1a6cca 100644 --- a/cells/arabic/net/row-and-column-management/_index.md +++ b/cells/arabic/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ تعرّف على كيفية حذف عمود في ملف Excel باستخدام Aspose.Cells لـ .NET. اتبع دليلنا المفصل خطوة بخطوة لتبسيط تعديلات ملفات Excel. ### [حذف صف في Aspose.Cells .NET](./delete-row-aspose-cells/) تعرّف على كيفية حذف صف في Excel باستخدام Aspose.Cells لـ .NET. يغطي هذا الدليل التفصيلي المتطلبات الأساسية، واستيراد الكود، وشرحًا تفصيليًا لمعالجة البيانات بسلاسة. +### [حذف الصفوف باستخدام Aspose.Cells لـ .NET – حماية صف العنوان في Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +تعلم كيفية حذف الصفوف مع الحفاظ على صف العنوان غير متأثر في ملفات Excel باستخدام Aspose.Cells لـ .NET. ### [حذف صفوف متعددة في Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) تعلم كيفية حذف صفوف متعددة في Excel باستخدام Aspose.Cells لـ .NET. يغطي هذا الدليل المفصل، خطوة بخطوة، المتطلبات الأساسية، وأمثلة البرمجة، والأسئلة الشائعة للمطورين. ### [إدراج عمود في Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/arabic/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/arabic/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..28e39ac7b8 --- /dev/null +++ b/cells/arabic/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells حذف الصفوف مع حماية صف العنوان. تعلم كيفية استرجاع الجدول + الأول وحذف صفوف جدول Excel بأمان باستخدام C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: ar +og_description: حذف الصفوف باستخدام Aspose Cells مع حماية صف الرأس. تعلّم كيفية استرجاع + الجدول الأول وحذف صفوف جدول Excel بأمان في C#. +og_title: Aspose Cells حذف الصفوف – حماية صف العنوان في Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells حذف الصفوف – حماية صف العنوان في Excel +url: /ar/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – حماية صف العنوان في Excel + +هل سبق لك أن حاولت **aspose cells delete rows** من جدول واكتشفت أن العنوان اختفى؟ هذا هو الخطأ الشائع عند التعامل مع أوراق Excel برمجياً. في هذا الدليل سنستعرض حلاً كاملاً قابلاً للتنفيذ **يحمي صف العنوان**، يوضح لك كيفية **retrieve first table**، ويحذف **Excel table rows** بأمان دون كسر البنية. + +سنغطي كل شيء من تحميل المصنف إلى التعامل مع الاستثناء الذي ترميه Aspose عندما تحاول ترك العنوان معزولاً. في النهاية ستحصل على نمط ثابت يمكنك إدراجه في أي مشروع .NET يستخدم Aspose.Cells. + +--- + +## ما الذي ستحتاجه + +- **Aspose.Cells for .NET** (الإصدار 23.12 أو أحدث) – المكتبة التي تتيح لك العمل مع ملفات Excel دون الحاجة إلى تثبيت Office. +- بيئة تطوير C# أساسية (Visual Studio، Rider، أو سطر أوامر `dotnet`). +- ملف Excel (`TableWithHeader.xlsx`) يحتوي على جدول **ListObject** واحد على الأقل مع صف عنوان في الصف الأول. + +لا توجد حزم NuGet إضافية مطلوبة بخلاف Aspose.Cells. + +--- + +## الخطوة 1: تحميل المصنف واسترجاع أول جدول + +أول شيء عليك فعله هو فتح المصنف والحصول على الجدول الذي تريد تعديلّه. هنا يأتي دور الكلمة المفتاحية الثانوية **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**لماذا هذا مهم:** +- `Workbook` يقرأ الملف دون الحاجة إلى وجود Excel. +- `worksheet.ListObjects[0]` هي أبسط طريقة لـ **retrieve first table**؛ إذا كان لديك جداول متعددة يمكنك التكرار أو استخدام اسم الجدول. + +> **نصيحة محترف:** إذا لم تكن متأكدًا ما إذا كانت ورقة العمل تحتوي فعلاً على جدول، تحقق أولاً من `worksheet.ListObjects.Count` لتجنب استثناء `IndexOutOfRangeException`. + +--- + +## الخطوة 2: حماية صف العنوان أثناء حذف الصفوف + +الآن يأتي جوهر الموضوع: **aspose cells delete rows** دون مسح العنوان. طريقة `DeleteRows` في Aspose تأخذ فهرسًا يبدأ من الصفر وعددًا. محاولة حذف العنوان (الصف 0) تُحدث استثناءً، وهذا ما نريد تجنبه. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**شرح المنطق:** + +| الخطوة | السبب | +|--------|-------| +| `table.DeleteRows(1, 2);` | الفهرس 1 يشير إلى **الصف الثاني** (أول صف بيانات). حذف صفين يزيل الصفوف 2‑3 وفقًا لتسمية Excel، مع ترك العنوان (الصف 1) دون تغيير. | +| `catch (Exception ex)` | Aspose يرمي استثناءً **فقط** عندما تكون العملية ستحيد العنوان. التقاطه يتيح لك تسجيل رسالة ودية بدلاً من تعطل التطبيق. | +| `Save` | حفظ التغييرات يتيح لك فتح `Result.xlsx` ورؤية أن العنوان لا يزال موجودًا. | + +> **ماذا لو كنت بحاجة فعلًا لحذف العنوان؟** +> استخدم `table.ShowHeaders = false;` قبل الحذف، أو احذف الجدول بالكامل وأعد إنشائه. لكن في معظم السيناريوهات التجارية ستحرص على **protect header row**. + +--- + +## الخطوة 3: التحقق من النتيجة – المخرجات المتوقعة + +بعد تشغيل البرنامج، افتح `Result.xlsx`. يجب أن ترى: + +- الصف الأول لا يزال يحتوي على عناوين الأعمدة الأصلية. +- الصفوف 2‑3 (التي استهدفناها) اختفت، وتم تحريك البيانات المتبقية للأعلى. + +ستظهر الرسالة في وحدة التحكم: + +``` +Rows deleted successfully. +``` + +إذا حاولت حذف العنوان عن طريق الخطأ (مثلاً `table.DeleteRows(0, 1);`)، ستكون النتيجة: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +تؤكد هذه الرسالة أن الحماية المدمجة في Aspose تقوم بعملها. + +--- + +## الخطوة 4: طرق بديلة لـ **Delete Excel Table Rows** + +أحيانًا تحتاج إلى تحكم أكبر—مثل حذف الصفوف بناءً على شرط، أو إزالة صفوف غير متجاورة. إليك نمطين سريعين يحافظان على سلامة العنوان. + +### 4.1 حذف الصفوف عبر تصفية البيانات + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 حذف جماعي باستخدام نطاق + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +كلا المقتطفين يحترمان قاعدة **protect header row** لأن الفهرس الابتدائي لا ينزل أبداً إلى أقل من 1. + +--- + +## الخطوة 5: الأخطاء الشائعة وكيفية تجنّبها + +| المشكلة | السبب | الحل | +|----------|-------|------| +| حذف العنوان عن طريق الخطأ | استخدام `0` كفهرس بداية | ابدأ دائمًا بـ `1` للصفوف البيانات، أو تحقق من `table.ShowHeaders` أولاً. | +| `IndexOutOfRangeException` عندما لا تحتوي الورقة على جداول | افتراض وجود جدول | تحقق من `worksheet.ListObjects.Count > 0` قبل الوصول إلى `[0]`. | +| عدم حفظ التغييرات | نسيان استدعاء `Save` | استدعِ `workbook.Save` بعد التعديلات. | +| حذف الصفوف في الوسط يغيّر الفهارس، مما يسبب تخطي بعض الصفوف | التكرار من الأمام أثناء الحذف | تكرّر **عكسيًا** أو اجمع الصفوف للحذف أولاً. | + +--- + +## الخطوة 6: جمع كل شيء معًا – مثال كامل يعمل + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +شغّل هذا البرنامج، افتح `Result.xlsx` وسترى أن العنوان لم يتأثر بينما تم حذف الصفوف المحددة. هذا هو **الحل الكامل المتكامل** لـ **aspose cells delete rows** دون التضحية بالعنوان. + +--- + +## الخلاصة + +لقد أوضحنا كيف **aspose cells delete rows** مع **protect header row**، وكيف **retrieve first table**، وعدة طرق لحذف **excel table rows** بأمان. النقاط الأساسية هي: + +- ابدأ دائمًا الحذف من الفهرس 1 للحفاظ على العنوان. +- استخدم `try/catch` للتعامل مع استثناء الحماية المدمج في Aspose. +- تحقق من وجود الجدول قبل التنفيذ، وتكرّر عكسيًا عند حذف الصفوف شرطياً. + +هل أنت مستعد للارتقاء؟ جرّب دمج هذا النهج مع واجهات **Aspose Cells** لتنسيق الصفوف المحذوفة قبل إزالتها، أو أتمتة العملية عبر عدة أوراق عمل. الاحتمالات لا حصر لها، والآن لديك نمط موثوق لتبنيه. + +إذا وجدت هذا الدرس مفيدًا، اضغط إعجاب، شاركه مع زملائك، أو اترك تعليقًا بحلولك الخاصة للحالات الخاصة. Happy coding! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/arabic/net/saving-and-exporting-excel-files-with-options/_index.md index e9b4f1aa91..9fb5acc3ac 100644 --- a/cells/arabic/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/arabic/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ تعرف على كيفية تحديد خصائص المستند مثل الإصدار والمؤلف والعنوان في ملف Excel برمجيًا باستخدام Aspose.Cells for .NET مع إرشادات خطوة بخطوة. ### [قص الصفوف والأعمدة الفارغة أثناء التصدير](./trimming-leading-blank-rows-and-columns/) بسّط تصدير ملفات CSV لديك بقص الصفوف والأعمدة الفارغة في البداية باستخدام Aspose.Cells لـ .NET. بيانات نظيفة على بُعد خطوات قليلة. +### [كيفية حفظ مصنف Excel في C# – دليل كامل لأتمتة Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +تعلم خطوة بخطوة كيفية حفظ مصنف Excel باستخدام C# مع دليل شامل لأتمتة Excel عبر Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/arabic/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..c6df694d99 --- /dev/null +++ b/cells/arabic/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: كيفية حفظ المصنف في C# باستخدام Aspose.Cells — دليل خطوة بخطوة يغطي كيفية + تحميل ملف Excel، إنشاء ورقة، إعادة استخدام الورقة، وإنشاء تقرير. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: ar +og_description: كيفية حفظ دفتر العمل في C# باستخدام Aspose.Cells. تعلم كيفية تحميل + Excel، إنشاء ورقة، إعادة استخدام الورقة، وإنشاء تقرير في دليل واحد. +og_title: كيفية حفظ المصنف في C# – دليل شامل لأتمتة Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: كيفية حفظ المصنف في C# – دليل كامل لأتمتة Excel +url: /ar/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية حفظ دفتر العمل في C# – دليل كامل لأتمتة Excel + +هل تساءلت يومًا **كيفية حفظ دفتر العمل** في C# بعد معالجة بعض البيانات؟ لست وحدك. يواجه معظم المطورين عقبة عندما يبدو التقرير مثاليًا على الشاشة لكنه يرفض الكتابة إلى القرص. في هذا الدرس سنستعرض مثالًا كاملاً لا يوضح لك فقط **كيفية حفظ دفتر العمل**، بل يغطي أيضًا **كيفية تحميل Excel**، **كيفية إنشاء ورقة**، **كيفية إعادة استخدام ورقة**، و **كيفية إنشاء تقرير** — كل ذلك باستخدام Aspose.Cells. + +تخيلها كدردشة خلال استراحة القهوة حيث أخرج الشيفرة من حاسوبي وأشرح كل سطر. في النهاية ستحصل على برنامج قابل للتنفيذ يحمل قالبًا، يحقن البيانات عبر SmartMarker، يعيد استخدام اسم ورقة التفاصيل الموجودة، وأخيرًا يكتب الملف إلى مجلدك. لا أسرار، فقط خطوات واضحة يمكنك نسخها ولصقها. + +## ما ستحتاجه + +- **Aspose.Cells for .NET** (أحدث نسخة حتى 2026). يمكنك الحصول عليه من NuGet باستخدام `Install-Package Aspose.Cells`. +- بيئة تطوير .NET (Visual Studio، Rider، أو VS Code مع امتداد C# تعمل بشكل جيد). +- ملف قالب Excel أساسي اسمه `MasterTemplate.xlsx` موجود في مجلد تتحكم فيه. +- معرفة أساسية بـ C# — إذا كتبت `Console.WriteLine` من قبل، فأنت جاهز. + +> **نصيحة احترافية:** احتفظ بالقالب في مجلد *Resources* منفصل وضع علامة “Copy if newer” حتى يبقى المسار ثابتًا عبر عمليات البناء. + +الآن، دعنا نغوص في الشيفرة. + +## الخطوة 1: كيفية تحميل Excel – فتح دفتر القالب + +أول شيء عليك فعله هو جلب دفتر العمل إلى الذاكرة. تجعل Aspose.Cells ذلك بسطر واحد، لكن فهم السبب يساعد عندما تحتاج إلى استكشاف الأخطاء لاحقًا. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **لماذا هذا مهم:** تحميل دفتر العمل يمنحك الوصول إلى كل ورقة عمل، نمط، ونطاق مسمى داخل القالب. إذا لم يُعثر على الملف، ترمي Aspose استثناء `FileNotFoundException`، لذا تحقق من المسار مرة أخرى. +- **حالة خاصة:** إذا كان القالب محميًا بكلمة مرور، مرّر كلمة المرور إلى مُنشئ `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## الخطوة 2: كيفية إعادة استخدام ورقة – تكوين خيارات SmartMarker + +يمكن لـ SmartMarker إنشاء ورقة تفاصيل جديدة تلقائيًا، لكن قد يكون لديك بالفعل ورقة باسم **Detail**. لتجنب التعارض نخبر المعالج بإعادة استخدام هذا الاسم. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **لماذا هذا مهم:** بدون هذا الخيار، ستضيف Aspose لاحقة رقمية (مثل “Detail1”) مما قد يكسر الماكرو أو الصيغ التي تتوقع اسم ورقة ثابت. +- **ماذا لو لم تكن الورقة موجودة؟** ستقوم Aspose بإنشائها لك — لذا يعمل نفس الكود سواء كانت الورقة موجودة أم لا. + +## الخطوة 3: كيفية إنشاء ورقة – إعداد مصدر البيانات + +على الرغم من أننا لا نضيف ورقة يدويًا هنا، فإن البيانات التي تزود بها SmartMarker تحدد ما إذا تم إنشاء ورقة جديدة. لننشئ كائنًا مجهولًا بسيطًا يحاكي قائمة طلبات. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **لماذا هذا مهم:** يقوم SmartMarker بمسح القالب للعثور على العلامات مثل `&=Header` و `&=Items.Id`. يجب أن يتطابق هيكل `orderData` مع تلك العلامات تمامًا، وإلا سيتجاهل المعالجها صامتًا. +- **تنويع:** إذا كنت تجلب البيانات من قاعدة بيانات، استبدل النوع المجهول بقائمة من DTOs أو `DataTable`. المعالج يتعامل مع كلاهما. + +## الخطوة 4: كيفية إنشاء التقرير – معالجة SmartMarker + +الآن نربط البيانات بالقالب. يتجول المعالج عبر أول ورقة عمل، يستبدل العلامات، ويُنشئ ورقة التفاصيل. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **لماذا هذا مهم:** هذا السطر الواحد يقوم بالعمل الشاق — تعبئة الرأس، التكرار على `Items`، واحترام `DetailSheetNewName` الذي حددناه مسبقًا. +- **سؤال شائع:** *ماذا لو كان لدي عدة أوراق عمل تحتوي على علامات؟* قم بالتكرار عبر كل ورقة عمل واستدعِ `SmartMarkerProcessor.Process` بشكل منفصل. + +## الخطوة 5: كيفية حفظ دفتر العمل – حفظ الملف الناتج + +أخيرًا، نكتب دفتر العمل المعدل مرة أخرى إلى القرص. هذه هي اللحظة التي يصبح فيها **كيفية حفظ دفتر العمل** ملموسًا. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **لماذا هذا مهم:** طريقة `Save` تدعم صيغًا متعددة (`.xlsx`، `.xls`، `.csv`، `.pdf`، إلخ). بشكل افتراضي تكتب ملف Excel، لكن يمكنك تمرير كائن `SaveOptions` لتغيير النتيجة. +- **حالة خاصة:** إذا كان الملف المستهدف مفتوحًا في Excel، فإن `Save` يرمي استثناء `IOException`. تأكد من إغلاق أي نسخ أو استخدم اسم ملف فريد في كل تشغيل. + +![مثال على كيفية حفظ دفتر العمل في C#](/images/how-to-save-workbook-csharp.png "كيفية حفظ دفتر العمل في C# – نظرة بصرية على العملية") + +### مثال كامل يعمل + +بجمع كل شيء معًا، إليك تطبيق console مستقل يمكنك تجميعه وتشغيله: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**الناتج المتوقع:** بعد التشغيل، ستجد `SmartMarkerWithDupDetail.xlsx` في `YOUR_DIRECTORY`. افتحه ويجب أن ترى: + +- العنوان الأصلي مُعبأ بـ “Orders”. +- ورقة جديدة (أو مُعاد استخدامها) باسم **Detail** تحتوي على صفين: `Id=1, Qty=5` و `Id=2, Qty=3`. + +إذا كانت ورقة **Detail** موجودة بالفعل، فسيتم استبدال محتواها بالبيانات الجديدة — لا أوراق إضافية تملأ ملفك. + +## الأسئلة المتكررة (FAQ) + +| السؤال | الجواب | +|----------|--------| +| *هل يمكنني الحفظ إلى PDF بدلاً من XLSX؟* | نعم. استبدل `workbook.Save("file.xlsx")` بـ `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *ماذا لو كان القالب يحتوي على أقسام SmartMarker متعددة؟* | استدعِ `SmartMarkerProcessor.Process` على كل ورقة عمل تحتوي على علامات، أو مرّر مجموعة من كائنات البيانات التي تتطابق مع كل قسم. | +| *هل هناك طريقة لإضافة بيانات بدلاً من استبدال ورقة Detail؟* | استخدم `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (متاح في إصدارات Aspose الأحدث). | +| *هل يجب إغلاق (dispose) الـ Workbook؟* | فئة `Workbook` تنفذ `IDisposable`. ضعها داخل كتلة `using` لإدارة الموارد بشكل نظيف. | + +## الخلاصة + +لقد غطينا للتو **كيفية حفظ دفتر العمل** في C# من البداية إلى النهاية، موضحين كامل سير العمل: **كيفية تحميل Excel**، **كيفية إنشاء ورقة** (ضمنيًا عبر SmartMarker)، **كيفية إعادة استخدام ورقة**، و **كيفية إنشاء تقرير**. الشيفرة جاهزة للإدراج في أي مشروع .NET، والتوضيحات ستمنحك السياق الكافي لتكييفها مع سيناريوهات أكثر تعقيدًا — مثل تقارير متعددة الأوراق، التنسيق الشرطي، أو التصدير إلى PDF. + +هل أنت مستعد للتحدي التالي؟ جرّب إضافة مخطط يوضح كميات الطلبات، أو غيّر صيغة الإخراج إلى CSV للمعالجة اللاحقة. المبادئ نفسها — التحميل، المعالجة، والحفظ — لا تزال سارية، لذا ستجد نفسك تعيد استخدام هذا النمط في العديد من مهام التقارير. + +إذا واجهت أي مشكلة أو لديك أفكار لتوسعات، لا تتردد بترك تعليق. برمجة سعيدة، واستمتع بتجربة سلسة حيث يمكنك أخيرًا **حفظ دفتر العمل** بالطريقة التي تحتاجها! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/smart-markers-dynamic-data/_index.md b/cells/arabic/net/smart-markers-dynamic-data/_index.md index 3e5c310eeb..866bcf869d 100644 --- a/cells/arabic/net/smart-markers-dynamic-data/_index.md +++ b/cells/arabic/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ قم بإطلاق العنان لإمكانيات إعداد التقارير في Excel باستخدام Aspose.Cells من خلال التعامل مع الكائنات المتداخلة بسهولة باستخدام Smart Markers في دليل خطوة بخطوة. ### [تنفيذ مصفوفة متغيرة باستخدام العلامات الذكية Aspose.Cells](./variable-array-smart-markers/) استغل قوة Aspose.Cells. تعلّم كيفية تنفيذ مصفوفات المتغيرات باستخدام Smart Markers خطوة بخطوة لإنشاء تقارير Excel بسلاسة. +### [كيفية إنشاء تقرير Excel في C# – دليل كامل باستخدام SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +تعلم خطوة بخطوة كيفية إنشاء تقارير Excel باستخدام C# وSmartMarker في Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/arabic/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..1a7aae6805 --- /dev/null +++ b/cells/arabic/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-03-22 +description: كيفية إنشاء تقرير Excel في C# باستخدام قالب رئيس‑تفصيلي. تعلم كيفية تعبئة + قالب Excel في C# بسرعة، باستخدام SmartMarker للأوراق القابلة للتكرار. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: ar +og_description: كيفية إنشاء تقرير إكسل في C# باستخدام قالب قابل لإعادة الاستخدام. + يوضح لك هذا الدليل خطوة بخطوة كيفية تعبئة قالب إكسل في C# ببيانات رئيسية وتفصيلية. +og_title: كيفية إنشاء تقرير إكسل في C# – دليل SmartMarker الكامل +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: كيفية إنشاء تقرير إكسل في C# – دليل كامل باستخدام SmartMarker +url: /ar/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء تقرير Excel في C# – دليل كامل باستخدام SmartMarker + +هل تساءلت يومًا **how to generate Excel report** في C# دون كتابة كود لا نهائي خلية‑ب‑خلية؟ لست وحدك. معظم المطورين يصطدمون بحائط عندما يحتاجون إلى تقرير متعدد الأوراق مصقول يعكس علاقات master‑detail — فكر في الطلبات وبنودها — لكنهم لا يريدون إعادة اختراع العجلة في كل مرة. + +الخبر السار؟ باستخدام قالب Excel جاهز ومحرك **SmartMarker** من Aspose.Cells، يمكنك **populate Excel template C#** ببضع أسطر فقط. في هذا الدرس سنستعرض سيناريو واقعي، نشرح لماذا كل خطوة مهمة، ونقدم لك مثالًا كاملاً قابلاً للتنفيذ يمكنك نسخه‑ولصقه اليوم. + +> **ما ستحصل عليه:** تقرير Excel master‑detail حيث تنشئ كل طلب ورقة عمل خاصة به، كل ذلك مدفوع بأجسام C# بسيطة. لا حلقات يدوية على الخلايا، لا صيغ هشة — فقط كود نظيف وقابل للصيانة. + +--- + +## المتطلبات المسبقة + +قبل أن نبدأ، تأكد من وجود ما يلي: + +- **.NET 6.0** (أو أحدث) مثبت — الكود يستهدف .NET 6 لكنه يعمل أيضًا على .NET Framework 4.7+. +- حزمة NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`) — توفر الفئات `Workbook`، `SmartMarkerProcessor`، وغيرها. +- ملف Excel اسمه **MasterDetailTemplate.xlsx** موجود في `YOUR_DIRECTORY`. يجب أن يحتوي على كتلة SmartMarker مثل `{{Orders.OrderId}}` في الورقة الأولى وكتلة متداخلة `{{Orders.Items.Prod}}` لبنود الخط. +- فهم أساسي لأنواع C# المجهولة — سنستخدمها لنمذجة الطلبات والبنود. + +إذا كان أي من هذه غير مألوف لك، لا تقلق. سنذكر بدائل (مثل استخدام EPPlus) لاحقًا، لكن المفهوم الأساسي يبقى نفسه. + +--- + +## الخطوة 1: تحميل قالب Excel الذي يحتوي على كتل SmartMarker + +أول شيء نفعله هو فتح ملف القالب. فكر في القالب كهيكل عظمي؛ سيقوم SmartMarker لاحقًا بملئه بالبيانات الحقيقية. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**لماذا هذا مهم:** بفصل التخطيط (القالب) عن البيانات (كائنات C#)، تبقي المصممين سعداء والمطورين سعداء. يمكن للمصممين تعديل الخطوط، الألوان، أو الصيغ دون لمس الكود. + +--- + +## الخطوة 2: بناء مصدر البيانات Master‑Detail + +بعد ذلك، ننشئ البيانات التي ستملى القالب. لتقرير طلبات نموذجي، لديك مجموعة من الطلبات، كل طلب يحتوي على مجموعة من البنود. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **نصيحة احترافية:** استخدم فئات ذات نوع قوي بدلاً من الأنواع المجهولة إذا كنت تحتاج لإعادة الاستخدام عبر تقارير متعددة. النهج المجهول يبقي المثال مختصرًا. + +**لماذا هذا مهم:** يعمل SmartMarker عن طريق مطابقة أسماء الخصائص (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) مع العلامات النائبة في القالب. يجب أن يتطابق الهيكل تمامًا، وإلا سيتخطى المحرك تلك الأقسام. + +--- + +## الخطوة 3: إخبار SmartMarker بإنشاء ورقة جديدة لكل سجل رئيسي + +بشكل افتراضي، يكتب SmartMarker جميع الصفوف في ورقة واحدة. نريد كل طلب في ورقة عمل خاصة به، وهو مثالي للطباعة أو إرسال ملفات PDF لكل طلب لاحقًا. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**لماذا هذا مهم:** `EnableRepeatingSheet` يلغي الحاجة إلى استنساخ الورقة يدويًا. يقوم المحرك بنسخ الورقة الأصلية، يحقن بيانات الطلب، ويعيد تسمية الورقة تلقائيًا (عادةً باستخدام قيمة العمود الأول). + +--- + +## الخطوة 4: معالجة القالب ببياناتك + +الآن نربط كل شيء معًا. `SmartMarkerProcessor` يتجول في المصنف، يستبدل العلامات، وينشئ أوراقًا جديدة حسب التعليمات. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**لماذا هذا مهم:** هذا السطر الواحد يقوم بالعمل الشاق — تحليل القالب، التكرار عبر المجموعات، ومعالجة الجداول المتداخلة. إنه قلب عملية **populate Excel template C#** بدون أي حلقات يدوية. + +--- + +## الخطوة 5: حفظ التقرير النهائي + +أخيرًا، اكتب المصنف المملوء إلى القرص. يمكنك أيضًا بثه مباشرةً إلى استجابة HTTP لتطبيقات الويب. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**لماذا هذا مهم:** حفظ الملف يمنحك قطعة ملموسة يمكنك فتحها في Excel، مشاركتها مع أصحاب المصلحة، أو تمريرها إلى عمليات لاحقة مثل تحويل PDF. + +--- + +## مثال كامل يعمل (جاهز للنسخ‑اللصق) + +فيما يلي البرنامج الكامل، بما في ذلك توجيهات `using` وطريقة `Main`. ضعها في تطبيق Console، عدل مسارات الملفات، وشغّلها. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### النتيجة المتوقعة + +عند فتح `MasterDetailResult.xlsx` ستلاحظ: + +- **ورقة “Order_1”** — تحتوي على رأس الطلب 1 وصفين للمنتجين A و B. +- **ورقة “Order_2”** — تحتوي على رأس الطلب 2 وصف واحد للمنتج C. +- جميع الصيغ، التنسيقات، والرسوم البيانية من القالب الأصلي محفوظة. + +![تقرير Excel مع أوراق منفصلة لكل طلب – مثال على مصنف مكتمل](/images/excel-report-example.png "تقرير Excel مولد ببيانات master‑detail") + +*نص بديل للصورة: تقرير Excel مولد ببيانات master‑detail مع أوراق منفصلة لكل طلب، يوضح كيفية إنشاء تقرير Excel باستخدام C# و SmartMarker.* + +--- + +## أسئلة شائعة وحالات خاصة + +### ماذا لو أحتاج إلى ورقة ثابتة (مثل ملخص) إلى جانب الأوراق المتكررة؟ + +قم بتعيين `EnableRepeatingSheet = true` **فقط** على الورقة التي تحتوي على كتلة الـ master. الأوراق الأخرى ستبقى دون تعديل، لذا يمكنك الاحتفاظ بصفحة ملخص في القالب الأصلي. + +### هل يمكنني استخدام DataTable بدلاً من الكائنات المجهولة؟ + +بالتأكيد. يعمل SmartMarker مع أي كائن يطبق `IEnumerable`. فقط استبدل النوع المجهول بـ `DataTable` وتأكد من أن أسماء الأعمدة تتطابق مع العلامات. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### كيف أغيّر نمط تسمية الأوراق التي تم إنشاؤها؟ + +نفّذ واجهة `ISmartMarkerSheetNaming` مخصصة (أو عدل `workbook.Worksheets` بعد المعالجة). معظم المطورين يعيدون تسمية الأوراق بناءً على قيمة خلية: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### ماذا لو كان القالب يستخدم صيغة عنصر نائب مختلفة؟ + +يسمح SmartMarker بتخصيص الفواصل عبر `SmartMarkerOptions`. على سبيل المثال، لاستخدام `<< >>` بدلاً من `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## نصائح لتوسيع هذا النهج + +- **قم بتخزين القالب في الذاكرة** إذا كنت تولد تقارير كثيرة لكل طلب؛ التحميل من القرص في كل مرة يضيف زمن استجابة. +- **اجمعه مع تحويل PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) للحصول على مخرجات صديقة للبريد الإلكتروني. +- **اجعل مسارات الملفات قابلة للمعايرة** باستخدام ملفات إعداد أو متغيرات بيئية لجعل الحل قابلًا للنقل بين بيئات التطوير، الاختبار، والإنتاج. +- **اختبر طبقة البيانات** بشكل منفصل؛ SmartMarker نفسه حتمي، لذا تحتاج فقط إلى التحقق من أن البيانات التي تزودها تتطابق مع المخطط المتوقع. + +--- + +## الخلاصة + +لقد غطينا **how to generate Excel report** في C# من البداية إلى النهاية، بدءًا من تحميل قالب SmartMarker إلى حفظ مصنف متعدد الأوراق يعكس علاقات master‑detail. عبر **populate Excel template C#** ببضع أسطر من الكود، تتجنب المنطق الهش الخلية‑ب‑خلية وتمنح المصممين حرية تشكيل المظهر النهائي. + +الخطوات التالية قد تشمل: + +- استخدام **populate Excel template C#** مع رسوم بيانية تتحدث تلقائيًا لكل ورقة. +- دمج **excel smartmarker c#** مع ASP.NET Core لبث التقارير مباشرةً إلى المتصفحات. +- أتمتة خطوط **c# excel automation** التي تسحب البيانات من APIs أو قواعد البيانات. + +جرّبها، عدّل القالب، وشاهد كيف يمكنك تحويل البيانات الخام إلى تقرير Excel مصقول بسرعة. هل لديك أسئلة أو حالة استخدام مميزة؟ اترك تعليقًا أدناه — happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/arabic/net/tables-and-lists/_index.md b/cells/arabic/net/tables-and-lists/_index.md index 0129f2e4f0..43b3cea524 100644 --- a/cells/arabic/net/tables-and-lists/_index.md +++ b/cells/arabic/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ استغل إمكانيات Aspose.Cells لـ .NET. تعلّم قراءة وكتابة الجداول باستخدام مصادر بيانات الاستعلام في هذا الدليل المفصل خطوة بخطوة. ### [تعيين تعليق على جدول أو قائمة في Excel](./setting-comment-of-table-or-list/) تعرف على كيفية تعيين التعليقات للجداول في Excel باستخدام Aspose.Cells for .NET من خلال دليلنا السهل خطوة بخطوة. +### [إنشاء جدول Excel في C# – دليل خطوة بخطوة](./create-excel-table-in-c-step-by-step-guide/) +تعلم كيفية إنشاء جدول Excel باستخدام C# مع إرشادات مفصلة خطوة بخطوة باستخدام Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/arabic/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/arabic/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..739e7a2586 --- /dev/null +++ b/cells/arabic/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-22 +description: إنشاء جدول Excel في C# بسرعة. تعلم كيفية إضافة جدول، تحديد نطاق الجدول، + إخفاء رأس الجدول، وتعطيل مرشح الجدول مع مثال كامل للشفرة. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: ar +og_description: إنشاء جدول Excel في C# مع مثال واضح. تعلم كيفية إضافة جدول، تعريف + نطاق الجدول، إخفاء رأس الجدول، وتعطيل الفلتر في بضع أسطر فقط. +og_title: إنشاء جدول إكسل في C# – دليل برمجي شامل +tags: +- Aspose.Cells +- C# +- Excel Automation +title: إنشاء جدول Excel في C# – دليل خطوة بخطوة +url: /ar/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء جدول Excel في C# – دليل خطوة‑بخطوة + +هل احتجت يوماً إلى **إنشاء جدول Excel** برمجياً باستخدام C#؟ يمكن أن يكون إنشاء جدول Excel سهلًا عندما تعرف الخطوات الصحيحة. في هذا الدرس سنستعرض مثالًا كاملاً وقابلًا للتنفيذ يوضح **كيفية إضافة جدول**، **تحديد نطاق الجدول**، **إخفاء رأس الجدول**، وحتى **تعطيل مرشح الجدول** – كل ذلك دون مغادرة بيئة التطوير المتكاملة الخاصة بك. + +إذا واجهت يومًا مشكلة ظهور واجهة AutoFilter عندما لا تريدها، فأنت في المكان المناسب. بنهاية هذا الدليل ستحصل على مقطع شفرة جاهز للتنفيذ ينتج مصنفًا نظيفًا باسم *TableNoFilter.xlsx* وستفهم لماذا كل سطر مهم. + +## ما ستتعلمه + +- كيفية **إنشاء جدول Excel** من الصفر باستخدام Aspose.Cells. +- الصياغة الدقيقة **لتحديد نطاق الجدول** (A1:D5 في مثالنا). +- كيفية تمكين صف الرأس بحيث تظهر واجهة الفلتر المدمجة. +- الحيلة **لإخفاء رأس الجدول** و**تعطيل مرشح الجدول** عندما لا تحتاجهما بعد الآن. +- برنامج C# كامل جاهز للنسخ واللصق يمكنك تشغيله اليوم. + +### المتطلبات المسبقة + +- .NET 6.0 أو أحدث (تعمل الشفرة أيضًا مع .NET Framework 4.7+). +- Aspose.Cells for .NET مثبت عبر NuGet (`Install-Package Aspose.Cells`). +- إلمام أساسي بـ C# و Visual Studio (أو أي بيئة تطوير تفضلها). + +--- + +## الخطوة 1: إعداد المشروع واستيراد المساحات الاسمية + +قبل أن تتمكن من **إنشاء جدول Excel**، تحتاج إلى مشروع Console ي引用 Aspose.Cells. افتح الطرفية وشغّل: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +الآن افتح *Program.cs* وأضف عبارات `using` المطلوبة: + +```csharp +using System; +using Aspose.Cells; +``` + +هذه الاستيرادات تمنحك الوصول إلى الفئات `Workbook`، `Worksheet`، `CellArea`، و `ListObject` التي تشغل بقية الدرس. + +## الخطوة 2: تهيئة مصنف جديد والحصول على الورقة الأولى + +إنشاء مصنف جديد هو الخطوة المنطقية الأولى. فكر في المصنف كحاوية ملف Excel، والورقة كصفحة فردية سنضع فيها جدولنا. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **لماذا هذا مهم:** يبدأ `Workbook` الجديد بورقة واحدة فارغة. بسحب `Worksheets[0]` نضمن أننا نعمل على الورقة الافتراضية دون الحاجة لإنشاء واحدة يدويًا. + +## الخطوة 3: تحديد نطاق الجدول (A1:D5) + +في مصطلحات Excel، *الجدول* يعيش داخل كتلة مستطيلة من الخلايا. تسمح لك بنية `CellArea` بتحديد تلك الكتلة. هنا سنغطي **تحديد نطاق الجدول** للخلايا من A1 إلى D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **نصيحة:** إذا احتجت نطاقًا ديناميكيًا، يمكنك حساب `endRow` و `endColumn` بناءً على طول البيانات. الفهرسة التي تبدأ من الصفر هي مصدر شائع لأخطاء الإزاحة، لذا تحقق من أرقامك جيدًا. + +## الخطوة 4: إضافة الجدول وتمكين صف الرأس + +الآن يأتي جوهر الدرس: **كيفية إضافة جدول** إلى الورقة. مجموعة `ListObjects` تتعامل مع الجداول، وتعيين `ShowHeaders = true` يضيف تلقائيًا واجهة AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **شرح:** +> - `Add(tableRange, true)` ينشئ `ListObject` جديد (أي جدول Excel) داخل النطاق المحدد. +> - العلامة `true` تخبر Aspose.Cells بأن الصف الأول من النطاق يجب أن يُعامل كرأس. +> - ضبط `ShowHeaders` على `true` يجعل الرأس مرئيًا ويفعل واجهة الفلتر المدمجة. + +في هذه المرحلة، إذا فتحت المصنف المُنشأ، سترى جدولًا منسقًا بشكل جميل مع أسهم الفلتر على كل رأس عمود. + +## الخطوة 5: إخفاء صف الرأس وتعطيل AutoFilter + +أحيانًا تريد البيانات بدون الفوضى البصرية. ربما تصدر تقريرًا نظيفًا لا تحتاج فيه إلى الفلاتر. إليك تقنية **إخفاء رأس الجدول** و**تعطيل مرشح الجدول**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **لماذا قد تفعل ذلك:** +> - `ShowHeaders = false` يزيل صف الرأس المرئي، محولًا الجدول إلى كتلة بيانات عادية. +> - ضبط `AutoFilter = null` يمسح كائن الفلتر المخفي، مما يضمن عدم بقاء أي منطق فلترة متبقٍ. هذا ما نعنيه بـ **تعطيل مرشح الجدول**. + +## الخطوة 6: حفظ المصنف على القرص + +أخيرًا، نكتب الملف إلى الموقع الذي تختاره. استبدل `"YOUR_DIRECTORY"` بمسار فعلي على جهازك. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +عند تشغيل البرنامج، يجب أن ترى: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +فتح الملف سيظهر ورقة تحتوي على كتلة البيانات (بدون رأس، بدون أسهم الفلتر). هذه هي الدورة الكاملة — من **إنشاء جدول Excel** إلى **تعطيل مرشح الجدول**. + +--- + +## مثال كامل جاهز للتنفيذ (نسخ‑لصق) + +فيما يلي البرنامج بالكامل، جاهز للترجمة. فقط استبدل مسار الدليل النائب بمسار صالح. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**النتيجة المتوقعة:** ملف باسم *TableNoFilter.xlsx* يحتوي على نطاق بيانات بسيط A1:D5 دون صف رأس مرئي ولا قوائم منسدلة للفلتر. + +--- + +## الأسئلة المتكررة والحالات الخاصة + +### ماذا لو احتجت جداول متعددة في نفس الورقة؟ + +ما عليك سوى تكرار **الخطوة 3** باستخدام `CellArea` جديد و`ListObject` جديد. كل جدول يحتفظ بإعدادات الرأس والفلتر الخاصة به، لذا يمكنك إخفاء أحدها وإبقاء الأخرى مرئية. + +### هل يمكنني تنسيق الجدول (صفوف متناوبة، ألوان) قبل إخفاء الرأس؟ + +بالطبع. تعرض `ListObject` خاصية `TableStyleType`. على سبيل المثال: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +يمكنك تطبيق النمط **قبل** إخفاء الرأس؛ سيبقى التنسيق البصري كما هو. + +### ماذا لو أردت الحفاظ على الرأس لكن إخفاء أسهم الفلتر فقط؟ + +اضبط `ShowHeaders = true` (للحفاظ على الصف) ثم امسح الفلتر: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +هذا يحقق مطلب **تعطيل مرشح الجدول** دون فقدان تسميات الأعمدة. + +### هل يعمل هذا مع ملفات .xlsx فقط؟ + +Aspose.Cells يكتشف الصيغة تلقائيًا بناءً على امتداد الملف الذي تمرره إلى `Save`. يمكنك أيضًا إخراج إلى `.xls`، `.csv`، أو حتى `.pdf` باستخدام امتداد مختلف. + +--- + +## الخاتمة + +لقد غطينا كل ما تحتاجه لت **إنشاء جدول Excel** في C# باستخدام Aspose.Cells، من **تحديد نطاق الجدول** إلى **إخفاء رأس الجدول** و**تعطيل مرشح الجدول**. الشفرة قصيرة، واضحة، وجاهزة للاستخدام في الإنتاج. + +بعد ذلك، قد تستكشف **كيفية إضافة جدول** ببيانات ديناميكية، تطبيق أنماط مخصصة، أو تصدير المصنف نفسه إلى PDF. كل هذه المواضيع تبني على الأساس الذي تعلمته الآن، لذا لا تتردد في التجربة وتكييف المقتطف مع مشاريعك الخاصة. + +هل لديك طريقة مبتكرة تريد مشاركتها؟ اترك تعليقًا أدناه، ونتمنى لك برمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/converting-excel-files-to-other-formats/_index.md b/cells/chinese/net/converting-excel-files-to-other-formats/_index.md index 70d87656b5..815a3fcdb2 100644 --- a/cells/chinese/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/chinese/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Aspose.Cells for .NET 简化了文档转换,允许开发人员自动化流程 学习如何在.NET中使用Aspose.Cells以编程方式将JSON转换为CSV。按照我们的分步指南,确保无缝数据转换。 ### [在.NET中以编程方式将Excel文件转换为PPTX](./converting-excel-file-to-pptx/) 通过本分步指南了解如何使用 Aspose.Cells for .NET 以编程方式将 Excel 文件转换为 PowerPoint 演示文稿 (PPTX)。 +### [在 .NET 中以 C# 完整指南将 Excel 导出为 PowerPoint](./export-excel-to-powerpoint-complete-c-guide/) +本教程提供完整的 C# 示例,演示如何使用 Aspose.Cells 将 Excel 工作表导出为 PowerPoint 演示文稿。 ### [在 .NET 中以编程方式在输出 HTML 中指定 HTML CrossType](./specifying-html-crosstype-in-output-html/) 学习如何在 Aspose.Cells for .NET 中指定 HTML CrossType。按照我们的分步教程,将 Excel 文件精确转换为 HTML。 ### [在 .NET 中以编程方式读取数字电子表格](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ Aspose.Cells for .NET 简化了文档转换,允许开发人员自动化流程 描述:在此详细教程中了解如何使用 Aspose.Cells for .NET 以编程方式跟踪文档转换进度。 ### [在 .NET 中以编程方式跟踪 TIFF 文档转换进度](./tracking-document-conversion-progress-for-tiff/) 通过我们的分步指南,学习如何使用 Aspose.Cells for .NET 以编程方式跟踪 TIFF 转换进度。提升您的文档管理技能。 +### [在 Excel 中设置打印区域并导出为 PowerPoint – 步骤指南](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +本教程演示如何在 Excel 中设置打印区域,然后将工作表导出为 PowerPoint 演示文稿。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/chinese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..fb027187ef --- /dev/null +++ b/cells/chinese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: 学习如何将 Excel 导出到 PowerPoint、设置 Excel 打印区域,并将 Excel 保存为 PPTX,且图表和 OLE 对象可编辑,只需几个步骤。 +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: zh +og_description: 快速将 Excel 导出到 PowerPoint。本教程展示如何设置 Excel 的打印区域,并将 Excel 保存为 PPTX,包含可编辑的图表和 + OLE 对象。 +og_title: 将 Excel 导出到 PowerPoint – 完整 C# 指南 +tags: +- Aspose.Cells +- C# +- Office Automation +title: 将 Excel 导出到 PowerPoint – 完整 C# 指南 +url: /zh/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 将 Excel 导出为 PowerPoint – 完整 C# 指南 + +需要 **将 Excel 导出为 PowerPoint** 吗?您来对地方了。无论是制作每周销售报告还是自动化报表流水线,将 Excel 工作表转换为 PowerPoint 幻灯片都能为您节省大量的复制粘贴时间。 + +在本教程中,我们将通过一个实战示例,演示如何 **export excel to powerpoint**,并展示如何 **set print area Excel** 与 **save excel as pptx**,使生成的幻灯片保持图表和 OLE 对象的完整可编辑性。完成后,您将拥有一个可直接运行的 C# 程序,能够生成专业外观的 `.pptx` 文件,无需任何手动操作。 + +## 您需要准备的环境 + +- **.NET 6+**(任意近期的 .NET 运行时均可;代码使用 C# 10 语法) +- **Aspose.Cells for .NET** – 实现导出的核心库。可通过 NuGet 获取(`Install-Package Aspose.Cells`)。 +- 包含至少一个图表和/或 OLE 对象的 Excel 工作簿(示例文件 `ChartAndOle.xlsx` 已在代码中使用)。 +- 您喜欢的 IDE(Visual Studio、Rider 或 VS Code – 随您选择)。 + +就这些。无需 COM 互操作,也不需要在服务器上安装 Office。 + +> **为什么要使用库?** +> 内置的 Office Interop 脆弱,需要服务器上安装 Office,并且在需要矢量、可编辑形状时常会生成光栅化图像。Aspose.Cells 负责繁重的工作,并保持 PowerPoint 中的一切可编辑。 + +--- + +## 第一步:加载 Excel 工作簿 + +首先将源文件加载到内存中。`Workbook` 类抽象了整个 Excel 文件,让我们可以访问工作表、图表和 OLE 对象。 + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**为什么这很重要:** 加载工作簿是整个流程的基石。如果路径错误或文件损坏,后续步骤将无法执行。`try…catch` 块可以提供友好的错误信息,而不是直接崩溃。 + +--- + +## 第二步:在 Excel 中设置打印区域 + +导出前,通常需要将输出限制在特定范围内。这时 **set print area excel** 就派上用场。通过定义打印区域,您告诉 Aspose.Cells 哪些单元格(以及关联的对象)应出现在幻灯片上。 + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **专业提示:** 如果工作簿中有多个工作表,请为每个需要导出的工作表重复设置 `PrintArea`。未设置打印区域将导出整张工作表,可能导致 PowerPoint 文件体积膨胀。 + +--- + +## 第三步:配置导出选项 – 保持图表和 OLE 可编辑 + +Aspose.Cells 提供了功能强大的 `ImageOrPrintOptions` 对象。通过切换 `ExportChartObjects` 与 `ExportOleObjects`,我们可以保留图表的矢量特性以及 OLE 对象的实时可编辑性(如嵌入的 Word 文档或 PDF)。 + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**内部机制是怎样的?** +当 `ExportChartObjects` 为 `true` 时,Aspose 会将图表转换为原生 PowerPoint 图表形状,保留系列、坐标轴和格式。启用 `ExportOleObjects` 后,嵌入对象会以 OLE 框的形式插入,双击即可在 PowerPoint 中打开原始应用程序(Word、Excel 等)进行编辑。 + +--- + +## 第四步:将工作表保存为可编辑的 PowerPoint 文件 + +现在把所有步骤串联起来。`Save` 方法使用我们配置好的选项写入 `.pptx` 文件。结果是一个幻灯片文稿,每个工作表对应一张幻灯片(如果打印区域跨多页,则会生成多张幻灯片)。 + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### 预期结果 + +- **文件位置:** `C:\MyProjects\EditableChartOle.pptx` +- **内容:** + - 一张幻灯片展示范围 `A1:H30`,与 Excel 中的显示完全一致。 + - 所有图表均为 PowerPoint 图表对象——点击柱形即可编辑数据。 + - OLE 对象(例如嵌入的 Word 文档)可以直接在幻灯片上打开并编辑。 + +在 PowerPoint 中打开该 PPTX,您应看到一张干净的幻灯片,所有组件均可编辑——没有光栅化的截图。 + +--- + +## 边缘情况与变体 + +### 多工作表 → 多幻灯片 +如果希望每个工作表生成独立的幻灯片,只需遍历 `workbook.Worksheets`,并使用针对特定工作表索引的 `SheetToImageOptions` 调用 `Save`。Aspose 会自动为每次循环生成新幻灯片。 + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### 大范围与性能 +导出巨大的打印区域(例如 `A1:Z1000`)会增加内存占用。为缓解此问题,可考虑: +- 将范围拆分为更小的块,分别导出为独立幻灯片。 +- 若出现 `OutOfMemoryException`,可通过 `WorkbookSettings` 提高 `MemorySetting`。 + +### 兼容性注意事项 +生成的 PPTX 与 PowerPoint 2016 及更高版本兼容。旧版本仍能打开文件,但可能会丢失部分高级图表功能。若要大范围分发,请在目标 Office 版本上进行测试。 + +--- + +## 完整可运行示例(复制粘贴即用) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **小技巧:** 将硬编码的路径替换为配置项或命令行参数,可让工具更具灵活性。 + +--- + +## 常见问题 + +**问:我可以只导出图表而不包含周围的单元格吗?** +答:可以。仅使用 `ExportChartObjects` 并将打印区域设置为图表的边界范围,图表将居中显示在幻灯片上。 + +**问:如果我的工作簿包含宏怎么办?** +答:Aspose.Cells 在导出时会忽略 VBA 宏。如果需要在 PowerPoint 中实现宏功能,必须使用 PowerPoint VBA 或插件自行实现。 + +**问:这在 Linux/macOS 上能运行吗?** +答:完全可以。Aspose.Cells 是纯 .NET 库,只要安装了 .NET 运行时,即可跨平台运行。 + +--- + +## 结论 + +您已经学会了如何 **export Excel to PowerPoint**,并精准地 **set print area excel** 与 **save excel as pptx**,实现图表和 OLE 对象的完整可编辑。关键步骤包括加载工作簿、定义打印区域、配置 `ImageOrPrintOptions`,以及最终保存 PPTX。 + +接下来您可以进一步探索: +- 将多个工作表导出到同一个文稿。 +- 编程方式为幻灯片添加自定义标题或备注。 +- 将 PPTX 转换为 PDF 以便分发(使用 `SaveFormat.Pdf`)。 + +尝试运行代码,调整打印区域,观察 Excel 数据如何神奇地出现在 PowerPoint 中——无需手动复制粘贴。如果遇到问题,请查阅 Aspose.Cells 文档或在下方留言。祝编码愉快! + +![导出 Excel 到 PowerPoint 工作流示意图](/images/export-excel-to-powerpoint.png "导出 Excel 到 PowerPoint 工作流") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/chinese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..95891afca0 --- /dev/null +++ b/cells/chinese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-22 +description: 在 Excel 中设置打印区域并将 Excel 转换为可编辑形状的 PowerPoint。学习如何重复标题行、从 Excel 创建 PowerPoint + 并将 Excel 导出为 pptx。 +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: zh +og_description: 在 Excel 中设置打印区域并将其转换为带可编辑形状的 PowerPoint 幻灯片。按照本完整指南重复标题行并将 Excel 导出为 + PPTX。 +og_title: 在Excel中设置打印区域 – 导出到PowerPoint教程 +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: 在Excel中设置打印区域并导出至PowerPoint – 步骤指南 +url: /zh/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 Excel 中设置打印区域并导出到 PowerPoint – 完整编程教程 + +是否曾需要在 Excel 工作表中**设置打印区域**,然后将该部分转换为 PowerPoint 幻灯片?你并非唯一有此需求的人。在许多报告流程中,同样的数据既要打印得美观,也需要出现在演示文稿中,通常会将第一行重复作为标题。好消息是,只需几行 C# 代码,你就可以**convert excel to powerpoint**,保持所有文本框可编辑,甚至可以自动**repeat title row**。 + +在本指南中,我们将逐步讲解你需要了解的所有内容:从配置打印区域到创建可直接在 PowerPoint 中编辑的 PPTX 文件。完成后,你将能够**create powerpoint from excel**,将结果**export excel to pptx**,并在任何 .NET 项目中复用相同的代码。没有魔法,只有清晰的步骤和完整的可运行示例。 + +## 你需要的条件 + +- **.NET 6.0** 或更高(该 API 也兼容 .NET Framework) +- **Aspose.Cells for .NET**(提供 `Workbook`、`ImageOrPrintOptions` 等类的库) +- 基本的 C# IDE(Visual Studio、Rider 或带有 C# 扩展的 VS Code) +- 包含要导出数据的 Excel 文件(`input.xlsx`) + +就是这样——除 Aspose.Cells 外无需额外的 NuGet 包。如果你尚未添加该库,请运行: + +```bash +dotnet add package Aspose.Cells +``` + +现在我们可以开始了。 + +## 步骤 1:加载工作簿 – 导出的起点 + +首先需要做的是加载包含你想转换为幻灯片的工作表的工作簿。可以把工作簿视为源文档;没有它,其他操作都无从谈起。 + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**为什么重要:** 加载工作簿后,你才能访问工作表集合、页面设置选项以及导出引擎。如果跳过此步骤,将无法设置**print area**或重复任何行。 + +> **小贴士:** 测试时使用绝对路径,随后在生产环境切换为相对路径或基于配置的路径。 + +## 步骤 2:配置导出选项 – 保持文本框和形状可编辑 + +导出到 PowerPoint 时,你可能希望生成的幻灯片是可编辑的。Aspose.Cells 通过 `ImageOrPrintOptions` 让你可以控制此行为。将 `ExportTextBoxes` 和 `ExportShapeObjects` 设置为 `true`,即可指示库将这些对象保留为原生 PowerPoint 元素,而不是将其展平为图像。 + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**为什么重要:** 如果你需要**convert excel to powerpoint**并随后手动微调幻灯片,此设置可免去从头重新创建文本框的工作。它还确保任何形状(如箭头或图表)保持为可缩放的矢量对象。 + +## 步骤 3:设置打印区域并重复标题行 + +现在进入本教程的核心:**set print area** 并让第一行在每个打印页(或在本例中导出的幻灯片)上重复。打印区域告诉 Excel 哪些单元格需要打印——在我们的场景中即导出。 + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**为什么重要:** 将导出范围限制在 `A1:G20` 可避免拉取大量空白区域,从而加快转换速度并保持幻灯片整洁。`PrintTitleRows` 行使第一行充当标题——这正是你在演示中**repeat title row**时所需要的。 + +> **特殊情况:** 如果数据从第 2 行开始,请相应调整范围(例如 `PrintTitleRows = "$2:$2"`)。 + +## 步骤 4:将工作表保存为 PowerPoint 文件 + +最后,我们将幻灯片写入磁盘。`Save` 方法接受目标文件名以及前面配置的选项。生成的 PPTX 文件包含可编辑的文本框和形状,随时可在 PowerPoint 中打开。 + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**你将看到:** 在 PowerPoint 中打开 `SheetWithEditableShapes.pptx`。第一行显示为标题,`A1:G20` 的所有单元格均已渲染,且在 Excel 中添加的任何形状仍可移动和编辑。没有光栅化的图像——仅原生 PowerPoint 对象。 + +## 完整工作示例 – 所有步骤合并 + +下面是完整的、可直接复制粘贴的程序。可作为控制台应用运行,或嵌入任意更大的解决方案中。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**预期输出:** 运行程序后,控制台会打印成功信息,PPTX 文件会出现在指定位置。打开文件可看到包含所选范围、可编辑文本框以及所有原始形状的单张幻灯片。 + +## 常见问题与注意事项 + +| Question | Answer | +|----------|--------| +| **这在多个工作表上有效吗?** | 是的。遍历 `workbook.Worksheets`,对每个工作表重复相同的步骤,并每次更改输出文件名。 | +| **如果需要导出多张幻灯片怎么办?** | 使用不同的 `ImageOrPrintOptions` 对象多次调用 `workbook.Save`,如有需要为每个对象配置不同的 `PageSetup`。 | +| **我可以更改幻灯片尺寸吗?** | 使用 `exportOptions.ImageFormat` 设置 DPI,或在保存前调整 `sheet.PageSetup.PaperSize`。 | +| **Aspose.Cells 免费吗?** | 提供带水印的免费评估版。生产环境需要许可证。 | +| **Excel 公式怎么办?** | 导出的值是导出时的**计算结果**。如果需要在 PowerPoint 中保留实时公式,需要采用其他方法。 | + +## 流程顺畅的技巧 + +- **小贴士:** 在导出前设置 `Workbook.Settings.CalcMode = CalculationModeType.Automatic`,以确保所有公式都是最新的。 +- **注意:** 非常大的范围会导致内存压力。请将打印区域裁剪到最小必要范围。 +- **性能提示:** 如果导出多个工作表,复用同一个 `ImageOrPrintOptions` 实例;每次创建新实例会增加开销。 +- **版本说明:** 上述代码针对 Aspose.Cells 23.10(2023 年 11 月发布)。后续版本保持相同 API,但请始终检查发行说明以防止破坏性更改。 + +## 结论 + +我们已经介绍了如何在 Excel 工作表中**set print area**,将第一行重复为标题,然后在保留可编辑文本框和形状的同时**export excel to pptx**。简而言之,你现在掌握了一种可靠的方法,只需几行 C# 代码即可**convert excel to powerpoint**、**repeat title row**,以及**create powerpoint from excel**。 + +准备好下一步了吗?尝试批量自动转换数十份报告,或在导出后使用 PowerPoint SDK 添加自定义幻灯片布局。没有限制——大胆实验、突破常规,尽情享受编程文档生成的强大力量。 + +如果你觉得本教程有帮助,请分享出去,留下你自己的改进建议,或浏览我们关于**export excel to pptx**及相关自动化主题的其他指南。祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/csv-file-handling/_index.md b/cells/chinese/net/csv-file-handling/_index.md index b72dec37f5..aebd6da196 100644 --- a/cells/chinese/net/csv-file-handling/_index.md +++ b/cells/chinese/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ 通过我们全面的分步指南,学习如何使用 Aspose.Cells for .NET 打开 CSV 文件。掌握数据操作。 ### [使用首选解析器打开 CSV 文件](./csv-file-opening-csv-files-with-preferred-parser/) 学习如何使用 Aspose.Cells for .NET 中的自定义解析器打开和解析 CSV 文件。轻松处理文本和日期。非常适合开发人员。 +### [在 C# 中将工作簿另存为 CSV – 将 Excel 导出为 CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +学习如何使用 Aspose.Cells for .NET 在 C# 中将 Excel 工作簿导出为 CSV 文件,实现高效数据转换。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/chinese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..03663303ca --- /dev/null +++ b/cells/chinese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: 在 C# 中快速将工作簿保存为 CSV。学习如何将 Excel 导出为 CSV、设置精度,以及使用 Aspose.Cells 只需几行代码即可将 + xlsx 转换为 CSV。 +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: zh +og_description: 在 C# 中快速将工作簿保存为 CSV。本指南展示了如何使用 Aspose.Cells 将 Excel 导出为 CSV、设置精度以及将 + xlsx 转换为 CSV。 +og_title: 在 C# 中将工作簿保存为 CSV – 将 Excel 导出为 CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: 在 C# 中将工作簿保存为 CSV – 将 Excel 导出为 CSV +url: /zh/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 将工作簿保存为 CSV(C#)– 导出 Excel 为 CSV + +是否曾需要 **将工作簿保存为 CSV**,但不确定如何保持数字整齐?你并不孤单。在许多数据管道场景中,我们必须 **导出 Excel 为 CSV** 并保留特定的有效数字位数,Aspose.Cells 库让这变得轻而易举。 + +在本教程中,你将看到一个完整、可直接运行的示例,**将工作簿保存为 CSV**,展示 *如何设置精度*,甚至解释 *如何将 xlsx 转换为 CSV* 用于实际项目。没有模糊的引用——只要复制、粘贴并立即运行的代码。 + +## 你将学到的内容 + +- 使用自定义精度设置 **将工作簿保存为 CSV** 的完整步骤。 +- 如何使用 `CsvSaveOptions` **导出 Excel 为 CSV**,以及 `SignificantDigits` 属性为何重要。 +- 针对不同精度需求的变体以及处理大数字时的常见陷阱。 +- 快速了解在不丢失数据完整性的情况下将 `.xlsx` 文件转换为 `.csv`。 + +### 前置条件 + +- .NET 6.0 或更高(代码同样适用于 .NET Framework 4.6+)。 +- **Aspose.Cells for .NET** NuGet 包(`Install-Package Aspose.Cells`)。 +- 对 C# 和文件 I/O 的基本了解。 + +如果你具备以上条件,下面开始吧。 + +![save workbook as csv example](image.png "save workbook as csv example") + +## 将工作簿保存为 CSV – 步骤指南 + +下面是完整程序。每行都有注释,帮助你了解 *为什么* 要这么写,而不仅仅是 *做了什么*。 + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### 为什么使用 `CsvSaveOptions.SignificantDigits`? + +当你 **设置精度** 进行 CSV 导出时,实际上是在决定浮点数在转换后保留多少位数字。Excel 最多保留 15 位精度,但大多数下游系统(数据库、分析管道)只需要几位。将 `SignificantDigits = 4` 设置后,库会把 `123.456789` 四舍五入为 `123.5`,使文件保持紧凑且易读。 + +> **小技巧:** 如果需要 *精确* 的数值(例如金融数据),请将 `SignificantDigits` 设置为更高的数值或完全省略。默认值为 15,等同于 Excel 的内部精度。 + +## 导出 Excel 为 CSV – 常见变体 + +### 更改分隔符 + +有些系统期望使用分号 (`;`) 而不是逗号。可以这样调整: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### 导出特定工作表 + +如果只想导出第二个工作表,使用以下可选块替换: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +然后像之前一样调用 `workbook.Save`。此技巧在 **将 xlsx 转换为 csv** 时,只关注特定标签页时非常有用。 + +### 处理大数据集 + +当处理数百万行时,考虑流式写入 CSV,而不是一次性将整个工作簿加载到内存。Aspose.Cells 提供了 `CsvSaveOptions` 的 `ExportDataOnly` 属性,可跳过样式信息,降低内存占用: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## 如何导出 CSV – 验证结果 + +运行程序后,用纯文本编辑器打开 `Numbers_4sd.csv`。你应该看到类似如下内容: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +注意数字已被限制为四个有效数字,正是我们要求的。如果在 Excel 中打开文件,数值会保持一致,因为 Excel 会遵循导出时的四舍五入。 + +## 边缘情况与故障排除 + +| 情况 | 检查项 | 解决方案 | +|-----------|---------------|-----| +| **文件未找到** | 确认 `sourcePath` 指向真实的 `.xlsx` 文件。 | 使用 `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`。 | +| **四舍五入不正确** | 确保在调用 `Save` 之前已设置 `SignificantDigits`。 | 将 `CsvSaveOptions` 的赋值提前,或再次确认数值。 | +| **特殊字符显示为 �** | CSV 编码默认是 UTF-8(无 BOM)。 | 设置 `csvOptions.Encoding = System.Text.Encoding.UTF8` 或 `Encoding.Unicode`。 | +| **出现多余的空列** | 某些工作表在使用范围之外有残留格式。 | 在导出前调用 `worksheet.Cells.MaxDisplayRange` 修剪未使用的列。 | + +## 动态设置精度 + +有时所需的精度在编译时未知。可以从配置文件或命令行参数读取: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +现在可以运行: + +``` +dotnet run -- 6 +``` + +并得到具有六个有效数字的 CSV。这个小改动让解决方案在 **如何导出 csv** 的各种环境中更加灵活。 + +## 完整工作示例回顾 + +将所有内容组合在一起,完整程序(含可选调整)如下: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +运行程序,打开生成的 CSV,你会看到所请求的精度,证明你已经成功 **将工作簿保存为 CSV**。 + +## 结论 + +现在你拥有了一套可靠、可投入生产的 **将工作簿保存为 CSV** 的 C# 方案。本文涵盖了 *如何导出 Excel 为 CSV*,演示了通过 `CsvSaveOptions.SignificantDigits` *设置精度*,并展示了多种 **将 xlsx 转换为 csv** 的情景。借助完整代码片段,你可以将其直接嵌入任何 .NET 项目,立即开始导出数据。 + +**接下来可以做什么?** + +- 尝试不同的分隔符(`;`、`\t`)进行 TSV 导出。 +- 将此方法与文件监视器结合,实现 Excel 文件变更时自动生成 CSV。 +- 若需要将 CSV 读取回工作簿,探索 Aspose.Cells 的 `CsvLoadOptions`。 + +随意调整精度、添加自定义标题,或将导出器挂接到你的业务流程中。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/document-properties/_index.md b/cells/chinese/net/document-properties/_index.md index 572a7a5b20..caada71c2f 100644 --- a/cells/chinese/net/document-properties/_index.md +++ b/cells/chinese/net/document-properties/_index.md @@ -35,6 +35,8 @@ Excel 中的文档属性就像文件的元数据一样。想象一下:每个 E 通过我们的分步指南,学习如何使用 Aspose.Cells for .NET 访问 Excel 中的文档属性。高效管理您的电子表格。 ### [在 .NET 中添加文档属性](./adding-document-properties/) 通过本详细的分步指南了解如何使用 Aspose.Cells for .NET 在 Excel 中添加文档属性。 +### [创建 Excel 工作簿 – 添加自定义属性并保存为 XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +学习如何使用 Aspose.Cells for .NET 创建工作簿、添加自定义属性并将文件保存为 XLSB 格式的完整步骤。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/chinese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..1cacd11a7d --- /dev/null +++ b/cells/chinese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-22 +description: 使用 C# 创建 Excel 工作簿,添加自定义属性,设置工作表名称,并保存为 XLSB 二进制文件。 +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: zh +og_description: 使用 C# 创建 Excel 工作簿,添加自定义属性,设置工作表名称,并将其保存为 XLSB 二进制文件。 +og_title: 创建 Excel 工作簿 – 添加自定义属性并保存为 XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: 创建 Excel 工作簿 – 添加自定义属性并保存为 XLSB +url: /zh/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 创建 Excel 工作簿 – 添加自定义属性并保存为 XLSB + +是否曾需要以编程方式 **创建 Excel 工作簿**,同时保留一些元数据?也许你正在构建一个报告引擎,需要为每个文件标记报告 ID、作者姓名或版本号。在这种情况下,学习如何在 **设置工作表名称** 的同时 **添加自定义属性**,并最终 **保存为 XLSB**,可以为你省去大量手动后处理的工作。 + +在本教程中,我们将通过一个完整、可运行的示例,展示如何使用 C# **写入二进制 Excel 文件**。你将了解为何 XLSB 格式是携带自定义属性的最佳选择,如何避免最常见的陷阱,以及在需要支持旧版 Excel 时该怎么做。 + +--- + +## 你需要准备的内容 + +- **.NET 6+**(或 .NET Framework 4.6+)。代码在任何近期运行时均可工作。 +- **Aspose.Cells for .NET**(免费试用或正式授权)。它提供了下面使用的 `Workbook`、`Worksheet` 和 `CustomProperties` 类。 +- 你熟悉的 IDE —— Visual Studio、Rider,甚至 VS Code 都可以。 +- 对生成文件将要保存的文件夹拥有写入权限。 + +除此之外不需要其他第三方库。 + +--- + +## 第一步:安装 Aspose.Cells + +首先,将 Aspose.Cells NuGet 包添加到项目中: + +```bash +dotnet add package Aspose.Cells +``` + +> **小技巧:** 如果你在 CI 服务器上运行,建议将许可证密钥存放在环境变量中,并在运行时加载——这样可以防止 “evaluation” 水印出现在输出文件中。 + +--- + +## 第二步:创建 Excel 工作簿 – 概览 + +真正的第一步是 **创建 Excel 工作簿**。该对象在内存中表示整个文件,并提供对工作表、样式和自定义属性的访问。 + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +为什么要实例化一个全新的 `Workbook` 而不是加载模板?空白工作簿可以保证没有隐藏的样式或残留的自定义属性,这在你需要为下游系统 **写入二进制 excel 文件** 并期望一个干净的起点时尤为重要。 + +--- + +## 第三步:设置工作表名称(以及它为何重要) + +Excel 工作表默认名称为 “Sheet1”、 “Sheet2” 等。为工作表赋予有意义的名称可以让下游处理——比如 Power Query 或 VBA 宏——更易阅读。 + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +如果尝试分配重复的名称,Aspose.Cells 会抛出 `ArgumentException`。为保险起见,你可以在重命名前使用 `Worksheets.Exists("Data")` 进行检查。 + +--- + +## 第四步:添加自定义属性 + +自定义属性存储在工作簿内部的 XML 中,无论文件格式如何都会随文件一起传递。它们非常适合嵌入 `ReportId`、`GeneratedBy` 等信息。 + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **为什么使用自定义属性?** +> • 可通过 Excel 的 “文件 → 信息 → 属性” 面板访问。 +> • 读取工作簿的代码可以直接获取这些属性,而无需扫描单元格内容。 +> • 它们在格式转换(XLSX ↔ XLSB)中依然保留,因为它们是文件元数据的一部分。 + +你也可以存储日期、布尔值,甚至二进制块,但请保持负载小——Excel 并不是数据库。 + +--- + +## 第五步:保存为 XLSB(写入二进制 Excel 文件) + +XLSB 格式以二进制结构存储数据,使文件更小、打开更快。更重要的是,对于本教程来说,**自定义属性会被嵌入二进制流**,确保它们随文件一起传输。 + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### 预期结果 + +运行程序后,你会在桌面上看到 `WithCustomProps.xlsb`。在 Excel 中打开,依次点击 **文件 → 信息 → 属性**,即可在 *自定义* 部分看到 `ReportId` 和 `GeneratedBy`。 + +--- + +## 第六步:边缘情况与常见问题 + +### 如果目标文件夹是只读的怎么办? + +将 `Save` 调用包装在 `try/catch` 块中,并回退到用户可写的位置,例如 `%TEMP%`。这样可以防止因权限错误导致应用崩溃。 + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### 能否 **保存为 XLSX** 并仍保留自定义属性? + +可以——只需将 `SaveFormat.Xlsb` 改为 `SaveFormat.Xlsx`。属性存储在相同的 XML 部分中,因此在格式切换时仍然保留。不过,XLSX 文件会更大,因为它是压缩的 XML,而 XLSB 在处理大数据集时性能更佳。 + +### 如何在以后读取自定义属性? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +此代码片段会打印所有自定义属性,便于下游服务验证文件来源。 + +--- + +## 完整工作示例 + +下面是可以直接复制到新控制台项目中的完整程序。没有缺失的部分——从 `using` 语句到最后的 `Console.WriteLine` 都已包含。 + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +运行程序,打开生成的文件,验证自定义属性。这就是在一次整洁流程中 **创建 Excel 工作簿**、**添加自定义属性**、**设置工作表名称** 并 **保存为 XLSB** 的全部过程。 + +--- + +## 结论 + +现在,你已经掌握了如何 **创建 Excel 工作簿**、为工作表 **设置清晰的名称**、使用 **添加自定义属性** 嵌入有用的元数据,最后 **保存为 XLSB** 以生成紧凑的二进制 Excel 文件。此工作流可靠、跨 .NET 版本兼容,并且无论是生成单个报告还是成千上万个报告都能良好扩展。 + +接下来可以尝试向 “Data” 工作表添加数据表,实验不同的属性类型(日期、布尔值),或将输出改为 **保存为 xlsb** 以处理海量数据。你也可以探索使用密码保护工作簿——Aspose.Cells 只需一行代码即可实现。 + +如果遇到任何问题,欢迎留言讨论,或分享你在项目中对该模式的扩展。祝编码愉快! + +--- + +![Create Excel workbook screenshot](image.png){alt="带有自定义属性的创建 Excel 工作簿"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/excel-advanced-named-ranges/_index.md b/cells/chinese/net/excel-advanced-named-ranges/_index.md index 5bb8efab6f..d0f3e3e9e2 100644 --- a/cells/chinese/net/excel-advanced-named-ranges/_index.md +++ b/cells/chinese/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ 通过这个全面的分步教程,使用 Aspose.Cells for .NET 轻松识别 Excel 中命名范围内的单元格。 ### [在 Excel 中合并命名范围内的单元格](./merge-cells-in-named-range/) 在本分步教程中,学习如何使用 Aspose.Cells for .NET 合并指定范围内的单元格。了解如何格式化、设置样式以及自动化 Excel 报表。 +### [创建 Excel 工作簿 – 添加表格和命名规则的分步指南](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +通过本教程,使用 Aspose.Cells for .NET 创建工作簿、添加表格并设置命名规则,实现自动化报表。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/chinese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..a18dde8750 --- /dev/null +++ b/cells/chinese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: 在 C# 中创建带有表格的 Excel 工作簿,学习 Excel 表格命名规则,避免命名范围错误,并正确设置 Excel 表格名称。 +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: zh +og_description: 在 C# 中创建 Excel 工作簿并掌握 Excel 表格命名规则。学习如何添加表格工作表、设置 Excel 表格名称以及修复命名范围错误。 +og_title: 创建 Excel 工作簿 – 完整的 C# 表格与命名指南 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: 创建 Excel 工作簿——逐步指南:添加表格和命名规则 +url: /zh/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 创建 Excel 工作簿 – 完整的 C# 表格和命名指南 + +是否曾经需要以编程方式 **create excel workbook** 并且好奇为什么你的表格名称会突然与已命名范围冲突?你并不孤单。在许多自动化项目中,一旦尝试为表格提供友好的标识符,Excel 就会抛出 *named range error*,导致整个过程停滞。 + +在本教程中,我们将演示一个完整可运行的示例,**creates an Excel workbook**,**adds a table to a worksheet**,并解释 **excel table naming rules**,帮助你避免踩坑。完成后,你将确切了解如何 **add table worksheet**,**set excel table name**,以及优雅地处理偶发的命名冲突。 + +> **Pro tip:** 大多数混淆来源于 Excel 将表格名称和工作簿级别的命名范围视为同一命名空间。提前理解此规则可为你节省数小时的调试时间。 + +## 您需要的条件 + +- **Aspose.Cells for .NET**(或任何公开 `Workbook`、`Worksheet`、`ListObject` 类的库)。 +- .NET 6+ 或 .NET Framework 4.8 —— 代码两者皆可运行。 +- 对 C# 语法的基本了解 —— 不需要高级技巧。 + +如果你已经准备好,让我们开始吧。 + +![新建的 Excel 工作簿截图,包含名为 SalesData 的表格](create_excel_workbook_example.png "create excel workbook 示例") + +## 步骤 1:创建 Excel 工作簿并访问第一个工作表 + +当你 **create excel workbook** 时,首先要实例化 `Workbook` 类并获取要操作的工作表的引用。在 Aspose.Cells 中,工作簿默认包含一个名为 “Sheet1” 的工作表。 + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +为什么这一步至关重要?没有 workbook 对象,你就没有可以附加表格的目标,而 `Worksheet` 引用为 **add table worksheet** 操作提供了画布。 + +## 步骤 2:添加覆盖特定范围的表格(ListObject) + +接下来我们 **add table worksheet** 级别的数据。`ListObjects.Add` 方法需要一个范围字符串以及一个布尔值,指示第一行是否包含标题。 + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +请注意 `salesTable.Name = "SalesData"` 的调用。这正是 **excel table naming rules** 生效的地方:名称必须在整个工作簿中唯一,而不仅限于工作表。名称不能包含空格或特殊字符,并且必须以字母或下划线开头。 + +## 步骤 3:尝试使用相同标识符创建工作簿级别的命名范围 + +现在我们有意触发 **named range error**,以观察名称冲突时会发生什么。 + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +如果取消注释该行,Aspose.Cells 会抛出 `ArgumentException`,指出名称已存在。错误信息如下: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +该信息就是我们之前提到的 **named range error**。它表明 **excel table naming rules** 将表格名称和命名范围视为同一命名空间。 + +## 步骤 4:优雅地处理命名冲突 + +在实际代码中,你需要捕获该异常,并重新命名表格或选择其他范围名称。下面是一种简洁的实现方式: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +通过将调用包装在 `try/catch` 中,你可以避免硬性崩溃,并向用户(或调用代码)提供清晰的说明——这正是 **excel table naming rules** 所提供的洞察,能够防止未来的错误。 + +## 步骤 5:保存工作簿并验证结果 + +最后,将文件保存到磁盘并在 Excel 中打开,以确认表格和所有命名范围均已存在。 + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +当你打开 *SalesReport.xlsx* 时,你会看到: + +- 跨越 **A1:C5** 的表格,名称为 **SalesData**。 +- 如果保留了备用范围,则会有一个工作簿级别的命名范围 **SalesData_Range**,指向 **D1**。 + +没有运行时崩溃,命名冲突已解决。 + +## 深入了解 Excel 表格命名规则 + +让我们拆解这些规则存在的原因: + +| 规则 | 含义 | 示例 | +|------|------|------| +| **Unique across workbook** | 同一工作簿中不能有两个表格或命名范围使用相同标识符。 | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | 名称不能以数字开头。 | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | 使用 CamelCase 或下划线。 | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | 实际上几乎总是满足。 | N/A | + +在 **set excel table name** 时牢记这些规则,可消除可怕的 *named range error*。 + +## 常见变体和边缘情况 + +1. **Adding multiple tables** – 每个表格必须拥有唯一的名称。 +2. **Renaming an existing table** – 在创建任何冲突的命名范围之前,使用 `salesTable.Name = "NewName"`。 +3. **Using dynamic ranges** – 如果需要可扩展的范围,请使用结构化引用,如 `=SalesData[Amount]`,而不是静态地址。 +4. **Cross‑sheet named ranges** – 它们仍然属于同一命名空间,因此 Sheet1 上的表格会阻止 Sheet2 上同名的范围。 + +## 平滑 Excel 自动化的专业技巧 + +- **Check existence before adding**:`if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**:当不确定时,追加 GUID 或递增计数器(`SalesData_{Guid.NewGuid()}`)。 +- **Use `ListObject.ShowHeaders = true`** 使表格自带文档说明。 +- **Validate after saving**:使用轻量级库(例如 EPPlus)打开文件,以确保表格已正确创建。 + +## 回顾:我们涵盖的内容 + +- 如何使用 Aspose.Cells 从头 **create excel workbook**。 +- 管理表格和命名范围标识符的精确 **excel table naming rules**。 +- 当重复使用名称时,为什么会出现 **named range error**。 +- 正确的 **add table worksheet** 与 **set excel table name** 方法,避免冲突。 +- 处理命名冲突的稳健模式。 + +## 接下来怎么办? + +既然你已经掌握了基础,接下来可以探索: + +- **Dynamic table growth**:使用 `ListObject.Resize`。 +- **Applying styles**:对表格应用样式 (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`)。 +- **Exporting to CSV**:在保持表格结构的同时导出为 CSV。 +- **Integrating with Office Open XML**:以获得对工作簿内部更精细的控制。 + +随意尝试——更改范围、添加更多表格,或尝试不同的命名方案。你越是动手实践,对 **excel table naming rules** 的理解就越深入。 + +--- + +*祝编码愉快,愿你的工作簿永不冲突!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/excel-custom-number-date-formatting/_index.md b/cells/chinese/net/excel-custom-number-date-formatting/_index.md index 1ade0a4838..15579306f1 100644 --- a/cells/chinese/net/excel-custom-number-date-formatting/_index.md +++ b/cells/chinese/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ 通过本分步教程学习如何使用 Aspose.Cells for .NET 根据自定义数字格式检查 Excel 单元格值。 ### [将数据导入 Excel 工作表时指定公式字段](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) 在本详细教程中了解如何使用 Aspose.Cells for .NET 将数据导入具有指定公式字段的 Excel 工作表。 +### [C# 中的 Excel 自定义数字格式 – 完整指南](./custom-number-format-excel-in-c-complete-guide/) +通过本完整指南学习如何在 C# 使用 Aspose.Cells 实现 Excel 自定义数字格式。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/chinese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..6fad8fc7d0 --- /dev/null +++ b/cells/chinese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,293 @@ +--- +category: general +date: 2026-03-22 +description: 自定义数字格式 Excel 教程,展示如何将数据表导入 Excel,设置列背景颜色,将列格式化为货币并将工作簿保存为 xlsx。 +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: zh +og_description: 自定义数字格式 Excel 教程,逐步演示导入 DataTable、设置列背景颜色、将列格式化为货币以及将工作簿保存为 xlsx。 +og_title: C# 中的 Excel 自定义数字格式 – 步骤指南 +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C# 中的 Excel 自定义数字格式 – 完整指南 +url: /zh/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 自定义数字格式 Excel – 全栈 C# 教程 + +有没有想过如何直接在 C# 中应用 **custom number format excel** 样式?也许你已经尝试将 `DataTable` 导出到电子表格,却只能看到普通数字,没有颜色,也没有货币格式。这是一个常见的痛点——尤其在需要为利益相关者提供精美报告时。 + +在本指南中我们将一起解决这个问题:你将学习如何 **import datatable to excel**、**set column background color**、**format column as currency**,以及最终 **save workbook as xlsx**,并使用自定义数字格式让你的数据更醒目。没有模糊的引用,只有完整、可直接复制粘贴到项目中的可运行解决方案。 + +--- + +## 你将构建的内容 + +完成本教程后,你将拥有一个独立的 C# 控制台应用程序,它能够: + +1. 获取一个 `DataTable`(你可以将示例代码替换为自己的查询)。 +2. 使用 Aspose.Cells(或任何兼容库)创建一个新的 Excel 工作簿。 +3. 为第一列设置蓝色加粗字体,为第二列设置浅黄色背景,为第三列设置货币格式(`$#,##0.00`)。 +4. 将文件保存为 `DataTableWithStyleArray.xlsx`,保存位置由你自行选择。 + +你将看到每一行代码是如何影响最终 Excel 文件的,并且我们会讨论这些选择在可维护性和性能方面的意义。 + +--- + +## 前置条件 + +- .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.7+)。 +- Aspose.Cells for .NET(免费试用版或授权版)。通过 NuGet 安装: + +```bash +dotnet add package Aspose.Cells +``` + +- 对 `DataTable` 和 C# 控制台应用有基本了解。 + +--- + +## 步骤 1:将源数据检索为 DataTable + +首先,我们需要一些数据来导出。在真实场景中,你可能会调用仓库或执行 SQL 查询。这里为了演示,我们将在内存中创建一个简单的表。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **为什么这很重要:** 使用 `DataTable` 能提供带模式的表格数据,能够干净地映射到 Excel 的行列上。它还让你能够在不重写代码的情况下复用相同的导出逻辑处理任何数据集。 + +--- + +## 步骤 2:创建新工作簿并获取第一个工作表 + +现在我们创建一个 Excel 工作簿。`Workbook` 类代表整个文件;其 `Worksheets[0]` 是默认工作表,我们将在这里放置数据。 + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **小技巧:** 如果需要多个工作表,只需调用 `workbook.Worksheets.Add("SheetName")`,然后对每个工作表重复样式设置步骤。 + +--- + +## 步骤 3:定义列样式 – 字体、背景和数字格式 + +在 Aspose.Cells 中,样式通过 `Style` 对象实现。我们将构建一个数组,每个元素对应 `DataTable` 中的一列。 + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **为什么使用样式数组?** 将数组传递给 `ImportDataTable` 可以在一次调用中为每列应用不同的样式,既简洁又高效。它还能保证格式与数据顺序保持同步。 + +--- + +## 步骤 4:在导入时应用样式导入 DataTable + +下面是核心操作:我们将 `DataTable` 导入工作表,告诉 Aspose 包含标题行,并传入我们的 `columnStyles` 数组。 + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **内部发生了什么?** Aspose 会遍历每一列,先写入标题,然后写入每行的值。与此同时,它会从数组中取出对应的 `Style` 并应用,因此你会得到“Product”列的蓝色标题、“Quantity”列的浅黄底色,以及格式化好的“Revenue”列。 + +--- + +## 步骤 5:将工作簿保存为 XLSX 文件 + +最后,我们将工作簿持久化到磁盘。`Save` 方法会根据文件扩展名自动选择 XLSX 格式。 + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **提示:** 如果需要以流的方式输出文件(例如用于 Web API),请使用 `workbook.Save(stream, SaveFormat.Xlsx)` 而不是文件路径。 + +--- + +## 完整可运行示例 + +下面是完整的程序代码,你可以直接粘贴到新的控制台项目中。它可以直接编译运行,生成带样式的 Excel 文件。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### 预期结果 + +打开 `DataTableWithStyleArray.xlsx` 后,你会看到: + +| **产品**(蓝色,加粗) | **数量**(浅黄) | **收入**(货币) | +|------------------------|------------------|-----------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +你指定的 **custom number format excel**(`$#,##0.00`)确保每个收入单元格都显示美元符号、千位分隔符以及两位小数——正是财务团队所期望的格式。 + +--- + +## 常见问题与边缘情况 + +### 我可以使用其他 Excel 库吗? + +当然可以。创建每列样式并在导入时应用的思路同样适用于 EPPlus、ClosedXML 或 NPOI。API 调用会有所不同,但整体模式保持不变。 + +### 如果我的 DataTable 列数多于样式数组怎么办? + +Aspose 会对没有匹配样式的列使用默认样式。为避免意外,建议将数组大小设为 `dataTable.Columns.Count`,或在循环中动态生成样式。 + +### 如何为日期设置自定义数字格式? + +只需将 `style.Custom = "dd‑mm‑yyyy"`(或任意有效的 Excel 格式字符串)即可。相同的数组方式同样适用于日期、百分比或科学计数法。 + +### 导入后如何自动调整列宽? + +调用 `worksheet.AutoFitColumns();` 即可在导入后自动计算并设置列宽。 + +### 大数据集(10 万行以上)怎么办? + +`ImportDataTable` 已针对批量操作做了优化,但仍可能遇到内存限制。此时可以考虑手动逐行写入 `Cells[i, j].PutValue(...)`,并复用单个 `Style` 对象以降低开销。 + +--- + +## 实用技巧与常见陷阱 + +- **避免在生产代码中硬编码路径**;使用 `Environment.GetFolderPath` 或配置项获取路径。 +- **在长时间运行的服务中释放工作簿**——使用 `using` 块包装,以释放本机资源。 +- **留意文化特定的分隔符**。自定义格式 `$#,##0.00` 强制使用点号作为小数分隔符,无论操作系统区域设置为何,这通常是财务报表的期望。 +- **记得引用 System.Drawing**(在 .NET Core 上使用 `System.Drawing.Common`)以获取样式中使用的颜色结构体。 +- **在不同 Excel 版本上测试输出**;旧版本可能对某些自定义格式的解释略有差异。 + +--- + +## 结论 + +我们已经覆盖了从 C# **custom number format excel** 文件所需的全部内容:从 `DataTable` 中提取数据、**import datatable to excel**、**set column background color**、**format column as currency**,以及最终 **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/excel-workbook/_index.md b/cells/chinese/net/excel-workbook/_index.md index 5fcd397aa7..3818e2b196 100644 --- a/cells/chinese/net/excel-workbook/_index.md +++ b/cells/chinese/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Excel 工作表中的已定义名称可以方便地管理数据。它们使公 | [工作簿打印预览](./workbook-print-preview/) 了解如何使用 Aspose.Cells for .NET 创建 Excel 文件的打印预览。通过详细易懂的教程学习编码步骤。| | [使用内容类型属性](./working-with-content-type-properties/) 了解如何使用 Aspose.Cells for .NET 处理内容类型属性,以增强 Excel 元数据管理。请遵循本指南,一步步操作。| | [Xades 签名支持](./xades-signature-support/) 学习如何使用 Aspose.Cells for .NET 将 Xades 签名添加到 Excel 文件,并遵循本分步指南。保护您的文档安全。| +| [创建新工作簿 C# – 带溢出公式的分步指南](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) 通过本分步指南了解如何使用 Aspose.Cells for .NET 在 C# 中创建新工作簿并处理溢出公式。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/chinese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..b507eb8d3f --- /dev/null +++ b/cells/chinese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: 使用 Aspose.Cells 在 C# 中快速创建新工作簿。了解如何添加 SEQUENCE 溢出公式、自动重新计算以及处理依赖单元格。 +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: zh +og_description: 使用 Aspose.Cells 在 C# 中创建新工作簿。本教程展示了如何添加 SEQUENCE 溢出公式、重新计算工作簿以及管理依赖单元格。 +og_title: 创建新工作簿 C# – 完整指南 +tags: +- C# +- Excel automation +- Aspose.Cells +title: 使用 C# 创建新工作簿 – 带有溢出公式的逐步指南 +url: /zh/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 创建新工作簿 C# – 完整编程演练 + +是否曾想过如何在不与 COM 互操作纠缠的情况下 **create new workbook C#**?你并不孤单。在许多项目中,你需要即时生成一个 Excel 文件,插入动态数组公式,并让所有内容自动刷新。 + +在本指南中,我们将完整演示——使用现代的 **Aspose.Cells** 库,添加一个溢出 `SEQUENCE` 公式,修改一个依赖单元格,并强制重新计算,以确保结果保持最新。完成后,你将拥有一个可直接复制粘贴到任何 .NET 应用中的自包含可运行示例。 + +## 你将学到 + +- 如何以编程方式 **create new workbook C#**。 +- **溢出数组公式** 的工作原理及其优势。 +- 在 C# 代码中使用 **Excel SEQUENCE 函数**。 +- 触发 **C# 工作簿计算** 使依赖单元格即时更新。 +- 常见陷阱(例如忘记调用 `Calculate`)及快速解决方案。 + +无需外部文档——所有内容都在这里。 + +## 前置条件 + +- 已安装 .NET 6+(或 .NET Framework 4.7.2+)。 +- Visual Studio 2022 或任意你喜欢的 IDE。 +- **Aspose.Cells** NuGet 包(`Install-Package Aspose.Cells`)。 +- 对 C# 语法有基本了解(如果你是新人,代码中有大量注释)。 + +--- + +## 第 1 步:在 C# 中创建新工作簿 + +此 H2 标题正好包含 **主要关键词**,符合 SEO 检查清单的要求。 + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **为何重要:** +> 实例化 `Workbook` 为你提供了 Excel 文件的内存表示。没有 COM,没有互操作,仅仅是纯 .NET 对象,安全可控。 + +--- + +## 第 2 步:添加溢出 SEQUENCE 公式 + +**溢出数组公式** 会自动扩展到相邻单元格,非常适合生成动态列表。 + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **工作原理:** +> `SEQUENCE` 函数(在 Excel 365 中引入)创建一个垂直数字数组。由于我们使用的是 *溢出* 公式,Excel(以及 Aspose.Cells)会自动填充 `A1` 以下的范围,无需编写循环。 + +--- + +## 第 3 步:修改依赖单元格以观察自动刷新 + +让我们修改 `B1`,以便观察工作簿如何重新计算溢出数组。 + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **提示:** +> 如果以后在其他公式中引用该溢出范围,修改溢出内部的任意单元格后只要调用 `Calculate`,这些公式就会自动更新。 + +--- + +## 第 4 步:强制 C# 工作簿计算 + +如果不显式调用,Aspose.Cells 不会自动重新计算公式。 + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` 的作用:** +> 它遍历每个公式单元格,求值并将结果写回工作表。这是 **C# 工作簿计算** 的核心,确保你的溢出数组与所有依赖数据保持同步。 + +### 预期输出 + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +打开 `SpilledSequenceDemo.xlsx`,你会看到数字 1‑5 填充在 `A1:A5`,而 `B1` 的值为 `10`。修改溢出范围内的任意单元格,重新运行 `Calculate`,新值会立即出现。 + +--- + +## 在 C# 中理解 Excel SEQUENCE 函数 + +如果你好奇为何 `SEQUENCE` 优于手动循环,请考虑以下几点: + +1. **性能** – 引擎一次性评估整个数组。 +2. **可读性** – 一行代码取代数十个 `PutValue` 调用。 +3. **动态大小** – 你可以将静态的 `5` 替换为对其他单元格的引用,使长度在运行时可调。 + +这正是 **溢出数组公式** 简化数据生成任务的经典案例。 + +--- + +## 常见陷阱与专业技巧 + +| 陷阱 | 解决方案 | +|---------|-----| +| 忘记调用 `workbook.Calculate()` | 修改公式后务必调用;否则工作表会显示旧的缓存值。 | +| 使用旧版 Aspose.Cells | 升级到最新的 NuGet 包,以确保支持 `SEQUENCE` 等动态数组函数。 | +| 在计算前保存文件 | 在 **Calculate** 之后再保存,确保文件包含最新结果。 | +| 误以为溢出会覆盖已有数据 | Aspose.Cells 会保留溢出范围之外的已有数据;如需清空,请先清除相应区域。 | + +**专业技巧:** 若需要可配置的序列长度,可将计数存放在单元格(例如 `C1`),并使用 `=SEQUENCE(C1)`——计算引擎将在运行时读取该值。 + +--- + +## 扩展示例 + +既然你已经掌握了 **create new workbook C#**,接下来可以: + +- 添加更复杂的公式引用溢出范围(如 `=SUM(A1#)`,其中 `#` 表示溢出)。 +- 使用 `workbook.Save("output.pdf", SaveFormat.Pdf)` 导出为 PDF。 +- 插入会随动态数组大小自动调整的图表。 + +所有这些都基于我们刚刚讲解的 **C# 工作簿计算** 基础。 + +--- + +## 结论 + +我们完整演示了 **create new workbook C#** 的全过程:从实例化 `Workbook` 对象、插入溢出 `SEQUENCE` 公式、修改依赖单元格,到最终强制重新计算以保持所有内容最新。上面的完整代码片段已可直接运行——只需将其粘贴到控制台应用,添加 Aspose.Cells NuGet 包,即可在几秒钟内生成可用的 Excel 文件。 + +准备好下一步了吗?尝试将静态的 `5` 替换为单元格引用,实验其他动态数组函数如 `FILTER` 或 `UNIQUE`,并探索 **Aspose.Cells C#** 如何驱动完整的报表引擎。祝编码愉快! + +--- + +*图片占位符:* + +![显示已创建工作簿并带有溢出 SEQUENCE 公式的截图 – create new workbook C# 示例](/images/create-new-workbook-csharp.png) + +--- + +*如果你觉得本教程有帮助,请考虑给仓库加星,分享给团队成员,或在下方留下评论。你的反馈将推动后续指南的完善!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/formulas-functions/_index.md b/cells/chinese/net/formulas-functions/_index.md index ed4d535a32..b35bef4296 100644 --- a/cells/chinese/net/formulas-functions/_index.md +++ b/cells/chinese/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ ### [使用 Aspose.Cells .NET 更新 Excel Power Query 公式](./update-power-query-formulas-aspose-cells-net) 了解如何使用 Aspose.Cells for .NET 以编程方式更新 Excel 工作簿中的 Power Query 公式。掌握动态报告的数据源管理。 +### [如何在 C# 中使用 Lambda 与 Excel 公式 – 完整指南](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +学习如何在 C# 中使用 Lambda 表达式结合 Excel 公式,实现更简洁高效的计算逻辑。 + ## 了解 Excel 公式类型 Excel 公式有多种形式,每种形式都具有 Aspose.Cells 可以管理的独特特性: diff --git a/cells/chinese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/chinese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..f29847ce44 --- /dev/null +++ b/cells/chinese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: 如何在 C# 中使用 lambda 处理 Excel 公式。学习将公式写入单元格、将范围转换为数组、在控制台显示数组,以及在 Excel + 中计算余切。 +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: zh +og_description: 如何在 C# 中使用 lambda 操作 Excel 公式,将范围转换为数组,将公式写入单元格,在控制台显示数组,以及在 Excel + 中计算余切。 +og_title: 如何在 C# 中使用 Lambda 与 Excel 公式 – 步骤指南 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: 在 C# 中使用 Lambda 与 Excel 公式的完整指南 +url: /zh/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中使用 Lambda 与 Excel 公式 – 完整指南 + +是否曾经好奇 **如何使用 lambda** 在 C# 中自动化 Excel?你并不孤单。许多开发者在需要将 Excel 新的动态数组函数与 C# 的 `LAMBDA` 功能结合时会卡住。好消息是?只要看到各部分如何配合,这其实相当简单。 + +在本教程中,我们将演示 **向单元格写入公式**、**将范围转换为数组**、**在控制台显示该数组**,甚至 **在 Excel 中计算余切**——全部展示 **如何在 `REDUCE` 调用中使用 lambda**。完成后,你将拥有一段可直接放入任何引用 Aspose.Cells(或类似库)的 .NET 项目的可运行代码片段。 + +--- + +## 你将学到 + +- 如何使用 C# **向单元格写入公式**。 +- 如何使用 `EXPAND` 函数 **将范围转换为数组**。 +- 如何在计算后 **在控制台显示数组**。 +- 如何使用 `COT` 与 `COTH` **在 Excel 中计算余切**。 +- 从 C# 调用 Excel 的 `REDUCE` 函数时 **如何使用 lambda** 的完整语法。 + +> **先决条件:** 需要 .NET(Core 6+ 或 .NET Framework 4.7+)的最新版本,并通过 NuGet 安装 Aspose.Cells for .NET 库。 + +--- + +## 步骤 1:设置工作簿并向单元格写入公式 + +首先我们创建一个全新的工作簿并获取第一个工作表。随后 **向单元格写入公式** —— 在本例中,`A1` 将保存一次 `EXPAND` 调用的结果。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**为什么重要:** 直接从代码写入公式意味着可以在不打开 Excel 的情况下动态生成复杂的电子表格。这也为下一步 **将范围转换为数组** 做好准备。 + +--- + +## 步骤 2:使用 EXPAND 将范围转换为数组 + +`EXPAND` 是 Excel 用来将小范围扩展为更大矩阵的方式。把公式放在 `A1` 后,Excel 会在该单元格起始处溢出一个 4 × 5 的块。从 C# 端,我们无需手动复制数值——当调用 `Calculate` 时,库会完成繁重的工作。 + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**如何使用 lambda:** 目前还没有,但请继续关注。先获取工作表中的数据,然后再用 lambda 进行归约。 + +--- + +## 步骤 3:在 REDUCE 中使用 LAMBDA —— “如何使用 Lambda”的核心 + +Excel 365 引入了 `REDUCE`,它接受 **初始值**、**范围** 和一个 **LAMBDA**,用于定义如何合并每个元素。从 C# 只需把公式字符串赋给单元格;lambda 本身位于 Excel 公式内部,而不是 C# 代码中。 + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**解释:** +- `0` 是起始累加器(`acc`)。 +- `A1:D4` 是我们要处理的范围(溢出块的前四列)。 +- `LAMBDA(acc, x, acc + x)` 告诉 Excel 将每个单元格 (`x`) 加到累加器上。 + +这就是在电子表格环境中 **如何使用 lambda** 进行聚合的核心思路。 + +--- + +## 步骤 4:在 Excel 中计算余切 —— 从角度到双曲 + +如果需要三角函数结果,Excel 的 `COT` 与 `COTH` 函数非常便利。我们将在 `G1` 与 `G2` 中分别放置它们。 + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**为什么好用:** 掌握 **在 Excel 中计算余切** 能让你省去编写自定义数学代码的麻烦,尤其是当工作簿需要与非开发人员共享时。 + +--- + +## 步骤 5:强制计算并获取展开的数组 + +现在让工作簿评估所有公式,然后从 `A1` 中提取溢出的数组。这一步就是 **在控制台显示数组** 的时刻。 + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**你将看到:** +- 逐行打印的整齐 4 × 5 矩阵。 +- 由 `REDUCE` lambda 计算得到的总和。 +- 两个余切值。 + +至此,已完整演示了从 **向单元格写入公式** 到 **在控制台显示数组** 的整个流程。 + +--- + +## 完整可运行示例(复制粘贴即用) + +下面是可以直接放入控制台应用的完整程序。记得先添加 `Aspose.Cells` NuGet 包(`dotnet add package Aspose.Cells`)。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**预期的控制台输出(数值会根据 B1:C2 的默认内容而变化,默认均为 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +在运行前随意在 `B1:C2` 中填入自己的数字——矩阵会相应反映这些值。 + +--- + +## 专业技巧与常见坑点 + +- **技巧:** 如果需要让溢出范围从其他位置开始,只需更改目标单元格(`A1`)。`EXPAND` 会遵循新的锚点。 +- **注意:** 源范围中的空单元格在溢出数组中会变成 `0`,这可能影响 `REDUCE` 的求和结果。 +- **边缘情况:** 当工作簿包含依赖易变函数(如 `NOW()`)的公式时,设置完所有公式后调用 `workbook.Calculate()`,以确保数据是最新的。 +- **性能提示:** 对于巨大的溢出范围,建议在 `EXPAND` 调用中限制大小;否则可能会分配过多内存。 +- **兼容性:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/number-and-display-formats-in-excel/_index.md b/cells/chinese/net/number-and-display-formats-in-excel/_index.md index dbc2689a34..2c28f8022d 100644 --- a/cells/chinese/net/number-and-display-formats-in-excel/_index.md +++ b/cells/chinese/net/number-and-display-formats-in-excel/_index.md @@ -21,17 +21,21 @@ ## 使用内置数字格式 -使用内置数字格式非常简单!假设您希望 Excel 工作表始终如一地显示货币值。您可以使用 Aspose.Cells 自动应用货币或百分比等格式,而无需手动设置每个单元格的格式。此功能不仅增强了演示效果,还消除了人为错误。想象一下,在发送数据之前,您知道所有数据都已正确格式化,那该有多轻松!这就像拥有一位专门负责电子表格美观的私人助理!欲了解更多信息,请查看我们的教程 [以编程方式使用 Excel 中的内置数字格式](./using-built-in-number-formats/). +使用内置数字格式非常简单!假设您希望 Excel 工作表始终如一地显示货币值。您可以使用 Aspose.Cells 自动应用货币或百分比等格式,而无需手动设置每个单元格的格式。此功能不仅增强了演示效果,还消除了人为错误。想象一下,在发送数据之前,您知道所有数据都已正确格式化,那该有多轻松!这就像拥有一位专门负责电子表格美观的私人助理!欲了解更多信息,请查看我们的教程 [以编程方式使用 Excel 中的内置数字格式](./using-built-in-number-formats/)。 ## 自定义显示格式 -如果您想为 Excel 工作表增添个性化元素,自定义显示格式是您的不二之选。此功能允许您创建自定义数字格式,以满足您的特定需求。您可能想知道它是如何工作的——想象一下:就像画家为其杰作选择合适的颜色一样,您也可以选择数据的呈现方式。无论是独特的日期格式还是特殊的百分比显示方式,Aspose.Cells 都能让您轻松做出选择。想要了解如何利用这项功能,请不要错过我们关于 [使用用户定义数字自定义显示格式](./customizing-display-formats-with-user-defined-numbers/). +如果您想为 Excel 工作表增添个性化元素,自定义显示格式是您的不二之选。此功能允许您创建自定义数字格式,以满足您的特定需求。您可能想知道它是如何工作的——想象一下:就像画家为其杰作选择合适的颜色一样,您也可以选择数据的呈现方式。无论是独特的日期格式还是特殊的百分比显示方式,Aspose.Cells 都能让您轻松做出选择。想要了解如何利用这项功能,请不要错过我们关于 [使用用户定义数字自定义显示格式](./customizing-display-formats-with-user-defined-numbers/)。 ## Excel 教程中的数字和显示格式 ### [以编程方式使用 Excel 中的内置数字格式](./using-built-in-number-formats/) 使用 Aspose.Cells for .NET 自动设置 Excel 中的数字格式。了解如何以编程方式应用日期、百分比和货币格式。 ### [使用用户定义数字自定义显示格式](./customizing-display-formats-with-user-defined-numbers/) 学习如何使用 Aspose.Cells for .NET 自定义显示格式。使用本分步指南格式化日期、百分比和货币。 +### [如何导出带格式的 Excel – 保留数字格式](./how-to-export-excel-with-formatting-preserve-number-format/) +使用 Aspose.Cells for .NET 导出 Excel 时保持原有数字格式,确保导出文件与源文件一致。 +### [在 C# 中将日期时间格式化为 ISO – 完整指南](./format-datetime-to-iso-in-c-complete-guide/) +使用 Aspose.Cells for .NET 在 C# 中将日期时间转换为 ISO 8601 格式的完整指南。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/chinese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..8e1af0c75f --- /dev/null +++ b/cells/chinese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-22 +description: 学习如何在从 Excel 提取日期时将日期时间格式化为 ISO,并使用 Aspose.Cells 在 C# 中显示 ISO 日期。 +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: zh +og_description: 轻松将日期时间格式化为 ISO。本指南展示如何从 Excel 提取日期并使用 Aspose.Cells 显示 ISO 日期。 +og_title: 在 C# 中将日期时间格式化为 ISO – 步骤教程 +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: 在 C# 中将日期时间格式化为 ISO – 完整指南 +url: /zh/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中将 datetime 格式化为 ISO – 完整指南 + +是否曾经需要**将 datetime 格式化为 iso**,但数据源位于 Excel 工作簿中?也许单元格中包含类似“令和3年5月1日”的日本纪元,你正为如何将其转换为 `2021‑05‑01` 这种干净的字符串而苦恼。你并不孤单。在本教程中,我们将**从 excel 中提取日期**,解析日本纪元,然后在控制台**显示 iso 日期**——全部只需几行 C# 代码和 Aspose.Cells。 + +我们将逐步讲解你需要的所有内容:必备的 NuGet 包、可以直接复制粘贴的完整代码、每行代码的意义以及一些边缘案例的技巧。完成后,你将拥有一个可复用的代码片段,无论原始 Excel 值多么古怪,都能将 datetime 格式化为 iso。 + +## 您需要的环境 + +- .NET 6.0 或更高(代码同样可以在 .NET Framework 4.6+ 上编译) +- Visual Studio 2022(或您喜欢的任何编辑器) +- **Aspose.Cells for .NET** NuGet 包 – `Install-Package Aspose.Cells` +- 一个包含日本纪元格式日期的 Excel 文件(或新建工作簿) + +就是这么简单。无需额外库、无需 COM 互操作,只需一个单一且文档完善的方法。 + +## 步骤 1:创建工作簿并写入日本纪元日期 + +首先,我们需要一个工作簿来操作。如果你已经有 Excel 文件,可以使用 `new Workbook("path")` 加载。此示例我们将在内存中创建一个新工作簿,并将日本纪元字符串写入单元格 **A1**。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **我们这样做的原因:** Aspose.Cells 默认将单元格值视为字符串。通过插入原始纪元文本,我们模拟了日本客户使用本土历法输入日期的真实场景。 + +## 步骤 2:启用日本纪元解析并提取日期 + +Aspose.Cells 可以自动将日本纪元字符串转换为 .NET `DateTime` 对象——前提是你告诉它这么做。`DateTimeParseOptions.EnableJapaneseEra` 标志负责完成这项工作。 + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **专业提示:** 如果忘记使用 `EnableJapaneseEra` 选项,库会返回原始字符串,后续转换将失败。处理混合内容时,请始终检查 `parsed.Type`。 + +## 步骤 3:将解析后的 DateTime 转换为 ISO 8601 + +现在我们已经拥有正确的 `DateTime`,将其转换为 ISO 格式的字符串轻而易举。`"yyyy-MM-dd"` 模式符合 ISO 8601 日期部分的要求,这也是大多数 API 所期望的格式。 + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +运行程序后会输出: + +``` +ISO date: 2021-05-01 +``` + +这就是你想要的**显示 iso 日期**。 + +## 完整、可运行的示例 + +下面是可以直接复制到控制台项目中的完整代码块。没有隐藏的依赖,也无需额外配置。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **预期输出:** `ISO date: 2021-05-01` + +## 步骤拆解(每一步的重要性) + +| 步骤 | 发生了什么 | 为什么重要 | +|------|------------|------------| +| **Create workbook** | 初始化一个内存中的 Excel 容器。 | 为你提供一个沙盒,能够在不触及文件系统的情况下进行测试。 | +| **PutValue** | 将原始日本纪元字符串存入 **A1**。 | 模拟真实数据录入,确保解析器看到的正是文本本身。 | +| **GetValue with `EnableJapaneseEra`** | 将纪元字符串转换为 .NET `DateTime`。 | 自动完成日历转换,无需手动查表。 | +| **`ToString("yyyy-MM-dd")`** | 将 `DateTime` 格式化为 ISO 8601。 | 保证得到文化无关、可排序的日期字符串,符合 REST API、数据库等的要求。 | +| **Console.WriteLine** | 显示最终的 ISO 日期。 | 验证整个流水线端到端工作正常。 | + +## 处理常见变体 + +### 1. 不同的单元格位置 + +如果你的日期位于 **B2** 或命名范围,只需将 `"A1"` 替换为相应的地址: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. 列中多个日期 + +当需要为多行 **从 excel 中提取日期** 时,遍历已使用的范围即可: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. 非纪元日期的回退方案 + +如果单元格已经包含标准日期字符串,解析器仍然可以工作,但你可能需要一个安全网: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` 标志可以防止异常,并在转换失败时返回原始值。 + +### 4. 时间组件 + +如果还需要时间部分,可使用 `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +这将生成完整的 ISO 8601 时间戳(`2021-05-01T00:00:00`)。 + +## 可视化示例 + +![datetime 格式化为 iso 示例](image.png "在 C# 中将 datetime 格式化为 iso 的示例") + +*Alt 文本:* *显示控制台输出的 datetime 格式化为 iso 示例* + +## 常见问题 + +- **我可以在 .xls 文件中使用吗?** + 可以。Aspose.Cells 开箱即支持 `.xls`、`.xlsx`、`.csv` 以及许多其他格式。 + +- **如果工作簿受密码保护怎么办?** + 使用 `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` 加载。 + +- **ISO 格式是否依赖于地区设置?** + 不。`"yyyy-MM-dd"` 模式是与区域无关的,确保在任何机器上得到相同的字符串。 + +- **这在 .NET Core 上能工作吗?** + 当然可以——Aspose.Cells 符合 .NET Standard 2.0。 + +## 总结 + +我们已经介绍了如何通过**从 excel 中提取日期**、解析日本纪元字符串,最终在控制台**显示 iso 日期**来**将 datetime 格式化为 iso**。核心步骤——创建工作簿、写入或加载纪元文本、启用日本纪元解析、使用 `ToString("yyyy-MM-dd")` 格式化——几乎可以应对所有场景。 + +接下来,你可能想要: + +- 将 ISO 日期写回另一列,以便后续处理。 +- 将转换后的工作簿导出为 CSV,以便批量导入。 +- 将此逻辑与接受 Excel 上传并返回 JSON 编码 ISO 日期的 Web API 结合。 + +欢迎尝试不同的日期格式、时区,甚至自定义日历。Aspose.Cells 的灵活性意味着你很少会遇到瓶颈。 + +祝编码愉快,愿你的所有日期都完美符合 ISO 标准! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/chinese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..177108a59e --- /dev/null +++ b/cells/chinese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-03-22 +description: 如何导出带格式的 Excel 并保留数字格式。学习转换 Excel 区域、获取公式结果,以及使用 Aspose.Cells 导出带格式的 + Excel。 +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: zh +og_description: 如何导出带格式的 Excel 并保留数字格式。一步步指南,转换 Excel 区域、获取公式结果,并在 C# 中导出带格式的 Excel。 +og_title: 如何导出带格式的 Excel – 保留数字格式 +tags: +- C# +- Aspose.Cells +- Excel automation +title: 如何导出带格式的Excel – 保留数字格式 +url: /zh/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何导出 Excel 并保留格式 – 保持数字格式 + +是否曾想过 **如何导出 Excel** 数据,同时保持每个单元格的外观与工作簿中看到的一模一样?也许您需要将报告发送给客户、填充网格控件,或仅仅将数值存入数据库。通常遇到的问题是数字格式丢失或公式变成原始字符串。 + +在本教程中,我们将逐步演示一个完整、可直接运行的 C# 示例,**保留数字格式**、**将 Excel 区域转换为 `DataTable`**、**获取公式结果**,并最终使用 Aspose.Cells **导出带格式的 Excel**。结束时,您将拥有一个可以在任何项目中直接使用、接受工作表引用的单一方法。 + +> **快速预览:** 代码创建工作簿,写入一个数值和一个公式,指示 Aspose.Cells 将单元格导出为格式化字符串,并打印 `123.456 | 246.912` —— 正是您在 Excel 中期望看到的结果。 + +--- + +## 您需要的条件 + +- **Aspose.Cells for .NET**(免费试用版足以用于学习) +- .NET 6.0 或更高版本(在 .NET Framework 上 API 相同) +- 基本的 C# 开发环境(Visual Studio、VS Code、Rider…自行选择) + +不需要除 Aspose.Cells 之外的额外 NuGet 包。如果您尚未安装,请运行: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Step 1 – 创建工作簿并写入数值(包括公式) + +首先我们新建一个工作簿,并在 **A1** 中写入数值。随后在 **B1** 添加一个简单公式,将第一个单元格的值乘以二。这为后面演示 **获取公式结果** 做准备。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**为何重要:** +- `PutValue` 存储原始数字,而 `PutFormula` 存储计算公式。 +- Aspose.Cells 保持公式 **活跃**,因此当我们随后获取单元格的值时,实际得到的是 `246.912`,而不是字符串 `"=A1*2"`。 + +--- + +## Step 2 – 告诉 Aspose.Cells 将数值导出为格式化字符串 + +如果直接使用默认设置调用 `ExportDataTable`,数值单元格将以其底层 `double` 值返回。这会去除千位分隔符、货币符号或自定义小数位等格式。`ExportTableOptions` 类让我们 **保留数字格式** 并 **导出为字符串**。 + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**关键点:** `ExportNumberFormat = true` 是实现 **保留数字格式** 的开关。若不设置此标志,您将看到 `"123.456"` 和 `"246.912"` 这类原始数字,在代码中看似正常,但粘贴到需要 Excel 相同格式的 UI 时就会出现问题。 + +--- + +## Step 3 – 打印导出的数据(验证) + +现在我们拥有一个包含格式化字符串的 `DataTable`,把内容输出到控制台即可。这也演示了我们成功 **获取公式结果**,而无需自行计算公式。 + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +运行程序后输出: + +``` +123.456 | 246.912 +``` + +请注意第二列显示的是 **公式结果**,而不是公式文本。这正是您在 **导出带格式的 Excel** 进行下游处理时所需要的。 + +--- + +## Step 4 – 转换更大范围的 Excel(可选) + +上面的示例仅处理了 `A1:B1` 的小片段,但实际场景常常需要导出整张表。相同的方法适用于任何矩形区域——只需调整 `firstRow`、`firstColumn`、`totalRows` 和 `totalColumns` 参数即可。 + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**小技巧:** 如果工作表已经有标题行,请将 `includeColumnNames` 设置为 `true`。Aspose.Cells 会把该范围的第一行作为列名,这在后续将 `DataTable` 绑定到 UI 网格时非常方便。 + +--- + +## Step 5 – 常见陷阱及规避方法 + +| 问题 | 产生原因 | 解决方案 | +|-------|----------------|-----| +| **数字失去逗号或货币符号** | `ExportAsString` 为 `false` 或未设置 `ExportNumberFormat` | 同时设置 `ExportAsString = true` **以及** `ExportNumberFormat = true`。 | +| **公式单元格返回公式文本** | 导出前未调用 `CalculateFormula`(仅在工作簿未开启自动计算时需要) | 启用自动计算 (`workbook.CalculateFormula()`) 或使用 `ExportAsString` 强制求值。 | +| **标题行被当作数据行** | `includeColumnNames` 为 `false`,但范围包含标题行 | 将 `includeColumnNames` 设置为 `true`,将首行视为列名。 | +| **大范围导致内存压力** | 一次性导出整张工作表会将所有数据加载到内存 | 分块导出(例如每次 500 行),必要时合并 `DataTable`。 | + +--- + +## Step 6 – 完整可运行示例(复制粘贴即用) + +下面是完整程序代码,从 `using` 语句到 `Main`。粘贴到控制台应用并按 **F5** 运行,即可立即看到格式化输出。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**预期输出** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +这就是完整的 **如何导出 Excel** 工作流,保持格式完整、公式已求值,并得到可供任何 .NET 消费者使用的干净 `DataTable`。 + +--- + +## 结论 + +我们已经覆盖了关于 **如何导出 Excel** 数据、**保留数字格式**、**将 Excel 区域转换为 `DataTable`**,以及 **获取公式结果** 而无需额外解析的全部要点。关键在于 `ExportTableOptions` 配置——只要将 `ExportAsString` 与 `ExportNumberFormat` 均设为 `true`,Aspose.Cells 就会为您完成繁重的工作。 + +接下来您可以: + +- 将 `DataTable` 插入到 WPF `DataGrid` 或 ASP.NET MVC 视图中。 +- 将表写入 CSV 文件,同时保持完全相同的视觉表现。 +- 将此方法扩展到多工作表或动态范围。 + +欢迎尝试不同的格式(货币、百分比)以及更大的数据块。如果遇到任何异常,请回顾 **常见陷阱** 表格——它涵盖了在 **导出带格式的 Excel** 时最常见的问题。 + +祝编码愉快,愿您导出的电子表格始终如原始文件般精致! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/chinese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..b66e4727fd --- /dev/null +++ b/cells/chinese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-03-22 +description: 学习如何使用 Aspose.Cells 在 C# 中复制数据透视表。本指南还展示了如何复制行以及加载 Excel 工作簿(C#),实现无缝的 + Excel 自动化复制行。 +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: zh +og_description: 如何在 C# 中复制透视表?请遵循本简明教程,了解如何在 C# 中加载 Excel 工作簿、复制行,并精通 Excel 自动化的行复制。 +og_title: 如何在 C# 中复制 Pivot – 完整指南 +tags: +- C# +- Excel Automation +- Aspose.Cells +title: 如何在 C# 中复制 Pivot – 完整的逐步指南 +url: /zh/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中复制透视表 – 完整分步指南 + +是否曾想过 **如何以编程方式复制透视表**,而不是在 Excel 中手动拖拽?你并不孤单。在许多报表流程中,需要在一组全新的行上使用相同的透视布局,手工操作既费时又低效。 + +好消息是,只需几行 C# 代码,你就可以加载 Excel 工作簿,定义包含透视表的区域,并 **如何复制行** 使透视表出现在新位置——全部在一次自动化运行中完成。在本教程中,我们还会涉及 **load excel workbook c#** 的基础知识,并为 **excel automation copy rows** 任务奠定坚实基础。 + +> **你将收获** +> • 一个完整、可运行的示例,能够复制透视表。 +> • 对每行代码意义的解释。 +> • 处理隐藏工作表或多个透视表等边缘情况的技巧。 + +--- + +## 前置条件 + +在开始之前,请确保你已具备: + +- **.NET 6.0**(或任意近期的 .NET 版本)已安装。 +- **Aspose.Cells for .NET** —— 我们将使用的 Excel 操作库。可通过 NuGet 获取: + +```bash +dotnet add package Aspose.Cells +``` + +- 一个源工作簿(`Source.xlsx`),其中已包含位于 **A1:J20** 区域的透视表(我们将要复制的范围)。 +- 对 C# 语法的基本了解——只需常规的 `using` 语句和 `Main` 方法即可。 + +如果上述任意一点你不熟悉,请先暂停并安装相应的包;后续指南默认库已就绪。 + +--- + +![如何使用 Aspose.Cells 在 C# 中复制透视表的示意图](https://example.com/duplicate-pivot.png "如何在 C# 中复制透视表的示意图") + +*图片替代文字:“如何在 C# 中复制透视表的示例,展示源透视表和复制后的透视表行”。* + +--- + +## 第一步:Load Excel Workbook C# – 打开文件 + +当你想要 **load excel workbook c#** 时,首先需要创建指向文件的 `Workbook` 实例。该对象让你能够访问文件中的每个工作表、单元格和透视表。 + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**为什么这很重要:** +`Workbook` 将整个 Excel 文件抽象为内存模型。若不先加载,就无法检查透视表的位置或复制行。此外,构造函数会自动检测文件格式(XLS、XLSX、CSV 等),无需额外的格式检测代码。 + +--- + +## 第二步:How to Copy Rows – 定义透视表区域 + +工作簿已加载到内存后,需要告诉 Aspose.Cells 哪些行包含透视表。在本例中,透视表位于 **A1:J20**,对应行号 **0‑19**(零基索引)。我们将使用 `CellArea` 结构来封装该范围。 + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**为何使用 `CellArea`:** +它是一种轻量级的矩形块描述方式。当你随后调用 `CopyRows` 时,方法会读取此对象以准确知道要复制哪些行。如果以后需要调整范围(例如透视表扩展到列 K),只需更改 `endColumn` 的值即可。 + +--- + +## 第三步:访问目标工作表 + +大多数工作簿只有一个工作表,但 API 对多工作表同样适用。获取第一个工作表(索引 0)——原始透视表就位于此。 + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**小技巧:** +如果工作表有名称,也可以通过名称获取:`workbook.Worksheets["Sheet1"]`。当工作簿结构变化时,这种方式可以避免硬编码索引。 + +--- + +## 第四步:How to Copy Rows – 复制透视表 + +下面是 **how to duplicate pivot** 的核心:将包含透视表的行复制到新位置。本例中我们从第 31 行(零基索引 30)开始复制。`CopyRows` 方法会同时复制数据和底层的透视缓存,因此新行的行为与原始完全相同。 + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**内部到底发生了什么?** +`CopyRows` 会克隆每一行,保留公式、样式以及透视表定义。由于透视缓存位于工作簿级别,复制后的透视表会自动引用相同的数据源——无需额外配置。 + +**边缘情况 – 隐藏行:** +如果源范围内有隐藏的行,复制后仍会保持隐藏状态。若想取消隐藏,可在复制后调用 `worksheet.Rows[destRow].IsHidden = false`。 + +--- + +## 第五步:保存工作簿 – 验证复制结果 + +最后,将更改写回磁盘。你可以覆盖原文件,也可以更安全地保存为新文件,以便对比前后差异。 + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**预期结果:** +打开 `CopyWithPivot.xlsx`,你会看到原始透视表位于 **A1:J20**,而一个相同的副本从 **A31:J50** 开始。两个透视表可以独立刷新,且原始透视表关联的切片器在副本上仍然有效,因为它们共享同一缓存。 + +--- + +## 常见问题与变体 + +### 能一次性复制多个透视表吗? + +完全可以。遍历所有透视表(`worksheet.PivotTables`),并将每个透视表的范围复制到不同的目标位置。只需确保目标范围不重叠。 + +### 如果源工作簿受密码保护怎么办? + +Aspose.Cells 允许在构造 `Workbook` 时传入密码来打开受保护的文件: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### 如何在复制行时不影响公式? + +如果只需要 *值*(不保留公式),可以使用带 `CopyOptions` 标志的 `CopyRows`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### 能否将行复制到 *不同* 的工作簿? + +可以。先在源工作表中复制行,然后通过 `targetWorkbook.Worksheets.AddCopy(worksheet)` 将工作表克隆到另一个 `Workbook` 实例中。 + +--- + +## 稳健的 Excel Automation Copy Rows 进阶技巧 + +- **复制前验证范围**。使用 `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` 可防止越界错误。 +- **复制大范围时关闭计算**:`workbook.Settings.CalcMode = CalcMode.Manual;` —— 可显著提升速度。 +- **处理大量文件时释放对象**:`workbook.Dispose()`,以释放本机资源。 +- **记录操作日志**——尤其在生产流水线中,便于追踪处理的文件并及时捕获错误。 + +--- + +## 结论 + +现在,你已经掌握了使用 Aspose.Cells 在 C# 中 **how to duplicate pivot** 的完整方法,并了解了从 **load excel workbook c#** 到 **excel automation copy rows** 的全流程以及最终保存。示例代码自包含、开箱即用,并可扩展以处理多个透视表、受保护文件或跨工作簿复制。 + +接下来可以尝试以下扩展: + +- 编程刷新复制后的透视表(`pivotTable.RefreshData();`)。 +- 将复制区域导出为 CSV,以供下游处理。 +- 将代码集成到 ASP.NET Core API 中,让用户上传文件后即时获得复制透视表的版本。 + +祝编码愉快,愿你的 Excel 自动化永远顺畅! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/row-and-column-management/_index.md b/cells/chinese/net/row-and-column-management/_index.md index e65f992eb4..8eae47f345 100644 --- a/cells/chinese/net/row-and-column-management/_index.md +++ b/cells/chinese/net/row-and-column-management/_index.md @@ -68,6 +68,8 @@ 学习如何使用 Aspose.Cells for .NET 在 Excel 中删除一行。本分步指南涵盖先决条件、代码导入以及无缝数据操作的详细演示。 ### [在 Aspose.Cells .NET 中删除多行](./delete-multiple-rows-aspose-cells/) 学习如何使用 Aspose.Cells for .NET 在 Excel 中删除多行数据。本指南详细分步,涵盖先决条件、代码示例以及开发人员常见问题解答。 +### [在 Aspose.Cells .NET 中删除行并保护标题行](./aspose-cells-delete-rows-protect-header-row-in-excel/) +学习如何在删除行时保留标题行,防止误删关键数据的分步指南。 ### [在 Aspose.Cells .NET 中插入列](./insert-column-aspose-cells/) 学习如何使用 Aspose.Cells for .NET 在 Excel 中插入列。按照我们简单的分步指南,无缝添加新列。非常适合 .NET 开发人员。 ### [在 Aspose.Cells .NET 中插入一行](./insert-row-aspose-cells/) diff --git a/cells/chinese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/chinese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..ff5a1213ec --- /dev/null +++ b/cells/chinese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells 删除行时保护标题行。了解如何检索第一个表并在 C# 中安全删除 Excel 表格行。 +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: zh +og_description: Aspose Cells 删除行时保护标题行。了解如何检索第一个表并在 C# 中安全删除 Excel 表格行。 +og_title: Aspose Cells 删除行 – 在 Excel 中保护标题行 +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells 删除行 – 保护 Excel 中的标题行 +url: /zh/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells 删除行 – 保护 Excel 中的标题行 + +是否曾尝试从表格中 **aspose cells delete rows**,却发现标题行消失了?这在以编程方式操作 Excel 工作表时是一个常见的陷阱。在本指南中,我们将演示一个完整、可运行的解决方案,**保护标题行**,展示如何 **retrieve first table**,以及安全地 **delete Excel table rows** 而不破坏结构。 + +我们将涵盖从加载工作簿到处理 Aspose 在尝试孤立标题时抛出的异常的所有内容。完成后,您将拥有一个可靠的模式,可直接用于任何使用 Aspose.Cells 的 .NET 项目。 + +--- + +## 您需要的条件 + +- **Aspose.Cells for .NET** (v23.12 或更高) – 该库允许您在未安装 Office 的情况下处理 Excel 文件。 +- 基本的 C# 开发环境(Visual Studio、Rider 或 `dotnet` CLI)。 +- 一个 Excel 文件(`TableWithHeader.xlsx`),其中至少包含一个 **ListObject**(Excel 表格),其标题行位于第一行。 + +除 Aspose.Cells 外,无需其他 NuGet 包。 + +--- + +## 步骤 1:加载工作簿并检索第一个表格 + +首先需要打开工作簿并获取要修改的表格。这就是次要关键字 **retrieve first table** 发挥作用的地方。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**为什么这很重要:** +- `Workbook` 在无需安装 Excel 的情况下读取文件。 +- `worksheet.ListObjects[0]` 是最直接的 **retrieve first table** 方法;如果有多个表格,可以遍历或使用表格名称。 + +> **专业提示:** 如果不确定工作表是否实际包含表格,请先检查 `worksheet.ListObjects.Count`,以避免 `IndexOutOfRangeException`。 + +## 步骤 2:在删除行时保护标题行 + +现在进入关键部分:**aspose cells delete rows** 而不删除标题。Aspose 的 `DeleteRows` 方法接受零基起始索引和计数。尝试删除标题(第 0 行)会触发异常,这正是我们想要避免的。 + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**逻辑说明:** + +| 步骤 | 原因 | +|------|--------| +| `table.DeleteRows(1, 2);` | 索引 1 指向 **第二** 行(第一条数据行)。删除两行相当于在 Excel 中删除第 2‑3 行,保持标题(第 1 行)不受影响。 | +| `catch (Exception ex)` | Aspose 仅在操作会导致标题孤立时抛出异常。捕获它可以记录友好信息,而不是让应用崩溃。 | +| `Save` | 保存更改后,您可以打开 `Result.xlsx`,看到标题仍然存在。 | + +> **如果真的需要删除标题怎么办?** +> 在删除之前使用 `table.ShowHeaders = false;`,或删除整个表格并重新创建。但在大多数业务场景中,您会希望 **protect header row**。 + +## 步骤 3:验证结果 – 预期输出 + +运行程序后,打开 `Result.xlsx`。您应看到: + +- 第一行仍包含原始列标题。 +- 第 2‑3 行(我们目标的行)已被删除,其余数据上移。 + +控制台将显示: + +``` +Rows deleted successfully. +``` + +如果误删了标题(例如 `table.DeleteRows(0, 1);`),输出将是: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +该信息确认 Aspose 的内置保护机制正在发挥作用。 + +## 步骤 4:**删除 Excel 表格行** 的替代方法 + +有时您需要更细致的控制——例如基于条件删除行,或删除不连续的行。以下是两种快速模式,可保持标题安全。 + +### 4.1 通过数据过滤删除行 + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 使用范围批量删除 + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +两个代码片段都遵循 **protect header row** 规则,因为起始索引从不低于 1。 + +## 步骤 5:常见陷阱及规避方法 + +| 陷阱 | 产生原因 | 解决方案 | +|---------|----------------|-----| +| 意外删除标题 | 使用 `0` 作为起始索引 | 始终从 `1` 开始处理数据行,或先检查 `table.ShowHeaders`。 | +| `IndexOutOfRangeException`(当工作表没有表格时) | 假设表格存在 | 在访问 `[0]` 前验证 `worksheet.ListObjects.Count > 0`。 | +| 更改未保存 | 忘记调用 `Save` | 在修改后调用 `workbook.Save`。 | +| 在中间删除行会导致索引移动,导致跳过 | 在删除时正向遍历 | **反向**遍历或先收集要删除的行。 | + +## 步骤 6:整合示例 – 完整可运行示例 + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +运行此程序,打开 `Result.xlsx`,您会看到标题保持不变,而选中的行已被删除。这就是针对 **aspose cells delete rows**、且不牺牲标题的 **完整、独立的解决方案**。 + +## 结论 + +我们已经演示了如何在 **protecting the header row** 的同时 **aspose cells delete rows**,以及如何 **retrieve first table**,并提供了多种安全 **delete excel table rows** 的方法。关键要点如下: + +- 删除时始终从索引 1 开始,以保留标题。 +- 使用 `try/catch` 处理 Aspose 的内置保护异常。 +- 在操作前验证表格是否存在,条件删除行时采用反向遍历。 + +准备好升级了吗?尝试将此方法与 **Aspose Cells** 的样式 API 结合,在删除前突出显示要删除的行,或在多个工作表之间自动化此过程。可能性无限,而您现在拥有了可靠的模式可供构建。 + +如果您觉得本教程有帮助,请点个赞,分享给团队成员,或留下评论分享您的特殊案例解决方案。祝编码愉快! + +![Aspose Cells 删除行示例 – 标题行受保护](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/chinese/net/saving-and-exporting-excel-files-with-options/_index.md index 8e51c73b9a..d0a58db673 100644 --- a/cells/chinese/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/chinese/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells for .NET 为开发人员提供了强大的工具来管理 .NET 应 了解如何使用 Aspose.Cells for .NET 以编程方式在 Excel 文件中指定文档属性(如版本、作者和标题),并提供分步说明。 ### [导出时修剪前导空白行和列](./trimming-leading-blank-rows-and-columns/) 使用 Aspose.Cells for .NET 修剪前导空白行和空白列,简化您的 CSV 导出流程。只需几步即可获得干净的数据。 +### [如何在 C# 中保存工作簿 – 完整的 Excel 自动化指南](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +了解如何使用 Aspose.Cells for .NET 在 C# 中保存工作簿,完成 Excel 自动化的完整指南。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/chinese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..abbccf971b --- /dev/null +++ b/cells/chinese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-22 +description: 如何在 C# 中使用 Aspose.Cells 保存工作簿——一步步指南,涵盖如何加载 Excel、创建工作表、复用工作表以及生成报告。 +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: zh +og_description: 如何使用 Aspose.Cells 在 C# 中保存工作簿。学习如何加载 Excel、创建工作表、复用工作表以及在单个教程中生成报告。 +og_title: 如何在 C# 中保存工作簿 – 完整的 Excel 自动化指南 +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: 如何在 C# 中保存工作簿 – 完整的 Excel 自动化指南 +url: /zh/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中保存工作簿 – 完整的 Excel 自动化指南 + +有没有想过在处理完数据后,**如何在 C# 中保存工作簿**?你并不孤单。大多数开发者都会遇到报告在屏幕上看起来完美,却无法写回磁盘的情况。在本教程中,我们将演示一个完整的示例,不仅展示**如何保存工作簿**,还涵盖**如何加载 Excel**、**如何创建工作表**、**如何复用工作表**以及**如何生成报告**——全部使用 Aspose.Cells。 + +把它想象成一次咖啡休息时的聊天,我会从笔记本里抽出代码并逐行解释。到最后,你将拥有一个可运行的程序,加载模板、通过 SmartMarker 注入数据、复用已有的 Detail 工作表名称,最后将文件写入你的文件夹。没有神秘操作,只有可以复制粘贴的清晰步骤。 + +## 你需要的准备 + +- **Aspose.Cells for .NET**(截至 2026 年的最新版本)。你可以通过 NuGet 使用 `Install-Package Aspose.Cells` 获取它。 +- .NET 开发环境(Visual Studio、Rider,或带有 C# 扩展的 VS Code 都可以)。 +- 一个名为 `MasterTemplate.xlsx` 的基础 Excel 模板文件,放在你可控的文件夹中。 +- 基础的 C# 知识——只要你写过 `Console.WriteLine`,就可以开始。 + +> **小贴士:** 将模板放在单独的 *Resources* 文件夹中,并将其属性设为 “Copy if newer”,以确保路径在各次构建中保持一致。 + +现在,让我们深入代码。 + +## 步骤 1:如何加载 Excel – 打开模板工作簿 + +首先需要将工作簿加载到内存中。Aspose.Cells 只需一行代码即可完成,但了解其背后的原因有助于后续排查问题。 + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **为什么重要:** 加载工作簿后,你可以访问模板中的每个工作表、样式和命名范围。如果文件未找到,Aspose 会抛出 `FileNotFoundException`,因此请仔细检查路径。 +- **边缘情况:** 如果模板受密码保护,需要在 `Workbook` 构造函数中传入密码:`new Workbook(path, new LoadOptions { Password = "pwd" })`。 + +## 步骤 2:如何复用工作表 – 配置 SmartMarker 选项 + +SmartMarker 可以自动创建新的明细工作表,但你可能已经有一个名为 **Detail** 的工作表。为避免冲突,我们告诉处理器复用该名称。 + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **为什么重要:** 若不设置此选项,Aspose 会在名称后添加数字后缀(例如 “Detail1”),这可能会破坏依赖固定工作表名称的宏或公式。 +- **如果工作表不存在怎么办?** Aspose 会为你创建它——因此同一段代码在工作表存在或不存在时都能正常工作。 + +## 步骤 3:如何创建工作表 – 准备数据源 + +虽然这里我们没有手动添加工作表,但你提供给 SmartMarker 的数据决定是否会创建新工作表。让我们构建一个简单的匿名对象来模拟订单列表。 + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **为什么重要:** SmartMarker 会扫描模板中的标记,如 `&=Header` 和 `&=Items.Id`。`orderData` 的结构必须与这些标记完全匹配,否则处理器会悄悄跳过它们。 +- **变体:** 如果数据来自数据库,可将匿名类型替换为 DTO 列表或 `DataTable`。处理器同样支持这两种形式。 + +## 步骤 4:如何生成报告 – 处理 SmartMarker + +现在我们将数据绑定到模板。处理器遍历第一个工作表,替换标记并生成明细工作表。 + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **为什么重要:** 这行代码完成了核心工作——填充标题、遍历 `Items`,并遵循我们之前设置的 `DetailSheetNewName`。 +- **常见问题:** *如果有多个工作表包含标记怎么办?* 可以遍历每个工作表并单独调用 `SmartMarkerProcessor.Process`。 + +## 步骤 5:如何保存工作簿 – 将结果文件持久化 + +最后,我们将修改后的工作簿写回磁盘。这就是**如何保存工作簿**变得具体的时刻。 + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **为什么重要:** `Save` 方法支持多种格式(`.xlsx`、`.xls`、`.csv`、`.pdf` 等)。默认保存为 Excel 文件,但你可以传入 `SaveOptions` 对象来更改输出格式。 +- **边缘情况:** 如果目标文件已在 Excel 中打开,`Save` 会抛出 `IOException`。请确保关闭所有实例或在每次运行时使用唯一的文件名。 + +![C# 中保存工作簿示例](/images/how-to-save-workbook-csharp.png "C# 中保存工作簿 – 过程的可视化概览") + +### 完整工作示例 + +将所有内容整合在一起,下面是一个可自行编译运行的控制台应用示例: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**预期输出:** 运行后,你会在 `YOUR_DIRECTORY` 中找到 `SmartMarkerWithDupDetail.xlsx`。打开它,你应该看到: + +- 原始标题已填充为 “Orders”。 +- 一个名为 **Detail** 的新(或复用)工作表,包含两行数据:`Id=1, Qty=5` 和 `Id=2, Qty=3`。 + +如果 **Detail** 工作表已经存在,其内容将被新数据覆盖——不会出现多余的工作表。 + +## 常见问题 (FAQ) + +| 问题 | 答案 | +|----------|--------| +| *我可以保存为 PDF 而不是 XLSX 吗?* | 可以。将 `workbook.Save("file.xlsx")` 替换为 `workbook.Save("file.pdf", SaveFormat.Pdf);`。 | +| *如果我的模板有多个 SmartMarker 区段怎么办?* | 对每个包含标记的工作表调用 `SmartMarkerProcessor.Process`,或传入匹配每个区段的数据对象集合。 | +| *有没有办法在 Detail 工作表上追加数据而不是覆盖?* | 使用 `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;`(在新版 Aspose 中可用)。 | +| *是否需要释放 Workbook?* | `Workbook` 类实现了 `IDisposable`。请使用 `using` 块进行资源管理。 | + +## 结论 + +我们已经完整演示了在 C# 中**如何保存工作簿**的全过程,涵盖了整个流水线:**如何加载 Excel**、**如何创建工作表**(通过 SmartMarker 隐式实现)、**如何复用工作表**以及**如何生成报告**。这些代码可以直接嵌入任何 .NET 项目,说明内容也足以帮助你在更复杂的场景中进行改造——例如多工作表报告、条件格式或导出为 PDF。 + +准备好迎接下一个挑战了吗?可以尝试添加一个可视化订单数量的图表,或将输出格式切换为 CSV 以便后续处理。加载、处理、保存的相同原则依然适用,你会在许多报表任务中反复使用此模式。 + +如果遇到问题或有扩展想法,欢迎留言。祝编码愉快,尽情享受终于能够**按需保存工作簿**的顺畅体验! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/smart-markers-dynamic-data/_index.md b/cells/chinese/net/smart-markers-dynamic-data/_index.md index a73fb07d12..493e003ea9 100644 --- a/cells/chinese/net/smart-markers-dynamic-data/_index.md +++ b/cells/chinese/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Aspose.Cells 智能标记器还支持匿名类型,无需预定义结构即可 通过在分步指南中使用智能标记轻松处理嵌套对象,释放 Aspose.Cells 的 Excel 报告潜力。 ### [使用智能标记 Aspose.Cells 实现变量数组](./variable-array-smart-markers/) 解锁 Aspose.Cells 的强大功能。逐步了解如何使用智能标记实现变量数组,从而无缝生成 Excel 报告。 +### [如何在 C# 中使用 SmartMarker 生成 Excel 报告 – 完整指南](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/chinese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..dec963d671 --- /dev/null +++ b/cells/chinese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-03-22 +description: 如何使用 C# 通过主从模板生成 Excel 报表。快速学习使用 C# 填充 Excel 模板,利用 SmartMarker 实现可重复的工作表。 +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: zh +og_description: 如何使用可复用模板在 C# 中生成 Excel 报表。本分步指南展示了如何使用 C# 将主从数据填充到 Excel 模板中。 +og_title: 如何在 C# 中生成 Excel 报表 – 完整的 SmartMarker 教程 +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: 如何在 C# 中生成 Excel 报表 – 使用 SmartMarker 的完整指南 +url: /zh/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 SmartMarker 在 C# 中生成 Excel 报表 – 完整指南 + +是否曾经想过 **如何在 C# 中生成 Excel 报表**,却不想编写无尽的逐单元格代码?你并不是唯一的遇到这种困惑的人。大多数开发者在需要一个精美的、多工作表的报表(比如订单及其明细)时都会卡住,却又不想每次都重新造轮子。 + +好消息是?只要有一个现成的 Excel 模板,加上 Aspose.Cells 的 **SmartMarker** 引擎,你就可以在几行代码内 **populate Excel template C#**。本教程将通过真实场景演示每一步的意义,并提供一个完整、可直接运行的示例,供你今天就复制粘贴使用。 + +> **你将获得:** 一个主从结构的 Excel 报表,每个订单都会生成自己的工作表,全部由普通的 C# 对象驱动。无需手动遍历单元格,也不必担心脆弱的公式——代码简洁且易于维护。 + +--- + +## Prerequisites + +在开始之前,请确保你已经具备以下条件: + +- **.NET 6.0**(或更高)已安装——代码以 .NET 6 为目标,也可在 .NET Framework 4.7+ 上运行。 +- **Aspose.Cells for .NET** NuGet 包(`Install-Package Aspose.Cells`)——提供 `Workbook`、`SmartMarkerProcessor` 等类。 +- 一个名为 **MasterDetailTemplate.xlsx** 的 Excel 文件放置在 `YOUR_DIRECTORY` 中。该文件应在首个工作表包含类似 `{{Orders.OrderId}}` 的 SmartMarker 块,并在明细行使用嵌套块 `{{Orders.Items.Prod}}`。 +- 对 C# 匿名类型有基本了解——我们将使用它来建模订单和明细。 + +如果上述任意一点你不熟悉,也无需担心。后文会提及替代方案(例如使用 EPPlus),但核心概念保持不变。 + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +首先打开模板文件。把模板看作骨架,SmartMarker 稍后会用真实数据填充。 + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**为什么重要:** 通过将布局(模板)与数据(C# 对象)分离,设计师和开发者都能各自专注——设计师可以修改字体、颜色或公式,而无需触碰代码。 + +--- + +## Step 2: Build the Master‑Detail Data Source + +接下来创建用于填充模板的数据。对于典型的订单报表,你会有一个订单集合,每个订单内部又包含一个明细集合。 + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **小贴士:** 如果需要在多个报表之间复用,建议使用强类型类而非匿名类型。这里使用匿名类型是为了让示例更简洁。 + +**为什么重要:** SmartMarker 通过属性名(`Orders`、`OrderId`、`Items`、`Prod`、`Qty`)与模板中的占位符匹配。层级结构必须完全对应,否则引擎会跳过相应部分。 + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +默认情况下 SmartMarker 会把所有行写入同一个工作表。我们希望每个订单生成独立的工作表,这在后续打印或按订单发送 PDF 时非常方便。 + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**为什么重要:** `EnableRepeatingSheet` 省去了手动复制工作表的步骤。引擎会复制原始工作表、注入订单数据,并自动重命名(通常使用第一列的值)。 + +--- + +## Step 4: Process the Template with Your Data + +现在把所有内容绑定在一起。`SmartMarkerProcessor` 会遍历工作簿、替换标签,并根据指示创建新工作表。 + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**为什么重要:** 这一行代码完成了所有繁重工作——解析模板、遍历集合以及处理嵌套表格。它是 **populate Excel template C#** 的核心,完全不需要手写循环。 + +--- + +## Step 5: Save the Finished Report + +最后,将填充好的工作簿写入磁盘。你也可以直接将其流式输出到 HTTP 响应,以供 Web 应用使用。 + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**为什么重要:** 保存为文件后,你可以在 Excel 中打开、与利益相关者共享,或进一步用于 PDF 转换等下游流程。 + +--- + +## Full Working Example (Copy‑Paste Ready) + +下面是完整的程序代码,包括 `using` 指令和 `Main` 方法。将其粘贴到控制台应用中,修改文件路径后即可运行。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +打开 `MasterDetailResult.xlsx` 后,你会看到: + +- **工作表 “Order_1”** – 包含订单 1 的标题以及产品 A、B 的两行明细。 +- **工作表 “Order_2”** – 包含订单 2 的标题以及产品 C 的单行明细。 +- 原始模板中的所有公式、格式和图表均被完整保留。 + +![Excel 报表(每个订单单独工作表)示例 – 已填充工作簿](/images/excel-report-example.png "生成的 Excel 报表,展示主从数据") + +*图片 alt 文本:生成的 Excel 报表,每个订单拥有单独工作表,展示如何使用 C# 和 SmartMarker 生成 Excel 报表。* + +--- + +## Common Questions & Edge Cases + +### 如果我需要在重复工作表之外再保留一个静态工作表(例如汇总页)怎么办? + +仅在包含主块的工作表上设置 `EnableRepeatingSheet = true`。其他工作表保持不变,这样你可以在原始模板中保留汇总页。 + +### 能否使用 DataTable 替代匿名对象? + +完全可以。SmartMarker 支持任何实现了 `IEnumerable` 的对象。只需将匿名类型换成 `DataTable`,并确保列名与标签匹配。 + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### 如何自定义生成工作表的命名规则? + +实现自定义的 `ISmartMarkerSheetNaming` 接口(或在处理后手动操作 `workbook.Worksheets`)。大多数开发者会根据单元格的值来重命名工作表,例如: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### 如果我的模板使用了不同的占位符语法怎么办? + +SmartMarker 允许通过 `SmartMarkerOptions` 设置自定义分隔符。例如,将 `{{ }}` 替换为 `<< >>`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **在内存中缓存模板**,如果每个请求需要生成大量报表,避免每次都从磁盘读取会显著降低延迟。 +- **结合 PDF 转换**(`workbook.Save("report.pdf", SaveFormat.Pdf)`)实现邮件友好的输出。 +- **使用配置文件或环境变量参数化文件路径**,使解决方案在开发、测试、生产环境之间保持可移植。 +- **单独对数据层进行单元测试**;SmartMarker 本身是确定性的,只需验证传入的数据结构符合预期即可。 + +--- + +## Conclusion + +我们已经完整演示了 **如何在 C# 中端到端生成 Excel 报表**——从加载支持 SmartMarker 的模板到保存包含主从关系的多工作表工作簿。通过仅几行代码 **populate Excel template C#**,你可以避免脆弱的逐单元格逻辑,并让设计师自由掌控最终视觉效果。 + +接下来,你可以进一步探索: + +- 使用 **populate Excel template C#** 为每个工作表自动更新的图表。 +- 将 **excel smartmarker c#** 与 ASP.NET Core 集成,直接将报表流式输出到浏览器。 +- 自动化 **c# excel automation** 流程,从 API 或数据库中提取数据生成报表。 + +动手试一试,调整模板,感受从原始数据到精美 Excel 报表的快速转换。有什么问题或酷炫的使用场景?欢迎在下方留言——祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/chinese/net/tables-and-lists/_index.md b/cells/chinese/net/tables-and-lists/_index.md index 2386bd9e6a..7bac354b78 100644 --- a/cells/chinese/net/tables-and-lists/_index.md +++ b/cells/chinese/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Aspose.Cells for .NET 最强大的功能之一就是能够轻松读取和写入 解锁 Aspose.Cells for .NET 的强大功能。通过本指南,学习如何使用查询数据源读取和写入表格。 ### [在 Excel 中设置表格或列表的注释](./setting-comment-of-table-or-list/) 通过我们简单的分步指南了解如何使用 Aspose.Cells for .NET 为 Excel 中的表格设置注释。 +### [使用 Aspose.Cells 在 C# 中创建 Excel 表格 – 步骤指南](./create-excel-table-in-c-step-by-step-guide/) +通过本分步教程,学习如何使用 Aspose.Cells for .NET 在 C# 中创建并配置 Excel 表格,实现高效数据管理。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/chinese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/chinese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..6a5bb5fc5b --- /dev/null +++ b/cells/chinese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-22 +description: 在 C# 中快速创建 Excel 表格。学习如何添加表格、定义表格范围、隐藏表头以及禁用表格筛选,并提供完整代码示例。 +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: zh +og_description: 在 C# 中创建 Excel 表格并提供清晰示例。学习如何添加表格、定义表格范围、隐藏表头以及在几行代码中禁用筛选。 +og_title: 在 C# 中创建 Excel 表格 – 完整编程指南 +tags: +- Aspose.Cells +- C# +- Excel Automation +title: 使用 C# 创建 Excel 表格 – 步骤指南 +url: /zh/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中创建 Excel 表格 – 步骤指南 + +是否曾经需要使用 C# 以编程方式 **create Excel table**?当你掌握正确的步骤时,创建 Excel 表格会轻而易举。在本教程中,我们将演示一个完整、可运行的示例,展示 **how to add table**、**define table range**、**hide table header**,甚至 **disable table filter** ——全部在 IDE 中完成。 + +如果你曾经为不想出现的 AutoFilter UI 而苦恼,那么你来对地方了。阅读完本指南后,你将拥有一段可直接运行的代码片段,生成名为 *TableNoFilter.xlsx* 的干净工作簿,并且了解每行代码的意义。 + +## 你将学到 + +- 如何使用 Aspose.Cells 从头 **create Excel table**。 +- **define table range** 的精确语法(本例为 A1:D5)。 +- 如何启用标题行以显示内置的过滤器 UI。 +- 当不再需要时,**hide table header** 和 **disable table filter** 的技巧。 +- 一个完整的、可直接复制粘贴的 C# 程序,今天即可运行。 + +### 前置条件 + +- .NET 6.0 或更高(代码同样适用于 .NET Framework 4.7+)。 +- 通过 NuGet 安装 Aspose.Cells for .NET(`Install-Package Aspose.Cells`)。 +- 对 C# 和 Visual Studio(或你喜欢的任何 IDE)有基本了解。 + +--- + +## 第一步:设置项目并导入命名空间 + +在 **create Excel table** 之前,你需要一个引用 Aspose.Cells 的控制台项目。打开终端并运行: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +然后打开 *Program.cs*,添加所需的 `using` 语句: + +```csharp +using System; +using Aspose.Cells; +``` + +这些导入让你能够使用 `Workbook`、`Worksheet`、`CellArea` 和 `ListObject` 类,它们支撑了本教程的其余部分。 + +## 第二步:初始化新工作簿并获取第一个工作表 + +创建一个全新的工作簿是第一步。可以把工作簿看作 Excel 文件的容器,工作表则是我们放置表格的具体页面。 + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **为什么重要:** 一个全新的 `Workbook` 默认包含一个空工作表。通过获取 `Worksheets[0]`,我们确保在默认工作表上操作,而无需手动创建工作表。 + +## 第三步:定义表格范围 (A1:D5) + +在 Excel 中,*表格* 位于一个矩形单元格块内。`CellArea` 结构可以帮助我们定位该块。这里我们将 **define table range** 为 A1 到 D5 的单元格。 + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **提示:** 如果需要动态范围,可以根据数据长度计算 `endRow` 和 `endColumn`。零基索引是常见的越界错误来源,请仔细检查你的数字。 + +## 第四步:添加表格并启用标题行 + +现在进入教程的核心:**how to add table** 到工作表。`ListObjects` 集合负责表格,设置 `ShowHeaders = true` 会自动显示 AutoFilter UI。 + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **解释:** +> - `Add(tableRange, true)` 在指定范围内创建一个新的 `ListObject`(即 Excel 表格)。 +> - `true` 标志告诉 Aspose.Cells 将该范围的第一行视为标题行。 +> - 将 `ShowHeaders` 设置为 `true` 使标题可见,并触发内置的过滤器 UI。 + +此时,如果打开生成的工作簿,你会看到一个格式良好的表格,每列标题上都有过滤箭头。 + +## 第五步:隐藏标题行并禁用 AutoFilter + +有时你希望只保留数据而不显示 UI 元素。比如导出干净的报告时不需要过滤器。下面演示 **hide table header** 和 **disable table filter** 的技巧: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **为什么要这样做:** +> - `ShowHeaders = false` 移除可视的标题行,使表格变成普通的数据块。 +> - 将 `AutoFilter = null` 设为 null 可清除隐藏的过滤对象,确保没有残留的过滤逻辑。这正是我们所说的 **disable table filter**。 + +## 第六步:将工作簿保存到磁盘 + +最后,我们将文件写入你指定的位置。将 `"YOUR_DIRECTORY"` 替换为你机器上的实际路径。 + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +运行程序后,你应该看到: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +打开文件后会看到一个仅包含数据块的工作表(没有标题,也没有过滤箭头)。这就是完整的流程——从 **create Excel table** 到 **disable table filter**。 + +--- + +## 完整可运行示例(复制粘贴即可) + +下面是完整的程序代码,已准备好编译。只需将占位目录替换为有效路径。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**预期结果:** 一个名为 *TableNoFilter.xlsx* 的文件,包含 A1:D5 的普通数据范围,没有可见的标题行,也没有过滤下拉框。 + +--- + +## 常见问题与边缘情况 + +### 如果需要在同一工作表中放置多个表格怎么办? + +只需使用新的 `CellArea` 和新的 `ListObject` 再次执行 **Step 3**。每个表格都有独立的标题和过滤设置,你可以隐藏某个表格而保留另一个可见。 + +### 在隐藏标题之前,我可以为表格设置样式(交替行、颜色)吗? + +当然可以。`ListObject` 提供了 `TableStyleType` 属性。例如: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +你可以在隐藏标题之前 **apply** 样式;视觉格式会保持不变。 + +### 如果我想保留标题但仅隐藏过滤箭头怎么办? + +将 `ShowHeaders = true`(保留标题行),然后清除过滤器: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +这样即可满足 **disable table filter** 的需求,同时保留列标签。 + +### 这仅适用于 .xlsx 文件吗? + +Aspose.Cells 会根据传递给 `Save` 的文件扩展名自动检测格式。你也可以输出为 `.xls`、`.csv`,甚至使用不同扩展名输出为 `.pdf`。 + +--- + +## 结论 + +我们已经完整介绍了使用 Aspose.Cells 在 C# 中 **create Excel table** 的所有必要步骤,从 **define table range** 到 **hide table header** 以及 **disable table filter**。代码简短、清晰,已可用于生产环境。 + +接下来,你可以探索使用动态数据 **how to add table**、应用自定义样式,或将同一工作簿导出为 PDF。这些主题都基于你刚刚掌握的基础,欢迎自行实验并将代码片段应用到自己的项目中。 + +有想法想分享吗?在下方留言吧,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/converting-excel-files-to-other-formats/_index.md b/cells/czech/net/converting-excel-files-to-other-formats/_index.md index de61c4ec61..e257f70883 100644 --- a/cells/czech/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/czech/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Naučte se, jak převést soubory Excelu do formátu PDF/A-1a pro archivní úč Naučte se, jak programově převést JSON do CSV v .NET pomocí Aspose.Cells. Postupujte podle našeho podrobného návodu, abyste zajistili bezproblémovou transformaci dat. ### [Programový převod souboru Excel do formátu PPTX v .NET](./converting-excel-file-to-pptx/) Naučte se, jak programově převést soubor aplikace Excel do prezentace v PowerPointu (PPTX) pomocí Aspose.Cells pro .NET v tomto podrobném návodu. +### [Export Excel do PowerPoint – Kompletní průvodce C#](./export-excel-to-powerpoint-complete-c-guide/) +Naučte se, jak exportovat soubory Excel do PowerPointu pomocí Aspose.Cells pro .NET v tomto podrobném průvodci C#. ### [Programové zadávání HTML CrossType ve výstupním HTML v .NET](./specifying-html-crosstype-in-output-html/) Naučte se, jak v Aspose.Cells pro .NET zadat HTML CrossType. Postupujte podle našeho podrobného návodu a převeďte soubory Excelu do HTML s přesností. ### [Programové čtení čísel v tabulce v .NET](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ V tomto podrobném návodu se naučíte, jak uložit sešit ve formátu Strict O popis: V tomto podrobném tutoriálu se naučíte, jak programově sledovat průběh konverze dokumentů pomocí Aspose.Cells pro .NET. ### [Sledování průběhu konverze dokumentů pro TIFF programově v .NET](./tracking-document-conversion-progress-for-tiff/) Naučte se programově sledovat průběh konverze TIFF pomocí Aspose.Cells pro .NET s naším podrobným návodem. Zlepšete si své dovednosti v oblasti správy dokumentů. +### [Nastavení tiskové oblasti v Excelu a export do PowerPointu – krok za krokem](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Naučte se, jak nastavit tiskovou oblast v Excelu a exportovat ji do PowerPointu pomocí Aspose.Cells pro .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/czech/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..acc40bed32 --- /dev/null +++ b/cells/czech/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Naučte se, jak exportovat Excel do PowerPointu, nastavit tiskovou oblast + v Excelu a uložit Excel jako PPTX s editovatelnými grafy a OLE objekty během několika + kroků. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: cs +og_description: Rychle exportujte Excel do PowerPointu. Tento tutoriál ukazuje, jak + nastavit tiskovou oblast v Excelu a uložit Excel jako PPTX s editovatelnými grafy + a OLE objekty. +og_title: Export Excel do PowerPointu – Kompletní průvodce C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Export Excel do PowerPointu – Kompletní průvodce C# +url: /cs/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Export Excel to PowerPoint – Kompletní průvodce v C# + +Potřebujete **exportovat Excel do PowerPointu**? Jste na správném místě. Ať už vytváříte týdenní prezentační sadu nebo automatizujete reportingový kanál, převod listu Excelu na sadu snímků PowerPointu vám může ušetřit hodiny ručního kopírování‑vkládání. + +V tomto tutoriálu si projdeme praktický příklad, který nejen **exportuje excel do powerpointu**, ale také ukazuje, jak **nastavit oblast tisku v Excelu** a **uložit excel jako pptx**, aby výsledné snímky měly grafy a OLE objekty plně editovatelné. Na konci budete mít připravený C# program, který vytvoří profesionálně vypadající soubor `.pptx` bez jakéhokoli ručního zásahu. + +## Co budete potřebovat + +- **.NET 6+** (jakékoli aktuální .NET runtime; kód používá syntaxi C# 10) +- **Aspose.Cells for .NET** – knihovna, která provádí export. Získáte ji z NuGet (`Install-Package Aspose.Cells`). +- Excel sešit, který obsahuje alespoň jeden graf a/nebo OLE objekt (ve vzorovém kódu se používá soubor `ChartAndOle.xlsx`). +- Oblíbené IDE (Visual Studio, Rider nebo VS Code – podle toho, co preferujete). + +To je vše. Žádná COM interop, žádná instalace Office není potřeba. + +> **Proč používat knihovnu?** +> Vestavěný Office Interop je křehký, vyžaduje Office na serveru a často vytváří rastrové obrázky, když opravdu chcete vektorové, editovatelné tvary. Aspose.Cells provádí těžkou práci a zachovává vše editovatelné v PowerPointu. + +--- + +## Krok 1: Načtení Excel sešitu + +Nejprve načteme zdrojový soubor do paměti. Třída `Workbook` abstrahuje celý Excel soubor a poskytuje přístup k listům, grafům a OLE objektům. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Proč je to důležité:** Načtení sešitu je základem. Pokud je cesta špatná nebo je soubor poškozený, zbytek pipeline se nikdy nespustí. Blok `try…catch` vám místo havárie poskytne přátelskou chybovou zprávu. + +--- + +## Krok 2: Nastavení oblasti tisku v Excelu + +Před exportem obvykle chcete omezit výstup na konkrétní rozsah. Zde vstupuje do hry **set print area excel**. Definováním oblasti tisku řeknete Aspose.Cells, které buňky (a související objekty) mají být zobrazeny na snímku. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Tip:** Pokud máte více listů, opakujte přiřazení `PrintArea` pro každý list, který chcete exportovat. Pokud oblast tisku nenastavíte, exportuje se celý list, což může zvětšit velikost souboru PowerPointu. + +--- + +## Krok 3: Konfigurace možností exportu – zachovat grafy a OLE editovatelné + +Aspose.Cells nabízí bohatý objekt `ImageOrPrintOptions`. Přepnutím `ExportChartObjects` a `ExportOleObjects` zachováme vektorovou povahu grafů a živou editovatelnost OLE objektů (např. vložených Word dokumentů nebo PDF). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Co se děje pod kapotou?** +Když je `ExportChartObjects` nastaven na `true`, Aspose převádí graf na nativní PowerPoint grafický objekt, zachovává sérii, osy i formátování. Při povoleném `ExportOleObjects` jsou vložené objekty vloženy jako OLE rámy, takže dvojklik v PowerPointu otevře původní aplikaci (Word, Excel atd.) pro úpravy. + +--- + +## Krok 4: Uložení listu jako editovatelný PowerPoint soubor + +Nyní spojíme vše dohromady. Metoda `Save` zapíše soubor `.pptx` s použitím dříve nastavených možností. Výsledkem je sada snímků, kde každý list se stane snímkem (nebo sérií snímků, pokud oblast tisku přesahuje více stránek). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Očekávaný výsledek + +- **Umístění souboru:** `C:\MyProjects\EditableChartOle.pptx` +- **Obsah:** + - Snímek zobrazující rozsah `A1:H30` přesně tak, jak vypadá v Excelu. + - Všechny grafy jsou PowerPoint grafické objekty — klikněte na sloupec a upravte data. + - OLE objekty (např. vložený Word dokument) lze otevřít a upravit přímo ze snímku. + +Po otevření PPTX v PowerPointu byste měli vidět čistý snímek s plně editovatelnými komponentami — žádné rastrové snímky obrazovky. + +--- + +## Okrajové případy a varianty + +### Více listů → více snímků +Pokud chcete, aby se každý list stal vlastním snímkem, jednoduše projděte `workbook.Worksheets` a zavolejte `Save` s `SheetToImageOptions`, který cílí na konkrétní index listu. Aspose automaticky vygeneruje nový snímek pro každou iteraci. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Velké rozsahy a výkon +Export masivní oblasti tisku (např. `A1:Z1000`) může zvýšit využití paměti. Pro zmírnění zvažte: +- Rozdělení rozsahu na menší úseky a export jako samostatné snímky. +- Použití `WorkbookSettings` ke zvýšení `MemorySetting`, pokud narazíte na `OutOfMemoryException`. + +### Problémy s kompatibilitou +Vygenerovaný PPTX funguje v PowerPointu 2016 a novějším. Starší verze jej mohou otevřít, ale mohou ztratit některé pokročilé funkce grafů. Vždy testujte na cílové verzi Office, pokud šíříte prezentaci široce. + +--- + +## Kompletní funkční příklad (připravený ke kopírování) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Nahraďte pevně zakódované cesty konfiguračními hodnotami nebo argumenty příkazové řádky pro flexibilnější nástroj. + +--- + +## Často kladené otázky + +**Q: Můžu exportovat jen graf bez okolních buněk?** +A: Ano. Použijte jen `ExportChartObjects` a nastavte oblast tisku na ohraničující rozsah grafu. Graf se objeví vycentrovaný na snímku. + +**Q: Co když můj sešit obsahuje makra?** +A: Aspose.Cells ignoruje VBA makra během exportu. Pokud potřebujete makro funkčnost v PowerPointu, budete ji muset znovu vytvořit pomocí PowerPoint VBA nebo add‑inů. + +**Q: Funguje to na Linuxu/macOS?** +A: Rozhodně. Aspose.Cells je čistá .NET knihovna; pokud máte .NET runtime, kód běží napříč platformami. + +--- + +## Závěr + +Právě jste se naučili, jak **exportovat Excel do PowerPointu** a zároveň **nastavit oblast tisku v Excelu** a **uložit excel jako pptx** s plně editovatelnými grafy a OLE objekty. Klíčové kroky jsou načtení sešitu, definování oblasti tisku, konfigurace `ImageOrPrintOptions` a nakonec uložení PPTX. + +Od semene můžete dále zkoumat: +- Export více listů do jedné prezentace. +- Přidání vlastních názvů snímků nebo poznámek programově. +- Převod PPTX na PDF pro distribuci (použijte `SaveFormat.Pdf`). + +Vyzkoušejte kód, upravte oblast tisku a sledujte, jak se vaše data z Excelu magicky objeví v PowerPointu — žádné ruční kopírování‑vkládání není potřeba. Pokud narazíte na potíže, podívejte se do dokumentace Aspose.Cells nebo zanechte komentář níže. Šťastné kódování! + +![Diagram ukazující workflow exportu excel do powerpointu](/images/export-excel-to-powerpoint.png "workflow exportu excel do powerpointu") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/czech/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..1d225a0f40 --- /dev/null +++ b/cells/czech/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-22 +description: Nastavte oblast tisku v Excelu a převádějte Excel do PowerPointu s editovatelnými + tvary. Naučte se, jak opakovat řádek s názvem, vytvořit PowerPoint z Excelu a exportovat + Excel do pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: cs +og_description: Nastavte oblast tisku v Excelu a převedete ji na snímek PowerPointu + s editovatelnými tvary. Postupujte podle tohoto kompletního průvodce, jak opakovat + řádek s nadpisem a exportovat Excel do PPTX. +og_title: Nastavení tiskové oblasti v Excelu – Návod na export do PowerPointu +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Nastavte tiskovou oblast v Excelu a exportujte do PowerPointu – průvodce krok + za krokem +url: /cs/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Nastavení oblasti tisku v Excelu a export do PowerPoint – Kompletní programovací tutoriál + +Už jste někdy potřebovali **set print area** v listu Excel a pak převést ten výřez na snímek PowerPoint? Nejste v tom sami. V mnoha reportovacích řetězcích je potřeba, aby se data, která se pěkně tisknou, objevila také v prezentaci, často s první řádkou opakovanou jako nadpis. Dobrá zpráva? Několika řádky C# můžete **convert excel to powerpoint**, zachovat všechny textová pole editovatelná a dokonce **repeat title row** automaticky. + +V tomto průvodci projdeme vše, co potřebujete vědět: od nastavení oblasti tisku až po vytvoření souboru PPTX, který můžete upravovat přímo v PowerPointu. Na konci budete schopni **create powerpoint from excel**, exportovat výsledek jako **export excel to pptx** a znovu použít stejný kód v jakémkoli .NET projektu. Žádná magie, jen jasné kroky a kompletní, spustitelný příklad. + +## Co budete potřebovat + +- **.NET 6.0** nebo novější (API funguje také s .NET Framework) +- **Aspose.Cells for .NET** (knihovna, která poskytuje `Workbook`, `ImageOrPrintOptions` atd.) +- Základní C# IDE (Visual Studio, Rider nebo VS Code s rozšířením C#) +- Soubor Excel (`input.xlsx`) obsahující data, která chcete exportovat + +To je vše—žádné další NuGet balíčky kromě Aspose.Cells. Pokud knihovnu ještě nepřidali, spusťte: + +```bash +dotnet add package Aspose.Cells +``` + +Nyní jsme připraveni. + +## Krok 1: Načtení sešitu – výchozí bod pro export + +První věc, kterou musíte udělat, je načíst sešit, který obsahuje list, který chcete převést na snímek. Představte si sešit jako zdrojový dokument; bez něj není nic jiného důležité. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Proč je to důležité:** Načtení sešitu vám poskytuje přístup ke kolekci listů, nastavením stránky a exportnímu enginu. Pokud tento krok přeskočíte, nebudete moci nastavit **print area** ani opakovat žádné řádky. + +> **Tip:** Používejte absolutní cestu během testování, poté přepněte na relativní nebo na cestu založenou na konfiguraci pro produkci. + +## Krok 2: Konfigurace možností exportu – zachování editovatelných textových polí a tvarů + +Při exportu do PowerPointu pravděpodobně chcete, aby byl výsledný snímek editovatelný. Aspose.Cells vám to umožní pomocí `ImageOrPrintOptions`. Nastavením `ExportTextBoxes` a `ExportShapeObjects` na `true` řeknete knihovně, aby zachovala tyto objekty jako nativní prvky PowerPointu místo jejich převodu na obrázek. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Proč je to důležité:** Pokud jste někdy potřebovali **convert excel to powerpoint** a poté ručně upravit snímek, toto nastavení vás zachrání před nutností znovu vytvářet textová pole od začátku. Také zajišťuje, že všechny tvary (např. šipky nebo grafy) zůstávají vektorovými objekty, které můžete měnit velikost. + +## Krok 3: Nastavení oblasti tisku a opakování řádku s názvem + +Nyní přicházíme k jádru tutoriálu: **set print area** a nastavení, aby se první řádek opakoval na každé tištěné stránce (nebo, v našem případě, na exportovaném snímku). Oblast tisku říká Excelu, které buňky mají být považovány za tisk – nebo v našem scénáři za export. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Proč je to důležité:** Omezením exportu na `A1:G20` se vyhnete načítání obrovských prázdných oblastí, což urychlí konverzi a udrží snímek přehledný. Řádek `PrintTitleRows` způsobí, že první řádek funguje jako záhlaví – přesně to, co chcete, když **repeat title row** v prezentaci. + +> **Okrajový případ:** Pokud data začínají na řádku 2, upravte oblast odpovídajícím způsobem (např. `PrintTitleRows = "$2:$2"`). + +## Krok 4: Uložení listu jako soubor PowerPoint + +Nakonec zapíšeme snímek na disk. Metoda `Save` přijímá cílový název souboru a možnosti, které jsme dříve nakonfigurovali. Výsledkem je soubor PPTX s editovatelnými textovými poli a tvary, připravený k otevření v PowerPointu. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Co uvidíte:** Otevřete `SheetWithEditableShapes.pptx` v PowerPointu. První řádek se zobrazí jako nadpis, všechny buňky od `A1:G20` jsou vykresleny a všechny tvary, které jste přidali v Excelu, jsou stále přesouvatelné a editovatelné. Žádné rastrové obrázky – jen nativní objekty PowerPointu. + +## Kompletní funkční příklad – všechny kroky dohromady + +Níže je kompletní program připravený ke zkopírování a vložení. Spusťte jej jako konzolovou aplikaci nebo jej vložte do libovolného většího řešení. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Očekávaný výstup:** Po spuštění programu konzole vypíše zprávu o úspěchu a soubor PPTX se objeví na určeném místě. Otevření souboru zobrazí jeden snímek s vybranou oblastí, editovatelnými textovými poli a původními tvary. + +## Často kladené otázky a úskalí + +| Question | Answer | +|----------|--------| +| **Funguje to s více listy?** | Ano. Procházejte `workbook.Worksheets` a opakujte stejné kroky pro každý list, při každém změňte název výstupního souboru. | +| **Co když potřebuji exportovat více než jeden snímek?** | Zavolejte `workbook.Save` vícekrát s různými objekty `ImageOrPrintOptions`, každý nakonfigurovaný s jiným `PageSetup`, pokud je potřeba. | +| **Mohu změnit velikost snímku?** | Použijte `exportOptions.ImageFormat` k nastavení DPI, nebo upravte `sheet.PageSetup.PaperSize` před uložením. | +| **Je Aspose.Cells zdarma?** | Nabízí bezplatnou zkušební verzi s vodoznaky. Pro produkci je vyžadována licence. | +| **Co s Excelovými vzorci?** | Exportované hodnoty jsou **calculated results** v době exportu. Pokud potřebujete živé vzorce v PowerPointu, budete potřebovat jiný přístup. | + +## Tipy pro plynulý pracovní postup + +- **Tip:** Nastavte `Workbook.Settings.CalcMode = CalculationModeType.Automatic` před exportem, aby byly všechny vzorce aktuální. +- **Dejte si pozor na:** Velmi velké oblasti mohou způsobit tlak na paměť. Ořízněte oblast tisku na co nejmenší potřebnou oblast. +- **Tip pro výkon:** Znovu použijte jedinou instanci `ImageOrPrintOptions`, pokud exportujete mnoho listů; vytváření nové při každém exportu přidává režii. +- **Poznámka k verzi:** Výše uvedený kód cílí na Aspose.Cells 23.10 (vydáno v listopadu 2023). Pozdější verze zachovávají stejné API, ale vždy si ověřte poznámky k vydání kvůli možným nekompatibilitám. + +## Závěr + +Probrali jsme, jak **set print area** v listu Excel, opakovat první řádek jako nadpis a poté **export excel to pptx** při zachování editovatelných textových polí a tvarů. Stručně řečeno, nyní znáte spolehlivý způsob, jak **convert excel to powerpoint**, **repeat title row** a **create powerpoint from excel** pomocí několika řádků C#. + +Jste připraveni na další krok? Zkuste automatizovat hromadnou konverzi desítek reportů nebo přidat vlastní rozvržení snímků pomocí PowerPoint SDK po exportu. Možnosti jsou neomezené – experimentujte, zkoušejte nové věci a užívejte si sílu programového generování dokumentů. + +Pokud se vám tento tutoriál hodil, sdílejte ho, zanechte komentář s vlastními úpravami nebo prozkoumejte naše další návody o **export excel to pptx** a souvisejících automatizačních tématech. Šťastné programování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/csv-file-handling/_index.md b/cells/czech/net/csv-file-handling/_index.md index 6f180b4b91..b2a6e7838b 100644 --- a/cells/czech/net/csv-file-handling/_index.md +++ b/cells/czech/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Pro další informace se neváhejte podívat na naše podrobné návody na [otev Naučte se, jak otevírat soubory CSV pomocí Aspose.Cells pro .NET s naším komplexním návodem krok za krokem. Manipulace s kmenovými daty. ### [Otevírání souborů CSV pomocí preferovaného analyzátoru](./csv-file-opening-csv-files-with-preferred-parser/) Naučte se, jak otevírat a analyzovat soubory CSV pomocí vlastních analyzátorů v Aspose.Cells pro .NET. Zvládněte text a data bez námahy. Ideální pro vývojáře. +### [Uložení sešitu jako CSV v C# – Export Excel do CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Naučte se, jak uložit sešit jako CSV pomocí Aspose.Cells pro .NET v jazyce C#. Jednoduchý export Excel do CSV. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/czech/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..4d77386cf8 --- /dev/null +++ b/cells/czech/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-22 +description: Rychle uložte sešit jako CSV v C#. Naučte se, jak exportovat Excel do + CSV, nastavit přesnost a převést xlsx na CSV pomocí Aspose.Cells během několika + řádků. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: cs +og_description: Rychle uložte sešit jako CSV v C#. Tento průvodce ukazuje, jak exportovat + Excel do CSV, nastavit přesnost a převést xlsx na CSV pomocí Aspose.Cells. +og_title: Uložit sešit jako CSV v C# – Exportovat Excel do CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Uložit sešit jako CSV v C# – Exportovat Excel do CSV +url: /cs/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení sešitu jako CSV v C# – Export Excel do CSV + +Už jste někdy potřebovali **save workbook as CSV**, ale nebyli jste si jisti, jak udržet čísla úhledná? Nejste v tom sami. V mnoha scénářích datových pipeline musíme **export Excel to CSV**, přičemž zachováváme konkrétní počet významných číslic, a knihovna Aspose.Cells to dělá hračkou. + +V tomto tutoriálu uvidíte kompletní, připravený příklad, který **saves a workbook as CSV**, ukazuje *how to set precision* a dokonce vysvětluje *how to convert xlsx to CSV* pro reálné projekty. Žádné vágní odkazy – jen kód, který můžete dnes zkopírovat, vložit a spustit. + +## Co se naučíte + +- Přesné kroky k **save workbook as CSV** s nastavením vlastní přesnosti. +- Jak **export Excel to CSV** pomocí `CsvSaveOptions` a proč je důležitá vlastnost `SignificantDigits`. +- Varianty pro různé požadavky na přesnost a běžné úskalí při práci s velkými čísly. +- Rychlý pohled na konverzi souboru `.xlsx` na `.csv` bez ztráty integrity dat. + +### Předpoklady + +- .NET 6.0 nebo novější (kód funguje také na .NET Framework 4.6+). +- NuGet balíček **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Základní znalost C# a práce se soubory. + +Pokud máte vše připravené, pojďme na to. + +![ukázka uložení sešitu jako csv](image.png "ukázka uložení sešitu jako csv") + +## Uložení sešitu jako CSV – krok za krokem průvodce + +Níže je celý program. Každý řádek je okomentován, abyste viděli *proč* je daný kus kódu potřeba, ne jen *co* dělá. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Proč použít `CsvSaveOptions.SignificantDigits`? + +Když **how to set precision** pro export CSV, ve skutečnosti rozhodujete, kolik číslic z plovoucí desetinné čárky přežije konverzi. Excel ukládá čísla s přesností až 15 číslic, ale většina downstream systémů (databáze, analytické pipeline) potřebuje jen několik. Nastavením `SignificantDigits = 4` knihovna zaokrouhlí `123.456789` na `123.5`, čímž soubor zůstane kompaktní a čitelný pro člověka. + +> **Pro tip:** Pokud potřebujete *přesné* hodnoty (např. pro finanční data), nastavte `SignificantDigits` na vyšší číslo nebo jej úplně vynechte. Výchozí hodnota je 15, což odpovídá interní přesnosti Excelu. + +## Export Excel do CSV – běžné varianty + +### Změna oddělovače + +Některé systémy očekávají středník (`;`) místo čárky. Můžete to upravit takto: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Export konkrétního listu + +Pokud chcete exportovat jen druhý list, nahraďte volitelný blok tímto: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Pak zavolejte `workbook.Save` jako dříve. Tato technika je užitečná, když **convert xlsx to csv**, ale zajímá vás jen konkrétní karta. + +### Práce s velkými datovými sadami + +Při práci s miliony řádků zvažte streamování CSV místo načítání celého sešitu do paměti. Aspose.Cells nabízí vlastnost `CsvSaveOptions` `ExportDataOnly`, která přeskočí informace o stylu a sníží nároky na paměť: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Jak exportovat CSV – ověření výsledku + +Po spuštění programu otevřete `Numbers_4sd.csv` v textovém editoru. Měli byste vidět něco jako: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Všimněte si, že čísla jsou omezena na čtyři významné číslice, přesně tak, jak jsme požadovali. Pokud soubor otevřete v Excelu, hodnoty budou vypadat identicky, protože Excel respektuje zaokrouhlení aplikované během exportu. + +## Okrajové případy a řešení problémů + +| Situace | Co zkontrolovat | Oprava | +|-----------|---------------|-----| +| **File not found** | Ověřte, že `sourcePath` ukazuje na existující soubor `.xlsx`. | Použijte `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Ujistěte se, že `SignificantDigits` je nastaveno před voláním `Save`. | Přesuňte přiřazení `CsvSaveOptions` dříve nebo znovu zkontrolujte hodnotu. | +| **Special characters appear as �** | Kódování CSV je ve výchozím nastavení UTF‑8 bez BOM. | Nastavte `csvOptions.Encoding = System.Text.Encoding.UTF8` nebo `Encoding.Unicode`. | +| **Extra empty columns** | Některé listy mají zbylé formátování za použitým rozsahem. | Zavolejte `worksheet.Cells.MaxDisplayRange` pro oříznutí nepoužívaných sloupců před exportem. | + +## Jak nastavit přesnost dynamicky + +Někdy není požadovaná přesnost známá při kompilaci. Můžete ji načíst z konfiguračního souboru nebo argumentu příkazové řádky: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Nyní můžete spustit: + +``` +dotnet run -- 6 +``` + +a získat CSV se šesti významnými číslicemi. Tento malý zásah činí řešení flexibilním pro **how to export csv** v různých prostředích. + +## Přehled kompletního funkčního příkladu + +Když vše spojíme, kompletní program (včetně volitelných úprav) vypadá takto: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Spusťte program, otevřete vygenerovaný CSV a uvidíte přesnost, kterou jste požadovali, což potvrzuje, že jste úspěšně **saved workbook as CSV**. + +## Závěr + +Nyní máte solidní, produkčně připravený recept na **saving a workbook as CSV** v C#. Průvodce pokryl *how to export Excel to CSV*, předvedl *how to set precision* pomocí `CsvSaveOptions.SignificantDigits` a ukázal několik variant pro scénáře **convert xlsx to csv**. S kompletním úryvkem kódu jej můžete vložit do libovolného .NET projektu a okamžitě začít exportovat data. + +**Co dál?** + +- Experimentujte s různými oddělovači (`;`, `\t`) pro TSV exporty. +- Kombinujte tento přístup s file‑watcherem pro automatické generování CSV při změně Excel souboru. +- Prozkoumejte `CsvLoadOptions` od Aspose.Cells, pokud budete někdy potřebovat načíst CSV zpět do sešitu. + +Neváhejte upravit přesnost, přidat vlastní hlavičky nebo napojit exportér + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/document-properties/_index.md b/cells/czech/net/document-properties/_index.md index 56efe6c0e3..37f15ef5f8 100644 --- a/cells/czech/net/document-properties/_index.md +++ b/cells/czech/net/document-properties/_index.md @@ -35,6 +35,8 @@ Naučte se, jak přistupovat k vlastnostem dokumentu v Excelu pomocí Aspose.Cel Naučte se, jak přistupovat k vlastnostem dokumentu v Excelu pomocí Aspose.Cells pro .NET s naším podrobným návodem. Spravujte své tabulky efektivně. ### [Přidávání vlastností dokumentu v .NET](./adding-document-properties/) Naučte se, jak přidat vlastnosti dokumentu v Excelu pomocí Aspose.Cells pro .NET s tímto podrobným návodem krok za krokem. +### [Vytvoření sešitu Excel – Přidání vlastních vlastností a uložení jako XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Naučte se vytvořit sešit Excel, přidat vlastní vlastnosti a uložit jej ve formátu XLSB pomocí Aspose.Cells pro .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/czech/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..51bd8bca63 --- /dev/null +++ b/cells/czech/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Vytvořte sešit Excel, přidejte vlastní vlastnosti, nastavte název listu + a uložte jako binární soubor XLSB pomocí C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: cs +og_description: Vytvořte sešit Excel, přidejte vlastní vlastnosti, nastavte název + listu a uložte jej jako binární soubor XLSB pomocí C#. +og_title: Vytvořte sešit Excel – přidejte vlastní vlastnosti a uložte jako XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Vytvořit sešit Excel – přidat vlastní vlastnosti a uložit jako XLSB +url: /cs/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvořit Excel sešit – Přidat vlastní vlastnosti a uložit jako XLSB + +Už jste někdy potřebovali **create Excel workbook** programově, ale také si zachovat připojená metadata? Možná budujete reportingový engine, který označuje každý soubor ID zprávy, jménem autora nebo číslem verze. V takovém případě se vám výuka, jak **add custom properties** při **set worksheet name** a nakonec **save as XLSB**, ušetří spoustu ručního post‑processingu. + +V tomto tutoriálu projdeme kompletním, spustitelným příkladem, který přesně ukazuje, jak **write binary Excel file** pomocí C#. Uvidíte, proč je formát XLSB správnou volbou pro přenos vlastních vlastností, jak se vyhnout nejčastějším úskalím a co dělat, pokud potřebujete podporovat starší verze Excelu. + +--- + +## Co budete potřebovat + +- **.NET 6+** (nebo .NET Framework 4.6+). Kód funguje na jakémkoli moderním runtime. +- **Aspose.Cells for .NET** (zdarma zkušební verze nebo licencovaná). Poskytuje třídy `Workbook`, `Worksheet` a `CustomProperties`, které jsou použity níže. +- IDE, ve kterém se cítíte pohodlně – Visual Studio, Rider nebo i VS Code vám poslouží. +- Zápisová práva do složky, kam bude vygenerovaný soubor uložen. + +Žádné další knihovny třetích stran nejsou potřeba. + +--- + +## Krok 1: Instalace Aspose.Cells + +Nejprve přidejte NuGet balíček Aspose.Cells do svého projektu: + +```bash +dotnet add package Aspose.Cells +``` + +> **Tip:** Pokud běžíte na CI serveru, uložte licenční klíč do proměnné prostředí a načtěte jej za běhu – tím zabráníte, aby se do výstupu dostala vodoznaková „evaluation“ značka. + +--- + +## Krok 2: Vytvořit Excel sešit – Přehled + +Prvním skutečným krokem je **create Excel workbook**. Tento objekt představuje celý soubor v paměti a poskytuje přístup k listům, stylům a vlastním vlastnostem. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Proč vytvořit nový `Workbook` místo načtení šablony? Prázdný sešit zaručuje, že nebudou žádné skryté styly nebo zbylé vlastní vlastnosti, což je zvláště důležité, když chcete **write binary excel file** pro downstream systémy, které očekávají čistý start. + +--- + +## Krok 3: Nastavit název listu (a proč je to důležité) + +Listy v Excelu mají výchozí názvy „Sheet1“, „Sheet2“ atd. Pojmenování listu smysluplným názvem usnadňuje downstream zpracování – například Power Query nebo VBA makra – a činí jej čitelnějším. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Pokud se pokusíte přiřadit duplicitní název, Aspose.Cells vyhodí `ArgumentException`. Pro jistotu můžete před přejmenováním zkontrolovat `Worksheets.Exists("Data")`. + +--- + +## Krok 4: Přidat vlastní vlastnosti + +Vlastní vlastnosti jsou uloženy v interním XML sešitu a cestují s souborem bez ohledu na formát. Jsou ideální pro vložení informací jako `ReportId` nebo `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Proč používat vlastní vlastnosti?** +> • Jsou přístupné přes panel Excelu „File → Info → Properties“. +> • Kód, který sešit konzumuje, je může číst bez prohledávání buněk. +> • Přežívají konverze formátů (XLSX ↔ XLSB), protože jsou součástí metadat souboru. + +Můžete také ukládat data, booleany nebo dokonce binární blob, ale držte payload malý – Excel není databáze. + +--- + +## Krok 5: Uložit jako XLSB (Write Binary Excel File) + +Formát XLSB ukládá data v binární struktuře, což činí soubor menším a rychlejší k otevření. Důležitější pro tento tutoriál je, že **custom properties** jsou zabudovány do binárního proudu, což zaručuje, že s ním cestují. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Očekávaný výsledek + +Po spuštění programu najdete `WithCustomProps.xlsb` na ploše. Otevřete jej v Excelu, přejděte na **File → Info → Properties** a uvidíte `ReportId` a `GeneratedBy` uvedené pod *Custom*. + +--- + +## Krok 6: Okrajové případy a časté otázky + +### Co když je cílová složka jen pro čtení? + +Zabalte volání `Save` do `try/catch` bloku a přesuňte soubor do uživatelsky zapisovatelné lokace, například `%TEMP%`. Tím zabráníte pádu aplikace při chybě oprávnění. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Můžu **uložit jako XLSX** a stále zachovat vlastní vlastnosti? + +Ano – stačí změnit `SaveFormat.Xlsb` na `SaveFormat.Xlsx`. Vlastnosti jsou uloženy ve stejném XML dílu, takže přežijí přepnutí formátu. Nicméně soubory XLSX jsou větší, protože jsou zipované XML, zatímco XLSB nabízí lepší výkon pro velké datové sady. + +### Jak později načíst vlastní vlastnosti? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Tento úryvek vytiskne každou vlastní vlastnost, což usnadňuje downstream službám ověřit původ souboru. + +--- + +## Kompletní funkční příklad + +Níže je celý program, který můžete zkopírovat do nového konzolového projektu. Nechybí žádné části – vše od `using` direktiv po poslední `Console.WriteLine` je zahrnuto. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Spusťte program, otevřete vzniklý soubor a ověřte vlastní vlastnosti. To je celý proces **create excel workbook**, **add custom properties**, **set worksheet name** a **save as xlsb** v jednom přehledném toku. + +--- + +## Závěr + +Nyní přesně víte, jak **create Excel workbook**, dát listu jasný **set worksheet name**, vložit užitečná metadata pomocí **add custom properties** a nakonec **save as XLSB**, čímž získáte kompaktní binární Excel soubor. Tento workflow je spolehlivý, funguje napříč verzemi .NET a dobře škáluje, ať už generujete jeden report nebo tisíc. + +Co dál? Zkuste přidat datovou tabulku na list „Data“, experimentovat s různými typy vlastností (data, booleany) nebo přepnout výstup na **save as xlsb** pro masivní datové sady. Můžete také prozkoumat ochranu sešitu heslem – Aspose.Cells to zvládne jedním řádkem. + +Neváhejte zanechat komentář, pokud narazíte na problémy, nebo podělit se, jak jste tento vzor rozšířili ve svých projektech. Šťastné kódování! + +--- + +![Create Excel workbook screenshot](image.png){alt="Vytvořit Excel sešit s vlastními vlastnostmi"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/excel-advanced-named-ranges/_index.md b/cells/czech/net/excel-advanced-named-ranges/_index.md index 2590f4572a..fb7bf9b517 100644 --- a/cells/czech/net/excel-advanced-named-ranges/_index.md +++ b/cells/czech/net/excel-advanced-named-ranges/_index.md @@ -35,7 +35,9 @@ Krása této funkce spočívá v její snadném použití. Buňky můžete progr ### [Identifikace buněk v pojmenované oblasti v Excelu](./identify-cells-in-named-range/) Snadno identifikujte buňky v pojmenované oblasti v Excelu pomocí Aspose.Cells pro .NET s tímto komplexním podrobným tutoriálem. ### [Sloučení buněk v pojmenované oblasti v Excelu](./merge-cells-in-named-range/) -tomto podrobném tutoriálu se naučte, jak sloučit buňky v pojmenované oblasti pomocí Aspose.Cells pro .NET. Objevte, jak formátovat, stylovat a automatizovat sestavy v Excelu. +tomuto podrobném tutoriálu se naučte, jak sloučit buňky v pojmenované oblasti pomocí Aspose.Cells pro .NET. Objevte, jak formátovat, stylovat a automatizovat sestavy v Excelu. +### [Vytvoření sešitu Excel – krok za krokem průvodce přidáváním tabulek a pojmenovacími pravidly](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Kompletní průvodce vytvořením sešitu Excel, přidáním tabulek a nastavením pojmenovacích pravidel pomocí Aspose.Cells pro .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/czech/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..6a13344cf9 --- /dev/null +++ b/cells/czech/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Vytvořte Excel sešit s tabulkou, naučte se pravidla pojmenování Excel + tabulek, vyhněte se chybě pojmenovaného rozsahu a nastavte název Excel tabulky správně + v C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: cs +og_description: Vytvořte sešit Excel v C# a osvojte si pravidla pojmenovávání tabulek + v Excelu. Naučte se, jak přidat list s tabulkou, nastavit název tabulky v Excelu + a opravit chyby pojmenovaných oblastí. +og_title: Vytvořte Excel sešit – Kompletní průvodce tabulkou a pojmenováním v C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Vytvořte Excel sešit – krok za krokem průvodce přidáváním tabulek a pravidly + pojmenování +url: /cs/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření Excel sešitu – Kompletní C# průvodce tabulkami a pojmenováváním + +Už jste někdy potřebovali **create excel workbook** programově a divili se, proč se název vaší tabulky najednou střetává s pojmenovaným rozsahem? Nejste v tom sami. V mnoha automatizačních projektech, jakmile se pokusíte tabulce přiřadit přátelský identifikátor, Excel vyhodí *named range error*, který zastaví celý proces. + +V tomto tutoriálu projdeme plně‑spustitelným příkladem, který **creates an Excel workbook**, **adds a table to a worksheet**, a vysvětlí **excel table naming rules**, které vás ochraňují před chybami. Na konci přesně budete vědět, jak **add table worksheet**, **set excel table name**, a jak elegantně řešit občasné kolize názvů. + +> **Pro tip:** Většina zmatku pramení z toho, že Excel zachází s názvy tabulek a pojmenovanými rozsahy na úrovni sešitu jako s jedním jmenným prostorem. Pochopení tohoto pravidla už od začátku vám ušetří hodiny ladění. + +## Co budete potřebovat + +- **Aspose.Cells for .NET** (nebo jakákoli knihovna, která poskytuje třídy `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ nebo .NET Framework 4.8 – kód funguje na obou. +- Základní znalost syntaxe C# – žádné pokročilé triky nejsou potřeba. + +Pokud je máte, pojďme se ponořit. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Krok 1: Vytvoření Excel sešitu a přístup k prvnímu listu + +Prvním krokem, když **create excel workbook**, je vytvořit instanci třídy `Workbook` a získat odkaz na list, na kterém budete pracovat. V Aspose.Cells sešit začíná s výchozím listem pojmenovaným „Sheet1“. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Proč je tento krok zásadní? Bez objektu sešitu nemáte kam připojit tabulku a odkaz na `Worksheet` vám poskytuje plátno, kde se provede operace **add table worksheet**. + +## Krok 2: Přidání tabulky (ListObject) pokrývající konkrétní oblast + +Dále **add table worksheet**‑úroveň data. Metoda `ListObjects.Add` očekává řetězec s rozsahem a boolean, který určuje, zda první řádek obsahuje záhlaví. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Všimněte si volání `salesTable.Name = "SalesData"`. Zde vstupují v platnost **excel table naming rules**: název musí být jedinečný v celém sešitu, ne jen v listu. Nemůže také obsahovat mezery ani speciální znaky a musí začínat písmenem nebo podtržítkem. + +## Krok 3: Pokus o vytvoření pojmenovaného rozsahu na úrovni sešitu se stejným identifikátorem + +Nyní úmyslně vyvoláme **named range error**, abychom viděli, co se stane při kolizi názvů. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Pokud odkomentujete řádek, Aspose.Cells vyhodí `ArgumentException` s informací, že název již existuje. Zpráva o chybě vypadá takto: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Tato zpráva je **named range error**, o kterém jsme vás varovali dříve. Říká vám, že **excel table naming rules** zacházejí s názvy tabulek a pojmenovanými rozsahy jako s jedním jmenným prostorem. + +## Krok 4: Elegantní řešení konfliktu názvů + +V reálném kódu budete chtít zachytit tuto výjimku a buď přejmenovat tabulku, nebo zvolit jiný název rozsahu. Zde je úhledný způsob, jak to udělat: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Zabalením volání do `try/catch` se vyhnete tvrdému pádu a poskytnete uživateli (nebo volajícímu kódu) jasné vysvětlení – přesně ten druh poznatku z **excel table naming rules**, který zabraňuje budoucím chybám. + +## Krok 5: Uložení sešitu a ověření výsledku + +Nakonec uložte soubor na disk a otevřete jej v Excelu, abyste potvrdili, že tabulka a případné pojmenované rozsahy jsou přítomny. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Když otevřete *SalesReport.xlsx*, uvidíte: + +- Tabulku rozprostírající se od **A1:C5** s názvem **SalesData**. +- Pokud jste ponechali alternativní rozsah, pojmenovaný rozsah na úrovni sešitu **SalesData_Range** ukazující na **D1**. + +Žádné runtime chyby a konflikt názvů je vyřešen. + +## Pochopení pravidel pojmenovávání Excel tabulek do hloubky + +Rozbalme si, proč tato pravidla existují: + +| Pravidlo | Co to znamená | Příklad | +|------|----------------|---------| +| **Unique across workbook** | Žádné dvě tabulky nebo pojmenované rozsahy nesmí sdílet stejný identifikátor. | `Table1` vs `Table1` → konflikt | +| **Starts with a letter or underscore** | Název nesmí začínat číslem. | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | Používejte CamelCase nebo podtržítka. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | Prakticky vždy splněno. | N/A | + +Mít tato pravidla na paměti při **set excel table name** eliminuje obávaný *named range error*. + +## Běžné varianty a okrajové případy + +1. **Adding multiple tables** – Každá tabulka musí mít svůj jedinečný název. +2. **Renaming an existing table** – Použijte `salesTable.Name = "NewName"` před vytvořením jakýchkoli kolidujících pojmenovaných rozsahů. +3. **Using dynamic ranges** – Pokud potřebujete rozsah, který se rozšiřuje, použijte strukturovaný odkaz jako `=SalesData[Amount]` místo statické adresy. +4. **Cross‑sheet named ranges** – Stále patří do stejného jmenného prostoru, takže tabulka na Sheet1 blokuje rozsah se stejným názvem na Sheet2. + +## Pro tipy pro plynulou automatizaci Excelu + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: Přidejte GUID nebo inkrementální čítač (`SalesData_{Guid.NewGuid()}`), pokud si nejste jisti. +- **Use `ListObject.ShowHeaders = true`** k tomu, aby vaše tabulky byly samodokumentující. +- **Validate after saving**: Otevřete soubor pomocí lehké knihovny (např. EPPlus), abyste se ujistili, že tabulka byla vytvořena správně. + +## Shrnutí: Co jsme probrali + +- Jak **create excel workbook** od začátku pomocí Aspose.Cells. +- Přesná **excel table naming rules**, která řídí identifikátory tabulek a pojmenovaných rozsahů. +- Proč se objeví **named range error**, když znovu použijete název. +- Správný způsob, jak **add table worksheet** a **set excel table name** bez kolizí. +- Robustní vzor pro elegantní řešení konfliktů názvů. + +## Co dál? + +Nyní, když ovládáte základy, zvažte prozkoumání: + +- **Dynamic table growth** pomocí `ListObject.Resize`. +- **Applying styles** na tabulky (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** při zachování struktury tabulek. +- **Integrating with Office Open XML** pro ještě pevnější kontrolu nad vnitřními částmi sešitu. + +Neváhejte experimentovat – měňte rozsah, přidávejte další tabulky nebo si hrajte s různými pojmenovacími schématy. Čím více si budete pohrávat, tím hlouběji porozumíte **excel table naming rules**. + +--- + +*Šťastné programování a ať se vaše sešity už nikdy nekříží!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/excel-custom-number-date-formatting/_index.md b/cells/czech/net/excel-custom-number-date-formatting/_index.md index dc65fecfc1..0669090c45 100644 --- a/cells/czech/net/excel-custom-number-date-formatting/_index.md +++ b/cells/czech/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Tento tutoriál vás vybaví dovednostmi pro import datových sad a zároveň za Naučte se, jak porovnat hodnoty buněk v Excelu s vlastními číselnými formáty pomocí Aspose.Cells pro .NET v tomto podrobném tutoriálu. ### [Zadání polí vzorců při importu dat do excelového listu](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) V tomto podrobném návodu se naučíte, jak importovat data do excelových listů se zadanými poli vzorců pomocí Aspose.Cells pro .NET. +### [Vlastní číselný formát v Excelu v C# – Kompletní průvodce](./custom-number-format-excel-in-c-complete-guide/) +Kompletní průvodce vytvářením a používáním vlastních číselných formátů v Excelu pomocí Aspose.Cells pro .NET v jazyce C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/czech/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..f54495009a --- /dev/null +++ b/cells/czech/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Návod na vlastní číselný formát v Excelu, ukazující, jak importovat datovou + tabulku do Excelu, nastavit barvu pozadí sloupce, formátovat sloupec jako měnu a + uložit sešit jako xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: cs +og_description: Tutoriál Excelu o vlastním formátu čísel, který vás provede importem + DataTable, nastavením barvy pozadí sloupce, formátováním sloupce jako měny a uložením + sešitu jako xlsx. +og_title: Vlastní číselný formát v Excelu v C# – průvodce krok za krokem +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Vlastní formát čísel v Excelu v C# – Kompletní průvodce +url: /cs/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vlastní formát čísel v Excelu – Full‑Stack C# tutoriál + +Už jste se někdy zamýšleli, jak aplikovat **custom number format excel** styl přímo z C#? Možná jste zkoušeli vypsat DataTable do tabulky a viděli jen prostá čísla, žádné barvy a žádné formátování měny. To je častý problém – zejména když potřebujete vylepšenou zprávu pro zainteresované strany. + +V tomto průvodci tento problém vyřešíme společně: naučíte se **import datatable to excel**, **set column background color**, **format column as currency** a nakonec **save workbook as xlsx** s vlastním formátem čísel, který vaše čísla zvýrazní. Žádné vágní odkazy, jen kompletní, spustitelný řešení, které můžete zkopírovat a vložit do svého projektu. + +--- + +## Co vytvoříte + +Na konci tohoto tutoriálu budete mít samostatnou C# konzolovou aplikaci, která: + +1. Načte `DataTable` (můžete nahradit ukázkový kód vlastním dotazem). +2. Vytvoří nový Excel workbook pomocí Aspose.Cells (nebo jakékoli kompatibilní knihovny). +3. Použije modré, tučné písmo na první sloupec, světle žluté pozadí na druhý a formát měny (`$#,##0.00`) na třetí. +4. Uloží soubor jako `DataTableWithStyleArray.xlsx` do vámi zvoleného adresáře. + +Uvidíte přesně, jak každý řádek přispívá k finálnímu Excel souboru, a probereme, proč jsou tyto volby důležité pro udržitelnost a výkon. + +--- + +## Požadavky + +- .NET 6.0 nebo novější (kód funguje také s .NET Framework 4.7+). +- Aspose.Cells pro .NET (zdarma zkušební verze nebo licencovaná). Instalace přes NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Základní znalost `DataTable` a C# konzolových aplikací. + +--- + +## Krok 1: Načtení zdrojových dat jako DataTable + +Nejprve potřebujeme nějaká data k exportu. Ve skutečném scénáři byste pravděpodobně volali repozitář nebo spustili SQL dotaz. Pro ilustraci vytvoříme jednoduchou tabulku v paměti. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** Použití `DataTable` vám poskytuje tabulární, schématem‑uvědomělý zdroj, který se čistě mapuje na řádky a sloupce v Excelu. Navíc vám umožní znovu použít stejnou logiku exportu pro jakýkoli dataset bez přepisování kódu. + +--- + +## Krok 2: Vytvoření nového workbooku a získání první listu + +Nyní spustíme Excel workbook. Třída `Workbook` představuje celý soubor; její `Worksheets[0]` je výchozí list, kam vložíme naše data. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** Pokud potřebujete více listů, stačí zavolat `workbook.Worksheets.Add("SheetName")` a opakovat kroky stylování pro každý z nich. + +--- + +## Krok 3: Definice stylů sloupců – písmo, pozadí a formát čísla + +Styling v Aspose.Cells se provádí pomocí objektů `Style`. Vytvoříme pole, kde každý prvek odpovídá sloupci v DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** Předání pole do `ImportDataTable` vám umožní aplikovat odlišný styl na každý sloupec v jediném volání, což je jak stručné, tak výkonné. Navíc zaručuje, že formátování zůstane synchronizováno s pořadím dat. + +--- + +## Krok 4: Import DataTable s aplikací stylů + +Zde je jádro operace: předáme `DataTable` do listu, řekneme Aspose, aby zahrnul řádek hlavičky, a předáme naše pole `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose prochází každý sloupec, zapíše hlavičku a pak zapíše hodnoty řádků. Při tom aplikuje odpovídající `Style` z pole, takže získáte modrou hlavičku pro „Product“, žlutě odstíněný „Quantity“ a pěkně formátovaný sloupec „Revenue“. + +--- + +## Krok 5: Uložení workbooku jako soubor XLSX + +Nakonec workbook uložíme na disk. Metoda `Save` automaticky zvolí formát XLSX podle přípony souboru. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** Pokud potřebujete soubor streamovat (např. pro webové API), použijte `workbook.Save(stream, SaveFormat.Xlsx)` místo cesty k souboru. + +--- + +## Kompletní funkční příklad + +Níže je celý program, který můžete vložit do nového konzolového projektu. Překompiluje se a spustí tak, jak je, a vytvoří stylovaný Excel soubor. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Očekávaný výsledek + +Když otevřete `DataTableWithStyleArray.xlsx`, uvidíte: + +| **Produkt** (modré, tučné) | **Množství** (světle žluté) | **Příjem** (měna) | +|----------------------------|-----------------------------|-------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +**custom number format excel**, který jste zadali (`$#,##0.00`), zajišťuje, že každá buňka s příjmem zobrazí dolarový znak, oddělovač tisíců a dvě desetinná místa – přesně to, co očekávají finanční týmy. + +--- + +## Často kladené otázky a okrajové případy + +### Můžu to použít s jinou Excel knihovnou? + +Ano. Koncept – vytvoření stylu pro každý sloupec a jeho aplikace během importu – se přenáší na EPPlus, ClosedXML nebo NPOI. API volání se liší, ale vzor zůstává stejný. + +### Co když má moje DataTable více sloupců než stylů? + +Aspose použije výchozí styl na jakýkoli sloupec, který nemá odpovídající položku v poli `columnStyles`. Aby nedošlo k překvapením, buď nastavte velikost pole na `dataTable.Columns.Count`, nebo generujte styly dynamicky ve smyčce. + +### Jak nastavit vlastní formát čísla pro datumy? + +Jednoduše nastavte `style.Custom = "dd‑mm‑yyyy"` (nebo jakýkoli platný Excel formátovací řetězec). Stejný přístup založený na poli funguje i pro datumy, procenta nebo vědeckou notaci. + +### Existuje způsob, jak automaticky nastavit šířku sloupců po importu? + +Ano – zavolejte `worksheet.AutoFitColumns();` po importu. Provede rychlý výpočet šířky na základě obsahu buněk. + +### Co s velkými datovými sadami (100 000+ řádků)? + +`ImportDataTable` je optimalizováno pro hromadné operace, ale můžete narazit na limity paměti. V takovém případě zvažte streamování řádků ručně pomocí `Cells[i, j].PutValue(...)` a opakované používání jednoho objektu `Style` ke snížení režie. + +--- + +## Pro tipy a běžné úskalí + +- **Avoid hard‑coding paths** v produkčním kódu; použijte `Environment.GetFolderPath` nebo konfigurační nastavení. +- **Dispose of the workbook** pokud běžíte v dlouhoživé službě – zabalte jej do `using` bloku, aby se uvolnily nativní zdroje. +- **Watch out for culture‑specific separators**. Vlastní formát `$#,##0.00` vynutí tečku jako desetinný oddělovač bez ohledu na locale OS, což je obvykle požadováno u finančních reportů. +- **Remember to reference System.Drawing** (nebo `System.Drawing.Common` na .NET Core) pro struktury barev používané ve stylování. +- **Test the output on different Excel versions**; starší verze mohou interpretovat některé vlastní formáty mírně odlišně. + +--- + +## Závěr + +Probrali jsme vše, co potřebujete k **custom number format excel** souborům z C#: načtení dat z `DataTable`, **import datatable to excel**, aplikaci **set column background color**, použití **format column as currency** a nakonec **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/excel-workbook/_index.md b/cells/czech/net/excel-workbook/_index.md index e2720be448..86f2164ecc 100644 --- a/cells/czech/net/excel-workbook/_index.md +++ b/cells/czech/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Tak proč nevyužít této příležitosti a nezlepšit si své dovednosti v Exc | [Náhled tisku sešitu](./workbook-print-preview/) | Naučte se, jak vytvářet náhledy tisku pro soubory aplikace Excel pomocí nástroje Aspose.Cells pro .NET. Naučte se kroky kódování v podrobném a snadno srozumitelném tutoriálu. | | [Práce s vlastnostmi typu obsahu](./working-with-content-type-properties/) | Naučte se, jak používat Aspose.Cells pro .NET k práci s vlastnostmi typu obsahu pro vylepšenou správu metadat v Excelu. Postupujte podle tohoto jednoduchého podrobného návodu. | | [Podpora podpisů Xades](./xades-signature-support/) | Naučte se, jak přidat podpisy Xades do souborů Excelu pomocí Aspose.Cells pro .NET s tímto podrobným návodem. Zabezpečte své dokumenty. | +| [Vytvořit nový sešit C# – krok za krokem s rozlitými vzorci](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Naučte se vytvořit nový sešit v C# a použít rozlitá vzorce pomocí Aspose.Cells pro .NET. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/czech/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..04a3106a4d --- /dev/null +++ b/cells/czech/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Rychle vytvořte nový sešit v C# pomocí Aspose.Cells. Naučte se, jak přidat + rozšiřující se formuli SEQUENCE, automaticky přepočítat a pracovat se závislými + buňkami. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: cs +og_description: Vytvořte nový sešit v C# pomocí Aspose.Cells. Tento tutoriál ukazuje, + jak přidat rozšiřující vzorec SEQUENCE, přepočítat sešit a spravovat závislé buňky. +og_title: Vytvořte nový sešit C# – kompletní průvodce +tags: +- C# +- Excel automation +- Aspose.Cells +title: Vytvoření nového sešitu v C# – krok za krokem průvodce s rozšiřujícími se vzorci +url: /cs/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření nového sešitu C# – Kompletní programovací průvodce + +Už jste se někdy zamýšleli, jak **create new workbook C#** provést bez boje s COM interop? Nejste v tom sami. V mnoha projektech potřebujete během běhu vytvořit soubor Excel, vložit do něj dynamický pole‑formulář a nechat vše automaticky aktualizovat. + +V tomto návodu vám přesně ukážeme, jak na to — pomocí moderní knihovny **Aspose.Cells**, přidáním rozšiřujícího se `SEQUENCE`‑formuláře, úpravou závislé buňky a vynucením přepočtu, aby výsledky zůstaly čerstvé. Na konci budete mít samostatný, spustitelný příklad, který můžete zkopírovat a vložit do libovolné .NET aplikace. + +## Co se naučíte + +- Jak programově **create new workbook C#**. +- Mechaniku **rozšiřujícího se pole‑formuláře** a proč je užitečný. +- Použití **Excel funkce SEQUENCE** z C# kódu. +- Spuštění **C# workbook calculation**, aby se závislé buňky okamžitě aktualizovaly. +- Běžné úskalí (např. zapomenutí volání `Calculate`) a rychlé opravy. + +Žádná externí dokumentace není potřeba — vše, co potřebujete, je zde. + +## Předpoklady + +- .NET 6+ (nebo .NET Framework 4.7.2+) nainstalovaný. +- Visual Studio 2022 nebo libovolné IDE dle vašeho výběru. +- NuGet balíček **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Základní znalost syntaxe C# (pokud jste úplní nováčci, kód je bohatě okomentován). + +--- + +## Krok 1: Vytvoření nového sešitu v C# + +Tento nadpis H2 obsahuje **primární klíčové slovo** přesně tam, kde to SEO kontrolní seznam vyžaduje. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Proč je to důležité:** +> Instancování `Workbook` vám poskytne v‑paměti reprezentaci souboru Excel. Žádný COM, žádný interop, jen čisté .NET objekty, které můžete bezpečně manipulovat. + +--- + +## Krok 2: Přidání rozšiřujícího se SEQUENCE‑formuláře + +**Rozšiřující se pole‑formulář** se automaticky rozšíří do sousedních buněk, což je ideální pro generování dynamických seznamů. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Jak to funguje:** +> Funkce `SEQUENCE` (zavedená v Excel 365) vytváří vertikální pole čísel. Protože používáme *rozšiřující* formulář, Excel (a Aspose.Cells) automaticky vyplní oblast pod `A1` bez nutnosti psát smyčku. + +--- + +## Krok 3: Změna závislé buňky pro pozorování automatického obnovení + +Upravíme `B1`, abychom mohli sledovat, jak se sešit přepočítá rozšiřující se pole. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tip:** +> Pokud později odkazujete na rozšířený rozsah v jiných formulářích, změna libovolné buňky uvnitř rozšíření způsobí aktualizaci těchto formulářů po volání `Calculate`. + +--- + +## Krok 4: Vynucení výpočtu sešitu v C# + +Bez explicitního volání Aspose.Cells automaticky nevyhodnotí formuláře. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Co `Calculate` dělá:** +> Projde každou buňku s formulářem, vyhodnotí ji a zapíše výsledek zpět do listu. Toto je jádro **C# workbook calculation** a zajišťuje, že vaše rozšiřující se pole zůstane synchronizováno se všemi závislými daty. + +### Očekávaný výstup + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Otevřete `SpilledSequenceDemo.xlsx` a uvidíte čísla 1‑5 vyplňující `A1:A5`, zatímco `B1` obsahuje hodnotu `10`. Změňte libovolnou buňku uvnitř rozšíření, spusťte `Calculate` znovu a nové hodnoty se objeví okamžitě. + +--- + +## Porozumění funkci Excel SEQUENCE v C# + +Pokud vás zajímá, proč je `SEQUENCE` upřednostňována před ruční smyčkou, zvažte následující body: + +1. **Výkon** – Engine vyhodnotí celé pole v jednom průchodu. +2. **Čitelnost** – Jeden řádek kódu nahrazuje desítky volání `PutValue`. +3. **Dynamická velikost** – Statické `5` můžete nahradit odkazem na jinou buňku, čímž umožníte měnit délku za běhu. + +Jedná se o klasický příklad **rozšiřujícího se pole‑formuláře**, který zjednodušuje úlohy generování dat. + +--- + +## Běžná úskalí a profesionální tipy + +| Úskalí | Oprava | +|---------|-----| +| Zapomenutí `workbook.Calculate()` | Vždy jej zavolejte po úpravě formulářů; jinak list zobrazí staré kešované hodnoty. | +| Použití starší verze Aspose.Cells | Aktualizujte na nejnovější NuGet balíček, aby byl podpořen dynamický pole‑funkce jako `SEQUENCE`. | +| Uložení před výpočtem | Uložte **po** `Calculate`, aby soubor obsahoval nejnovější výsledky. | +| Předpoklad, že rozšíření přepíše existující data | Aspose.Cells respektuje existující data mimo rozsah rozšíření; pokud potřebujete čistý list, oblast nejprve vymažte. | + +**Profesionální tip:** Pokud chcete, aby délka sekvence byla konfigurovatelná, uložte počet do buňky (např. `C1`) a použijte `=SEQUENCE(C1)` — výpočetní engine načte hodnotu za běhu. + +--- + +## Rozšíření příkladu + +Nyní, když už víte, jak **create new workbook C#**, můžete: + +- Přidat složitější formuláře odkazující na rozšířený rozsah (`=SUM(A1#)`, kde `#` označuje spill). +- Exportovat do PDF pomocí `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Vložit grafy, které se automaticky přizpůsobí velikosti dynamického pole. + +Všechny tyto kroky staví na stejném základu **C# workbook calculation**, který jsme právě probírali. + +--- + +## Závěr + +Prošli jsme celým procesem **create new workbook C#**, od vytvoření objektu `Workbook` přes vložení rozšiřujícího se `SEQUENCE`‑formuláře, úpravu závislé buňky až po vynucení přepočtu, aby vše zůstalo aktuální. Kompletní kód výše je připravený ke spuštění — stačí jej vložit do konzolové aplikace, přidat NuGet balíček Aspose.Cells a během několika sekund budete mít funkční Excel soubor. + +Jste připraveni na další krok? Zkuste nahradit statické `5` odkazem na buňku, poexperimentujte s dalšími dynamickými funkcemi jako `FILTER` nebo `UNIQUE` a objevte, jak **Aspose.Cells C#** může pohánět plnohodnotné reportingové enginy. Šťastné programování! + +--- + +*Zástupný obrázek:* + +![Snímek obrazovky ukazující čerstvě vytvořený sešit s rozšiřujícím se SEQUENCE formulářem – příklad create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*Pokud vám tento tutoriál přišel užitečný, zvažte přidání hvězdičky do repozitáře, sdílení s kolegy nebo zanechání komentáře níže. Vaše zpětná vazba pohání budoucí návody!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/formulas-functions/_index.md b/cells/czech/net/formulas-functions/_index.md index 6b32ad8deb..f83ef2e08f 100644 --- a/cells/czech/net/formulas-functions/_index.md +++ b/cells/czech/net/formulas-functions/_index.md @@ -102,64 +102,7 @@ Naučte se, jak pomocí Aspose.Cells .NET zadat jazyk souborů aplikace Excel. V ### [Aktualizace vzorců Power Query v Excelu pomocí Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Naučte se, jak programově aktualizovat vzorce Power Query v sešitech Excelu pomocí Aspose.Cells pro .NET. Správa hlavních zdrojů dat pro dynamické reporty. -## Pochopení typů vzorců v Excelu - -Vzorce v Excelu se dodávají v různých formách, z nichž každá má jedinečné vlastnosti, které Aspose.Cells dokáže spravovat: - -### Standardní buněčné vzorce - -Toto jsou nejběžnější vzorce, které fungují na jednotlivých buňkách: - -- **Aritmetické vzorce**Základní výpočty, jako například `=A1+B1` -- **Vzorce založené na funkcích**Použití vestavěných funkcí, jako je `=SUM(A1:A10)` -- **Logické vzorce**Podmíněná logika s funkcemi jako `=IF(A1>10,"High","Low")` -- **Textové vzorce**Manipulace s textem pomocí funkcí jako `=CONCATENATE(A1," ",B1)` - -### Vzorce založené na rozsahu - -Tyto vzorce fungují s oblastmi buněk: - -- **Agregační vzorce**Funkce jako `=AVERAGE(A1:A100)` které zpracovávají více buněk -- **Vyhledávací vzorce**Referenční funkce jako `=VLOOKUP(E1,A1:B20,2,FALSE)` pro vyhledávání dat -- **Vzorce databáze**Specializované funkce jako `=DSUM(A1:F100,"Amount",G1:H2)` pro filtrování a výpočet - -### Maticové vzorce - -Maticové vzorce provádějí výpočty s více hodnotami současně: - -- **Vzorec pro jednobuněčné pole**Vrací jeden výsledek, ale interně zpracovává pole -- **Vzorec pro vícebuněčné pole**: Naplní více buněk souvisejícími výsledky -- **Dynamická pole**Moderní vzorce v Excelu, které automaticky přenášejí výsledky do sousedních buněk - -### Pojmenované vzorce - -Tyto vzorce používají pojmenované oblasti nebo definované názvy: - -- **Odkazy na pojmenovaný rozsah**Používání definovaných názvů, jako například `=SUM(SalesData)` -- **Strukturované reference**Odkazy na tabulky jako `=SUM(Table1[Amount])` -- **Dynamické pojmenované rozsahy**Vzorce, které se automaticky přizpůsobují velikosti dat - -## Nejlepší postupy pro správu receptur - -### Optimalizace výkonu - -Pro zajištění efektivní manipulace s recepturou: - -1. **Nastavení dávkového receptu**Používejte vzorce na oblasti, nikoli na jednotlivé buňky -2. **Selektivní výpočet**Pokud je to možné, použijte cílený výpočet místo úplného přepočtu. -3. **Minimalizujte volatilní funkce**Omezte používání funkcí jako NOW() nebo RAND(), které spouštějí přepočet -4. **Použití sdílených vzorců**Využijte možnosti sdílených vzorců pro efektivitu paměti - -### Spolehlivost receptury - -Pro robustní implementaci vzorce: - -1. **Zpracování chyb**Implementujte ošetření chyb vzorců pomocí funkce IFERROR nebo podobných funkcí -2. **Analýza buněčných závislostí**Pochopte závislosti vzorců, abyste se vyhnuli cyklickým odkazům -3. **Audit vzorců**Před nasazením ověřte logiku vzorce -4. **Dokumentace**Udržujte jasnou dokumentaci složitých struktur vzorců - -Zvládnutím těchto schopností tvorby vzorců s Aspose.Cells pro .NET můžete ve svých tabulkách vytvářet sofistikované výpočetní nástroje, které poskytují přesné a dynamické výsledky bez nutnosti instalace Excelu. +### [Jak používat lambda v C# s Excelovými vzorci – Kompletní průvodce](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/czech/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..39e9c6aff7 --- /dev/null +++ b/cells/czech/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Jak používat lambda výrazy v C# pro práci s Excelovými vzorci. Naučte + se zapisovat vzorec do buňky, převádět oblast na pole, zobrazit pole v konzoli a + vypočítat kotangens v Excelu. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: cs +og_description: Jak použít lambda v C# k manipulaci s Excelovými vzorci, převodu rozsahu + na pole, zápisu vzorce do buňky, zobrazení pole v konzoli a výpočtu kotangensu v + Excelu. +og_title: Jak používat lambda v C# s Excelovými vzorci – krok za krokem +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Jak používat lambda v C# s Excelovými vzorci – kompletní průvodce +url: /cs/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak používat lambda v C# s Excelovými vzorci – Kompletní průvodce + +Už jste se někdy zamysleli **jak používat lambda**, když automatizujete Excel z C#? Nejste sami. Mnoho vývojářů narazí na problém, když potřebují zkombinovat sílu nových dynamických polecích funkcí Excelu s možností `LAMBDA` v C#. Dobrá zpráva? Je to ve skutečnosti docela jednoduché, jakmile vidíte, jak se jednotlivé části doplňují. + +V tomto tutoriálu projdeme **zápisem vzorce do buňky**, **převodem oblasti na pole**, **zobrazením tohoto pole v konzoli** a dokonce **výpočtem kotangensu v Excelu** — vše při tom, že vám ukážeme **jak používat lambda** uvnitř volání `REDUCE`. Na konci budete mít spustitelný úryvek, který můžete vložit do libovolného .NET projektu, který odkazuje na Aspose.Cells (nebo podobnou knihovnu). + +--- + +## Co se naučíte + +- Jak **zapsat vzorec do buňky** pomocí C#. +- Jak **převést oblast na pole** pomocí funkce `EXPAND`. +- Jak **zobrazit pole v konzoli** po výpočtu. +- Jak **vypočítat kotangens v Excelu** pomocí `COT` a `COTH`. +- Přesná syntaxe **jak používat lambda** uvnitř Excel funkce `REDUCE` z C#. + +> **Předpoklad:** Potřebujete aktuální verzi .NET (Core 6+ nebo .NET Framework 4.7+) a knihovnu Aspose.Cells pro .NET nainstalovanou přes NuGet. + +--- + +## Krok 1: Nastavení sešitu a zápis vzorce do buňky + +Prvním krokem je vytvořit nový sešit a získat první list. Pak **zapíšeme vzorec do buňky** — v tomto případě `A1` bude obsahovat výsledek volání `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Proč je to důležité:** Zapsání vzorce přímo z kódu vám umožní generovat složité tabulky za běhu, aniž byste museli otevírat Excel. Navíc to připraví půdu pro další krok, kde **převádíme oblast na pole**. + +--- + +## Krok 2: Převod oblasti na pole pomocí EXPAND + +`EXPAND` je Excelův způsob, jak z malé oblasti vytvořit větší matici. Umístěním vzorce do `A1` Excel rozšíří blok 4 × 5 začínající v této buňce. Z C# nemusíme ručně kopírovat hodnoty — knihovna udělá těžkou práci, když zavoláme `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Jak používat lambda:** Zatím ne, ale zůstaňte s námi. Nejprve potřebujeme data v listu, poté je zredukujeme pomocí lambda výrazu. + +--- + +## Krok 3: Použití LAMBDA uvnitř REDUCE – Jádro „Jak používat lambda“ + +Excel 365 zavedl `REDUCE`, který přijímá **počáteční hodnotu**, **oblast** a **LAMBDA**, která určuje, jak kombinovat každý prvek. Z C# jen přiřadíme řetězec vzorce; lambda žije uvnitř Excel vzorce, ne v C# kódu. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Vysvětlení:** +- `0` je počáteční akumulátor (`acc`). +- `A1:D4` je oblast, kterou chceme zpracovat (první čtyři sloupce rozšířeného bloku). +- `LAMBDA(acc, x, acc + x)` říká Excelu, aby k akumulátoru přičetl každou buňku (`x`). + +To je podstata **jak používat lambda** pro agregaci v kontextu tabulky. + +--- + +## Krok 4: Výpočet kotangensu v Excelu – Ze stupňů na hyperbolický + +Pokud potřebujete trigonometrické výsledky, funkce Excelu `COT` a `COTH` jsou velmi jednoduché. Umístíme je do `G1` a `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Proč je to užitečné:** Znalost **výpočtu kotangensu v Excelu** vám může ušetřit psaní vlastního matematického kódu, zejména když bude sešit sdílen s ne‑vývojáři. + +--- + +## Krok 5: Vynucení výpočtu a získání rozšířeného pole + +Nyní řekneme sešitu, aby vyhodnotil všechny vzorce, a pak vytáhneme rozšířené pole z `A1`. Zde **zobrazíme pole v konzoli**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Co uvidíte:** +- Hezky formátovanou matici 4 × 5 vytištěnou řádek po řádku. +- Součet vypočtený `REDUCE` lambda výrazem. +- Dvě hodnoty kotangensu. + +Tím je dokončen celý tok od **zápisu vzorce do buňky** až po **zobrazení pole v konzoli**. + +--- + +## Kompletní funkční příklad (připravený ke kopírování) + +Níže je celý program, který můžete vložit do konzolové aplikace. Nezapomeňte nejprve přidat NuGet balíček `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Očekávaný výstup v konzoli (hodnoty se mohou lišit podle výchozího obsahu B1:C2, které jsou ve výchozím nastavení 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Klidně naplňte `B1:C2` vlastními čísly před spuštěním — matice bude odrážet tyto hodnoty. + +--- + +## Pro tipy a časté úskalí + +- **Pro tip:** Pokud chcete, aby se rozšířená oblast začínala jinde, stačí změnit cílovou buňku (`A1`). Funkce `EXPAND` respektuje kotvu. +- **Dejte si pozor na:** Prázdné buňky ve zdrojové oblasti se v rozšířeném poli stanou `0`, což může ovlivnit součet v `REDUCE`. +- **Hraniční případ:** Když sešit obsahuje vzorce závislé na volatilních funkcích (např. `NOW()`), zavolejte `workbook.Calculate()` po nastavení všech vzorců, aby byl výsledek aktuální. +- **Poznámka o výkonu:** Pro velké rozšíření zvažte omezení velikosti v volání `EXPAND`; jinak můžete alokovat více paměti, než je potřeba. +- **Kompatibilita:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/number-and-display-formats-in-excel/_index.md b/cells/czech/net/number-and-display-formats-in-excel/_index.md index 697e959471..9a76ccd370 100644 --- a/cells/czech/net/number-and-display-formats-in-excel/_index.md +++ b/cells/czech/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Pokud chcete dodat svým excelovým listům osobní nádech, je přizpůsobení Automatizujte formátování čísel v Excelu pomocí Aspose.Cells pro .NET. Naučte se, jak programově používat formáty data, procent a měny. ### [Přizpůsobení formátů zobrazení pomocí uživatelem definovaných čísel](./customizing-display-formats-with-user-defined-numbers/) Naučte se, jak přizpůsobit formáty zobrazení pomocí Aspose.Cells pro .NET. Formátujte data, procenta a měnu pomocí tohoto podrobného návodu. +### [Jak exportovat Excel s formátováním – zachovat formát čísel](./how-to-export-excel-with-formatting-preserve-number-format/) +Exportujte Excel s formátováním pomocí Aspose.Cells pro .NET a zachovejte číselné formáty. +### [Formátování data a času na ISO v C# – Kompletní průvodce](./format-datetime-to-iso-in-c-complete-guide/) +Naučte se, jak v C# převést datum a čas do formátu ISO pomocí Aspose.Cells pro .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/czech/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..ea52249ce4 --- /dev/null +++ b/cells/czech/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Naučte se, jak formátovat datum a čas do ISO při extrahování data z Excelu + a zobrazit ISO datum pomocí Aspose.Cells v C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: cs +og_description: Formátování data a času na ISO je snadné. Tento průvodce ukazuje, + jak extrahovat datum z Excelu a zobrazit ISO datum pomocí Aspose.Cells. +og_title: Formátování DateTime na ISO v C# – krok za krokem tutoriál +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formátování DateTime na ISO v C# – Kompletní průvodce +url: /cs/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# formátování datetime na iso v C# – Kompletní průvodce + +Už jste někdy potřebovali **formátovat datetime na iso**, ale zdroj se nachází v sešitu Excel? Možná buňka obsahuje japonskou éru jako “令和3年5月1日” a přemýšlíte, jak ji převést na čistý řetězec `2021‑05‑01`. Nejste v tom sami. V tomto tutoriálu **extrahujeme datum z excelu**, rozparsujeme japonskou éru a pak **zobrazíme iso datum** na konzoli – vše pomocí několika řádků C# a Aspose.Cells. + +Projdeme si vše, co potřebujete: požadovaný NuGet balíček, přesný kód, který můžete zkopírovat‑vložit, proč je každý řádek důležitý a několik tipů pro okrajové případy. Na konci budete mít znovupoužitelný úryvek, který formátuje datetime na iso bez ohledu na to, jak podivně vypadá původní hodnota v Excelu. + +## Co budete potřebovat + +- .NET 6.0 nebo novější (kód také kompiluje na .NET Framework 4.6+) +- Visual Studio 2022 (nebo jakýkoli editor, který preferujete) +- **Aspose.Cells for .NET** NuGet balíček – `Install-Package Aspose.Cells` +- Excel soubor (nebo nový sešit), který obsahuje datum ve formátu japonské éry + +To je vše. Žádné další knihovny, žádné COM interop, jen jedna dobře zdokumentovaná metoda. + +## Krok 1: Vytvořte sešit a zapište datum v japonské éře + +Nejprve potřebujeme sešit, se kterým budeme pracovat. Pokud už máte Excel soubor, můžete jej načíst pomocí `new Workbook("path")`. V tomto příkladu vytvoříme nový sešit v paměti a vložíme japonský řetězec éry do buňky **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Proč to děláme:** Aspose.Cells ve výchozím nastavení zachází s hodnotami buněk jako s řetězci. Vložením surového textu éry simulujeme reálný scénář, kdy japonský klient zadal data ve svém rodném kalendáři. + +## Krok 2: Povolit parsování japonské éry a extrahovat datum + +Aspose.Cells dokáže automaticky převést řetězce japonské éry na .NET `DateTime` objekty – pokud mu to povolíte. Příznak `DateTimeParseOptions.EnableJapaneseEra` dělá těžkou práci. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** Pokud zapomenete volbu `EnableJapaneseEra`, knihovna vrátí původní řetězec a následná konverze selže. Vždy ověřujte `parsed.Type`, pokud pracujete s mixovaným obsahem. + +## Krok 3: Převést parsovaný DateTime na ISO 8601 + +Nyní, když máme správný `DateTime`, je převod na ISO‑formátovaný řetězec hračka. Vzor `"yyyy-MM-dd"` splňuje část data ISO 8601, což je to, co většina API očekává. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Spuštění programu vypíše: + +``` +ISO date: 2021-05-01 +``` + +To je **zobrazené iso datum**, které jste hledali. + +## Kompletní, spustitelný příklad + +Níže je celý blok kódu, který můžete zkopírovat přímo do konzolového projektu. Žádné skryté závislosti, žádná extra konfigurace. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Očekávaný výstup:** `ISO date: 2021-05-01` + +## Rozpis krok za krokem (Proč je každá část důležitá) + +| Krok | Co se děje | Proč je to důležité | +|------|------------|---------------------| +| **Create workbook** | Inicializuje Excel kontejner v paměti. | Poskytuje sandbox pro testování bez zásahu do souborového systému. | +| **PutValue** | Uloží surový řetězec japonské éry do **A1**. | Napodobuje reálný vstup dat; zajišťuje, že parser vidí přesný text. | +| **GetValue with `EnableJapaneseEra`** | Převádí řetězec éry na .NET `DateTime`. | Automaticky řeší konverzi kalendáře – žádné ruční lookup tabulky nejsou potřeba. | +| `ToString("yyyy-MM-dd")` | Formátuje `DateTime` na ISO 8601. | Zaručuje kulturu‑neutrální, řaditelný datumový řetězec přijatý REST API, databázemi atd. | +| **Console.WriteLine** | Zobrazí finální ISO datum. | Potvrzuje, že celý pipeline funguje end‑to‑end. | + +## Řešení běžných variant + +### 1. Různé umístění buňky + +Pokud se vaše datum nachází v **B2** nebo pojmenovaném rozsahu, stačí nahradit `"A1"` odpovídající adresou: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Více dat v jednom sloupci + +Když potřebujete **extrahovat datum z excelu** pro mnoho řádků, projděte použité rozmezí ve smyčce: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Náhradní řešení pro ne‑éra data + +Pokud buňka již obsahuje standardní datumový řetězec, parser stále funguje, ale můžete chtít bezpečnostní síť: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Příznak `TryParse` zabraňuje výjimkám a vrátí původní hodnotu, pokud konverze selže. + +### 4. Časová složka + +Pokud potřebujete také časovou část, použijte `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +To vrátí plný ISO 8601 timestamp (`2021-05-01T00:00:00`). + +## Vizuální pomůcka + +![příklad formátování datetime na iso](image.png "Příklad formátování datetime na iso v C#") + +*Alt text:* *příklad formátování datetime na iso zobrazující výstup konzole* + +## Často kladené otázky + +- **Mohu to použít s .xls soubory?** + Ano. Aspose.Cells podporuje `.xls`, `.xlsx`, `.csv` a mnoho dalších formátů přímo. + +- **Co když je sešit chráněn heslem?** + Načtěte jej pomocí `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Je formát ISO závislý na locale?** + Ne. Vzor `"yyyy-MM-dd"` je nezávislý na kultuře, což zaručuje stejný řetězec na jakémkoli počítači. + +- **Funguje to na .NET Core?** + Ano—Aspose.Cells je kompatibilní s .NET Standard 2.0. + +## Závěr + +Probrali jsme, jak **formátovat datetime na iso** pomocí **extrahování data z excelu**, parsování japonských érových řetězců a nakonec **zobrazení iso data** na konzoli. Hlavní kroky – vytvořit sešit, zapsat nebo načíst text éry, povolit parsování japonské éry a formátovat pomocí `ToString("yyyy-MM-dd")` – jsou vše, co potřebujete pro většinu scénářů. + +Dále můžete: + +- Zapsat ISO data zpět do dalšího sloupce pro následné zpracování. +- Exportovat upravený sešit do CSV pro hromadný import. +- Kombinovat tuto logiku s webovým API, které přijímá nahrané Excel soubory a vrací JSON‑kódované ISO datumy. + +Neváhejte experimentovat s různými formáty dat, časovými zónami nebo dokonce vlastními kalendáři. Flexibilita Aspose.Cells znamená, že zřídkakdy narazíte na neřešitelný problém. + +Šťastné kódování a ať jsou všechny vaše datumy perfektně ISO‑kompatibilní! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/czech/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..c916929153 --- /dev/null +++ b/cells/czech/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Jak exportovat Excel s formátováním a zachovat formát čísel. Naučte se + převést oblast Excel, získat výsledek vzorce a exportovat Excel s formátováním pomocí + Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: cs +og_description: Jak exportovat Excel s formátováním a zachovat formát čísel. Krok + za krokem průvodce převodem oblasti Excel, získáním výsledku vzorce a exportem Excelu + s formátováním v C#. +og_title: Jak exportovat Excel s formátováním – zachovat formát čísel +tags: +- C# +- Aspose.Cells +- Excel automation +title: Jak exportovat Excel s formátováním – zachovat číselný formát +url: /cs/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak exportovat Excel s formátováním – zachovat formát čísel + +Už jste se někdy zamysleli nad tím, **jak exportovat Excel** data a přitom zachovat vzhled každé buňky přesně tak, jak jej vidíte v sešitu? Možná potřebujete poslat zprávu klientovi, naplnit grid control, nebo jen uložit hodnoty do databáze. Problémem je často ztráta formátování čísel nebo převod vzorců na surové řetězce. + +V tomto tutoriálu projdeme kompletním, připraveným příkladem v C#, který **zachovává formát čísel**, **převádí oblast Excelu** na `DataTable`, **získává výsledek vzorce** a nakonec **exportuje Excel s formátováním** pomocí Aspose.Cells. Na konci budete mít jedinou metodu, kterou můžete vložit do libovolného projektu a zavolat s odkazem na list. + +> **Rychlý náhled:** kód vytvoří sešit, zapíše hodnotu a vzorec, řekne Aspose.Cells, aby exportoval buňky jako formátované řetězce, a vytiskne `123.456 | 246.912` – přesně to, co byste očekávali v Excelu. + +--- + +## Co budete potřebovat + +- **Aspose.Cells for .NET** (bezplatná zkušební verze stačí pro učení) +- .NET 6.0 nebo novější (API je stejné i na .NET Framework) +- Základní vývojové prostředí C# (Visual Studio, VS Code, Rider… podle vás) + +Žádné další NuGet balíčky kromě Aspose.Cells nejsou potřeba. Pokud jste jej ještě nenainstalovali, spusťte: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Krok 1 – Vytvořte sešit a zapište hodnoty (včetně vzorce) + +Nejprve vytvoříme nový sešit a vložíme číselnou hodnotu do **A1**. Pak přidáme jednoduchý vzorec v **B1**, který násobí první buňku dvěma. Tím připravíme podmínky pro ukázku **získání výsledku vzorce** později. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Proč je to důležité:** +- `PutValue` ukládá surové číslo, zatímco `PutFormula` ukládá výpočet. +- Aspose.Cells udržuje vzorec **živý**, takže když později požádáme o hodnotu buňky, získáme skutečně `246.912`, ne řetězec `"=A1*2"`. + +--- + +## Krok 2 – Řekněte Aspose.Cells, aby exportoval hodnoty jako formátované řetězce + +Pokud jednoduše zavoláte `ExportDataTable` s výchozím nastavením, číselné buňky budou vráceny jako jejich základní hodnoty typu `double`. To odstraní všechny oddělovače tisíců, měnové symboly nebo vlastní desetinná místa, která jste nastavili. Třída `ExportTableOptions` nám umožňuje **zachovat formát čísel** a **exportovat jako řetězec**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Klíčový bod:** `ExportNumberFormat = true` je příznak, který umožňuje fungování **zachování formátu čísel**. Bez něj uvidíte `"123.456"` a `"246.912"` jako surová čísla, což může v kódu vypadat v pořádku, ale ne při vložení dat do UI, která očekává stejné formátování jako Excel. + +--- + +## Krok 3 – Vytiskněte exportovaná data (verifikace) + +Nyní, když máme `DataTable` plný formátovaných řetězců, vypišme obsah do konzole. To také ukazuje, že úspěšně **získáváme výsledek vzorce** bez nutnosti sami vzorec vyhodnocovat. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Všimněte si, že druhý sloupec zobrazuje **výsledek vzorce**, nikoli text vzorce. To je přesně to, co potřebujete při **exportu Excelu s formátováním** pro další zpracování. + +--- + +## Krok 4 – Převod větších oblastí Excelu (volitelné) + +Příklad výše pracuje s malým úsekem `A1:B1`, ale ve skutečných scénářích často potřebujete exportovat celé tabulky. Stejná metoda funguje pro jakýkoli obdélníkový blok – stačí upravit argumenty `firstRow`, `firstColumn`, `totalRows` a `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Tip:** Pokud má váš list již řádek s hlavičkou, nastavte `includeColumnNames` na `true`. Aspose.Cells použije první řádek oblasti jako názvy sloupců, což je užitečné, když později svázete `DataTable` s UI gridem. + +--- + +## Krok 5 – Časté úskalí a jak se jim vyhnout + +| Problém | Proč se to děje | Řešení | +|-------|----------------|-----| +| **Čísla ztrácejí čárky nebo měnové symboly** | `ExportAsString` je `false` nebo `ExportNumberFormat` chybí | Nastavte oba `ExportAsString = true` **a** `ExportNumberFormat = true`. | +| **Buňky s vzorcem vrací text vzorce** | Nezavolali jste `CalculateFormula` před exportem (potřebné jen pokud sešit není nastaven na automatické výpočty) | Buď povolte automatické výpočty (`workbook.CalculateFormula()`) nebo se spolehněte na `ExportAsString`, který vynutí vyhodnocení. | +| **Hlavičky se zobrazují jako datové řádky** | `includeColumnNames` je nastaveno na `false`, přičemž oblast obsahuje řádek s hlavičkou | Nastavte `includeColumnNames = true`, aby se první řádek považoval za názvy sloupců. | +| **Velké oblasti způsobují tlak na paměť** | Export celého listu najednou načte vše do paměti | Exportujte po částech (např. 500 řádků najednou) a v případě potřeby sloučte `DataTable`. | + +--- + +## Krok 6 – Kompletní funkční příklad (připravený ke kopírování a vložení) + +Níže je celý program, od `using` direktiv po `Main`. Vložte jej do konzolové aplikace a stiskněte **F5** – okamžitě uvidíte formátovaný výstup. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Očekávaný výstup** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Toto je celý **postup, jak exportovat Excel**, s zachovaným formátováním, vyhodnocenými výsledky vzorců a čistým `DataTable` připraveným pro libovolného .NET spotřebitele. + +--- + +## Závěr + +Probrali jsme vše, co potřebujete vědět o **exportu Excel** dat při **zachování formátu čísel**, **převodu oblasti Excelu** na `DataTable` a **získávání výsledků vzorců** bez dalšího parsování. Klíčová je konfigurace `ExportTableOptions` – jakmile nastavíte `ExportAsString` a `ExportNumberFormat` na `true`, Aspose.Cells udělá těžkou práci za vás. + +Odtud můžete: + +- Připojit `DataTable` k WPF `DataGrid` nebo ASP.NET MVC pohledu. +- Zapsat tabulku do CSV souboru a zachovat přesnou vizuální reprezentaci. +- Rozšířit přístup na více listů nebo dynamické oblasti. + +Neváhejte experimentovat s různými formáty (měna, procenta) a většími bloky dat. Pokud narazíte na nějaké potíže, vraťte se k tabulce **častých úskalí** – pokrývá nejčastější problémy při **exportu Excelu s formátováním**. + +Šťastné programování a ať jsou vaše exportované tabulky vždy tak upravené jako originály! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/czech/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..6f837f10fd --- /dev/null +++ b/cells/czech/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,207 @@ +--- +category: general +date: 2026-03-22 +description: Naučte se, jak duplikovat kontingenční tabulku v C# pomocí Aspose.Cells. + Tento průvodce také ukazuje, jak kopírovat řádky a načíst Excel sešit v C# pro plynulou + automatizaci Excelu a kopírování řádků. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: cs +og_description: Jak duplikovat pivot v C#? Postupujte podle tohoto stručného tutoriálu, + jak načíst Excel sešit v C#, kopírovat řádky a zvládnout automatizaci Excelu při + kopírování řádků. +og_title: Jak duplikovat pivot v C# – kompletní průvodce +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Jak duplikovat Pivot v C# – Kompletní průvodce krok za krokem +url: /cs/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak duplikovat kontingenční tabulku v C# – Kompletní průvodce krok za krokem + +Už jste se někdy zamýšleli **jak duplikovat kontingenční tabulky** programově, aniž byste je museli ručně přetahovat v Excelu? Nejste v tom sami. V mnoha reportovacích pipelinech je potřeba stejný rozvrh kontingenční tabulky na novém souboru řádků a ruční provedení je ztráta času. + +Dobrá zpráva? S několika řádky C# můžete načíst Excel sešit, definovat oblast, která obsahuje kontingenční tabulku, a **jak kopírovat řádky**, aby se kontingenční tabulka objevila na novém místě – vše v jednom automatizovaném běhu. V tomto tutoriálu také pokryjeme základy **load excel workbook c#** a poskytneme vám pevný základ pro úkoly **excel automation copy rows**. + +> **Co si odnesete** +> • Kompletní, spustitelný příklad, který duplikuje kontingenční tabulku. +> • Vysvětlení, proč je každý řádek důležitý. +> • Tipy pro řešení okrajových případů, jako jsou skryté listy nebo více kontingenčních tabulek. + +--- + +## Prerequisites + +Než se ponoříme dál, ujistěte se, že máte: + +- **.NET 6.0** (nebo jakoukoli novější verzi .NET) nainstalovanou. +- **Aspose.Cells for .NET** – knihovna, kterou použijeme k manipulaci se soubory Excel. Můžete ji získat přes NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Zdrojový sešit (`Source.xlsx`), který již obsahuje kontingenční tabulku v rozsahu **A1:J20** (rozsah, který budeme duplikovat). +- Základní znalost syntaxe C# – nic složitého, jen běžné `using` příkazy a metoda `Main`. + +Pokud vám některá z těchto věcí není známá, zastavte se na chvíli a nainstalujte balíček; zbytek průvodce předpokládá, že knihovna je připravena k použití. + +![Ilustrace, jak duplikovat kontingenční tabulku v C# pomocí Aspose.Cells](https://example.com/duplicate-pivot.png "ilustrace, jak duplikovat kontingenční tabulku v C#") + +*Text alternativního obrázku: "příklad, jak duplikovat kontingenční tabulku v C# ukazující zdrojové a duplikované řádky kontingenční tabulky".* + +--- + +## Krok 1: Načtení Excel sešitu C# – Otevření souboru + +První věc, kterou musíte udělat, když chcete **load excel workbook c#**, je vytvořit instanci `Workbook`, která ukazuje na váš soubor. Tento objekt vám poskytuje přístup ke každému listu, buňce a kontingenční tabulce v souboru. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Proč je to důležité:** +`Workbook` abstrahuje celý Excel soubor do modelu v paměti. Bez předchozího načtení nemůžete zkontrolovat umístění kontingenční tabulky ani kopírovat řádky. Konstruktor také automaticky detekuje formát souboru (XLS, XLSX, CSV atd.), takže není potřeba další kód pro detekci formátu. + +--- + +## Krok 2: Jak kopírovat řádky – Definování oblasti kontingenční tabulky + +Nyní, když je sešit v paměti, musíme Aspose.Cells říct, které řádky obsahují kontingenční tabulku. V našem příkladu kontingenční tabulka leží v **A1:J20**, což odpovídá řádkům **0‑19** (indexování od nuly). Zabalíme to do struktury `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Proč používáme `CellArea`:** +Je to lehký způsob, jak popsat obdélníkový blok. Když později zavoláte `CopyRows`, metoda čte tento objekt a přesně ví, které řádky má duplikovat. Pokud budete muset upravit rozsah (např. kontingenční tabulka se rozroste do sloupce K), stačí změnit hodnotu `endColumn`. + +--- + +## Krok 3: Přístup k cílovému listu + +Většina sešitů má jediný list, ale API funguje stejně i pro více listů. Získejte první list (index 0) – tam je umístěna původní kontingenční tabulka. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tip:** +Pokud máte pojmenované listy, můžete je také získat podle názvu: `workbook.Worksheets["Sheet1"]`. To pomáhá vyhnout se pevně zakódovaným indexům, když se struktura sešitu změní. + +--- + +## Krok 4: Jak kopírovat řádky – Duplikování kontingenční tabulky + +Zde je jádro **how to duplicate pivot**: kopírujeme řádky obsahující kontingenční tabulku na nové místo. V našem případě začínáme na řádku 31 (index 30). Metoda `CopyRows` kopíruje *obojí* – data i podkladovou pivot cache, takže nové řádky se chovají přesně jako originál. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Co se děje pod kapotou?** +`CopyRows` klonuje každý řádek, zachovává vzorce, styly i definice kontingenčních tabulek. Protože cache kontingenční tabulky žije na úrovni sešitu, duplikovaná tabulka automaticky odkazuje na stejný zdroj dat – není potřeba žádná další konfigurace. + +**Okrajový případ – skryté řádky:** +Pokud jsou některé řádky ve zdrojovém rozsahu skryté, zůstanou skryté i po kopírování. Pokud je chcete odkrýt, zavolejte po kopírování `worksheet.Rows[destRow].IsHidden = false`. + +--- + +## Krok 5: Uložení sešitu – Ověření duplikátu + +Nakonec zapíšeme změny zpět na disk. Můžete přepsat původní soubor nebo, bezpečněji, uložit pod novým názvem, abyste mohli porovnat před a po. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Výsledek, který byste měli vidět:** +Otevřete `CopyWithPivot.xlsx`. Najdete původní kontingenční tabulku v **A1:J20** a identickou kopii začínající na **A31:J50**. Obě tabulky lze nezávisle obnovit a jakékoli řezače (slicery) připojené k originálu budou fungovat i pro kopii, protože sdílejí stejnou cache. + +--- + +## Časté otázky a varianty + +### Můžu duplikovat více kontingenčních tabulek najednou? + +Ano. Projděte všechny kontingenční tabulky (`worksheet.PivotTables`) a každou jejich oblast zkopírujte na jiné cílové místo. Jen se ujistěte, že cílové oblasti se nepřekrývají. + +### Co když je zdrojový sešit chráněn heslem? + +Aspose.Cells vám umožní otevřít chráněný soubor předáním hesla do konstruktoru `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Jak kopírovat řádky bez ovlivnění vzorců? + +Pokud potřebujete jen *hodnoty* (bez vzorců), použijte `CopyRows` s příznakem `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Existuje způsob, jak kopírovat řádky do *jiného* sešitu? + +Ano. Po zkopírování řádků v původním listu můžete list klonovat do jiného `Workbook` pomocí `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Pro tipy pro spolehlivou automatizaci Excelu při kopírování řádků + +- **Ověřte rozsah** před kopírováním. Rychlá podmínka `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` zabraňuje chybám mimo rozsah. +- **Vypněte výpočty** při kopírování velkých oblastí: `workbook.Settings.CalcMode = CalcMode.Manual;` – to výrazně zrychlí operaci. +- **Uvolněte objekty** (`workbook.Dispose()`), pokud zpracováváte mnoho souborů ve smyčce, aby se uvolnily nativní zdroje. +- **Zaznamenávejte operaci** – zejména v produkčních pipelinech – abyste mohli sledovat, které soubory byly zpracovány, a včas zachytit selhání. + +--- + +## Závěr + +Nyní už víte **how to duplicate pivot** tabulky v C# pomocí Aspose.Cells a viděli jste celý workflow od **load excel workbook c#** po **excel automation copy rows** až po uložení výsledku. Příklad je samostatný, funguje ihned a lze jej rozšířit pro zpracování více kontingenčních tabulek, chráněných souborů nebo kopírování mezi sešity. + +Další kroky? Zkuste upravit skript tak, aby: + +- Obnovil duplikovanou kontingenční tabulku programově (`pivotTable.RefreshData();`). +- Exportoval duplikovanou oblast do CSV pro následné zpracování. +- Integroval kód do ASP.NET Core API, aby uživatelé mohli nahrát soubor a okamžitě získat verzi s duplikovanou kontingenční tabulkou. + +Šťastné programování a ať je vaše automatizace Excelu vždy plynulá! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/row-and-column-management/_index.md b/cells/czech/net/row-and-column-management/_index.md index 20d30665a1..9fc79fcff1 100644 --- a/cells/czech/net/row-and-column-management/_index.md +++ b/cells/czech/net/row-and-column-management/_index.md @@ -68,6 +68,8 @@ Naučte se, jak odstranit sloupec v souboru Excelu pomocí Aspose.Cells pro .NET Naučte se, jak odstranit řádek v Excelu pomocí Aspose.Cells pro .NET. Tato podrobná příručka zahrnuje předpoklady, import kódu a podrobný návod pro bezproblémovou manipulaci s daty. ### [Smazání více řádků v Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Naučte se, jak odstranit více řádků v Excelu pomocí Aspose.Cells pro .NET. Tato podrobná příručka krok za krokem zahrnuje předpoklady, příklady kódování a nejčastější dotazy pro vývojáře. +### [Aspose Cells – Odstranění řádků s ochranou hlavičkového řádku v Excelu](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Naučte se, jak s Aspose.Cells pro .NET smazat řádky a zároveň zachovat hlavičkový řádek, aby data zůstala strukturovaná. ### [Vložení sloupce do Aspose.Cells .NET](./insert-column-aspose-cells/) Naučte se, jak vložit sloupec do Excelu pomocí Aspose.Cells pro .NET. Postupujte podle našeho jednoduchého podrobného návodu a bezproblémově přidejte nový sloupec. Ideální pro vývojáře .NET. ### [Vložení řádku do Aspose.Cells .NET](./insert-row-aspose-cells/) diff --git a/cells/czech/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/czech/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..d54685e3d5 --- /dev/null +++ b/cells/czech/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: 'Aspose Cells: mazání řádků při ochraně řádku záhlaví. Naučte se, jak + získat první tabulku a bezpečně smazat řádky tabulky v Excelu v C#.' +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: cs +og_description: Aspose Cells odstraňuje řádky při ochraně řádku záhlaví. Naučte se, + jak získat první tabulku a bezpečně smazat řádky tabulky v Excelu v C#. +og_title: Aspose Cells Odstranit řádky – Chránit řádek záhlaví v Excelu +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Smazat řádky – Chránit řádek záhlaví v Excelu +url: /cs/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Ochrana řádku záhlaví v Excelu + +Už jste někdy zkusili **aspose cells delete rows** z tabulky a zjistili, že záhlaví zmizelo? To je častý úskalí při programové manipulaci s listy Excelu. V tomto průvodci vás provedeme kompletním, spustitelným řešením, které **chrání řádek záhlaví**, ukáže vám, jak **retrieve first table**, a bezpečně **delete Excel table rows** bez narušení struktury. + +Probereme vše od načtení sešitu až po zpracování výjimky, kterou Aspose vyhodí, když se pokusíte opustit záhlaví. Na konci budete mít robustní vzor, který můžete vložit do jakéhokoli .NET projektu používajícího Aspose.Cells. + +--- + +## Co budete potřebovat + +- **Aspose.Cells for .NET** (v23.12 nebo novější) – knihovna, která vám umožní pracovat se soubory Excel bez nainstalovaného Office. +- Základní vývojové prostředí C# (Visual Studio, Rider nebo `dotnet` CLI). +- Soubor Excel (`TableWithHeader.xlsx`), který obsahuje alespoň jeden **ListObject** (tabulka Excel) s řádkem záhlaví v prvním řádku. + +Žádné další NuGet balíčky nejsou vyžadovány kromě Aspose.Cells. + +--- + +## Krok 1: Načtení sešitu a získání první tabulky + +Prvním krokem je otevřít sešit a získat tabulku, kterou chcete upravit. Zde vstupuje do hry sekundární klíčové slovo **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Proč je to důležité:** +- `Workbook` načte soubor bez nutnosti mít nainstalovaný Excel. +- `worksheet.ListObjects[0]` je nejužitečnější způsob, jak **retrieve first table**; pokud máte více tabulek, můžete iterovat nebo použít název tabulky. + +> **Tip:** Pokud si nejste jisti, zda list skutečně obsahuje tabulku, nejprve zkontrolujte `worksheet.ListObjects.Count`, abyste se vyhnuli `IndexOutOfRangeException`. + +--- + +## Krok 2: Ochrana řádku záhlaví při mazání řádků + +Nyní přichází jádro problému: **aspose cells delete rows** bez vymazání záhlaví. Metoda `DeleteRows` v Aspose přijímá nulově‑indexovaný počáteční index a počet. Pokus o smazání záhlaví (řádek 0) vyvolá výjimku, což je přesně to, čemu se chceme vyhnout. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Vysvětlení logiky:** + +| Krok | Důvod | +|------|--------| +| `table.DeleteRows(1, 2);` | Index 1 ukazuje na **druhý** řádek (první datový řádek). Smazání dvou řádků odstraní řádky 2‑3 v Excelu a ponechá záhlaví (řádek 1) nedotčené. | +| `catch (Exception ex)` | Aspose vyhodí výjimku **pouze** když by operace opustila záhlaví. Zachycením můžete zaznamenat přátelskou zprávu místo zhroucení aplikace. | +| `Save` | Uložení změn vám umožní otevřít `Result.xlsx` a vidět, že záhlaví je stále přítomno. | + +> **Co když opravdu potřebujete smazat záhlaví?** +> Použijte `table.ShowHeaders = false;` před smazáním, nebo smažte celou tabulku a vytvořte ji znovu. Ve většině obchodních scénářů však budete chtít **protect header row**. + +--- + +## Krok 3: Ověření výsledku – Očekávaný výstup + +Po spuštění programu otevřete `Result.xlsx`. Měli byste vidět: + +- První řádek stále obsahuje původní názvy sloupců. +- Řádky 2‑3 (ty, které jsme cílili) jsou pryč a zbývající data se posunuly nahoru. + +Konzole zobrazí: + +``` +Rows deleted successfully. +``` + +Pokud jste omylem zkusili smazat záhlaví (např. `table.DeleteRows(0, 1);`), výstup by byl: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Tato zpráva potvrzuje, že vestavěná ochrana Aspose funguje podle očekávání. + +--- + +## Krok 4: Alternativní způsoby, jak **Delete Excel Table Rows** + +Někdy potřebujete větší kontrolu – například mazání řádků na základě podmínky nebo odstraňování nesouvislých řádků. Zde jsou dva rychlé vzory, které zachovávají záhlaví v bezpečí. + +### 4.1 Mazání řádků pomocí filtru dat + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Hromadné mazání pomocí rozsahu + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Oba úryvky dodržují pravidlo **protect header row**, protože počáteční index nikdy neklesne pod 1. + +--- + +## Krok 5: Časté úskalí a jak se jim vyhnout + +| Úskalí | Proč k tomu dochází | Řešení | +|---------|----------------|-----| +| Náhodné smazání záhlaví | Použití `0` jako počátečního indexu | Vždy začněte na `1` pro datové řádky, nebo nejprve zkontrolujte `table.ShowHeaders`. | +| `IndexOutOfRangeException` když list neobsahuje tabulky | Předpoklad, že tabulka existuje | Ověřte `worksheet.ListObjects.Count > 0` před přístupem k `[0]`. | +| Změny nejsou uloženy | Zapomenutí zavolat `Save` | Zavolejte `workbook.Save` po úpravách. | +| Mazání řádků uprostřed posouvá indexy, což způsobuje přeskočení | Iterace dopředu během mazání | Iterujte **zpětně** nebo nejprve shromážděte řádky k mazání. | + +--- + +## Krok 6: Sestavení všeho dohromady – kompletní funkční příklad + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Spusťte tento program, otevřete `Result.xlsx` a uvidíte, že záhlaví zůstalo nedotčeno, zatímco vybrané řádky jsou odstraněny. Toto je **kompletní, samostatné řešení** pro **aspose cells delete rows** bez obětování záhlaví. + +--- + +## Závěr + +Právě jsme ukázali, jak **aspose cells delete rows** při **protecting the header row**, jak **retrieve first table**, a několik způsobů, jak **delete excel table rows** bezpečně. Hlavní poznatky jsou: + +- Vždy začínejte mazání na indexu 1, aby záhlaví zůstalo živé. +- Použijte `try/catch` pro zpracování vestavěné výjimky ochrany Aspose. +- Ověřte existenci tabulky před operací a při podmíněném odstraňování řádků iterujte zpětně. + +Jste připraveni na další úroveň? Zkuste kombinovat tento přístup s **Aspose Cells** API pro stylování, abyste před odstraněním zvýraznili smazané řádky, nebo automatizujte proces napříč více listy. Možnosti jsou neomezené a nyní máte spolehlivý vzor, na kterém můžete stavět. + +Pokud se vám tento tutoriál líbil, dejte mu palec nahoru, sdílejte ho s kolegy nebo zanechte komentář s vašimi vlastními řešeními okrajových případů. Šťastné programování! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/czech/net/saving-and-exporting-excel-files-with-options/_index.md index b74fae98ed..52f957bd56 100644 --- a/cells/czech/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/czech/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Naučte se, jak zpracovávat varování při načítání souborů Excelu v .NET Naučte se, jak programově zadat vlastnosti dokumentu, jako je verze, autor a název, v souboru aplikace Excel pomocí Aspose.Cells pro .NET s podrobnými pokyny. ### [Ořezávání úvodních prázdných řádků a sloupců při exportu](./trimming-leading-blank-rows-and-columns/) Zjednodušte export CSV oříznutím úvodních prázdných řádků a sloupců pomocí Aspose.Cells pro .NET. Čistá data jsou jen pár kroků od vás. +### [Jak uložit sešit v C# – Kompletní průvodce automatizací Excelu](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Naučte se, jak uložit sešit pomocí Aspose.Cells v C# s podrobným návodem pro kompletní automatizaci Excelu. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/czech/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..b8e729b1b7 --- /dev/null +++ b/cells/czech/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Jak uložit sešit v C# pomocí Aspose.Cells – krok za krokem průvodce, + který zahrnuje načtení Excelu, vytvoření listu, opětovné použití listu a generování + zprávy. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: cs +og_description: Jak uložit sešit v C# s Aspose.Cells. Naučte se, jak načíst Excel, + vytvořit list, znovu použít list a vygenerovat zprávu v jednom tutoriálu. +og_title: Jak uložit sešit v C# – Kompletní průvodce automatizací Excelu +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Jak uložit sešit v C# – Kompletní průvodce automatizací Excelu +url: /cs/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uložit sešit v C# – Kompletní průvodce automatizací Excelu + +Už jste se někdy zamysleli, **jak uložit sešit** v C# po zpracování dat? Nejste v tom sami. Většina vývojářů narazí na problém, když vypadá zpráva na obrazovce perfektně, ale odmítá se zapsat zpět na disk. V tomto tutoriálu projdeme plnohodnotný příklad, který vám nejen ukáže **jak uložit sešit**, ale také pokryje **jak načíst Excel**, **jak vytvořit list**, **jak znovu použít list** a **jak vygenerovat report** – vše s Aspose.Cells. + +Představte si to jako rozhovor během pauzy na kávu, kde vytahuji kód ze svého laptopu a vysvětluji každý řádek. Na konci budete mít spustitelný program, který načte šablonu, vloží data pomocí SmartMarker, znovu použije existující název detailního listu a nakonec zapíše soubor do vaší složky. Žádná tajemství, jen jasné kroky, které můžete zkopírovat‑vložit. + +## Co budete potřebovat + +- **Aspose.Cells for .NET** (nejnovější verze k roku 2026). Můžete jej získat z NuGet pomocí `Install-Package Aspose.Cells`. +- Vývojové prostředí .NET (Visual Studio, Rider nebo VS Code s rozšířením C# funguje dobře). +- Základní soubor šablony Excel pojmenovaný `MasterTemplate.xlsx` umístěný ve složce, kterou ovládáte. +- Základní znalost C# – pokud jste už dříve použili `Console.WriteLine`, jste připraveni. + +> **Tip:** Uchovávejte šablonu v samostatné složce *Resources* a označte ji jako „Copy if newer“, aby cesta zůstala konzistentní napříč buildy. + +Teď se ponořme do kódu. + +## Krok 1: Jak načíst Excel – Otevřít šablonu sešitu + +První věc, kterou musíte udělat, je načíst sešit do paměti. Aspose.Cells to umožňuje jedním řádkem, ale pochopení proč pomáhá, když budete později potřebovat řešit problémy. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Proč je to důležité:** Načtení sešitu vám poskytuje přístup ke každému listu, stylu a pojmenovanému rozsahu v šabloně. Pokud soubor není nalezen, Aspose vyhodí `FileNotFoundException`, takže zkontrolujte cestu. +- **Hraniční případ:** Pokud je šablona chráněna heslem, předávejte heslo konstruktoru `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Krok 2: Jak znovu použít list – Konfigurace možností SmartMarker + +SmartMarker může automaticky vytvořit nový detailní list, ale možná již máte list pojmenovaný **Detail**. Abychom předešli konfliktu, řekneme procesoru, aby znovu použil tento název. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Proč je to důležité:** Bez této možnosti by Aspose přidal číselnou příponu (např. „Detail1“), což může narušit makra nebo vzorce, které očekávají pevný název listu. +- **Co když list neexistuje?** Aspose jej vytvoří za vás – takže stejný kód funguje, ať už list existuje, nebo ne. + +## Krok 3: Jak vytvořit list – Připravit zdroj dat + +I když zde nepřidáváme list ručně, data, která předáte SmartMarkeru, určují, zda bude vytvořen nový list. Vytvořme jednoduchý anonymní objekt, který napodobuje seznam objednávek. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Proč je to důležité:** SmartMarker prohledává šablonu na značky jako `&=Header` a `&=Items.Id`. Struktura `orderData` musí přesně odpovídat těmto značkám, jinak je procesor tiše přeskočí. +- **Varianta:** Pokud získáváte data z databáze, nahraďte anonymní typ seznamem DTO nebo `DataTable`. Procesor obojí zvládne. + +## Krok 4: Jak vygenerovat report – Zpracovat SmartMarker + +Nyní svážeme data se šablonou. Procesor prochází první list, nahrazuje značky a vytváří detailní list. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Proč je to důležité:** Tento jediný řádek provádí těžkou práci – vyplňuje hlavičku, iteruje přes `Items` a respektuje `DetailSheetNewName`, který jsme nastavili dříve. +- **Častá otázka:** *Co když mám více listů se značkami?* Projděte každý list a zavolejte `SmartMarkerProcessor.Process` jednotlivě. + +## Krok 5: Jak uložit sešit – Uložit výsledný soubor + +Nakonec zapíšeme upravený sešit zpět na disk. Toto je okamžik, kdy **jak uložit sešit** nabývá konkrétní podoby. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Proč je to důležité:** Metoda `Save` podporuje mnoho formátů (`.xlsx`, `.xls`, `.csv`, `.pdf` atd.). Ve výchozím nastavení zapisuje Excel soubor, ale můžete předat objekt `SaveOptions` pro změnu výstupu. +- **Hraniční případ:** Pokud je cílový soubor otevřen v Excelu, `Save` vyhodí `IOException`. Ujistěte se, že jsou všechny instance zavřeny, nebo použijte jedinečný název souboru při každém spuštění. + +![Příklad, jak uložit sešit v C#](/images/how-to-save-workbook-csharp.png "Jak uložit sešit v C# – vizuální přehled procesu") + +### Kompletní funkční příklad + +Po spojení všeho dohromady zde máte samostatnou konzolovou aplikaci, kterou můžete zkompilovat a spustit: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Očekávaný výstup:** Po spuštění najdete `SmartMarkerWithDupDetail.xlsx` ve `YOUR_DIRECTORY`. Otevřete jej a měli byste vidět: + +- Původní hlavička vyplněná textem „Orders“. +- Nový (nebo znovu použitý) list pojmenovaný **Detail** obsahující dva řádky: `Id=1, Qty=5` a `Id=2, Qty=3`. + +Pokud list **Detail** již existoval, jeho obsah bude přepsán novými daty – žádné nadbytečné listy nebudou zaplňovat váš soubor. + +## Často kladené otázky (FAQ) + +| Otázka | Odpověď | +|--------|---------| +| *Mohu uložit do PDF místo XLSX?* | Ano. Nahraďte `workbook.Save("file.xlsx")` za `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Co když má moje šablona více sekcí SmartMarker?* | Zavolejte `SmartMarkerProcessor.Process` na každý list, který obsahuje značky, nebo předávejte kolekci datových objektů odpovídajících každé sekci. | +| *Existuje způsob, jak přidat data místo přepsání listu Detail?* | Použijte `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (k dispozici v novějších verzích Aspose). | +| *Je nutné uvolnit Workbook?* | Třída `Workbook` implementuje `IDisposable`. Zabalte ji do bloku `using` pro čistou správu zdrojů. | + +## Závěr + +Právě jsme prošli **jak uložit sešit** v C# od začátku do konce, ukazujíc celý proces: **jak načíst Excel**, **jak vytvořit list** (implicitně přes SmartMarker), **jak znovu použít list** a **jak vygenerovat report**. Kód je připraven vložit do libovolného .NET projektu a vysvětlení by vám měla poskytnout dostatek kontextu pro přizpůsobení složitějším scénářům – jako jsou více‑listové reporty, podmíněné formátování nebo export do PDF. + +Připraveni na další výzvu? Zkuste přidat graf, který vizualizuje množství objednávek, nebo přepněte výstupní formát na CSV pro následné zpracování. Stejné principy – načítání, zpracování a ukládání – stále platí, takže tento vzor budete používat v mnoha reportovacích úlohách. + +Pokud narazíte na problém nebo máte nápady na rozšíření, neváhejte zanechat komentář. Šťastné kódování a užijte si plynulý zážitek z konečného **uložení sešitu** přesně tak, jak potřebujete! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/smart-markers-dynamic-data/_index.md b/cells/czech/net/smart-markers-dynamic-data/_index.md index 18494a2473..b9f3744ecb 100644 --- a/cells/czech/net/smart-markers-dynamic-data/_index.md +++ b/cells/czech/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Odemkněte sílu Aspose.Cells s tímto podrobným návodem o použití vlastnost Odemkněte potenciál reportingu v Excelu s Aspose.Cells a snadno zvládněte vnořené objekty pomocí inteligentních značek v podrobném návodu. ### [Implementace variabilního pole s inteligentními značkami Aspose.Cells](./variable-array-smart-markers/) Odemkněte sílu Aspose.Cells. Naučte se krok za krokem implementovat proměnná pole pomocí inteligentních markerů pro bezproblémové generování sestav v Excelu. +### [Jak vygenerovat Excel report v C# – Kompletní průvodce pomocí SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Kompletní návod, jak pomocí Aspose.Cells SmartMarker v C# vytvořit dynamické Excel reporty od nastavení až po export. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/czech/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..705dd481bc --- /dev/null +++ b/cells/czech/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-22 +description: Jak vygenerovat Excel report v C# s šablonou master‑detail. Naučte se + rychle naplnit Excel šablonu v C# pomocí SmartMarkeru pro opakovatelná listy. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: cs +og_description: Jak generovat Excel report v C# pomocí znovupoužitelné šablony. Tento + krok‑za‑krokem průvodce vám ukáže, jak naplnit Excel šablonu v C# hlavní‑detailními + daty. +og_title: Jak generovat Excel report v C# – Kompletní tutoriál SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Jak vygenerovat Excel report v C# – Kompletní průvodce s použitím SmartMarker +url: /cs/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vygenerovat Excel report v C# – Kompletní průvodce s použitím SmartMarker + +Už jste se někdy zamýšleli **jak vygenerovat Excel report** v C# bez psaní nekonečného kódu buňka‑po‑buňce? Nejste v tom sami. Většina vývojářů narazí na problém, když potřebují vylepšený, více‑listový report, který odráží vztahy master‑detail – například objednávky a položky – a nechtějí pokaždé znovu vymýšlet kolo. + +Dobrá zpráva? S připravenou Excel šablonou a **SmartMarker** enginem od Aspose.Cells můžete **populate Excel template C#** během několika řádků kódu. V tomto tutoriálu projdeme reálný scénář, vysvětlíme, proč je každý krok důležitý, a poskytneme kompletní, spustitelný příklad, který můžete dnes zkopírovat‑vložit. + +> **Co získáte:** master‑detail Excel report, kde každá objednávka vytvoří svůj vlastní list, vše řízené čistými C# objekty. Žádné ruční procházení buněk, žádné křehké vzorce – jen čistý, udržovatelný kód. + +--- + +## Požadavky + +Než se pustíme dál, ujistěte se, že máte: + +- **.NET 6.0** (nebo novější) nainstalovaný – kód cílí na .NET 6, ale funguje i na .NET Framework 4.7+. +- **Aspose.Cells for .NET** NuGet balíček (`Install-Package Aspose.Cells`) – poskytuje třídy `Workbook`, `SmartMarkerProcessor` a související. +- Excel soubor pojmenovaný **MasterDetailTemplate.xlsx** umístěný v `YOUR_DIRECTORY`. Měl by obsahovat SmartMarker blok jako `{{Orders.OrderId}}` v prvním listu a vnořený blok `{{Orders.Items.Prod}}` pro položky. +- Základní povědomí o anonymních typech v C# – použijeme je k modelování objednávek a položek. + +Pokud vám některý z těchto bodů není známý, nebojte se. Později zmíníme alternativy (např. pomocí EPPlus), ale základní koncept zůstává stejný. + +--- + +## Krok 1: Načtení Excel šablony obsahující SmartMarker bloky + +Prvním krokem je otevřít soubor šablony. Šablonu si představte jako kostru; SmartMarker ji později naplní skutečnými daty. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Proč je to důležité:** Oddělením rozvržení (šablony) od dat (C# objektů) uspokojíte jak designéry, tak vývojáře. Designéři mohou měnit písma, barvy nebo vzorce, aniž by zasahovali do kódu. + +--- + +## Krok 2: Vytvoření master‑detail datového zdroje + +Dále vytvoříme data, která šablonu naplní. Pro typický report objednávek máte kolekci objednávek, z nichž každá obsahuje vlastní kolekci položek. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Tip:** Použijte silně typované třídy místo anonymních typů, pokud potřebujete opakované použití napříč více reporty. Anonymní přístup udržuje příklad stručný. + +**Proč je to důležité:** SmartMarker funguje tak, že porovnává názvy vlastností (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) s placeholdery v šabloně. Hierarchie se musí přesně shodovat, jinak engine tyto sekce přeskočí. + +--- + +## Krok 3: Řekněte SmartMarkeru, aby vytvořil nový list pro každý master záznam + +Ve výchozím nastavení SmartMarker zapisuje všechny řádky do jednoho listu. My chceme, aby každá objednávka měla svůj vlastní list, což je ideální pro tisk nebo pozdější e‑mailování PDF per‑order. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Proč je to důležité:** `EnableRepeatingSheet` eliminuje potřebu ručního klonování listů. Engine zkopíruje původní list, vloží data objednávky a automaticky přejmenuje list (obvykle podle hodnoty v první buňce). + +--- + +## Krok 4: Zpracování šablony s vašimi daty + +Nyní vše spojíme. `SmartMarkerProcessor` prochází sešitem, nahrazuje tagy a vytváří nové listy podle instrukcí. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Proč je to důležité:** Tento jediný řádek provádí těžkou práci – parsování šablony, iteraci přes kolekce a zpracování vnořených tabulek. Je to jádro **populate Excel template C#** bez jakýchkoli ručních smyček. + +--- + +## Krok 5: Uložení hotového reportu + +Nakonec zapíšeme naplněný sešit na disk. Můžete ho také přímo streamovat do HTTP odpovědi pro webové aplikace. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Proč je to důležité:** Uložení do souboru vám poskytne konkrétní artefakt, který můžete otevřít v Excelu, sdílet se stakeholdery nebo předat dalším procesům, jako je konverze do PDF. + +--- + +## Kompletní funkční příklad (připravený ke zkopírování) + +Níže je celý program, včetně `using` direktiv a metody `Main`. Vložte jej do konzolové aplikace, upravte cesty k souborům a spusťte. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Očekávaný výstup + +Po otevření `MasterDetailResult.xlsx` uvidíte: + +- **List “Order_1”** – obsahuje hlavičku objednávky 1 a dva řádky pro produkty A a B. +- **List “Order_2”** – obsahuje hlavičku objednávky 2 a jeden řádek pro produkt C. +- Všechny vzorce, formátování a grafy z původní šablony jsou zachovány. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Alt text obrázku: vygenerovaný Excel report s oddělenými listy pro každou objednávku, ukazující, jak generovat Excel report pomocí C# a SmartMarker.* + +--- + +## Často kladené otázky a okrajové případy + +### Co když potřebuji statický list (např. souhrn) vedle opakujících se listů? + +Nastavte `EnableRepeatingSheet = true` **pouze** na listu, který obsahuje master blok. Ostatní listy zůstanou nedotčeny, takže můžete v původní šabloně zachovat souhrnnou stránku. + +### Můžu místo anonymních objektů použít DataTable? + +Určitě. SmartMarker funguje s libovolným objektem, který implementuje `IEnumerable`. Stačí nahradit anonymní typ `DataTable` a zajistit, aby názvy sloupců odpovídaly tagům. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Jak změním pojmenování generovaných listů? + +Implementujte vlastní rozhraní `ISmartMarkerSheetNaming` (nebo manipulujte s `workbook.Worksheets` po zpracování). Většina vývojářů jednoduše přejmenuje listy podle hodnoty buňky: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Co když moje šablona používá jinou syntaxi placeholderů? + +SmartMarker umožňuje vlastní oddělovače pomocí `SmartMarkerOptions`. Například pro použití `<< >>` místo `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tipy pro škálování tohoto přístupu + +- **Cacheujte šablonu** v paměti, pokud generujete mnoho reportů na požádání; načítání z disku při každém požadavku zvyšuje latenci. +- **Kombinujte s konverzí do PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) pro výstupy vhodné k e‑mailu. +- **Parametrizujte cesty k souborům** pomocí konfiguračních souborů nebo proměnných prostředí, aby byla řešení přenosná mezi vývojovým, testovacím a produkčním prostředím. +- **Jednotkově testujte datovou vrstvu** odděleně; SmartMarker je deterministický, takže stačí ověřit, že data, která předáváte, odpovídají očekávanému schématu. + +--- + +## Závěr + +Probrali jsme **jak vygenerovat Excel report** v C# od načtení šablony s podporou SmartMarker až po uložení více‑listového sešitu, který odráží master‑detail vztahy. Díky **populate Excel template C#** s několika řádky kódu se vyhnete křehké logice buňka‑po‑buňce a umožníte designérům svobodu při tvorbě finálního vzhledu. + +Dále můžete zkusit: + +- Použít **populate Excel template C#** s grafy, které se automaticky aktualizují na každém listu. +- Integrovat **excel smartmarker c#** s ASP.NET Core pro streamování reportů přímo do prohlížeče. +- Automatizovat **c# excel automation** pipeline, která tahá data z API nebo databází. + +Vyzkoušejte to, upravte šablonu a sledujte, jak rychle můžete proměnit surová data v elegantní Excel report. Máte otázky nebo zajímavý případ použití? Zanechte komentář níže – šťastné kódování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/czech/net/tables-and-lists/_index.md b/cells/czech/net/tables-and-lists/_index.md index 6e9c6db4e6..2a97a4f86c 100644 --- a/cells/czech/net/tables-and-lists/_index.md +++ b/cells/czech/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Snadno převádějte tabulky na oblasti v Excelu pomocí Aspose.Cells pro .NET s Odemkněte sílu Aspose.Cells pro .NET. Naučte se číst a zapisovat tabulky s dotazy na zdroje dat v tomto podrobném průvodci krok za krokem. ### [Nastavení komentáře k tabulce nebo seznamu v Excelu](./setting-comment-of-table-or-list/) Naučte se, jak nastavit komentáře k tabulkám v Excelu pomocí Aspose.Cells pro .NET s naším jednoduchým podrobným návodem. +### [Vytvoření tabulky Excel v C# – krok za krokem](./create-excel-table-in-c-step-by-step-guide/) +Naučte se, jak pomocí Aspose.Cells v C# vytvořit tabulku v Excelu krok po kroku. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/czech/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/czech/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..648cf8e855 --- /dev/null +++ b/cells/czech/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Rychle vytvořte Excel tabulku v C#. Naučte se, jak přidat tabulku, definovat + její rozsah, skrýt hlavičku tabulky a zakázat filtr tabulky pomocí kompletního příkladu + kódu. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: cs +og_description: Vytvořte tabulku Excel v C# s jasným příkladem. Naučte se, jak přidat + tabulku, definovat rozsah tabulky, skrýt záhlaví tabulky a zakázat filtr během několika + řádků. +og_title: Vytvořte Excel tabulku v C# – Kompletní programovací průvodce +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Vytvořte Excel tabulku v C# – průvodce krok za krokem +url: /cs/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření Excel tabulky v C# – krok za krokem průvodce + +Už jste někdy potřebovali **create Excel table** programově pomocí C#? Vytvoření Excel tabulky může být hračka, když znáte správné kroky. V tomto tutoriálu projdeme kompletní, spustitelný příklad, který ukazuje **how to add table**, **define table range**, **hide table header** a dokonce **disable table filter** – vše bez opuštění IDE. + +Pokud jste někdy bojovali s tím, že se vám objevuje UI AutoFilter, když ho nechcete, jste na správném místě. Na konci tohoto průvodce budete mít připravený spustitelný úryvek, který vytvoří čistý sešit pojmenovaný *TableNoFilter.xlsx* a pochopíte, proč je každý řádek důležitý. + +## Co se naučíte + +- Jak **create Excel table** od nuly s Aspose.Cells. +- Přesná syntaxe pro **define table range** (A1:D5 v našem případě). +- Jak povolit řádek záhlaví, aby se zobrazilo vestavěné UI filtru. +- Trik, jak **hide table header** a **disable table filter**, když je již nepotřebujete. +- Kompletní, připravený k kopírování a vložení C# program, který můžete spustit ještě dnes. + +### Požadavky + +- .NET 6.0 nebo novější (kód funguje také s .NET Framework 4.7+). +- Aspose.Cells pro .NET nainstalovaný přes NuGet (`Install-Package Aspose.Cells`). +- Základní znalost C# a Visual Studio (nebo libovolného IDE, které preferujete). + +--- + +## Krok 1: Nastavení projektu a import jmenných prostorů + +Než budete moci **create Excel table**, potřebujete konzolový projekt, který odkazuje na Aspose.Cells. Otevřete terminál a spusťte: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Nyní otevřete *Program.cs* a přidejte požadované `using` příkazy: + +```csharp +using System; +using Aspose.Cells; +``` + +Tyto importy vám poskytují přístup ke třídám `Workbook`, `Worksheet`, `CellArea` a `ListObject`, které pohánějí zbytek tutoriálu. + +## Krok 2: Inicializace nového sešitu a získání první listu + +Vytvoření nového sešitu je první logický krok. Představte si sešit jako kontejner souboru Excel a list jako jednotlivý list, kam umístíme naši tabulku. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Proč je to důležité:** Zcela nový `Workbook` začíná s jedním prázdným listem. Tím, že získáme `Worksheets[0]`, zajistíme, že pracujeme s výchozím listem, aniž bychom ho museli vytvářet ručně. + +## Krok 3: Definování rozsahu tabulky (A1:D5) + +V terminologii Excelu *tabulka* existuje uvnitř obdélníkového bloku buněk. Struktura `CellArea` nám umožňuje tento blok přesně určit. Zde se podíváme na **define table range** pro buňky A1 až D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** Pokud někdy potřebujete dynamický rozsah, můžete vypočítat `endRow` a `endColumn` na základě délky dat. Indexování od nuly je častým zdrojem chyb o jeden, takže si své čísla dvakrát ověřte. + +## Krok 4: Přidání tabulky a povolení řádku záhlaví + +Nyní přichází jádro tutoriálu: **how to add table** do listu. Kolekce `ListObjects` spravuje tabulky a nastavení `ShowHeaders = true` automaticky vloží UI AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Vysvětlení:** +> - `Add(tableRange, true)` vytvoří nový `ListObject` (tj. Excel tabulku) uvnitř zadaného rozsahu. +> - Příznak `true` říká Aspose.Cells, že první řádek rozsahu má být považován za záhlaví. +> - Nastavení `ShowHeaders` na `true` zobrazí záhlaví a spustí vestavěné UI filtru. + +V tomto okamžiku, pokud otevřete vygenerovaný sešit, uvidíte pěkně naformátovanou tabulku s šipkami filtru u každého záhlaví sloupce. + +## Krok 5: Skrytí řádku záhlaví a deaktivace AutoFilteru + +Někdy chcete data bez UI nepořádku. Možná exportujete čistou zprávu, kde filtry nejsou potřeba. Zde je technika **hide table header** a **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Proč to uděláte:** +> - `ShowHeaders = false` odstraní vizuální řádek záhlaví a změní tabulku na obyčejný datový blok. +> - Nastavením `AutoFilter = null` vymažete skrytý objekt filtru, čímž zajistíte, že žádná zbytková logika filtru nezůstane. To je to, co myslíme pod **disable table filter**. + +## Krok 6: Uložení sešitu na disk + +Nakonec zapíšeme soubor na místo dle vašeho výběru. Nahraďte `"YOUR_DIRECTORY"` skutečnou cestou na vašem počítači. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Když spustíte program, měli byste vidět: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Otevření souboru odhalí list s datovým blokem (žádné záhlaví, žádné šipky filtru). To je kompletní cyklus – od **create Excel table** po **disable table filter**. + +## Kompletní funkční příklad (připravený ke kopírování a vložení) + +Níže je celý program, připravený ke kompilaci. Stačí nahradit zástupný adresář platnou cestou. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Očekávaný výsledek:** Soubor pojmenovaný *TableNoFilter.xlsx* obsahující obyčejný datový rozsah A1:D5 bez viditelného řádku záhlaví a bez rozbalovacích filtrů. + +## Často kladené otázky a okrajové případy + +### Co když potřebuji více tabulek ve stejném listu? + +Jednoduše zopakujte **Step 3** s novým `CellArea` a čerstvým `ListObject`. Každá tabulka si udržuje vlastní nastavení záhlaví a filtru, takže můžete jednu skrýt a druhou nechat viditelnou. + +### Můžu stylovat tabulku (pruhované řádky, barvy) před skrytím záhlaví? + +Určitě. `ListObject` poskytuje vlastnost `TableStyleType`. Například: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Můžete aplikovat styl **před** skrytím záhlaví; vizuální formátování zůstane zachováno. + +### Co když potřebuji zachovat záhlaví, ale jen skrýt šipky filtru? + +Nastavte `ShowHeaders = true` (ponechte řádek) a poté vymažte filtr: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Tím splníte požadavek **disable table filter** bez ztráty popisků sloupců. + +### Funguje to jen s .xlsx soubory? + +Aspose.Cells automaticky detekuje formát na základě přípony souboru, kterou předáte metodě `Save`. Můžete také výstupní soubor uložit jako `.xls`, `.csv` nebo dokonce `.pdf` s jinou příponou. + +## Závěr + +Právě jsme prošli vše, co potřebujete k **create Excel table** v C# pomocí Aspose.Cells, od **define table range** po **hide table header** a **disable table filter**. Kód je stručný, přehledný a připravený k produkčnímu použití. + +Dále můžete zkoumat **how to add table** s dynamickými daty, aplikovat vlastní styly nebo exportovat stejný sešit do PDF. Každé z těchto témat staví na základech, které jste právě zvládli, takže klidně experimentujte a přizpůsobujte úryvek svým projektům. + +Máte nějaký tip, který byste chtěli sdílet? Zanechte komentář níže a šťastné programování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/converting-excel-files-to-other-formats/_index.md b/cells/dutch/net/converting-excel-files-to-other-formats/_index.md index 55dd808b28..c73a00aa18 100644 --- a/cells/dutch/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/dutch/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Leer hoe u Excel-bestanden naar PDF/A-1a kunt converteren voor archivering met A Leer hoe je JSON programmatisch naar CSV converteert in .NET met Aspose.Cells. Volg onze stapsgewijze handleiding voor een naadloze datatransformatie. ### [Excel-bestand programmatisch naar PPTX converteren in .NET](./converting-excel-file-to-pptx/) Leer hoe u met Aspose.Cells voor .NET programmatisch een Excel-bestand naar een PowerPoint-presentatie (PPTX) kunt converteren met behulp van deze stapsgewijze handleiding. +### [Excel-bestand exporteren naar PowerPoint – Complete C#-gids](./export-excel-to-powerpoint-complete-c-guide/) +Leer hoe u met Aspose.Cells voor .NET Excel-werkbladen exporteert naar PowerPoint-presentaties met een volledige C#-handleiding. +### [Printgebied instellen in Excel en exporteren naar PowerPoint – Stapsgewijze handleiding](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Leer hoe u met Aspose.Cells voor .NET het printgebied in Excel instelt en vervolgens naar PowerPoint exporteert in een stapsgewijze handleiding. ### [HTML CrossType specificeren in uitvoer-HTML programmatisch in .NET](./specifying-html-crosstype-in-output-html/) Leer hoe u HTML CrossType specificeert in Aspose.Cells voor .NET. Volg onze stapsgewijze tutorial om Excel-bestanden nauwkeurig naar HTML te converteren. ### [Getallenspreadsheets programmatisch lezen in .NET](./reading-numbers-spreadsheet/) diff --git a/cells/dutch/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/dutch/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..00f389d7da --- /dev/null +++ b/cells/dutch/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-22 +description: Leer hoe je Excel naar PowerPoint exporteert, het afdrukgebied in Excel + instelt en Excel opslaat als PPTX met bewerkbare grafieken en OLE‑objecten in slechts + een paar stappen. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: nl +og_description: Exporteer Excel snel naar PowerPoint. Deze tutorial laat zien hoe + je het afdrukgebied in Excel instelt en Excel opslaat als PPTX met bewerkbare grafieken + en OLE‑objecten. +og_title: Excel exporteren naar PowerPoint – Complete C#‑gids +tags: +- Aspose.Cells +- C# +- Office Automation +title: Export Excel naar PowerPoint – Complete C#‑gids +url: /nl/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel naar PowerPoint exporteren – Complete C# gids + +Moet je **Excel naar PowerPoint exporteren**? Je bent op de juiste plek. Of je nu een wekelijkse verkooppresentatie maakt of een rapportage‑pipeline automatiseert, het omzetten van een Excel‑werkblad naar een PowerPoint‑presentatie kan je uren aan copy‑and‑paste werk besparen. + +In deze tutorial lopen we een praktische voorbeeld door dat niet alleen **excel naar powerpoint exporteert**, maar ook laat zien hoe je **printgebied in Excel instelt** en **excel opslaat als pptx**, zodat de resulterende dia's grafieken en OLE‑objecten volledig bewerkbaar houden. Aan het einde heb je een kant‑klaar C#‑programma dat een professioneel uitziend `.pptx`‑bestand produceert zonder handmatig gedoe. + +## Wat je nodig hebt + +- **.NET 6+** (elke recente .NET runtime werkt; de code gebruikt C# 10‑syntaxis) +- **Aspose.Cells for .NET** – de bibliotheek die de export mogelijk maakt. Je kunt deze ophalen via NuGet (`Install-Package Aspose.Cells`). +- Een Excel‑werkmap die minstens één grafiek en/of een OLE‑object bevat (het voorbeeldbestand `ChartAndOle.xlsx` wordt in de code gebruikt). +- Een favoriete IDE (Visual Studio, Rider, of VS Code – wat je ook prefereert). + +Dat is alles. Geen COM‑interop, geen Office‑installatie vereist. + +> **Waarom een bibliotheek gebruiken?** +> De ingebouwde Office Interop is fragiel, vereist Office op de server, en levert vaak gerasterde afbeeldingen op wanneer je eigenlijk vector‑gebaseerde, bewerkbare vormen wilt. Aspose.Cells doet het zware werk en houdt alles bewerkbaar in PowerPoint. + +--- + +## Stap 1: Laad de Excel‑werkmap + +Eerst laden we het bronbestand in het geheugen. De `Workbook`‑klasse abstraheert het volledige Excel‑bestand en geeft ons toegang tot werkbladen, grafieken en OLE‑objecten. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Waarom dit belangrijk is:** Het laden van de werkmap is de basis. Als het pad onjuist is of het bestand beschadigd, draait de rest van de pijplijn nooit. Het `try…catch`‑blok geeft je een vriendelijke foutmelding in plaats van een crash. + +--- + +## Stap 2: Stel het printgebied in Excel in + +Voor het exporteren wil je meestal de output beperken tot een specifiek bereik. Hier komt **set print area excel** van pas. Door een printgebied te definiëren, vertel je Aspose.Cells precies welke cellen (en bijbehorende objecten) op de dia moeten verschijnen. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro tip:** Als je meerdere werkbladen hebt, herhaal dan de `PrintArea`‑toewijzing voor elk werkblad dat je wilt exporteren. Het niet instellen van een printgebied exporteert het volledige blad, wat het PowerPoint‑bestand kan opblazen. + +--- + +## Stap 3: Configureer exportopties – Houd grafieken & OLE bewerkbaar + +Aspose.Cells biedt een uitgebreid `ImageOrPrintOptions`‑object. Door `ExportChartObjects` en `ExportOleObjects` in te schakelen behouden we de vector‑aard van grafieken en de live‑bewerkbaarheid van OLE‑objecten (zoals ingesloten Word‑documenten of PDF’s). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Wat er onder de motorkap gebeurt?** +Wanneer `ExportChartObjects` `true` is, converteert Aspose de grafiek naar een native PowerPoint‑grafiekvorm, waarbij series, assen en opmaak behouden blijven. Met `ExportOleObjects` ingeschakeld worden ingesloten objecten ingevoegd als OLE‑frames, zodat een dubbel‑klik in PowerPoint de oorspronkelijke applicatie (Word, Excel, enz.) opent voor bewerking. + +--- + +## Stap 4: Sla het werkblad op als een bewerkbaar PowerPoint‑bestand + +Nu verbinden we alles. De `Save`‑methode schrijft het `.pptx`‑bestand met de opties die we hebben geconfigureerd. Het resultaat is een presentatie waarin elk werkblad een dia wordt (of een reeks dia's als het printgebied zich over meerdere pagina's uitstrekt). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Verwacht resultaat + +- **Bestandslocatie:** `C:\MyProjects\EditableChartOle.pptx` +- **Inhoud:** + - Een dia die het bereik `A1:H30` precies toont zoals het in Excel verschijnt. + - Alle grafieken zijn PowerPoint‑grafiekobjecten — klik op een balk en bewerk de gegevens. + - OLE‑objecten (bijv. een ingesloten Word‑document) kunnen direct vanaf de dia worden geopend en bewerkt. + +Als je de PPTX in PowerPoint opent, zie je een nette dia met volledig bewerkbare componenten — geen gerasterde screenshots. + +--- + +## Randgevallen & Variaties + +### Meerdere werkbladen → Meerdere dia's +Als je wilt dat elk werkblad een eigen dia wordt, loop dan simpelweg door `workbook.Worksheets` en roep `Save` aan met een `SheetToImageOptions` die op een specifieke blad‑index richt. Aspose genereert automatisch een nieuwe dia voor elke iteratie. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Grote bereiken & prestaties +Het exporteren van een enorm printgebied (bijv. `A1:Z1000`) kan het geheugenverbruik verhogen. Om dit te beperken, overweeg: +- Het bereik op te splitsen in kleinere delen en deze als afzonderlijke dia's te exporteren. +- `WorkbookSettings` te gebruiken om de `MemorySetting` te verhogen als je een `OutOfMemoryException` krijgt. + +### Compatibiliteitsproblemen +De gegenereerde PPTX werkt met PowerPoint 2016 en nieuwer. Oudere versies kunnen het bestand nog steeds openen, maar kunnen enkele geavanceerde grafiek‑functies verliezen. Test altijd op de beoogde Office‑versie als je de presentatie breed distribueert. + +## Volledig werkend voorbeeld (klaar om te kopiëren‑en‑plakken) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Vervang de hard‑gecodeerde paden door configuratiewaarden of command‑line‑argumenten voor een flexibeler hulpmiddel. + +## Veelgestelde vragen + +**Q: Kan ik alleen een grafiek exporteren zonder de omliggende cellen?** +A: Ja. Gebruik alleen `ExportChartObjects` en stel het printgebied in op het begrenzende bereik van de grafiek. De grafiek verschijnt gecentreerd op de dia. + +**Q: Wat als mijn werkmap macro's bevat?** +A: Aspose.Cells negeert VBA‑macro's tijdens het exporteren. Als je macro‑functionaliteit in PowerPoint nodig hebt, moet je die opnieuw maken met PowerPoint‑VBA of add‑ins. + +**Q: Werkt dit op Linux/macOS?** +A: Absoluut. Aspose.Cells is een pure .NET‑bibliotheek; zolang je de .NET‑runtime hebt, draait de code cross‑platform. + +## Conclusie + +Je hebt zojuist geleerd hoe je **Excel naar PowerPoint exporteert** terwijl je nauwkeurig **printgebied in Excel instelt** en **excel opslaat als pptx** met volledig bewerkbare grafieken en OLE‑objecten. De belangrijkste stappen zijn het laden van de werkmap, het definiëren van het printgebied, het configureren van `ImageOrPrintOptions` en uiteindelijk het opslaan van de PPTX. + +Vanaf hier kun je verkennen: +- Het exporteren van meerdere werkbladen naar één presentatie. +- Het programmatically toevoegen van aangepaste dia‑titels of notities. +- Het converteren van de PPTX naar PDF voor distributie (gebruik `SaveFormat.Pdf`). + +Probeer de code, pas het printgebied aan, en zie hoe je Excel‑gegevens als een wonder in PowerPoint verschijnen — geen handmatig copy‑pasten nodig. Als je tegen problemen aanloopt, raadpleeg dan de Aspose.Cells‑documentatie of laat een reactie achter. Veel plezier met coderen! + +![Diagram die export excel naar powerpoint workflow toont](/images/export-excel-to-powerpoint.png "export excel naar powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/dutch/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..5daa9b4020 --- /dev/null +++ b/cells/dutch/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-22 +description: Stel het afdrukgebied in Excel in en converteer Excel naar PowerPoint + met bewerkbare vormen. Leer hoe je de titelrij kunt herhalen, PowerPoint vanuit + Excel kunt maken en Excel kunt exporteren naar pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: nl +og_description: Stel het afdrukgebied in Excel in en zet het om naar een PowerPoint-dia + met bewerkbare vormen. Volg deze volledige gids om de titelrij te herhalen en Excel + naar pptx te exporteren. +og_title: Afdrukgebied instellen in Excel – Exporteren naar PowerPoint tutorial +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Printgebied instellen in Excel en exporteren naar PowerPoint – Stapsgewijze + handleiding +url: /nl/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Stel afdrukgebied in Excel in en exporteer naar PowerPoint – Complete programmeertutorial + +Heb je ooit moeten **set print area** in een Excel-werkblad en vervolgens dat deel omzetten naar een PowerPoint-dia? Je bent niet de enige. In veel rapportage‑pipelines moet dezelfde data die mooi afgedrukt wordt, ook in een presentatie verschijnen, vaak met de eerste rij herhaald als titel. Het goede nieuws? Met een paar regels C# kun je **convert excel to powerpoint**, alle tekstvakken bewerkbaar houden, en zelfs **repeat title row** automatisch. + +In deze gids lopen we alles door wat je moet weten: van het configureren van het afdrukgebied tot het maken van een PPTX‑bestand dat je direct in PowerPoint kunt bewerken. Aan het einde kun je **create powerpoint from excel** uitvoeren, het resultaat exporteren als **export excel to pptx**, en dezelfde code hergebruiken in elk .NET‑project. Geen magie, alleen duidelijke stappen en een volledig uitvoerbaar voorbeeld. + +## Wat je nodig hebt + +- **.NET 6.0** of later (de API werkt ook met .NET Framework) +- **Aspose.Cells for .NET** (de bibliotheek die `Workbook`, `ImageOrPrintOptions`, enz. levert) +- Een eenvoudige C#‑IDE (Visual Studio, Rider, of VS Code met de C#‑extensie) +- Een Excel‑bestand (`input.xlsx`) dat de gegevens bevat die je wilt exporteren + +Dat is alles—geen extra NuGet‑pakketten naast Aspose.Cells. Als je de bibliotheek nog niet hebt toegevoegd, voer dan uit: + +```bash +dotnet add package Aspose.Cells +``` + +Nu zijn we klaar om te beginnen. + +## Stap 1: Laad de werkmap – het startpunt voor export + +Het eerste wat je moet doen is de werkmap laden die het blad bevat dat je wilt omzetten naar een dia. Beschouw de werkmap als het bron‑document; zonder deze is niets anders van belang. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Waarom dit belangrijk is:** Het laden van de werkmap geeft je toegang tot de werkbladcollectie, pagina‑instellingen en de exportengine. Als je deze stap overslaat kun je het **print area** niet instellen of rijen herhalen. + +> **Pro tip:** Gebruik een absoluut pad tijdens het testen, schakel daarna over naar een relatief pad of een configuratie‑gebaseerd pad voor productie. + +## Stap 2: Configureer exportopties – houd tekstvakken en vormen bewerkbaar + +Wanneer je exporteert naar PowerPoint wil je waarschijnlijk dat de resulterende dia bewerkbaar is. Aspose.Cells laat je dat regelen met `ImageOrPrintOptions`. Door `ExportTextBoxes` en `ExportShapeObjects` op `true` te zetten, vertel je de bibliotheek die objecten te behouden als native PowerPoint‑elementen in plaats van ze te rasteren tot een afbeelding. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Waarom dit belangrijk is:** Als je ooit **convert excel to powerpoint** moest uitvoeren en vervolgens de dia handmatig wilt aanpassen, bespaart deze instelling je het opnieuw maken van tekstvakken vanaf nul. Het zorgt er ook voor dat vormen (zoals pijlen of grafieken) als vectorobjecten blijven die je kunt schalen. + +## Stap 3: Stel afdrukgebied in en herhaal de titelrij + +Nu komen we bij het hart van de tutorial: **set print area** en de eerste rij laten herhalen op elke afgedrukte pagina (of, in ons geval, op de geëxporteerde dia). Het afdrukgebied vertelt Excel welke cellen moeten worden beschouwd voor afdrukken — of exporteren in ons scenario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Waarom dit belangrijk is:** Door de export te beperken tot `A1:G20` vermijd je het ophalen van enorme lege bereiken, wat de conversie versnelt en de dia overzichtelijk houdt. De regel `PrintTitleRows` laat de eerste rij fungeren als koptekst — precies wat je wilt wanneer je **repeat title row** in een presentatie. + +> **Randgeval:** Als je gegevens beginnen op rij 2, pas dan het bereik dienovereenkomstig aan (bijv. `PrintTitleRows = "$2:$2"`). + +## Stap 4: Sla het werkblad op als PowerPoint‑bestand + +Ten slotte schrijven we de dia naar schijf. De `Save`‑methode neemt de doel‑bestandsnaam en de opties die we eerder hebben geconfigureerd. Het resultaat is een PPTX‑bestand met bewerkbare tekstvakken en vormen, klaar om te openen in PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Wat je zult zien:** Open `SheetWithEditableShapes.pptx` in PowerPoint. De eerste rij verschijnt als titel, alle cellen van `A1:G20` worden weergegeven, en alle vormen die je in Excel hebt toegevoegd zijn nog steeds verplaatsbaar en bewerkbaar. Geen gerasterde afbeeldingen — alleen native PowerPoint‑objecten. + +## Volledig werkend voorbeeld – alle stappen gecombineerd + +Hieronder staat het volledige, kant‑klaar te kopiëren programma. Voer het uit als een console‑applicatie of embed het in een grotere oplossing. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Verwachte output:** Na het uitvoeren van het programma print de console het succesbericht, en verschijnt het PPTX‑bestand op de opgegeven locatie. Het openen van het bestand toont één dia met het geselecteerde bereik, bewerkbare tekstvakken en eventuele oorspronkelijke vormen. + +## Veelgestelde vragen & valkuilen + +| Vraag | Antwoord | +|----------|--------| +| **Werkt dit met meerdere werkbladen?** | Ja. Loop door `workbook.Worksheets` en herhaal dezelfde stappen voor elk blad, waarbij je elke keer de output‑bestandsnaam wijzigt. | +| **Wat als ik meer dan één dia moet exporteren?** | Roep `workbook.Save` meerdere keren aan met verschillende `ImageOrPrintOptions`‑objecten, elk geconfigureerd met een andere `PageSetup` indien nodig. | +| **Kan ik de dia‑grootte aanpassen?** | Gebruik `exportOptions.ImageFormat` om de DPI in te stellen, of pas `sheet.PageSetup.PaperSize` aan vóór het opslaan. | +| **Is Aspose.Cells gratis?** | Het biedt een gratis evaluatie met watermerken. Voor productie is een licentie vereist. | +| **Wat betreft Excel‑formules?** | De geëxporteerde waarden zijn de **berekende resultaten** op het moment van export. Als je live‑formules in PowerPoint nodig hebt, heb je een andere aanpak nodig. | + +## Tips voor een soepele workflow + +- **Pro tip:** Stel `Workbook.Settings.CalcMode = CalculationModeType.Automatic` in vóór export om te garanderen dat alle formules up‑to‑date zijn. +- **Let op:** Zeer grote bereiken kunnen geheugenbelasting veroorzaken. Snijd het afdrukgebied bij tot het kleinste noodzakelijke bereik. +- **Performance tip:** Hergebruik één `ImageOrPrintOptions`‑instantie als je veel bladen exporteert; elke keer een nieuwe maken voegt overhead toe. +- **Versie‑opmerking:** De bovenstaande code richt zich op Aspose.Cells 23.10 (uitgebracht november 2023). Latere versies behouden dezelfde API, maar controleer altijd de release‑notes op breaking changes. + +## Conclusie + +We hebben behandeld hoe je **set print area** in een Excel‑werkblad instelt, de eerste rij als titel herhaalt, en vervolgens **export excel to pptx** uitvoert terwijl bewerkbare tekstvakken en vormen behouden blijven. Kortom, je kent nu een betrouwbare manier om **convert excel to powerpoint**, **repeat title row**, en **create powerpoint from excel** te doen met slechts een paar regels C#. + +Klaar voor de volgende stap? Probeer een batch‑conversie van tientallen rapporten te automatiseren, of voeg aangepaste dia‑lay-outs toe met de PowerPoint‑SDK na de export. De mogelijkheden zijn eindeloos — experimenteer, breek dingen, en geniet van de kracht van programmatische documentgeneratie. + +Als je deze tutorial nuttig vond, deel hem, laat een reactie achter met je eigen aanpassingen, of bekijk onze andere gidsen over **export excel to pptx** en gerelateerde automatiseringsthema's. Veel plezier met coderen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/csv-file-handling/_index.md b/cells/dutch/net/csv-file-handling/_index.md index eeb99c2413..c78e39312e 100644 --- a/cells/dutch/net/csv-file-handling/_index.md +++ b/cells/dutch/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Voor aanvullende inzichten kunt u gerust onze gedetailleerde tutorials raadplege Leer hoe u CSV-bestanden opent met Aspose.Cells voor .NET met onze uitgebreide stapsgewijze handleiding. Masterdatamanipulatie. ### [CSV-bestanden openen met de voorkeursparser](./csv-file-opening-csv-files-with-preferred-parser/) Leer hoe je CSV-bestanden opent en parseert met aangepaste parsers in Aspose.Cells voor .NET. Verwerk tekst en datums moeiteloos. Perfect voor ontwikkelaars. +### [Werkmap opslaan als CSV in C# – Exporteer Excel naar CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Leer hoe u een werkmap opslaat als CSV in C# met Aspose.Cells voor .NET, zodat u Excel-bestanden eenvoudig kunt exporteren. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/dutch/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..e8fc88f75d --- /dev/null +++ b/cells/dutch/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-22 +description: Sla werkmap snel op als CSV in C#. Leer hoe je Excel naar CSV exporteert, + precisie instelt en xlsx naar CSV converteert met Aspose.Cells in slechts een paar + regels. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: nl +og_description: Sla werkmap snel op als CSV in C#. Deze gids laat zien hoe je Excel + naar CSV exporteert, de precisie instelt en xlsx naar CSV converteert met Aspose.Cells. +og_title: Werkmap opslaan als CSV in C# – Excel naar CSV exporteren +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Werkmap opslaan als CSV in C# – Excel exporteren naar CSV +url: /nl/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Werkmap opslaan als CSV in C# – Excel exporteren naar CSV + +Altijd al een **werkmap als CSV opslaan** willen, maar niet zeker weten hoe je de getallen netjes houdt? Je bent niet de enige. In veel data‑pipeline scenario's moeten we **Excel exporteren naar CSV** terwijl we een specifiek aantal significante cijfers behouden, en de Aspose.Cells‑bibliotheek maakt dit kinderspel. + +In deze tutorial zie je een compleet, kant‑klaar voorbeeld dat **een werkmap opslaat als CSV**, laat *hoe je precisie instelt*, en zelfs uitlegt *hoe je xlsx naar CSV converteert* voor real‑world projecten. Geen vage verwijzingen—alleen code die je vandaag kunt kopiëren, plakken en uitvoeren. + +## Wat je gaat leren + +- De exacte stappen om **een werkmap als CSV op te slaan** met een aangepaste precisie‑instelling. +- Hoe je **Excel exporteert naar CSV** met `CsvSaveOptions` en waarom de eigenschap `SignificantDigits` belangrijk is. +- Variaties voor verschillende precisiebehoeften en veelvoorkomende valkuilen bij grote getallen. +- Een snelle blik op het converteren van een `.xlsx`‑bestand naar `.csv` zonder verlies van gegevensintegriteit. + +### Vereisten + +- .NET 6.0 of later (de code werkt ook op .NET Framework 4.6+). +- Het **Aspose.Cells for .NET** NuGet‑pakket (`Install-Package Aspose.Cells`). +- Een basisbegrip van C# en bestands‑I/O. + +Als je dat hebt, laten we beginnen. + +![werkmap opslaan als csv voorbeeld](image.png "werkmap opslaan als csv voorbeeld") + +## Werkmap opslaan als CSV – Stapsgewijze handleiding + +Hieronder staat het volledige programma. Elke regel is gecommentarieerd zodat je kunt zien *waarom* elk onderdeel er is, niet alleen *wat* het doet. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Waarom `CsvSaveOptions.SignificantDigits` gebruiken? + +Wanneer je **precisie instelt** voor een CSV‑export, bepaal je eigenlijk hoeveel cijfers van een floating‑point‑getal de conversie overleven. Excel slaat getallen op met tot 15‑cijfer precisie, maar de meeste downstream‑systemen (databases, analytics‑pipelines) hebben er maar een paar nodig. Door `SignificantDigits = 4` in te stellen, rondt de bibliotheek `123.456789` af naar `123.5`, waardoor het bestand compact en mens‑leesbaar blijft. + +> **Pro tip:** Als je *exacte* waarden nodig hebt (bijv. voor financiële data), stel `SignificantDigits` in op een hoger getal of laat het helemaal weg. Standaard is 15, wat overeenkomt met de interne precisie van Excel. + +## Excel exporteren naar CSV – Veelvoorkomende variaties + +### De scheidingsteken wijzigen + +Sommige systemen verwachten een puntkomma (`;`) in plaats van een komma. Je kunt dit als volgt aanpassen: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Een specifiek werkblad exporteren + +Als je alleen het tweede blad wilt exporteren, vervang je het optionele blok door: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Roep daarna `workbook.Save` aan zoals eerder. Deze techniek is handig wanneer je **xlsx naar csv converteert** maar alleen een bepaald tabblad nodig hebt. + +### Grote datasets verwerken + +Bij miljoenen rijen kun je beter de CSV streamen in plaats van de hele werkmap in het geheugen te laden. Aspose.Cells biedt een `CsvSaveOptions`‑eigenschap `ExportDataOnly` die stijl‑informatie overslaat, waardoor het geheugenverbruik daalt: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Hoe CSV exporteren – Het resultaat verifiëren + +Na het uitvoeren van het programma, open je `Numbers_4sd.csv` in een eenvoudige teksteditor. Je zou iets moeten zien als: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Let op hoe de getallen beperkt zijn tot vier significante cijfers, precies zoals we hebben gevraagd. Als je het bestand in Excel opent, verschijnen de waarden identiek omdat Excel de afronding die tijdens de export is toegepast respecteert. + +## Randgevallen & probleemoplossing + +| Situatie | Wat te controleren | Oplossing | +|----------|--------------------|-----------| +| **Bestand niet gevonden** | Controleer of `sourcePath` naar een bestaand `.xlsx`‑bestand wijst. | Gebruik `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Onjuiste afronding** | Zorg dat `SignificantDigits` is ingesteld vóór het aanroepen van `Save`. | Verplaats de `CsvSaveOptions`‑toewijzing naar een eerdere stap of controleer de waarde nogmaals. | +| **Speciale tekens verschijnen als �** | CSV‑codering is standaard UTF‑8 zonder BOM. | Stel `csvOptions.Encoding = System.Text.Encoding.UTF8` of `Encoding.Unicode` in. | +| **Extra lege kolommen** | Sommige werkbladen hebben losse opmaak buiten het gebruikte bereik. | Roep `worksheet.Cells.MaxDisplayRange` aan om ongebruikte kolommen vóór export te trimmen. | + +## Precisie dynamisch instellen + +Soms is de benodigde precisie niet bekend op compile‑tijd. Je kunt deze lezen uit een configuratie‑bestand of command‑line‑argument: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Voer nu uit: + +``` +dotnet run -- 6 +``` + +en krijg een CSV met zes significante cijfers. Deze kleine aanpassing maakt de oplossing flexibel voor **hoe csv te exporteren** in verschillende omgevingen. + +## Volledig werkend voorbeeld samengevat + +Alles bij elkaar, het complete programma (inclusief optionele tweaks) ziet er zo uit: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Voer het programma uit, open de gegenereerde CSV, en je ziet de precisie die je hebt gevraagd, wat bevestigt dat je succesvol **een werkmap als CSV hebt opgeslagen**. + +## Conclusie + +Je hebt nu een solide, productie‑klare recept voor **het opslaan van een werkmap als CSV** in C#. De gids behandelde *hoe je Excel exporteert naar CSV*, demonstreerde *hoe je precisie instelt* via `CsvSaveOptions.SignificantDigits`, en toonde verschillende variaties voor **xlsx naar csv converteren** scenario's. Met de volledige code‑snippet kun je dit in elk .NET‑project drop‑en en direct data exporteren. + +**Wat nu?** + +- Experimenteer met verschillende scheidingstekens (`;`, `\t`) voor TSV‑exports. +- Combineer deze aanpak met een file‑watcher om CSV‑generatie te automatiseren zodra een Excel‑bestand verandert. +- Verken Aspose.Cells’ `CsvLoadOptions` als je ooit CSV‑bestanden terug in een werkmap moet lezen. + +Voel je vrij om de precisie aan te passen, aangepaste headers toe te voegen, of de exporter te koppelen + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/document-properties/_index.md b/cells/dutch/net/document-properties/_index.md index b79f446036..e218368d8a 100644 --- a/cells/dutch/net/document-properties/_index.md +++ b/cells/dutch/net/document-properties/_index.md @@ -35,6 +35,8 @@ Leer hoe u toegang krijgt tot documenteigenschappen in Excel met Aspose.Cells vo Leer hoe u toegang krijgt tot documenteigenschappen in Excel met Aspose.Cells voor .NET met onze stapsgewijze handleiding. Beheer uw spreadsheets efficiënt. ### [Documenteigenschappen toevoegen in .NET](./adding-document-properties/) Leer hoe u documenteigenschappen toevoegt in Excel met Aspose.Cells voor .NET met deze gedetailleerde stapsgewijze handleiding. +### [Excel-werkmap maken – Aangepaste eigenschappen toevoegen en opslaan als XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Leer hoe u een Excel-werkmap maakt, aangepaste eigenschappen toevoegt en deze opslaat als XLSB met Aspose.Cells voor .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/dutch/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..f26de5b48e --- /dev/null +++ b/cells/dutch/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-22 +description: Maak een Excel-werkmap, voeg aangepaste eigenschappen toe, stel de werkbladnaam + in en sla op als een XLSB-binair bestand met C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: nl +og_description: Maak een Excel-werkmap, voeg aangepaste eigenschappen toe, stel de + naam van het werkblad in en sla op als een XLSB-binair bestand met C#. +og_title: Excel-werkmap maken – Aangepaste eigenschappen toevoegen en opslaan als + XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Maak Excel-werkmap – Voeg aangepaste eigenschappen toe en sla op als XLSB +url: /nl/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel-werkmap maken – Aangepaste eigenschappen toevoegen en opslaan als XLSB + +Heb je ooit **een Excel-werkmap** programmatisch moeten **maken** en tegelijkertijd metadata willen behouden? Misschien bouw je een rapportage‑engine die elk bestand van een rapport‑ID, auteursnaam of versienummer voorziet. In dat geval bespaart het leren hoe je **aangepaste eigenschappen** kunt **toevoegen**, de **werkbladnaam** kunt **instellen** en uiteindelijk **opslaan als XLSB** je veel handmatige nabewerking. + +In deze tutorial lopen we een volledig, uitvoerbaar voorbeeld door dat precies laat zien hoe je een **binaire Excel‑file** schrijft met C#. Je ziet waarom het XLSB‑formaat de juiste keuze is voor het transporteren van aangepaste eigenschappen, hoe je de meest voorkomende valkuilen vermijdt, en wat je moet doen als je oudere Excel‑versies moet ondersteunen. + +--- + +## Wat je nodig hebt + +- **.NET 6+** (of .NET Framework 4.6+). De code werkt op elke recente runtime. +- **Aspose.Cells for .NET** (gratis proefversie of gelicentieerd). Het levert de `Workbook`, `Worksheet` en `CustomProperties`‑klassen die hieronder worden gebruikt. +- Een IDE waar je je prettig in voelt – Visual Studio, Rider of zelfs VS Code volstaat. +- Schrijftoegang tot een map waar het gegenereerde bestand wordt opgeslagen. + +Er zijn geen andere externe bibliotheken nodig. + +--- + +## Stap 1: Installeer Aspose.Cells + +Voeg eerst het Aspose.Cells‑NuGet‑pakket toe aan je project: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** Als je op een CI‑server werkt, sla je licentiesleutel op in een omgevingsvariabele en laad je die tijdens runtime – dit voorkomt dat het “evaluation” watermerk in je output verschijnt. + +--- + +## Stap 2: Excel-werkmap maken – Overzicht + +De eerste echte handeling is het **maken van een Excel-werkmap**. Dit object vertegenwoordigt het volledige bestand in het geheugen en geeft je toegang tot werkbladen, stijlen en aangepaste eigenschappen. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Waarom een nieuwe `Workbook` instantieren in plaats van een sjabloon te laden? Een lege werkmap garandeert dat er geen verborgen stijlen of achtergebleven aangepaste eigenschappen aanwezig zijn, wat vooral belangrijk is wanneer je van plan bent een **binaire Excel‑file** te **schrijven** voor downstream‑systemen die een schone basis verwachten. + +--- + +## Stap 3: Werkbladnaam instellen (en waarom het belangrijk is) + +Excel‑bladen krijgen standaard de namen “Sheet1”, “Sheet2”, enz. Het geven van een blad een betekenisvolle naam maakt downstream‑verwerking – zoals Power Query of VBA‑macro’s – veel makkelijker leesbaar. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Als je probeert een dubbele naam toe te wijzen, zal Aspose.Cells een `ArgumentException` werpen. Om veilig te zijn, kun je `Worksheets.Exists("Data")` controleren voordat je hernoemt. + +--- + +## Stap 4: Aangepaste eigenschappen toevoegen + +Aangepaste eigenschappen worden opgeslagen in de interne XML van de werkmap en reizen mee met het bestand, ongeacht het formaat. Ze zijn perfect om zaken als `ReportId` of `GeneratedBy` in te sluiten. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Waarom aangepaste eigenschappen gebruiken?** +> • Ze zijn toegankelijk via het Excel‑paneel “Bestand → Info → Eigenschappen”. +> • Code die de werkmap consumeert kan ze lezen zonder celinhoud te scannen. +> • Ze overleven formaatconversies (XLSX ↔ XLSB) omdat ze deel uitmaken van de metadata van het bestand. + +Je kunt ook datums, booleans of zelfs binaire blobs opslaan, maar houd de payload klein – Excel is geen database. + +--- + +## Stap 5: Opslaan als XLSB (Binaire Excel‑file schrijven) + +Het XLSB‑formaat slaat gegevens op in een binaire structuur, waardoor het bestand kleiner en sneller te openen is. Belangrijker nog voor deze tutorial: **aangepaste eigenschappen worden ingebakken in de binaire stroom**, waardoor ze gegarandeerd meereizen met het bestand. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Verwacht resultaat + +Na het uitvoeren van het programma vind je `WithCustomProps.xlsb` op je bureaublad. Open het in Excel, ga naar **Bestand → Info → Eigenschappen**, en je ziet `ReportId` en `GeneratedBy` onder *Aangepast* staan. + +--- + +## Stap 6: Randgevallen & Veelgestelde vragen + +### Wat als de doelmap alleen‑lezen is? + +Omring de `Save`‑aanroep met een `try/catch`‑blok en val terug op een locatie waar de gebruiker wel schrijfrechten heeft, zoals `%TEMP%`. Dit voorkomt dat de applicatie crasht bij permissiefouten. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Kan ik **opslaan als XLSX** en toch de aangepaste eigenschappen behouden? + +Ja – wijzig simpelweg `SaveFormat.Xlsb` naar `SaveFormat.Xlsx`. De eigenschappen worden opgeslagen in hetzelfde XML‑deel, dus ze overleven de formatwissel. XLSX‑bestanden zijn echter groter omdat ze zip‑XML zijn, terwijl XLSB betere prestaties biedt voor grote datasets. + +### Hoe lees ik later de aangepaste eigenschappen? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Dit fragment print elke aangepaste eigenschap, waardoor downstream‑services eenvoudig de herkomst van het bestand kunnen verifiëren. + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het complete programma dat je kunt copy‑pasten in een nieuw console‑project. Er ontbreken geen onderdelen – van `using`‑statements tot de laatste `Console.WriteLine` is alles inbegrepen. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Voer het programma uit, open het resulterende bestand en controleer de aangepaste eigenschappen. Dat is het volledige proces van **excel‑werkmap maken**, **aangepaste eigenschappen toevoegen**, **werkbladnaam instellen** en **opslaan als XLSB** in één nette workflow. + +--- + +## Conclusie + +Je weet nu precies hoe je een **Excel‑werkmap** maakt, het blad een duidelijke **werkbladnaam** geeft, nuttige metadata **toevoegt met aangepaste eigenschappen**, en uiteindelijk **opslaat als XLSB** om een compact, binair Excel‑bestand te produceren. Deze workflow is betrouwbaar, werkt over .NET‑versies heen en schaalt goed, of je nu één rapport of duizend genereert. + +Wat nu? Probeer een datatabel toe te voegen aan het “Data”‑blad, experimenteer met verschillende eigenschapstypen (datums, booleans), of schakel de output over naar **opslaan als XLSB** voor enorme datasets. Je kunt ook de werkmap beveiligen met een wachtwoord – Aspose.Cells maakt dat met één regel code. + +Laat gerust een reactie achter als je ergens vastloopt, of deel hoe je dit patroon in je eigen projecten hebt uitgebreid. Veel programmeerplezier! + +--- + +![Create Excel workbook screenshot](image.png){alt="Create Excel workbook with custom properties"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/excel-advanced-named-ranges/_index.md b/cells/dutch/net/excel-advanced-named-ranges/_index.md index 6b53b4a253..3e1cb3392c 100644 --- a/cells/dutch/net/excel-advanced-named-ranges/_index.md +++ b/cells/dutch/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Het mooie van deze functionaliteit schuilt in het gebruiksgemak. Je kunt cellen Identificeer moeiteloos cellen in een benoemd bereik in Excel met Aspose.Cells voor .NET met deze uitgebreide stapsgewijze zelfstudie. ### [Cellen in een benoemd bereik samenvoegen in Excel](./merge-cells-in-named-range/) Leer in deze stapsgewijze tutorial hoe u cellen in een benoemd bereik samenvoegt met Aspose.Cells voor .NET. Ontdek hoe u Excel-rapporten kunt opmaken, opmaken en automatiseren. +### [Excel-werkmap maken – Stapsgewijze handleiding voor het toevoegen van tabellen en benoemingsregels](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Leer hoe u een Excel-werkmap maakt, tabellen toevoegt en benoemingsregels instelt met Aspose.Cells voor .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/dutch/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..2e12fb1f42 --- /dev/null +++ b/cells/dutch/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Maak een Excel-werkboek met een tabel, leer de naamgevingsregels voor + Excel‑tabellen, vermijd de fout met benoemde bereiken, en stel de Excel‑tabelnaam + correct in C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: nl +og_description: Maak een Excel-werkmap in C# en beheers de naamgevingsregels voor + Excel-tabellen. Leer hoe je een tabelblad toevoegt, de naam van een Excel-tabel + instelt en fouten in benoemde bereiken oplost. +og_title: Maak Excel-werkmap – Complete C#-tabel- en naamgevingsgids +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excel-werkmap maken – Stapsgewijze gids voor het toevoegen van tabellen en + naamgevingsregels +url: /nl/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak Excel-werkboek – Complete C#-gids voor tabellen en naamgeving + +Heb je ooit **create excel workbook** programmatically moeten **maken** en je afgevraagd waarom je tabelnaam plotseling botst met een benoemd bereik? Je bent niet de enige. In veel automatiseringsprojecten, zodra je probeert een tabel een vriendelijke identifier te geven, gooit Excel een *named range error* die het hele proces stopt. + +In deze tutorial lopen we een volledig uitvoerbaar voorbeeld door dat **creates an Excel workbook**, **adds a table to a worksheet**, en de **excel table naming rules** uitlegt die je voorkomen dat je over jezelf struikelt. Aan het einde weet je precies hoe je **add table worksheet**, **set excel table name**, en gracieus omgaat met de occasionele naamconflict. + +> **Pro tip:** Het grootste deel van de verwarring komt voort uit het feit dat Excel tabelnamen en benoemde bereiken op werkboekniveau beschouwt als één enkele namespace. Deze regel vroegtijdig begrijpen bespaart je uren aan debuggen. + +## Wat je nodig hebt + +- **Aspose.Cells for .NET** (of elke bibliotheek die de `Workbook`, `Worksheet`, `ListObject`‑klassen blootlegt). +- .NET 6+ of .NET Framework 4.8 – de code werkt op beide. +- Een basisbegrip van C#‑syntaxis – geen geavanceerde trucjes nodig. + +Als je dat hebt, laten we beginnen. + +![Schermafbeelding van een nieuw aangemaakt Excel-werkboek met een tabel genaamd SalesData](create_excel_workbook_example.png "voorbeeld van create excel workbook") + +## Stap 1: Maak Excel-werkboek en krijg toegang tot het eerste werkblad + +Het eerste wat je doet wanneer je **create excel workbook** is de `Workbook`‑klasse instantieren en een referentie pakken naar het blad waarop je gaat werken. In Aspose.Cells start het werkboek met een standaardblad genaamd “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Waarom is deze stap cruciaal? Zonder een workbook‑object heb je niets om een tabel aan te koppelen, en de `Worksheet`‑referentie geeft je een canvas waar de **add table worksheet**‑operatie zal plaatsvinden. + +## Stap 2: Voeg tabel (ListObject) toe die een specifiek bereik dekt + +Vervolgens **add table worksheet**‑niveau gegevens. De `ListObjects.Add`‑methode verwacht een bereik‑string en een boolean die aangeeft of de eerste rij kopteksten bevat. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Let op de aanroep `salesTable.Name = "SalesData"`. Hier komen de **excel table naming rules** in actie: de naam moet uniek zijn in het hele werkboek, niet alleen op het blad. Ze mag geen spaties of speciale tekens bevatten en moet beginnen met een letter of underscore. + +## Stap 3: Probeer een werkboek‑niveau benoemd bereik te maken met dezelfde identifier + +Nu provoceren we bewust de **named range error** om te zien wat er gebeurt bij een naamconflict. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Als je de regel uitcommentarieert, gooit Aspose.Cells een `ArgumentException` met de melding dat de naam al bestaat. Het foutbericht ziet er als volgt uit: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Dat bericht is de **named range error** waar we eerder over waarschuwden. Het vertelt je dat de **excel table naming rules** tabelnamen en benoemde bereiken als één enkele namespace behandelen. + +## Stap 4: Het naamconflict gracieus afhandelen + +In productiecode wil je die uitzondering opvangen en ofwel de tabel hernoemen of een andere bereiknaam kiezen. Hier is een nette manier om dat te doen: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Door de aanroep in een `try/catch` te wikkelen, vermijd je een harde crash en geef je de gebruiker (of aanroepende code) een duidelijke uitleg – precies het soort **excel table naming rules**‑inzicht dat toekomstige bugs voorkomt. + +## Stap 5: Sla het werkboek op en controleer het resultaat + +Tot slot, schrijf het bestand naar schijf en open het in Excel om te bevestigen dat de tabel en eventuele benoemde bereiken aanwezig zijn. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Wanneer je *SalesReport.xlsx* opent zie je: + +- Een tabel die **A1:C5** beslaat met de naam **SalesData**. +- Als je het alternatieve bereik hebt behouden, een werkboek‑niveau benoemd bereik **SalesData_Range** dat naar **D1** wijst. + +Geen runtime‑crashes, en het naamconflict is opgelost. + +## Diepgaande uitleg van Excel‑tabelnaamgevingsregels + +Laten we ontleden waarom de regels bestaan: + +| Regel | Wat het betekent | Voorbeeld | +|------|------------------|-----------| +| **Uniek over werkboek** | Geen twee tabellen of benoemde bereiken mogen dezelfde identifier delen. | `Table1` vs `Table1` → conflict | +| **Begint met een letter of underscore** | Namen mogen niet met een cijfer beginnen. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Geen spaties of speciale tekens** | Gebruik CamelCase of underscores. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Lengte ≤ 255 tekens** | Praktisch altijd voldaan. | N/B | + +Deze regels in gedachten houden terwijl je **set excel table name** voorkomt de gevreesde *named range error*. + +## Veelvoorkomende variaties en randgevallen + +1. **Meerdere tabellen toevoegen** – Elke tabel moet een eigen unieke naam hebben. +2. **Een bestaande tabel hernoemen** – Gebruik `salesTable.Name = "NewName"` voordat je conflicterende benoemde bereiken maakt. +3. **Dynamische bereiken gebruiken** – Als je een bereik nodig hebt dat groeit, gebruik dan een gestructureerde referentie zoals `=SalesData[Amount]` in plaats van een statisch adres. +4. **Benoemde bereiken over meerdere bladen** – Ze maken nog steeds deel uit van dezelfde namespace, dus een tabel op Sheet1 blokkeert een bereik met dezelfde naam op Sheet2. + +## Pro‑tips voor soepele Excel‑automatisering + +- **Controleer bestaan vóór toevoegen**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Genereer veilige namen programmatically**: Voeg een GUID of incrementele teller toe (`SalesData_{Guid.NewGuid()}`) wanneer je niet zeker bent. +- **Gebruik `ListObject.ShowHeaders = true`** om je tabellen zelf‑documenterend te maken. +- **Valideer na het opslaan**: Open het bestand met een lichte bibliotheek (bijv. EPPlus) om te bevestigen dat de tabel correct is aangemaakt. + +## Samenvatting: Wat we hebben behandeld + +- Hoe je **create excel workbook** vanaf nul maakt met Aspose.Cells. +- De exacte **excel table naming rules** die tabel‑ en benoemde‑bereik‑identifiers regelen. +- Waarom een **named range error** verschijnt wanneer je een naam hergebruikt. +- De juiste manier om **add table worksheet** en **set excel table name** toe te passen zonder conflicten. +- Een robuust patroon om naamconflicten gracieus af te handelen. + +## Wat is het volgende? + +Nu je de basis onder de knie hebt, kun je verder verkennen: + +- **Dynamische tabelgroei** met `ListObject.Resize`. +- **Stijlen toepassen** op tabellen (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporteren naar CSV** terwijl je tabelstructuren behoudt. +- **Integreren met Office Open XML** voor nog strakkere controle over de interne werkboekstructuur. + +Voel je vrij om te experimenteren — wijzig het bereik, voeg meer tabellen toe, of speel met verschillende naamgevingsschema's. Hoe meer je knoeit, hoe dieper je begrip van **excel table naming rules** wordt. + +--- + +*Veel plezier met coderen, en moge je werkboeken nooit meer conflicteren!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/excel-custom-number-date-formatting/_index.md b/cells/dutch/net/excel-custom-number-date-formatting/_index.md index c01ca4d83d..eda414c79b 100644 --- a/cells/dutch/net/excel-custom-number-date-formatting/_index.md +++ b/cells/dutch/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Deze tutorial leert je hoe je je datasets kunt importeren en tegelijkertijd de i Leer hoe u Excel-celwaarden controleert aan de hand van aangepaste getalnotaties met Aspose.Cells voor .NET met deze stapsgewijze zelfstudie. ### [Formulevelden specificeren bij het importeren van gegevens naar een Excel-blad](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Leer in deze gedetailleerde tutorial hoe u met Aspose.Cells voor .NET gegevens importeert in Excel-sheets met opgegeven formulevelden. +### [Aangepast getalformaat Excel in C# – Complete gids](./custom-number-format-excel-in-c-complete-guide/) +Leer hoe u aangepaste getalformaten in Excel toepast met C# in deze volledige gids. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/dutch/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..3097cc5e0f --- /dev/null +++ b/cells/dutch/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-03-22 +description: Aangepaste getalnotatie Excel‑tutorial die laat zien hoe je een datatabel + naar Excel importeert, de achtergrondkleur van een kolom instelt, een kolom als + valuta formatteert en de werkmap opslaat als xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: nl +og_description: Aangepaste getalnotatie Excel‑tutorial die je stap voor stap begeleidt + bij het importeren van een DataTable, het instellen van de achtergrondkleur van + een kolom, het opmaken van een kolom als valuta en het opslaan van de werkmap als + xlsx. +og_title: Aangepast getalformaat Excel in C# – Stapsgewijze handleiding +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Aangepast getalformaat Excel in C# – Complete gids +url: /nl/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aangepast Getalformaat Excel – Full‑Stack C# Tutorial + +Heb je je ooit afgevraagd hoe je een **custom number format excel** stijl direct vanuit C# kunt toepassen? Misschien heb je geprobeerd een DataTable in een spreadsheet te dumpen, maar alleen platte getallen te zien, geen kleuren en geen valuta‑opmaak. Dat is een veelvoorkomend pijnpunt—vooral wanneer je een gepolijst rapport voor belanghebbenden nodig hebt. + +In deze gids lossen we dat probleem samen op: je leert hoe je **import datatable to excel**, **set column background color**, **format column as currency**, en uiteindelijk **save workbook as xlsx** met een aangepast getalformaat dat je cijfers laat opvallen. Geen vage verwijzingen, alleen een complete, uitvoerbare oplossing die je kunt copy‑paste in je project. + +--- + +## Wat je gaat bouwen + +Aan het einde van deze tutorial heb je een zelfstandige C# console‑app die: + +1. Haalt een `DataTable` op (je kunt de stub vervangen door je eigen query). +2. Maakt een nieuw Excel‑werkboek aan met Aspose.Cells (of een andere compatibele bibliotheek). +3. Past een blauw, vet lettertype toe op de eerste kolom, een licht‑gele achtergrond op de tweede, en een valuta‑formaat (`$#,##0.00`) op de derde. +4. Slaat het bestand op als `DataTableWithStyleArray.xlsx` in een map naar keuze. + +Je ziet precies hoe elke regel bijdraagt aan het uiteindelijke Excel‑bestand, en we bespreken waarom die keuzes belangrijk zijn voor onderhoudbaarheid en prestaties. + +--- + +## Vereisten + +- .NET 6.0 of later (de code werkt ook met .NET Framework 4.7+). +- Aspose.Cells voor .NET (gratis proefversie of gelicentieerde versie). Installeer via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Basiskennis van `DataTable` en C# console‑applicaties. + +--- + +## Stap 1: Haal de brongegevens op als een DataTable + +Eerst hebben we wat gegevens nodig om te exporteren. In een real‑world scenario zou je waarschijnlijk een repository aanroepen of een SQL‑query uitvoeren. Voor illustratie maken we een eenvoudige tabel in‑memory. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Waarom dit belangrijk is:** Het gebruik van een `DataTable` geeft je een tabel‑achtige, schema‑bewuste bron die netjes overeenkomt met Excel‑rijen en -kolommen. Het stelt je ook in staat om dezelfde exportlogica te hergebruiken voor elke dataset zonder de code opnieuw te schrijven. + +--- + +## Stap 2: Maak een nieuw werkboek aan en pak het eerste werkblad + +Nu maken we een Excel‑werkboek aan. De `Workbook`‑klasse vertegenwoordigt het volledige bestand; `Worksheets[0]` is het standaardblad waarop we onze gegevens zullen plaatsen. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** Als je meerdere bladen nodig hebt, roep dan gewoon `workbook.Worksheets.Add("SheetName")` aan en herhaal de stijl‑stappen voor elk blad. + +--- + +## Stap 3: Definieer kolomstijlen – Lettertype, achtergrond en getalformaat + +Stijlen in Aspose.Cells worden gedaan via `Style`‑objecten. We bouwen een array waarbij elk element overeenkomt met een kolom in de DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Waarom een stijl‑array?** Het doorgeven van een array aan `ImportDataTable` stelt je in staat om een aparte stijl toe te passen op elke kolom in één oproep, wat zowel beknopt als performant is. Het garandeert ook dat de opmaak synchroon blijft met de volgorde van de gegevens. + +--- + +## Stap 4: Importeer de DataTable terwijl je de stijlen toepast + +Dit is de kern van de operatie: we voeren de `DataTable` in het werkblad in, vertellen Aspose de koprij op te nemen, en geven onze `columnStyles`‑array door. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Wat er onder de motorkap gebeurt:** Aspose doorloopt elke kolom, schrijft de kop, en daarna elke rijwaarde. Terwijl het dat doet, past het de overeenkomstige `Style` uit de array toe, zodat je een blauwe kop krijgt voor “Product”, een geel‑getinte “Quantity”, en een mooi opgemaakte “Revenue”‑kolom. + +--- + +## Stap 5: Sla het werkboek op als een XLSX‑bestand + +Tot slot slaan we het werkboek op naar schijf. De `Save`‑methode kiest automatisch het XLSX‑formaat op basis van de bestandsextensie. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** Als je het bestand moet streamen (bijv. voor een web‑API), gebruik dan `workbook.Save(stream, SaveFormat.Xlsx)` in plaats van een bestandspad. + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het volledige programma dat je kunt plakken in een nieuw console‑project. Het compileert en draait direct, en produceert een gestileerd Excel‑bestand. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Verwacht resultaat + +Wanneer je `DataTableWithStyleArray.xlsx` opent, zie je: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Het **custom number format excel** dat je hebt opgegeven (`$#,##0.00`) zorgt ervoor dat elke omzetcel een dollarteken, duizendtallen‑scheidingsteken en twee decimalen toont—precies wat financiële teams verwachten. + +--- + +## Veelgestelde vragen & randgevallen + +### Kan ik dit gebruiken met een andere Excel‑bibliotheek? + +Absoluut. Het concept—een stijl per kolom maken en die toepassen tijdens het importeren—kan worden overgezet naar EPPlus, ClosedXML of NPOI. De API‑aanroepen verschillen, maar het patroon blijft hetzelfde. + +### Wat als mijn DataTable meer kolommen heeft dan stijlen? + +Aspose zal de standaardstijl toepassen op elke kolom zonder een overeenkomend item in de `columnStyles`‑array. Om verrassingen te vermijden, zorg ervoor dat de array de grootte `dataTable.Columns.Count` heeft of genereer stijlen dynamisch in een lus. + +### Hoe stel ik een aangepast getalformaat in voor datums? + +Stel gewoon `style.Custom = "dd‑mm‑yyyy"` in (of een andere geldige Excel‑formaatstring). Dezelfde array‑gebaseerde aanpak werkt voor datums, percentages of wetenschappelijke notatie. + +### Is er een manier om kolommen automatisch te dimensioneren na import? + +Ja—roep `worksheet.AutoFitColumns();` aan na de import. Het voert een snelle breedte‑berekening uit op basis van de celinhoud. + +### Wat met grote datasets (100k+ rijen)? + +`ImportDataTable` is geoptimaliseerd voor bulk‑operaties, maar je kunt geheugenlimieten tegenkomen. In dat geval kun je overwegen om rijen handmatig te streamen met `Cells[i, j].PutValue(...)` en een enkele `Style`‑object te hergebruiken om overhead te verminderen. + +--- + +## Pro‑tips & veelvoorkomende valkuilen + +- **Vermijd hard‑coded paden** in productcode; gebruik `Environment.GetFolderPath` of configuratie‑instellingen. +- **Dispose het werkboek** als je in een langdurige service werkt—omsluit het in een `using`‑blok om native resources vrij te geven. +- **Let op cultuur‑specifieke scheidingstekens**. Het aangepaste formaat `$#,##0.00` dwingt een punt als decimale scheidingsteken af, ongeacht de OS‑locale, wat meestal gewenst is voor financiële rapporten. +- **Vergeet niet System.Drawing te refereren** (of `System.Drawing.Common` op .NET Core) voor de kleur‑structs die bij het stijlen worden gebruikt. +- **Test de output op verschillende Excel‑versies**; oudere versies kunnen sommige aangepaste formaten iets anders interpreteren. + +--- + +## Conclusie + +We hebben alles behandeld wat je nodig hebt om **custom number format excel** bestanden vanuit C# te maken: gegevens ophalen uit een `DataTable`, **import datatable to excel**, een **set column background color** toepassen, **format column as currency** gebruiken, en uiteindelijk **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/excel-workbook/_index.md b/cells/dutch/net/excel-workbook/_index.md index d6e6b81ddb..c6a02dae3d 100644 --- a/cells/dutch/net/excel-workbook/_index.md +++ b/cells/dutch/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Dus waarom zou u deze kans niet grijpen om uw Excel-vaardigheden te verbeteren? | [Werkboek Afdrukvoorbeeld](./workbook-print-preview/) | Leer hoe u afdrukvoorbeelden voor Excel-bestanden maakt met Aspose.Cells voor .NET. Leer de coderingsstappen in een gedetailleerde, eenvoudig te volgen tutorial. | | [Werken met eigenschappen van inhoudstypen](./working-with-content-type-properties/) | Leer hoe u Aspose.Cells voor .NET kunt gebruiken om te werken met eigenschappen van inhoudstypen voor verbeterd Excel-metadatabeheer. Volg deze eenvoudige stapsgewijze handleiding. | | [Xades Signature-ondersteuning](./xades-signature-support/) | Leer hoe u Xades-handtekeningen aan Excel-bestanden toevoegt met Aspose.Cells voor .NET met deze stapsgewijze handleiding. Beveilig uw documenten. | +| [Nieuw werkboek maken C# – Stapsgewijze handleiding met uitlopende formules](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Leer hoe u een nieuw Excel-werkboek maakt in C# met uitlopende formules, stap voor stap uitgelegd. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/dutch/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..1c81e36b3c --- /dev/null +++ b/cells/dutch/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Maak snel een nieuw werkboek in C# met Aspose.Cells. Leer hoe je een + SEQUENCE‑spilling‑formule toevoegt, automatisch opnieuw laat berekenen en afhankelijke + cellen afhandelt. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: nl +og_description: Maak een nieuw werkboek in C# met Aspose.Cells. Deze tutorial laat + zien hoe je een SEQUENCE‑spillformule toevoegt, het werkboek opnieuw berekent en + afhankelijke cellen beheert. +og_title: Maak een nieuw werkboek C# – Complete gids +tags: +- C# +- Excel automation +- Aspose.Cells +title: Nieuw werkboek maken in C# – Stapsgewijze handleiding met Spilled Formules +url: /nl/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak nieuw werkboek C# – Complete programmeerhandleiding + +Heb je je ooit afgevraagd hoe je **create new workbook C#** kunt maken zonder te worstelen met COM interop? Je bent niet de enige. In veel projecten moet je een Excel‑bestand on‑the‑fly aanmaken, een dynamische array‑formule plaatsen, en alles automatisch laten vernieuwen. + +In deze gids laten we je precies dat zien—met behulp van de moderne **Aspose.Cells**‑bibliotheek, een spillende `SEQUENCE`‑formule toevoegen, een afhankelijke cel aanpassen, en een herberekening forceren zodat de resultaten actueel blijven. Aan het einde heb je een zelfstandige, uitvoerbare voorbeeldcode die je kunt copy‑paste in elke .NET‑app. + +## Wat je zult leren + +- Hoe je **create new workbook C#** programmatically kunt maken. +- De werking van een **spilled array formula** en waarom deze handig is. +- Het gebruik van de **Excel SEQUENCE function** vanuit C#‑code. +- Het activeren van **C# workbook calculation** zodat afhankelijke cellen direct worden bijgewerkt. +- Veelvoorkomende valkuilen (bijv. vergeten `Calculate` aan te roepen) en snelle oplossingen. + +Geen externe documentatie nodig—alles wat je nodig hebt staat hier. + +## Vereisten + +- .NET 6+ (of .NET Framework 4.7.2+) geïnstalleerd. +- Visual Studio 2022 of een IDE naar keuze. +- Het **Aspose.Cells** NuGet‑pakket (`Install-Package Aspose.Cells`). +- Basiskennis van C#‑syntaxis (als je helemaal nieuw bent, is de code uitgebreid gecommentarieerd). + +--- + +## Stap 1: Maak een nieuw werkboek in C# + +Deze H2‑kop bevat het **primary keyword** precies waar de SEO‑checklist om vraagt. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Waarom dit belangrijk is:** +> Het instantieren van `Workbook` geeft je een in‑memory representatie van een Excel‑bestand. Geen COM, geen interop, alleen pure .NET‑objecten die je veilig kunt manipuleren. + +--- + +## Stap 2: Voeg een spillende SEQUENCE‑formule toe + +Een **spilled array formula** breidt zich automatisch uit naar aangrenzende cellen, wat perfect is voor het genereren van dynamische lijsten. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Hoe het werkt:** +> De `SEQUENCE`‑functie (geïntroduceerd in Excel 365) maakt een verticale array van getallen. Omdat we een *spilling*‑formule gebruiken, vult Excel (en Aspose.Cells) automatisch het bereik onder `A1` zonder dat we een lus hoeven te schrijven. + +--- + +## Stap 3: Wijzig een afhankelijke cel om auto‑refresh te zien + +Laten we `B1` aanpassen zodat we kunnen zien hoe het werkboek de spillende array opnieuw berekent. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tip:** +> Als je later het spill‑bereik in andere formules gebruikt, zal het wijzigen van een cel binnen de spill ervoor zorgen dat die formules worden bijgewerkt nadat je `Calculate` aanroept. + +--- + +## Stap 4: Forceer C# workbook calculation + +Zonder een expliciete aanroep zal Aspose.Cells formules niet automatisch herberekenen. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Wat `Calculate` doet:** +> Het doorloopt elke formulecel, evalueert deze en schrijft de resultaten terug naar het blad. Dit is de kern van **C# workbook calculation** en zorgt ervoor dat je spill‑array gesynchroniseerd blijft met alle afhankelijke gegevens. + +### Verwachte output + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Open `SpilledSequenceDemo.xlsx` en je ziet de getallen 1‑5 die `A1:A5` vullen, terwijl `B1` de waarde `10` bevat. Wijzig een willekeurige cel binnen de spill, voer `Calculate` opnieuw uit, en de nieuwe waarden verschijnen direct. + +--- + +## Begrijpen van de Excel SEQUENCE‑functie in C# + +Als je je afvraagt waarom `SEQUENCE` de voorkeur heeft boven een handmatige lus, overweeg dan de volgende punten: + +1. **Performance** – De engine evalueert de hele array in één doorgang. +2. **Readability** – Eén regel code vervangt tientallen `PutValue`‑aanroepen. +3. **Dynamic sizing** – Je kunt de statische `5` vervangen door een verwijzing naar een andere cel, waardoor de lengte tijdens runtime aanpasbaar is. + +Dit is een klassiek voorbeeld van een **spilled array formula** die taken voor gegevensgeneratie vereenvoudigt. + +--- + +## Veelvoorkomende valkuilen & pro‑tips + +| Pitfall | Fix | +|---------|-----| +| Vergeten `workbook.Calculate()` | Roep het altijd aan na het wijzigen van formules; anders toont het blad oude gecachte waarden. | +| Een oudere Aspose.Cells‑versie gebruiken | Upgrade naar het nieuwste NuGet‑pakket om ondersteuning voor dynamische array‑functies zoals `SEQUENCE` te garanderen. | +| Opslaan vóór berekening | Sla **na** `Calculate` op zodat het bestand de nieuwste resultaten bevat. | +| Aannemen dat de spill bestaande data overschrijft | Aspose.Cells respecteert bestaande data buiten het spill‑bereik; maak het gebied eerst leeg als je een schone lei nodig hebt. | + +**Pro tip:** Als je de lengte van de reeks configureerbaar wilt maken, sla dan het aantal op in een cel (bijv. `C1`) en gebruik `=SEQUENCE(C1)`—de berekeningsengine leest de waarde tijdens runtime. + +--- + +## Het voorbeeld uitbreiden + +Nu je weet hoe je **create new workbook C#** kunt maken, kun je: + +- Meer complexe formules toevoegen die naar het spill‑bereik verwijzen (`=SUM(A1#)` waarbij `#` de spill aangeeft). +- Exporteren naar PDF met `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Grafieken invoegen die automatisch aanpassen aan de grootte van de dynamische array. + +Al deze bouwen voort op dezelfde **C# workbook calculation**‑basis die we net hebben behandeld. + +--- + +## Conclusie + +We hebben het volledige proces van **create new workbook C#** doorlopen, van het instantieren van het `Workbook`‑object tot het invoegen van een spillende `SEQUENCE`‑formule, het aanpassen van een afhankelijke cel, en uiteindelijk het forceren van een herberekening zodat alles up‑to‑date blijft. De volledige code‑snippet hierboven is klaar om te draaien—plaats het gewoon in een console‑app, voeg het Aspose.Cells‑NuGet‑pakket toe, en je hebt binnen enkele seconden een functioneel Excel‑bestand. + +Klaar voor de volgende stap? Probeer de statische `5` te vervangen door een celverwijzing, experimenteer met andere dynamische array‑functies zoals `FILTER` of `UNIQUE`, en ontdek hoe **Aspose.Cells C#** volledige rapportage‑engines kan aandrijven. Veel plezier met coderen! + +--- + +*Image placeholder:* + +![Schermafbeelding die een net aangemaakt werkboek met een spillende SEQUENCE‑formule toont – create new workbook C# voorbeeld](/images/create-new-workbook-csharp.png) + +--- + +*Als je deze tutorial nuttig vond, overweeg dan om de repository te sterretjes, te delen met teamgenoten, of een reactie hieronder achter te laten. Jouw feedback voedt toekomstige handleidingen!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/formulas-functions/_index.md b/cells/dutch/net/formulas-functions/_index.md index 80b92661b6..6e97a84f29 100644 --- a/cells/dutch/net/formulas-functions/_index.md +++ b/cells/dutch/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ Leer hoe u de taal van uw Excel-bestanden kunt specificeren met Aspose.Cells .NE ### [Excel Power Query-formules bijwerken met Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Leer hoe u Power Query-formules in Excel-werkmappen programmatisch kunt bijwerken met Aspose.Cells voor .NET. Beheer van hoofdgegevensbronnen voor dynamische rapportage. +### [Hoe Lambda te gebruiken in C# met Excel-formules – Complete gids](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Leer hoe u Lambda-expressies in C# kunt toepassen op Excel-formules met Aspose.Cells voor .NET, voor krachtige en flexibele berekeningen. + ## Inzicht in Excel-formuletypen Excel-formules zijn er in verschillende vormen, elk met unieke kenmerken die Aspose.Cells kan beheren: diff --git a/cells/dutch/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/dutch/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..4bddb759fe --- /dev/null +++ b/cells/dutch/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Hoe lambda te gebruiken in C# om met Excel‑formules te werken. Leer een + formule naar een cel te schrijven, een bereik naar een array te converteren, de + array in de console weer te geven en de cotangens in Excel te berekenen. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: nl +og_description: Hoe lambda te gebruiken in C# om Excel‑formules te manipuleren, een + bereik naar een array te converteren, een formule naar een cel te schrijven, een + array in de console weer te geven en cotangens te berekenen in Excel. +og_title: Hoe Lambda te gebruiken in C# met Excel‑formules – Stap voor stap +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Hoe Lambda in C# te gebruiken met Excel‑formules – Complete gids +url: /nl/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe Lambda te Gebruiken in C# met Excel‑formules – Complete Gids + +Heb je je ooit afgevraagd **hoe je lambda kunt gebruiken** wanneer je Excel automatiseert vanuit C#? Je bent niet de enige. Veel ontwikkelaars lopen tegen een muur aan wanneer ze de kracht van Excel’s nieuwe dynamische matrixfuncties moeten combineren met de `LAMBDA`‑mogelijkheid van C#. Het goede nieuws? Het is eigenlijk best eenvoudig zodra je ziet hoe de onderdelen in elkaar passen. + +In deze tutorial lopen we door **een formule naar een cel schrijven**, **een bereik omzetten naar een array**, **die array in de console weergeven**, en zelfs **cotangens berekenen in Excel** — allemaal terwijl we je **laten zien hoe je lambda kunt gebruiken** binnen een `REDUCE`‑aanroep. Aan het einde heb je een uitvoerbare snippet die je in elk .NET‑project kunt plaatsen dat Aspose.Cells (of een vergelijkbare bibliotheek) referereert. + +--- + +## Wat je zult leren + +- Hoe je **een formule naar een cel schrijft** met C#. +- Hoe je **een bereik omzet naar een array** met de `EXPAND`‑functie. +- Hoe je **een array in de console weergeeft** na berekening. +- Hoe je **cotangens berekent in Excel** met `COT` en `COTH`. +- De exacte syntaxis voor **hoe je lambda kunt gebruiken** binnen Excel’s `REDUCE`‑functie vanuit C#. + +> **Prerequisite:** Je hebt een recente versie van .NET (Core 6+ of .NET Framework 4.7+) en de Aspose.Cells for .NET‑bibliotheek geïnstalleerd via NuGet nodig. + +--- + +## Stap 1: Het Werkboek Instellen en Formule naar Cel Schrijven + +Het eerste wat we doen is een nieuw werkboek aanmaken en het eerste werkblad ophalen. Vervolgens **schrijven we een formule naar een cel** – in dit geval zal `A1` het resultaat van een `EXPAND`‑aanroep bevatten. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Waarom dit belangrijk is:** De formule direct vanuit code schrijven betekent dat je complexe spreadsheets on‑the‑fly kunt genereren zonder Excel te openen. Het legt ook de basis voor de volgende stap waarin we **een bereik omzetten naar een array**. + +--- + +## Stap 2: Bereik Omzetten naar Array met EXPAND + +`EXPAND` is Excel’s manier om een klein bereik om te zetten in een grotere matrix. Door de formule in `A1` te plaatsen, zal Excel een 4 × 5‑blok laten “spillen” vanaf die cel. Vanuit C# hoeven we de waarden niet handmatig te kopiëren – de bibliotheek doet het zware werk wanneer we `Calculate` aanroepen. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Hoe je lambda gebruikt:** Nog niet, maar blijf kijken. Eerst hebben we de data in het blad nodig, daarna reduceren we het met een lambda. + +--- + +## Stap 3: LAMBDA Binnen REDUCE Gebruiken – De Kern van “Hoe Lambda te Gebruiken” + +Excel 365 introduceerde `REDUCE`, dat een **beginwaarde**, een **bereik**, en een **LAMBDA** accepteert die bepaalt hoe elk element gecombineerd wordt. Vanuit C# wijzen we simpelweg de formule‑string toe; de lambda zit in de Excel‑formule, niet in de C#‑code. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Uitleg:** +- `0` is de start‑accumulator (`acc`). +- `A1:D4` is het bereik dat we willen verwerken (de eerste vier kolommen van de spill). +- `LAMBDA(acc, x, acc + x)` vertelt Excel elk cel‑waarde (`x`) bij de accumulator op te tellen. + +Dat is de essentie van **hoe je lambda kunt gebruiken** voor aggregatie in een spreadsheet‑context. + +--- + +## Stap 4: Cotangens Berekenen in Excel – Van Graden naar Hyperbolisch + +Als je trigonometrische resultaten nodig hebt, zijn Excel’s `COT`‑ en `COTH`‑functies een makkie. We plaatsen ze respectievelijk in `G1` en `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Waarom dit handig is:** Weten **hoe je cotangens berekent in Excel** kan je veel eigen wiskundige code besparen, vooral wanneer het werkboek gedeeld wordt met niet‑ontwikkelaars. + +--- + +## Stap 5: Berekening Forceren en de Uitgebreide Array Ophalen + +Nu laten we het werkboek alle formules evalueren en halen we de gespilde array uit `A1`. Dit is het moment waarop we **de array in de console weergeven**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Wat je zult zien:** +- Een netjes geformatteerde 4 × 5‑matrix, regel voor regel afgedrukt. +- De som berekend door de `REDUCE`‑lambda. +- De twee cotangens‑waarden. + +Dat voltooit de stroom van **formule naar cel schrijven** tot **array in de console weergeven**. + +--- + +## Volledig Werkend Voorbeeld (Klaar om te Kopiëren) + +Hieronder staat het volledige programma dat je in een console‑app kunt plakken. Vergeet niet eerst het `Aspose.Cells`‑NuGet‑pakket toe te voegen (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Verwachte console‑output (waarden kunnen variëren afhankelijk van de standaardinhoud van B1:C2, die standaard 0 is):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Voel je vrij om `B1:C2` te vullen met je eigen getallen vóór je het programma draait – de matrix zal die waarden weerspiegelen. + +--- + +## Pro‑tips & Veelvoorkomende Valkuilen + +- **Pro tip:** Als je wilt dat het gespilde bereik ergens anders begint, wijzig dan simpelweg de doelcel (`A1`). De `EXPAND`‑functie houdt rekening met de ankerpositie. +- **Let op:** Lege cellen in het bronbereik worden `0` in de gespilde array, wat je `REDUCE`‑som kan beïnvloeden. +- **Randgeval:** Wanneer het werkboek formules bevat die afhankelijk zijn van vluchtige functies (bijv. `NOW()`), roep dan `workbook.Calculate()` aan nadat alle formules zijn ingesteld om alles up‑to‑date te houden. +- **Prestatie‑opmerking:** Voor enorme spills, overweeg de grootte in de `EXPAND`‑aanroep te beperken; anders kun je meer geheugen reserveren dan nodig is. +- **Compatibiliteit:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/number-and-display-formats-in-excel/_index.md b/cells/dutch/net/number-and-display-formats-in-excel/_index.md index 5f29916ae3..879747ea01 100644 --- a/cells/dutch/net/number-and-display-formats-in-excel/_index.md +++ b/cells/dutch/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Als u uw Excel-sheets een persoonlijk tintje wilt geven, is het aanpassen van we Automatiseer getalnotatie in Excel met Aspose.Cells voor .NET. Leer hoe u datum-, percentage- en valutanotaties programmatisch toepast. ### [Weergaveformaten aanpassen met door de gebruiker gedefinieerde getallen](./customizing-display-formats-with-user-defined-numbers/) Leer hoe u weergaveformaten kunt aanpassen met Aspose.Cells voor .NET. Formatteer datums, percentages en valuta met behulp van deze stapsgewijze handleiding. +### [Hoe Excel te exporteren met opmaak – Getalnotatie behouden](./how-to-export-excel-with-formatting-preserve-number-format/) +Leer hoe u Excel-bestanden exporteert met behoud van getalnotaties en opmaak met Aspose.Cells voor .NET. +### [Datum/tijd formatteren naar ISO in C# – Complete gids](./format-datetime-to-iso-in-c-complete-guide/) +Leer hoe u datum- en tijdwaarden naar ISO-indeling formatteert in C# met Aspose.Cells voor .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/dutch/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..55f51372d7 --- /dev/null +++ b/cells/dutch/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Leer hoe je datetime naar ISO kunt formatteren terwijl je een datum uit + Excel haalt en de ISO‑datum weergeeft met Aspose.Cells in C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: nl +og_description: datetime naar iso formatteren is eenvoudig. Deze gids laat zien hoe + je een datum uit Excel haalt en de iso‑datum weergeeft met Aspose.Cells. +og_title: datetime formatteren naar ISO in C# – Stapsgewijze tutorial +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Datum/tijd formatteren naar ISO in C# – Complete gids +url: /nl/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# datetime formatteren naar iso in C# – Complete gids + +Heb je ooit **datetime naar iso formatteren** nodig gehad, maar bevindt de bron zich in een Excel-werkmap? Misschien bevat de cel een Japanse jaartelling zoals “令和3年5月1日” en krabbel je je hoofd af terwijl je je afvraagt hoe je dat kunt omzetten naar een nette `2021‑05‑01`‑string. Je bent niet de enige. In deze tutorial zullen we **datum uit excel extraheren**, de Japanse jaartelling parseren, en vervolgens **iso‑datum weergeven** op de console—alles met een paar regels C# en Aspose.Cells. + +We lopen alles door wat je nodig hebt: het vereiste NuGet‑pakket, de exacte code die je kunt copy‑paste, waarom elke regel belangrijk is, en een reeks edge‑case‑tips. Aan het einde heb je een herbruikbare snippet die datetime naar iso formatteert, ongeacht hoe eigenzinnig de oorspronkelijke Excel‑waarde eruitziet. + +## Wat je nodig hebt + +- .NET 6.0 of later (de code compileert ook op .NET Framework 4.6+) +- Visual Studio 2022 (of elke editor die je verkiest) +- **Aspose.Cells for .NET** NuGet‑pakket – `Install-Package Aspose.Cells` +- Een Excel‑bestand (of een nieuwe werkmap) dat een datum in Japanse jaartelling‑formaat bevat + +Dat is alles. Geen extra bibliotheken, geen COM‑interop, alleen een enkele, goed gedocumenteerde methode. + +## Stap 1: Maak een werkmap en schrijf een Japanse jaartelling‑datum + +Eerst hebben we een werkmap nodig om mee te werken. Als je al een Excel‑bestand hebt, kun je het laden met `new Workbook("path")`. Voor dit voorbeeld maken we een nieuwe werkmap in het geheugen en plaatsen we een Japanse jaartelling‑tekst in cel **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Waarom we dit doen:** Aspose.Cells behandelt celwaarden standaard als strings. Door de ruwe jaartelling‑tekst in te voegen simuleren we een real‑world scenario waarin een Japanse klant datums invoert in hun eigen kalender. + +## Stap 2: Schakel Japanse jaartelling‑parsing in en extraheer de datum + +Aspose.Cells kan automatisch Japanse jaartelling‑strings vertalen naar .NET `DateTime`‑objecten—mits je het aangeeft. De `DateTimeParseOptions.EnableJapaneseEra`‑vlag doet het zware werk. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** Als je de `EnableJapaneseEra`‑optie vergeet, zal de bibliotheek de originele string teruggeven, en zal je daaropvolgende conversie falen. Controleer altijd `parsed.Type` als je gemengde inhoud verwerkt. + +## Stap 3: Converteer de geparseerde DateTime naar ISO 8601 + +Nu we een juiste `DateTime` hebben, is het omzetten naar een ISO‑geformatteerde string een fluitje van een cent. Het patroon `"yyyy-MM-dd"` voldoet aan het datumgedeelte van ISO 8601, wat de meeste API's verwachten. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Het uitvoeren van het programma geeft het volgende weer: + +``` +ISO date: 2021-05-01 +``` + +Dat is de **iso‑datum weergeven** die je zocht. + +## Volledig, uitvoerbaar voorbeeld + +Hieronder staat het volledige codeblok dat je rechtstreeks kunt kopiëren in een console‑project. Geen verborgen afhankelijkheden, geen extra configuratie. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Verwachte output:** `ISO date: 2021-05-01` + +## Stapsgewijze uitsplitsing (Waarom elk onderdeel belangrijk is) + +| Stap | Wat gebeurt er | Waarom het belangrijk is | +|------|----------------|--------------------------| +| **Werkmap maken** | Initialiseert een in‑memory Excel‑container. | Geeft je een sandbox om te testen zonder het bestandssysteem aan te raken. | +| **PutValue** | Slaat de ruwe Japanse jaartelling‑string op in **A1**. | Imiteert echte gegevensinvoer; zorgt ervoor dat de parser de exacte tekst ziet. | +| **GetValue met `EnableJapaneseEra`** | Converteert de jaartelling‑string naar een .NET `DateTime`. | Verwerkt de kalenderconversie automatisch—geen handmatige opzoektabellen nodig. | +| **`ToString("yyyy-MM-dd")`** | Formateert de `DateTime` naar ISO 8601. | Garandeert een cultuur‑onafhankelijke, sorteerbare datumstring die door REST‑API's, databases, enz. wordt geaccepteerd. | +| **Console.WriteLine** | Toont de uiteindelijke ISO‑datum. | Bevestigt dat de volledige pijplijn end‑to‑end werkt. | + +## Veelvoorkomende variaties afhandelen + +### 1. Verschillende celposities + +Als je datum zich bevindt in **B2** of een benoemd bereik, vervang dan simpelweg `"A1"` door het juiste adres: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Meerdere datums in een kolom + +Wanneer je **datum uit excel moet extraheren** voor veel rijen, loop je door het gebruikte bereik: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback voor niet‑jaartelling‑datums + +Als een cel al een standaard datumstring bevat, werkt de parser nog steeds, maar je wilt misschien een vangnet: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +De `TryParse`‑vlag voorkomt uitzonderingen en retourneert de originele waarde als de conversie mislukt. + +### 4. Tijdcomponent + +Mocht je ook het tijdgedeelte nodig hebben, gebruik dan `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Dat levert een volledige ISO 8601‑tijdstempel op (`2021-05-01T00:00:00`). + +## Visuele hulp + +![voorbeeld van datetime formatteren naar iso](image.png "Een voorbeeld van datetime formatteren naar iso in C#") + +*Alt-tekst:* *voorbeeld van datetime formatteren naar iso, console‑output tonend* + +## Veelgestelde vragen + +- **Kan ik dit gebruiken met .xls‑bestanden?** + Ja. Aspose.Cells ondersteunt `.xls`, `.xlsx`, `.csv` en vele andere formaten out‑of‑the‑box. + +- **Wat als de werkmap met een wachtwoord beveiligd is?** + Laad deze met `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Is het ISO‑formaat afhankelijk van de locale?** + Nee. Het patroon `"yyyy-MM-dd"` is cultuur‑onafhankelijk, waardoor dezelfde string op elke machine gegarandeerd is. + +- **Werkt dit op .NET Core?** + Absoluut—Aspose.Cells voldoet aan .NET Standard 2.0. + +## Samenvatting + +We hebben behandeld hoe je **datetime naar iso kunt formatteren** door **datum uit excel te extraheren**, Japanse jaartelling‑strings te parseren, en uiteindelijk **iso‑datum weer te geven** op de console. De kernstappen—een werkmap maken, de jaartelling‑tekst schrijven of laden, Japanse jaartelling‑parsing inschakelen, en formatteren met `ToString("yyyy-MM-dd")`—zijn alles wat je nodig hebt voor de meeste scenario's. + +Vervolgens wil je misschien: + +- De ISO‑datums terugschrijven naar een andere kolom voor downstream‑verwerking. +- De getransformeerde werkmap exporteren naar CSV voor bulk‑import. +- Deze logica combineren met een web‑API die Excel‑uploads accepteert en JSON‑gecodeerde ISO‑datums retourneert. + +Voel je vrij om te experimenteren met verschillende datumformaten, tijdzones, of zelfs aangepaste kalenders. De flexibiliteit van Aspose.Cells betekent dat je zelden tegen een muur aanloopt. + +Veel plezier met coderen, en moge al je datums perfect ISO‑conform zijn! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/dutch/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..f7a8d0b9b2 --- /dev/null +++ b/cells/dutch/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Hoe Excel met opmaak te exporteren en het getalformaat te behouden. Leer + een Excel‑bereik te converteren, formuleresultaten op te halen en Excel met opmaak + te exporteren met Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: nl +og_description: Hoe Excel met opmaak exporteren en de getalnotatie behouden. Stapsgewijze + handleiding om een Excel‑bereik te converteren, het formule‑resultaat te verkrijgen + en Excel met opmaak te exporteren in C#. +og_title: Hoe Excel te exporteren met opmaak – Nummeropmaak behouden +tags: +- C# +- Aspose.Cells +- Excel automation +title: Hoe Excel met opmaak exporteren – Nummeropmaak behouden +url: /nl/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe Excel te exporteren met opmaak – Getalnotatie behouden + +Heb je je ooit afgevraagd **hoe je Excel**-gegevens kunt exporteren terwijl je elke cel er precies zo uit ziet als in de werkmap? Misschien moet je een rapport naar een klant sturen, een raster‑besturingselement voeden, of gewoon de waarden in een database opslaan. Het knelpunt is meestal het verlies van getalopmaak of formules die in ruwe tekenreeksen veranderen. + +In deze tutorial lopen we een compleet, kant‑klaar C#‑voorbeeld door dat **getalopmaak behoudt**, **een Excel‑bereik converteert** naar een `DataTable`, **het formule‑resultaat haalt**, en uiteindelijk **Excel exporteert met opmaak** met behulp van Aspose.Cells. Aan het einde heb je een enkele methode die je in elk project kunt plaatsen en kunt aanroepen met een werkblad‑referentie. + +> **Snelle preview:** de code maakt een werkmap, schrijft een waarde en een formule, vertelt Aspose.Cells de cellen als opgemaakte tekenreeksen te exporteren, en print `123.456 | 246.912` – precies wat je in Excel zou verwachten te zien. + +--- + +## Wat je nodig hebt + +- **Aspose.Cells for .NET** (de gratis proefversie werkt prima voor leren) +- .NET 6.0 of later (de API is hetzelfde op .NET Framework) +- Een basis C#‑ontwikkelomgeving (Visual Studio, VS Code, Rider… je kiest) + +Er zijn geen extra NuGet‑pakketten nodig naast Aspose.Cells. Als je het nog niet hebt geïnstalleerd, voer dan uit: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Stap 1 – Maak een werkmap en schrijf waarden (inclusief een formule) + +Eerst maken we een nieuwe werkmap aan en plaatsen een numerieke waarde in **A1**. Vervolgens voegen we een eenvoudige formule toe in **B1** die de eerste cel met twee vermenigvuldigt. Dit bereidt de basis voor het later demonstreren van **get formula result**. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Waarom dit belangrijk is:** +- `PutValue` slaat het ruwe getal op, terwijl `PutFormula` de berekening opslaat. +- Aspose.Cells houdt de formule **actief**, zodat wanneer we later om de celwaarde vragen we daadwerkelijk `246.912` krijgen, niet de tekenreeks `"=A1*2"`. + +--- + +## Stap 2 – Vertel Aspose.Cells om waarden te exporteren als opgemaakte tekenreeksen + +Als je simpelweg `ExportDataTable` aanroept met de standaardinstellingen, worden numerieke cellen geretourneerd als hun onderliggende `double`‑waarden. Dat verwijdert eventuele duizendtallen‑scheidingstekens, valutasymbolen of aangepaste decimalen die je mogelijk hebt ingesteld. De `ExportTableOptions`‑klasse laat ons **getalopmaak behouden** en **exporteren als tekenreeks**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Belangrijk punt:** `ExportNumberFormat = true` is de vlag die **preserve number format** laat werken. Zonder deze zie je `"123.456"` en `"246.912"` als ruwe getallen, wat er in code misschien goed uitziet, maar niet wanneer je de gegevens plakt in een UI die dezelfde opmaak als Excel verwacht. + +--- + +## Stap 3 – Print de geëxporteerde gegevens (verificatie) + +Nu we een `DataTable` vol opgemaakte tekenreeksen hebben, laten we de inhoud naar de console dumpen. Dit toont ook aan dat we succesvol **get formula result** hebben verkregen zonder de formule zelf te evalueren. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Merk op hoe de tweede kolom de **formule‑resultaat** toont, niet de formule‑tekst. Dat is precies wat je nodig hebt wanneer je **Excel exporteert met opmaak** voor verdere verwerking. + +--- + +## Stap 4 – Grotere Excel‑bereiken converteren (optioneel) + +Het voorbeeld hierboven behandelt een klein `A1:B1`‑deel, maar in de praktijk moet je vaak volledige tabellen exporteren. dezelfde methode werkt voor elk rechthoekig blok – pas gewoon de argumenten `firstRow`, `firstColumn`, `totalRows` en `totalColumns` aan. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tip:** Als je blad al een koprij heeft, stel `includeColumnNames` in op `true`. Aspose.Cells zal de eerste rij van het bereik gebruiken als kolomnamen, wat handig is wanneer je later de `DataTable` bindt aan een UI‑raster. + +--- + +## Stap 5 – Veelvoorkomende valkuilen & hoe ze te vermijden + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Getallen verliezen komma's of valutasymbolen** | `ExportAsString` is `false` of `ExportNumberFormat` is weggelaten | Stel beide `ExportAsString = true` **en** `ExportNumberFormat = true` in. | +| **Formule‑cellen geven de formule‑tekst terug** | Je hebt `CalculateFormula` niet aangeroepen vóór export (alleen nodig als de werkmap niet op automatisch berekenen staat) | Schakel auto‑calculate in (`workbook.CalculateFormula()`) of vertrouw op `ExportAsString` dat evaluatie afdwingt. | +| **Koppen verschijnen als gegevensrijen** | `includeColumnNames` staat op `false` terwijl je bereik een koprij bevat | Stel `includeColumnNames = true` in om de eerste rij als kolomnamen te behandelen. | +| **Grote bereiken veroorzaken geheugenbelasting** | Het in één keer exporteren van het volledige blad laadt alles in het geheugen | Exporteren in delen (bijv. 500 rijen per keer) en `DataTable`s samenvoegen indien nodig. | + +--- + +## Stap 6 – Volledig werkend voorbeeld (klaar om te kopiëren‑plakken) + +Hieronder staat het volledige programma, van `using`‑statements tot `Main`. Plak het in een console‑applicatie en druk op **F5** – je ziet meteen de opgemaakte output. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Dit is de volledige **how to export excel**‑workflow, met behoud van opmaak, geëvalueerde formule‑resultaten, en een schone `DataTable` klaar voor elke .NET‑gebruiker. + +--- + +## Conclusie + +We hebben alles behandeld wat je moet weten over **how to export Excel**‑gegevens terwijl je **getalopmaak behoudt**, **een Excel‑bereik converteert** naar een `DataTable`, en **formule‑resultaten haalt** zonder extra parsing. De sleutel is de `ExportTableOptions`‑configuratie – zodra je `ExportAsString` en `ExportNumberFormat` op `true` zet, doet Aspose.Cells het zware werk voor je. + +Vanaf hier kun je: + +- De `DataTable` in een WPF `DataGrid` of ASP.NET MVC‑view pluggen. +- De tabel naar een CSV‑bestand schrijven terwijl je de exacte visuele weergave behoudt. +- De aanpak uitbreiden naar meerdere bladen of dynamische bereiken. + +Voel je vrij om te experimenteren met verschillende opmaken (valuta, percentages) en grotere gegevensblokken. Als je tegen vreemde problemen aanloopt, raad dan terug naar de tabel met **common pitfalls** – die behandelt de meest voorkomende hickups wanneer je **export excel with formatting**. + +Veel programmeerplezier, en moge je geëxporteerde spreadsheets altijd net zo gepolijst eruitzien als de originelen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/dutch/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..9a3c551123 --- /dev/null +++ b/cells/dutch/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,209 @@ +--- +category: general +date: 2026-03-22 +description: Leer hoe je een draaitabel dupliceert in C# met Aspose.Cells. Deze gids + laat ook zien hoe je rijen kopieert en een Excel-werkmap laadt in C# voor naadloze + Excel-automatisering en het kopiëren van rijen. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: nl +og_description: Hoe dupliceer je een pivot in C#? Volg deze beknopte tutorial om een + Excel-werkboek te laden in C#, rijen te kopiëren en de master Excel-automatisering + voor het kopiëren van rijen te beheersen. +og_title: Hoe een Pivot te dupliceren in C# – Complete gids +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Hoe een Pivot te dupliceren in C# – Complete stapsgewijze handleiding +url: /nl/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een draaitabel te dupliceren in C# – Complete stapsgewijze gids + +Heb je je ooit afgevraagd **hoe je een draaitabel** programmatically kunt dupliceren zonder ze handmatig te slepen in Excel? Je bent niet de enige. In veel rapportage‑pipelines is dezelfde draaitabel‑lay‑out nodig op een nieuwe set rijen, en dit handmatig doen is tijdverspilling. + +Het goede nieuws? Met een paar regels C# kun je een Excel‑werkmap laden, het gebied definiëren dat de draaitabel bevat, en **hoe je rijen kopieert** zodat de draaitabel op een nieuwe locatie verschijnt – allemaal in één geautomatiseerde run. In deze tutorial behandelen we ook de basis van **load excel workbook c#** en geven we je een solide basis voor **excel automation copy rows** taken. + +> **Wat je zult leren** +> • Een volledig, uitvoerbaar voorbeeld dat een draaitabel dupliceert. +> • Een uitleg waarom elke regel belangrijk is. +> • Tips voor het omgaan met randgevallen zoals verborgen werkbladen of meerdere draaitabellen. + +--- + +## Vereisten + +Voordat we beginnen, zorg dat je het volgende hebt: + +- **.NET 6.0** (of een recente .NET‑versie) geïnstalleerd. +- **Aspose.Cells for .NET** – de bibliotheek die we gebruiken om Excel‑bestanden te manipuleren. Je kunt deze via NuGet ophalen: + +```bash +dotnet add package Aspose.Cells +``` + +- Een bron‑werkmap (`Source.xlsx`) die al een draaitabel bevat in het bereik **A1:J20** (het bereik dat we gaan dupliceren). +- Basiskennis van C#‑syntaxis – niets bijzonders, alleen de gebruikelijke `using`‑statements en de `Main`‑methode. + +Als een van deze onderdelen onbekend is, pauzeer even en installeer het pakket; de rest van de gids gaat ervan uit dat de bibliotheek klaar is voor gebruik. + +--- + +![Illustratie van hoe je een draaitabel dupliceert in C# met Aspose.Cells](https://example.com/duplicate-pivot.png "illustratie van hoe je een draaitabel dupliceert in C#") + +*Afbeeldings‑alt‑tekst: "voorbeeld van hoe je een draaitabel dupliceert in C# met bron‑ en gedupliceerde draaitabel‑rijen".* + +--- + +## Stap 1: Load Excel Workbook C# – Het bestand openen + +Het allereerste wat je moet doen wanneer je **load excel workbook c#** wilt, is een `Workbook`‑instance maken die naar je bestand wijst. Dit object geeft je toegang tot elk werkblad, elke cel en elke draaitabel in het bestand. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Waarom dit belangrijk is:** +`Workbook` abstraheert het volledige Excel‑bestand naar een in‑memory model. Zonder het eerst te laden kun je de locatie van de draaitabel niet inspecteren of rijen kopiëren. Bovendien detecteert de constructor automatisch het bestandsformaat (XLS, XLSX, CSV, enz.), zodat je geen extra code nodig hebt voor formatdetectie. + +--- + +## Stap 2: How to Copy Rows – Het draaitabel‑gebied definiëren + +Nu de werkmap in het geheugen staat, moeten we Aspose.Cells vertellen welke rijen de draaitabel bevatten. In ons voorbeeld bevindt de draaitabel zich in **A1:J20**, wat overeenkomt met rijen **0‑19** (nul‑gebaseerde indexering). We verpakken dat in een `CellArea`‑structuur. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Waarom we `CellArea` gebruiken:** +Het is een lichte manier om een rechthoekig blok te beschrijven. Wanneer je later `CopyRows` aanroept, leest de methode dit object om precies te weten welke rijen moeten worden gedupliceerd. Als je ooit het bereik moet aanpassen (bijvoorbeeld als de draaitabel groeit naar kolom K), wijzig je alleen de `endColumn`‑waarde. + +--- + +## Stap 3: Toegang tot het doel‑werkblad + +De meeste werkmappen hebben één blad, maar de API werkt hetzelfde voor meerdere bladen. Haal het eerste werkblad op (index 0) – daar bevindt zich de originele draaitabel. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro‑tip:** +Als je werkbladen namen heeft, kun je ze ook op naam ophalen: `workbook.Worksheets["Sheet1"]`. Dit helpt hard‑codering van indices te vermijden wanneer de structuur van de werkmap verandert. + +--- + +## Stap 4: How to Copy Rows – De draaitabel dupliceren + +Hier is het hart van **how to duplicate pivot**: we kopiëren de rijen die de draaitabel bevatten naar een nieuwe locatie. In ons geval beginnen we bij rij 31 (nul‑gebaseerde index 30). De `CopyRows`‑methode kopieert *zowel* de data als de onderliggende draaitabel‑cache, zodat de nieuwe rijen zich exact hetzelfde gedragen als de originele. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Wat er onder de motorkap gebeurt:** +`CopyRows` kloont elke rij, waarbij formules, stijlen en draaitabeldefinities behouden blijven. Omdat de cache van de draaitabel op werkmapniveau leeft, verwijst de gedupliceerde draaitabel automatisch naar dezelfde gegevensbron – geen extra configuratie nodig. + +**Randgeval – verborgen rijen:** +Als een van de rijen in het bronbereik verborgen is, blijven ze verborgen na het kopiëren. Wil je ze zichtbaar maken, roep dan `worksheet.Rows[destRow].IsHidden = false` aan na de kopie. + +--- + +## Stap 5: Werkmap opslaan – Het duplicaat verifiëren + +Tot slot schrijf je de wijzigingen terug naar schijf. Je kunt het originele bestand overschrijven of, veiliger, opslaan onder een nieuwe naam zodat je het voor‑ en na‑resultaat kunt vergelijken. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Resultaat dat je moet zien:** +Open `CopyWithPivot.xlsx`. Je vindt de originele draaitabel in **A1:J20** en een identieke kopie beginnend bij **A31:J50**. Beide draaitabellen kunnen onafhankelijk worden vernieuwd, en eventuele slicers die aan de originele zijn gekoppeld, werken nog steeds voor de kopie omdat ze dezelfde cache delen. + +--- + +## Veelgestelde vragen & Variaties + +### Kan ik meerdere draaitabellen tegelijk dupliceren? + +Zeker. Loop door alle draaitabellen (`worksheet.PivotTables`) en kopieer elk bereik naar een andere bestemming. Zorg er alleen voor dat de bestemmingsbereiken elkaar niet overlappen. + +### Wat als de bron‑werkmap met een wachtwoord is beveiligd? + +Aspose.Cells laat je een beveiligd bestand openen door het wachtwoord mee te geven aan de `Workbook`‑constructor: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Hoe kopieer ik rijen zonder formules te beïnvloeden? + +Als je alleen de *waarden* nodig hebt (geen formules), gebruik dan `CopyRows` met de `CopyOptions`‑vlag: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Is er een manier om rijen naar een *ander* werkmap te kopiëren? + +Ja. Na het kopiëren van rijen in het bronblad kun je het werkblad klonen naar een andere `Workbook`‑instance via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Pro‑tips voor betrouwbare Excel‑automatisering Copy Rows + +- **Valideer het bereik** vóór het kopiëren. Een snelle `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` voorkomt out‑of‑range‑fouten. +- **Schakel berekeningen uit** tijdens het kopiëren van grote bereiken: `workbook.Settings.CalcMode = CalcMode.Manual;` – dit versnelt de operatie aanzienlijk. +- **Dispose objecten** (`workbook.Dispose()`) als je veel bestanden in een lus verwerkt om native resources vrij te maken. +- **Log de operatie** – vooral in productiepijplijnen – zodat je kunt traceren welke bestanden zijn verwerkt en fouten vroegtijdig kunt opvangen. + +--- + +## Conclusie + +Je weet nu **hoe je een draaitabel** dupliceert in C# met Aspose.Cells, en je hebt de volledige workflow gezien van **load excel workbook c#** tot **excel automation copy rows** en uiteindelijk het opslaan van het resultaat. Het voorbeeld is zelf‑voorzienend, werkt direct uit de doos, en kan worden uitgebreid om meerdere draaitabellen, beveiligde bestanden of cross‑workbook‑kopieën te behandelen. + +Volgende stappen? Probeer het script aan te passen om: + +- De gedupliceerde draaitabel programmatically te vernieuwen (`pivotTable.RefreshData();`). +- Het gedupliceerde gebied naar een CSV te exporteren voor downstream verwerking. +- De code te integreren in een ASP.NET Core API zodat gebruikers een bestand kunnen uploaden en direct een versie met gedupliceerde draaitabel ontvangen. + +Happy coding, en moge je Excel‑automatisering altijd soepel verlopen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/row-and-column-management/_index.md b/cells/dutch/net/row-and-column-management/_index.md index bb826dc162..1a320b929c 100644 --- a/cells/dutch/net/row-and-column-management/_index.md +++ b/cells/dutch/net/row-and-column-management/_index.md @@ -68,6 +68,9 @@ Leer hoe u een kolom in een Excel-bestand verwijdert met Aspose.Cells voor .NET. Leer hoe u een rij in Excel verwijdert met Aspose.Cells voor .NET. Deze stapsgewijze handleiding behandelt de vereisten, code-import en een gedetailleerde handleiding voor naadloze gegevensmanipulatie. ### [Meerdere rijen verwijderen in Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Leer hoe u meerdere rijen in Excel kunt verwijderen met Aspose.Cells voor .NET. Deze gedetailleerde, stapsgewijze handleiding behandelt de vereisten, codevoorbeelden en veelgestelde vragen voor ontwikkelaars. +### [Rijen verwijderen – Koprij beschermen met Aspose.Cells .NET](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Leer hoe u rijen kunt verwijderen terwijl u de koprij beschermt in Excel met Aspose.Cells voor .NET. + ### [Een kolom invoegen in Aspose.Cells .NET](./insert-column-aspose-cells/) Leer hoe je een kolom in Excel invoegt met Aspose.Cells voor .NET. Volg onze eenvoudige, stapsgewijze handleiding om naadloos een nieuwe kolom toe te voegen. Perfect voor .NET-ontwikkelaars. ### [Een rij invoegen in Aspose.Cells .NET](./insert-row-aspose-cells/) diff --git a/cells/dutch/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/dutch/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..b81fd47374 --- /dev/null +++ b/cells/dutch/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells verwijdert rijen terwijl de koprij wordt beschermd. Leer + hoe je de eerste tabel kunt ophalen en veilig Excel‑tabelrijen kunt verwijderen + in C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: nl +og_description: Aspose Cells verwijdert rijen terwijl de koprij beschermd blijft. + Leer hoe je de eerste tabel ophaalt en veilig Excel‑tabelrijen verwijdert in C#. +og_title: Aspose Cells rijen verwijderen – Koprij in Excel beveiligen +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Rijen Verwijderen – Koprij Beschermen in Excel +url: /nl/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Rijen Verwijderen – Koprij Beschermen in Excel + +Heb je ooit geprobeerd om **aspose cells delete rows** uit een tabel te verwijderen, alleen om te ontdekken dat de kop verdwenen was? Dat is een veelvoorkomende valkuil bij het programmatisch manipuleren van Excel‑bladen. In deze gids lopen we een volledige, uitvoerbare oplossing door die **de koprij beschermt**, je laat zien hoe je **retrieve first table** kunt **ophalen**, en veilig **delete Excel table rows** kunt uitvoeren zonder de structuur te breken. + +We behandelen alles, van het laden van de werkmap tot het afhandelen van de uitzondering die Aspose gooit wanneer je probeert de kop te verlaten. Tegen het einde heb je een solide patroon dat je in elk .NET‑project dat Aspose.Cells gebruikt, kunt gebruiken. + +--- + +## Wat je nodig hebt + +- **Aspose.Cells for .NET** (v23.12 of later) – de bibliotheek die je in staat stelt om met Excel‑bestanden te werken zonder Office geïnstalleerd te hebben. +- Een basis C#‑ontwikkelomgeving (Visual Studio, Rider, of de `dotnet` CLI). +- Een Excel‑bestand (`TableWithHeader.xlsx`) dat minstens één **ListObject** (Excel‑tabel) bevat met een koprij in de eerste rij. + +Er zijn geen extra NuGet‑pakketten nodig naast Aspose.Cells. + +--- + +## Stap 1: Laad de Werkmap en Haal de Eerste Tabel Op + +Het eerste wat je moet doen is de werkmap openen en de tabel pakken die je wilt aanpassen. Hier komt het secundaire trefwoord **retrieve first table** van pas. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Waarom dit belangrijk is:** +- `Workbook` leest het bestand zonder dat Excel geïnstalleerd hoeft te zijn. +- `worksheet.ListObjects[0]` is de meest directe manier om **retrieve first table** te **ophalen**; als je meerdere tabellen hebt kun je itereren of de tabelnaam gebruiken. + +> **Pro tip:** Als je niet zeker weet of een werkblad daadwerkelijk een tabel bevat, controleer dan eerst `worksheet.ListObjects.Count` om een `IndexOutOfRangeException` te voorkomen. + +--- + +## Stap 2: Bescherm de Koprij tijdens het Verwijderen van Rijen + +Nu komt de kern van de zaak: **aspose cells delete rows** zonder de kop te wissen. De `DeleteRows`‑methode van Aspose neemt een nul‑gebaseerde startindex en een aantal. Proberen de kop (rij 0) te verwijderen veroorzaakt een uitzondering, wat precies is wat we willen vermijden. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Uitleg van de logica:** + +| Stap | Reden | +|------|-------| +| `table.DeleteRows(1, 2);` | Index 1 wijst naar de **tweede** rij (de eerste datarij). Het verwijderen van twee rijen verwijdert rijen 2‑3 in Excel-termen, waardoor de kop (rij 1) onaangeroerd blijft. | +| `catch (Exception ex)` | Aspose gooit een uitzondering **alleen** wanneer de bewerking de kop zou achterlaten. Het opvangen ervan laat je een vriendelijke melding loggen in plaats van de app te laten crashen. | +| `Save` | Het opslaan van de wijzigingen stelt je in staat `Result.xlsx` te openen en te zien dat de kop nog aanwezig is. | + +> **Wat als je echt de kop moet verwijderen?** +> Gebruik `table.ShowHeaders = false;` vóór het verwijderen, of verwijder de hele tabel en maak deze opnieuw aan. Maar in de meeste zakelijke scenario's wil je de **protect header row**. + +--- + +## Stap 3: Verifieer het Resultaat – Verwachte Output + +Na het uitvoeren van het programma, open `Result.xlsx`. Je zou moeten zien: + +- De eerste rij bevat nog steeds de oorspronkelijke kolomtitels. +- Rijen 2‑3 (de rijen die we hebben geselecteerd) zijn verdwenen, en de resterende gegevens zijn omhoog geschoven. + +De console zal weergeven: + +``` +Rows deleted successfully. +``` + +Als je per ongeluk probeerde de kop te verwijderen (bijv. `table.DeleteRows(0, 1);`), zou de output zijn: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Dat bericht bevestigt dat de ingebouwde beveiliging van Aspose zijn werk doet. + +--- + +## Stap 4: Alternatieve Manieren om **Delete Excel Table Rows** + +Soms heb je meer controle nodig — bijvoorbeeld rijen verwijderen op basis van een voorwaarde, of niet‑aaneengesloten rijen verwijderen. Hier zijn twee snelle patronen die de kop veilig houden. + +### 4.1 Rijen Verwijderen op Basis van Datafilter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Verwijderen met een Bereik + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Beide fragmenten respecteren de **protect header row**‑regel omdat de startindex nooit onder 1 daalt. + +--- + +## Stap 5: Veelvoorkomende Valkuilen & Hoe ze te Vermijden + +| Valkuil | Waarom het gebeurt | Oplossing | +|---------|--------------------|-----------| +| Per ongeluk de kop verwijderen | Gebruik van `0` als startindex | Begin altijd met `1` voor datarijen, of controleer eerst `table.ShowHeaders`. | +| `IndexOutOfRangeException` wanneer het blad geen tabellen heeft | Aannemen dat er een tabel bestaat | Controleer `worksheet.ListObjects.Count > 0` voordat je `[0]` benadert. | +| Wijzigingen niet opgeslagen | Vergeten `Save` aan te roepen | Roep `workbook.Save` aan na wijzigingen. | +| Rijen in het midden verwijderen verschuift indices, waardoor overslaan ontstaat | Voorwaartse iteratie tijdens het verwijderen | Itereer **achterwaarts** of verzamel eerst de te verwijderen rijen. | + +--- + +## Stap 6: Alles Samenvoegen – Volledig Werkend Voorbeeld + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Voer dit programma uit, open `Result.xlsx`, en je zult zien dat de kop onaangeroerd blijft terwijl de geselecteerde rijen verdwenen zijn. Dat is de **complete, zelf‑bevatte oplossing** voor **aspose cells delete rows** zonder de kop op te offeren. + +--- + +## Conclusie + +We hebben zojuist laten zien hoe je **aspose cells delete rows** kunt uitvoeren terwijl je **protecting the header row**, hoe je **retrieve first table** kunt **ophalen**, en verschillende manieren om **delete excel table rows** veilig uit te voeren. De belangrijkste inzichten zijn: + +- Begin altijd met index 1 bij het verwijderen om de kop levend te houden. +- Gebruik `try/catch` om de ingebouwde beschermingsuitzondering van Aspose af te handelen. +- Controleer het bestaan van de tabel vóór bewerking, en itereer achterwaarts bij het conditioneel verwijderen van rijen. + +Klaar om een stap hoger te gaan? Probeer deze aanpak te combineren met de styling‑API's van **Aspose Cells** om te verwijderen rijen te markeren vóór het verwijderen, of automatiseer het proces over meerdere werkbladen. De mogelijkheden zijn eindeloos, en nu heb je een betrouwbaar patroon om op voort te bouwen. + +Als je deze tutorial nuttig vond, geef hem een duim‑omhoog, deel hem met teamgenoten, of laat een reactie achter met je eigen edge‑case oplossingen. Veel plezier met coderen! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/dutch/net/saving-and-exporting-excel-files-with-options/_index.md index 4590f82a71..0716a0da2a 100644 --- a/cells/dutch/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/dutch/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Leer hoe u waarschuwingen kunt verwerken tijdens het laden van Excel-bestanden i Leer hoe u documenteigenschappen zoals versie, auteur en titel programmatisch in een Excel-bestand kunt opgeven met behulp van Aspose.Cells voor .NET, met stapsgewijze instructies. ### [Het bijsnijden van voorlopende lege rijen en kolommen tijdens het exporteren](./trimming-leading-blank-rows-and-columns/) Stroomlijn je CSV-exporten door voorlooplege rijen en kolommen te verwijderen met Aspose.Cells voor .NET. Schone gegevens zijn slechts een paar stappen verwijderd. +### [Hoe een Werkmap opslaan in C# – Complete Excel Automatiseringsgids](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Leer hoe u een werkmap opslaat in C# met een volledige gids voor Excel-automatisering. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/dutch/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..5c26bfac7b --- /dev/null +++ b/cells/dutch/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Hoe een werkmap op te slaan in C# met Aspose.Cells—stapsgewijze handleiding + die behandelt hoe je Excel laadt, een blad maakt, een blad hergebruikt en een rapport + genereert. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: nl +og_description: Hoe een werkmap opslaan in C# met Aspose.Cells. Leer hoe je Excel + laadt, een blad maakt, een blad hergebruikt en een rapport genereert in één tutorial. +og_title: Hoe een werkmap opslaan in C# – Complete gids voor Excel‑automatisering +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Hoe een werkmap opslaan in C# – Complete gids voor Excel-automatisering +url: /nl/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een Werkmap op te slaan in C# – Complete Excel Automatiseringsgids + +Heb je je ooit afgevraagd **hoe een werkmap op te slaan** in C# nadat je wat data hebt verwerkt? Je bent niet de enige. Veel ontwikkelaars komen vast te zitten wanneer het rapport er perfect uitziet op het scherm, maar weigert zichzelf terug naar de schijf te schrijven. In deze tutorial lopen we een volledig voorbeeld door dat niet alleen laat zien **hoe een werkmap op te slaan**, maar ook **hoe Excel te laden**, **hoe een blad te maken**, **hoe een blad opnieuw te gebruiken**, en **hoe een rapport te genereren**—alles met Aspose.Cells. + +Beschouw het als een koffiepauze‑gesprek waarin ik de code van mijn laptop haal en elke regel uitleg. Aan het einde heb je een uitvoerbaar programma dat een sjabloon laadt, data injecteert via SmartMarker, een bestaand detailblad hergebruikt, en tenslotte het bestand naar je map schrijft. Geen mysterieën, alleen duidelijke stappen die je kunt copy‑pasten. + +## Wat je nodig hebt + +- **Aspose.Cells for .NET** (nieuwste versie vanaf 2026). Je kunt het ophalen via NuGet met `Install-Package Aspose.Cells`. +- Een .NET‑ontwikkelomgeving (Visual Studio, Rider, of VS Code met de C#‑extensie werkt prima). +- Een basis‑Excel‑sjabloonbestand genaamd `MasterTemplate.xlsx` geplaatst in een map die jij beheert. +- Minimale C#‑kennis—als je eerder een `Console.WriteLine` hebt geschreven, ben je klaar om te gaan. + +> **Pro tip:** Houd je sjabloon in een aparte *Resources*‑map en markeer deze als “Copy if newer” zodat het pad consistent blijft tussen builds. + +Laten we nu in de code duiken. + +## Stap 1: Hoe Excel te Laden – Open het Sjabloon‑Werkboek + +Het eerste wat je moet doen is het werkboek in het geheugen krijgen. Aspose.Cells maakt hiervan een één‑regelige operatie, maar het begrijpen van het waarom helpt later bij het oplossen van problemen. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Waarom dit belangrijk is:** Het laden van het werkboek geeft je toegang tot elk werkblad, elke stijl en elk benoemd bereik in het sjabloon. Als het bestand niet wordt gevonden, gooit Aspose een `FileNotFoundException`, dus controleer het pad dubbel. +- **Randgeval:** Als het sjabloon met een wachtwoord is beveiligd, geef dan het wachtwoord door aan de `Workbook`‑constructor: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Stap 2: Hoe een Blad Opnieuw te Gebruiken – Configureer SmartMarker‑Opties + +SmartMarker kan automatisch een nieuw detailblad aanmaken, maar je hebt misschien al een blad met de naam **Detail**. Om een conflict te voorkomen vertellen we de processor die naam opnieuw te gebruiken. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Waarom dit belangrijk is:** Zonder deze optie zou Aspose een numeriek achtervoegsel toevoegen (bijv. “Detail1”), wat downstream‑macro’s of formules die een vaste bladnaam verwachten, kan breken. +- **Wat als het blad niet bestaat?** Aspose maakt het voor je aan—dus dezelfde code werkt ongeacht of het blad aanwezig is of niet. + +## Stap 3: Hoe een Blad te Maken – Bereid de Gegevensbron voor + +Hoewel we hier geen blad handmatig toevoegen, bepaalt de data die je aan SmartMarker doorgeeft of er een nieuw blad wordt aangemaakt. Laten we een eenvoudig anoniem object bouwen dat een bestellijst nabootst. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Waarom dit belangrijk is:** SmartMarker scant het sjabloon op markers zoals `&=Header` en `&=Items.Id`. De structuur van `orderData` moet exact overeenkomen met die markers, anders slaat de processor ze stilletjes over. +- **Variatie:** Als je data uit een database haalt, vervang dan het anonieme type door een lijst van DTO’s of een `DataTable`. De processor kan beide aan. + +## Stap 4: Hoe een Rapport te Genereren – Verwerk de SmartMarker + +Nu binden we de data aan het sjabloon. De processor doorloopt het eerste werkblad, vervangt markers, en bouwt het detailblad. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Waarom dit belangrijk is:** Deze enkele regel doet het zware werk—het vullen van de header, itereren over `Items`, en respecteren van de `DetailSheetNewName` die we eerder hebben ingesteld. +- **Veelgestelde vraag:** *Wat als ik meerdere werkbladen met markers heb?* Loop door elk werkblad en roep `SmartMarkerProcessor.Process` afzonderlijk aan. + +## Stap 5: Hoe een Werkmap op te Slaan – Bewaar het Resulterende Bestand + +Tot slot schrijven we het aangepaste werkboek terug naar de schijf. Dit is het moment waarop **hoe een werkmap op te slaan** concreet wordt. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Waarom dit belangrijk is:** De `Save`‑methode ondersteunt vele formaten (`.xlsx`, `.xls`, `.csv`, `.pdf`, enz.). Standaard schrijft hij een Excel‑bestand, maar je kunt een `SaveOptions`‑object doorgeven om de output te wijzigen. +- **Randgeval:** Als het doelbestand geopend is in Excel, gooit `Save` een `IOException`. Zorg dat je alle instanties sluit of gebruik een unieke bestandsnaam per uitvoering. + +![How to Save Workbook in C# example](/images/how-to-save-workbook-csharp.png "How to Save Workbook in C# – visual overview of the process") + +### Volledig Werkend Voorbeeld + +Alles bij elkaar, hier is een zelfstandige console‑applicatie die je kunt compileren en uitvoeren: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Verwachte output:** Na het uitvoeren vind je `SmartMarkerWithDupDetail.xlsx` in `YOUR_DIRECTORY`. Open het bestand en je zou moeten zien: + +- De oorspronkelijke header gevuld met “Orders”. +- Een nieuw (of hergebruikt) blad met de naam **Detail** dat twee rijen bevat: `Id=1, Qty=5` en `Id=2, Qty=3`. + +Als het **Detail**‑blad al bestond, wordt de inhoud overschreven met de nieuwe data—geen extra bladen die je bestand rommelig maken. + +## Veelgestelde Vragen (FAQ) + +| Vraag | Antwoord | +|----------|--------| +| *Kan ik opslaan als PDF in plaats van XLSX?* | Ja. Vervang `workbook.Save("file.xlsx")` door `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Wat als mijn sjabloon meerdere SmartMarker‑secties bevat?* | Roep `SmartMarkerProcessor.Process` aan voor elk werkblad dat markers bevat, of geef een collectie van data‑objecten door die bij elke sectie passen. | +| *Is er een manier om data toe te voegen in plaats van het Detail‑blad te overschrijven?* | Gebruik `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (beschikbaar in nieuwere Aspose‑versies). | +| *Moet ik het Workbook‑object vrijgeven?* | De `Workbook`‑klasse implementeert `IDisposable`. Plaats het in een `using`‑blok voor een nette resource‑afhandeling. | + +## Conclusie + +We hebben zojuist **hoe een werkmap op te slaan** in C# van begin tot eind behandeld, waarbij we de volledige pijplijn demonstreren: **hoe Excel te laden**, **hoe een blad te maken** (impliciet via SmartMarker), **hoe een blad opnieuw te gebruiken**, en **hoe een rapport te genereren**. De code is klaar om in elk .NET‑project te worden geplaatst, en de uitleg biedt voldoende context om het aan te passen aan complexere scenario’s—zoals rapporten met meerdere bladen, voorwaardelijke opmaak, of export naar PDF. + +Klaar voor de volgende uitdaging? Probeer een grafiek toe te voegen die de orderhoeveelheden visualiseert, of schakel over naar CSV voor downstream‑verwerking. Dezelfde principes—laden, verwerken en opslaan—blijven van toepassing, zodat je dit patroon keer op keer kunt hergebruiken bij diverse rapportagetaken. + +Als je ergens vastloopt of ideeën hebt voor uitbreidingen, laat dan gerust een reactie achter. Veel plezier met coderen, en geniet van de soepele ervaring om eindelijk **een werkmap op te slaan** precies zoals jij dat wilt! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/smart-markers-dynamic-data/_index.md b/cells/dutch/net/smart-markers-dynamic-data/_index.md index 267b7466f6..758690f03d 100644 --- a/cells/dutch/net/smart-markers-dynamic-data/_index.md +++ b/cells/dutch/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Ontdek de kracht van Aspose.Cells met deze stapsgewijze zelfstudie over het gebr Benut de mogelijkheden van Excel-rapportage met Aspose.Cells door geneste objecten moeiteloos te verwerken met behulp van slimme markeringen in een stapsgewijze handleiding. ### [Implementeer variabelenarray met slimme markers Aspose.Cells](./variable-array-smart-markers/) Ontgrendel de kracht van Aspose.Cells. Leer stap voor stap hoe u variabele arrays implementeert met Smart Markers voor naadloze Excel-rapportgeneratie. +### [Hoe Excel-rapport te genereren in C# – Volledige gids met SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Leer stap voor stap hoe u met Aspose.Cells en SmartMarker een volledig Excel-rapport genereert in C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/dutch/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..d400177b2c --- /dev/null +++ b/cells/dutch/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-03-22 +description: Hoe een Excel‑rapport genereren in C# met een master‑detail‑template. + Leer hoe je een Excel‑template in C# snel kunt vullen, met SmartMarker voor herhaalbare + bladen. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: nl +og_description: Hoe een Excel‑rapport te genereren in C# met een herbruikbare sjabloon. + Deze stapsgewijze handleiding laat zien hoe je een Excel‑sjabloon in C# vult met + master‑detailgegevens. +og_title: Hoe een Excel‑rapport genereren in C# – Complete SmartMarker‑tutorial +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Hoe een Excel‑rapport te genereren in C# – Volledige gids met SmartMarker +url: /nl/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een Excel-rapport genereren in C# – Complete gids met SmartMarker + +Heb je je ooit afgevraagd **hoe je een Excel-rapport** in C# kunt genereren zonder eindeloze cel‑voor‑cel code te schrijven? Je bent niet de enige. De meeste ontwikkelaars lopen tegen een muur aan wanneer ze een gepolijst, multi‑sheet rapport nodig hebben dat master‑detail relaties weergeeft—denk aan bestellingen en regelitems—maar ze willen het wiel niet telkens opnieuw uitvinden. + +Het goede nieuws? Met een kant‑klaar Excel‑sjabloon en de **SmartMarker**‑engine van Aspose.Cells kun je **populate Excel template C#** in slechts een paar regels. In deze tutorial lopen we een real‑world scenario door, leggen we uit waarom elke stap belangrijk is, en geven we je een compleet, uitvoerbaar voorbeeld dat je vandaag kunt copy‑pasten. + +> **Wat je krijgt:** een master‑detail Excel‑rapport waarbij elke bestelling zijn eigen werkblad krijgt, allemaal aangestuurd door eenvoudige C#‑objecten. Geen handmatige loops over cellen, geen fragiele formules—alleen schone, onderhoudbare code. + +--- + +## Vereisten + +- **.NET 6.0** (of later) geïnstalleerd – de code richt zich op .NET 6 maar werkt ook op .NET Framework 4.7+. +- **Aspose.Cells for .NET** NuGet‑pakket (`Install-Package Aspose.Cells`) – dit levert de `Workbook`, `SmartMarkerProcessor` en gerelateerde klassen. +- Een Excel‑bestand genaamd **MasterDetailTemplate.xlsx** geplaatst in `YOUR_DIRECTORY`. Het moet een SmartMarker‑blok bevatten zoals `{{Orders.OrderId}}` in het eerste blad en een genest blok `{{Orders.Items.Prod}}` voor de regelitems. +- Een basisbegrip van C#‑anonieme types – we gebruiken ze om bestellingen en items te modelleren. + +Als een van deze onbekend klinkt, geen zorgen. We zullen later alternatieven (bijv. EPPlus) noemen, maar het kernconcept blijft hetzelfde. + +## Stap 1: Laad het Excel‑sjabloon dat SmartMarker‑blokken bevat + +Het eerste wat we doen is het sjabloonbestand openen. Beschouw het sjabloon als een skelet; SmartMarker zal later met echte data vullen. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Waarom dit belangrijk is:** Door de lay-out (het sjabloon) te scheiden van de data (de C#‑objecten), houd je zowel ontwerpers als ontwikkelaars tevreden. Ontwerpers kunnen lettertypen, kleuren of formules aanpassen zonder code aan te raken. + +## Stap 2: Bouw de Master‑Detail gegevensbron + +Vervolgens maken we de data die het sjabloon zal vullen. Voor een typisch bestellingsrapport heb je een collectie bestellingen, elk met zijn eigen collectie items. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Gebruik sterk getypeerde klassen in plaats van anonieme types als je ze over meerdere rapporten wilt hergebruiken. De anonieme aanpak houdt het voorbeeld beknopt. + +**Waarom dit belangrijk is:** SmartMarker werkt door eigenschapsnamen (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) te matchen met de placeholders in het sjabloon. De hiërarchie moet exact overeenkomen, anders slaat de engine die secties over. + +## Stap 3: Laat SmartMarker een nieuw blad maken voor elk master‑record + +Standaard schrijft SmartMarker alle rijen naar één blad. We willen elke bestelling op een eigen werkblad, wat perfect is voor later afdrukken of e‑mailen van per‑bestelling PDF's. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Waarom dit belangrijk is:** `EnableRepeatingSheet` elimineert de noodzaak voor handmatig bladklonen. De engine kopieert het originele blad, injecteert de bestellingsdata en hernoemt het blad automatisch (meestal met de waarde van de eerste kolom). + +## Stap 4: Verwerk het sjabloon met je data + +Nu koppelen we alles samen. De `SmartMarkerProcessor` doorloopt de workbook, vervangt tags en maakt nieuwe bladen aan zoals aangegeven. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Waarom dit belangrijk is:** Deze enkele regel doet het zware werk—het parseren van het sjabloon, itereren over collecties en het verwerken van geneste tabellen. Het is de kern van **populate Excel template C#** zonder handmatige loops. + +## Stap 5: Sla het voltooide rapport op + +Tot slot schrijf je de gevulde workbook naar schijf. Je kunt het ook direct streamen naar een HTTP‑response voor web‑apps. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Waarom dit belangrijk is:** Opslaan naar een bestand geeft je een tastbaar artefact dat je kunt openen in Excel, delen met belanghebbenden, of gebruiken in downstream processen zoals PDF‑conversie. + +## Volledig werkend voorbeeld (klaar om te copy‑pasten) + +Hieronder staat het volledige programma, inclusief `using`‑directieven en een `Main`‑methode. Plaats het in een console‑app, pas de bestands‑paden aan, en voer uit. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Verwachte output + +Wanneer je `MasterDetailResult.xlsx` opent, zie je: + +- **Blad “Order_1”** – bevat de header van Order 1 en twee rijen voor producten A en B. +- **Blad “Order_2”** – bevat de header van Order 2 en één rij voor product C. +- Alle formules, opmaak en grafieken van het originele sjabloon blijven behouden. + +![Excel-rapport met afzonderlijke bladen voor elke bestelling – voorbeeld van een gevulde workbook](/images/excel-report-example.png "Gegenereerd Excel-rapport met master‑detail data") + +*Afbeelding alt‑tekst: gegenereerd Excel‑rapport met afzonderlijke bladen voor elke bestelling, toont hoe je een Excel‑rapport genereert met C# en SmartMarker.* + +## Veelgestelde vragen & randgevallen + +### Wat als ik een statisch blad nodig heb (bijv. een samenvatting) naast de herhalende bladen? + +Stel `EnableRepeatingSheet = true` **alleen** in op het werkblad dat het master‑blok bevat. Andere bladen blijven onaangeroerd, zodat je een samenvattingspagina in het originele sjabloon kunt behouden. + +### Kan ik een DataTable gebruiken in plaats van anonieme objecten? + +Zeker. SmartMarker werkt met elk object dat `IEnumerable` implementeert. Vervang gewoon het anonieme type door een `DataTable` en zorg dat kolomnamen overeenkomen met de tags. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Hoe wijzig ik de naamgevingsconventie van de gegenereerde bladen? + +Implementeer een aangepaste `ISmartMarkerSheetNaming`‑interface (of bewerk `workbook.Worksheets` na verwerking). De meeste ontwikkelaars hernoemen simpelweg bladen op basis van een celwaarde: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Wat als mijn sjabloon een andere placeholder‑syntaxis gebruikt? + +SmartMarker staat aangepaste delimiters toe via `SmartMarkerOptions`. Bijvoorbeeld, om `<< >>` te gebruiken in plaats van `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## Tips voor het schalen van deze aanpak + +- **Cache het sjabloon** in het geheugen als je veel rapporten per request genereert; elke keer van schijf laden voegt latentie toe. +- **Combineer met PDF‑conversie** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) voor e‑mail‑vriendelijke uitvoer. +- **Parameteriseer de bestands‑paden** met configuratie‑bestanden of omgevingsvariabelen om de oplossing draagbaar te maken over dev, test en prod. +- **Unit‑test de datalaag** afzonderlijk; SmartMarker zelf is deterministisch, dus je hoeft alleen te verifiëren dat de data die je invoert overeenkomt met het verwachte schema. + +## Conclusie + +We hebben **hoe je een Excel‑rapport** in C# end‑to‑end kunt genereren behandeld, van het laden van een SmartMarker‑geactiveerd sjabloon tot het opslaan van een multi‑sheet workbook dat master‑detail relaties weergeeft. Door **populate Excel template C#** met slechts een paar regels code te gebruiken, vermijd je breekbare cel‑voor‑cel logica en geef je ontwerpers de vrijheid om het uiteindelijke uiterlijk vorm te geven. + +Vervolgens kun je verkennen: + +- Het gebruik van **populate Excel template C#** met grafieken die per blad automatisch updaten. +- Integratie van **excel smartmarker c#** met ASP.NET Core om rapporten direct naar browsers te streamen. +- Automatiseren van **c# excel automation** pipelines die data ophalen uit API's of databases. + +Probeer het, pas het sjabloon aan, en zie hoe snel je ruwe data kunt omzetten in een gepolijst Excel‑rapport. Heb je vragen of een cool use‑case? Laat een reactie achter—happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/dutch/net/tables-and-lists/_index.md b/cells/dutch/net/tables-and-lists/_index.md index 425cc06e90..bda40a1c5a 100644 --- a/cells/dutch/net/tables-and-lists/_index.md +++ b/cells/dutch/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Converteer tabellen eenvoudig naar bereiken in Excel met Aspose.Cells voor .NET, Ontdek de kracht van Aspose.Cells voor .NET. Leer tabellen lezen en schrijven met querygegevensbronnen in deze gedetailleerde stapsgewijze handleiding. ### [Opmerking van tabel of lijst in Excel instellen](./setting-comment-of-table-or-list/) Leer hoe u opmerkingen voor tabellen in Excel instelt met Aspose.Cells voor .NET met onze eenvoudige stapsgewijze handleiding. +### [Excel-tabel maken in C# – Stapsgewijze handleiding](./create-excel-table-in-c-step-by-step-guide/) +Leer hoe u met Aspose.Cells voor .NET een Excel‑tabel maakt in C# met duidelijke stap‑voor‑stap instructies. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/dutch/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/dutch/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..d54f47bdbe --- /dev/null +++ b/cells/dutch/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Maak snel een Excel‑tabel in C#. Leer hoe je een tabel toevoegt, het + tabelbereik definieert, de tabelkop verbergt en de tabelfilter uitschakelt met een + volledig codevoorbeeld. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: nl +og_description: Maak een Excel-tabel in C# met een duidelijk voorbeeld. Leer hoe je + een tabel toevoegt, het tabelbereik definieert, de tabelkop verbergt en het filter + uitschakelt in slechts een paar regels. +og_title: Excel‑tabel maken in C# – Complete programmeergids +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Maak een Excel‑tabel in C# – Stapsgewijze handleiding +url: /nl/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel‑tabel maken in C# – Stapsgewijze handleiding + +Heb je ooit **Excel‑tabel** programmatically moeten **maken** met C#? Het maken van een Excel‑tabel kan een eitje zijn als je de juiste stappen kent. In deze tutorial lopen we een volledig, uitvoerbaar voorbeeld door dat laat zien **hoe je een tabel toevoegt**, **hoe je een tabelbereik definieert**, **hoe je de tabelkop verbergt**, en zelfs **hoe je het tabelfilter uitschakelt** – alles zonder je IDE te verlaten. + +Als je ooit gefrustreerd bent geweest door de AutoFilter‑UI die verschijnt wanneer je dat niet wilt, ben je hier op het juiste adres. Aan het einde van deze gids heb je een kant‑klaar fragment dat een schoon werkboek maakt met de naam *TableNoFilter.xlsx* en begrijp je waarom elke regel belangrijk is. + +## Wat je gaat leren + +- Hoe je **Excel‑tabel** vanaf nul maakt met Aspose.Cells. +- De exacte syntaxis om **tabelbereik te definiëren** (A1:D5 in ons voorbeeld). +- Hoe je de koprij inschakelt zodat de ingebouwde filter‑UI verschijnt. +- De truc om **tabelkop te verbergen** en **tabelfilter uit te schakelen** wanneer je ze niet meer nodig hebt. +- Een **volledig, copy‑paste‑klaar C#‑programma** dat je vandaag nog kunt uitvoeren. + +### Vereisten + +- .NET 6.0 of hoger (de code werkt ook met .NET Framework 4.7+). +- Aspose.Cells voor .NET geïnstalleerd via NuGet (`Install-Package Aspose.Cells`). +- Basiskennis van C# en Visual Studio (of een andere IDE naar keuze). + +--- + +## Stap 1: Het project opzetten en namespaces importeren + +Voordat je **Excel‑tabel** kunt **maken**, heb je een console‑project nodig dat naar Aspose.Cells verwijst. Open een terminal en voer uit: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Open nu *Program.cs* en voeg de benodigde `using`‑statements toe: + +```csharp +using System; +using Aspose.Cells; +``` + +Deze imports geven je toegang tot de klassen `Workbook`, `Worksheet`, `CellArea` en `ListObject` die de rest van de tutorial aandrijven. + +## Stap 2: Een nieuw werkboek initialiseren en het eerste werkblad pakken + +Een nieuw werkboek maken is de eerste logische stap. Beschouw het werkboek als de container van het Excel‑bestand, en het werkblad als het individuele blad waarop we onze tabel plaatsen. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Waarom dit belangrijk is:** Een gloednieuw `Workbook` start met één leeg blad. Door `Worksheets[0]` te gebruiken, zorgen we ervoor dat we op het standaardblad werken zonder handmatig een blad te hoeven aanmaken. + +## Stap 3: Het tabelbereik definiëren (A1:D5) + +In Excel‑termen leeft een *tabel* binnen een rechthoekig blok cellen. De `CellArea`‑struct helpt ons dat blok precies te bepalen. Hier behandelen we **tabelbereik definiëren** voor de cellen A1 tot en met D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** Als je ooit een dynamisch bereik nodig hebt, kun je `endRow` en `endColumn` berekenen op basis van de lengte van de data. De nul‑gebaseerde indexering is een veelvoorkomende bron van off‑by‑one‑fouten, dus controleer je getallen goed. + +## Stap 4: De tabel toevoegen en de koprij inschakelen + +Nu volgt het hart van de tutorial: **hoe je een tabel toevoegt** aan het werkblad. De `ListObjects`‑collectie beheert tabellen, en het instellen van `ShowHeaders = true` injecteert automatisch de AutoFilter‑UI. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Uitleg:** +> - `Add(tableRange, true)` maakt een nieuw `ListObject` (d.w.z. een Excel‑tabel) binnen het opgegeven bereik. +> - De `true`‑vlag vertelt Aspose.Cells dat de eerste rij van het bereik als kop moet worden behandeld. +> - Het instellen van `ShowHeaders` op `true` maakt de kop zichtbaar en activeert de ingebouwde filter‑UI. + +Op dit moment, als je het gegenereerde werkboek opent, zie je een mooi opgemaakte tabel met filterpijltjes in elke kolomkop. + +## Stap 5: De koprij verbergen en de AutoFilter uitschakelen + +Soms wil je de data zonder de UI‑rommel. Misschien exporteer je een strak rapport waarin filters overbodig zijn. Hier is de techniek om **tabelkop te verbergen** en **tabelfilter uit te schakelen**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Waarom je dit zou doen:** +> - `ShowHeaders = false` verwijdert de zichtbare koprij, waardoor de tabel een eenvoudige datablok wordt. +> - `AutoFilter = null` wist het verborgen filterobject, zodat er geen restfilterlogica overblijft. Dit is wat we bedoelen met **tabelfilter uitschakelen**. + +## Stap 6: Het werkboek opslaan op schijf + +Tot slot schrijven we het bestand naar een locatie naar keuze. Vervang `"YOUR_DIRECTORY"` door een geldig pad op jouw machine. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Wanneer je het programma uitvoert, zou je het volgende moeten zien: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Het openen van het bestand toont een blad met de datablok (geen kop, geen filterpijltjes). Dat is de volledige cyclus – van **Excel‑tabel maken** tot **tabelfilter uitschakelen**. + +--- + +## Volledig werkend voorbeeld (Klaar om te copy‑pasten) + +Hieronder staat het volledige programma, klaar om te compileren. Vervang alleen de placeholder‑directory door een geldig pad. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Verwacht resultaat:** Een bestand met de naam *TableNoFilter.xlsx* dat een eenvoudige datarange A1:D5 bevat zonder zichtbare koprij en zonder filter‑dropdowns. + +--- + +## Veelgestelde vragen & randgevallen + +### Wat als ik meerdere tabellen in hetzelfde werkblad nodig heb? + +Herhaal simpelweg **Stap 3** met een nieuwe `CellArea` en een nieuw `ListObject`. Elke tabel behoudt zijn eigen kop‑ en filterinstellingen, zodat je er één kunt verbergen en een andere zichtbaar kunt laten. + +### Kan ik de tabel stylen (banded rows, kleuren) voordat ik de kop verberg? + +Zeker. De `ListObject` biedt een `TableStyleType`‑eigenschap. Bijvoorbeeld: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Je kunt de stijl **voor** het verbergen van de kop toepassen; de visuele opmaak blijft behouden. + +### Wat als ik de kop wil behouden maar alleen de filterpijltjes wil verbergen? + +Stel `ShowHeaders = true` (behouw de rij) en wis vervolgens het filter: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Dat voldoet aan de eis **tabelfilter uitschakelen** zonder de kolomlabels te verliezen. + +### Werkt dit alleen met .xlsx‑bestanden? + +Aspose.Cells detecteert automatisch het formaat op basis van de bestandsextensie die je aan `Save` doorgeeft. Je kunt ook exporteren naar `.xls`, `.csv` of zelfs `.pdf` door een andere extensie te gebruiken. + +--- + +## Conclusie + +We hebben zojuist alles behandeld wat je nodig hebt om **Excel‑tabel** in C# te **maken** met Aspose.Cells, van **tabelbereik definiëren** tot **tabelkop verbergen** en **tabelfilter uitschakelen**. De code is kort, duidelijk en klaar voor productie. + +Vervolgens kun je onderzoeken **hoe je een tabel toevoegt** met dynamische data, aangepaste stijlen toepast, of hetzelfde werkboek naar PDF exporteert. Elk van die onderwerpen bouwt voort op de basis die je nu beheerst, dus experimenteer gerust en pas het fragment aan jouw eigen projecten aan. + +Heb je een eigen twist die je wilt delen? Laat een reactie achter hieronder, en happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/converting-excel-files-to-other-formats/_index.md b/cells/english/net/converting-excel-files-to-other-formats/_index.md index a51db79223..0df6620711 100644 --- a/cells/english/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/english/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Learn how to convert Excel files to PDF/A-1a for archival purposes using Aspose. Learn how to convert JSON to CSV programmatically in .NET using Aspose.Cells. Follow our step-by-step guide to ensure seamless data transformation. ### [Converting Excel File to PPTX Programmatically in .NET](./converting-excel-file-to-pptx/) Learn how to convert an Excel file to a PowerPoint presentation (PPTX) programmatically using Aspose.Cells for .NET with this step-by-step guide. +### [Export Excel to PowerPoint – Complete C# Guide](./export-excel-to-powerpoint-complete-c-guide/) +Learn how to export Excel worksheets to PowerPoint presentations using Aspose.Cells for .NET with a complete C# step-by-step guide. +### [Set Print Area in Excel and Export to PowerPoint – Step‑by‑Step Guide](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Learn how to set the print area in Excel and export the sheet to PowerPoint using Aspose.Cells for .NET in this step-by-step guide. ### [Specifying HTML CrossType in Output HTML Programmatically in .NET](./specifying-html-crosstype-in-output-html/) Learn how to specify HTML CrossType in Aspose.Cells for .NET. Follow our step-by-step tutorial to convert Excel files to HTML with precision. ### [Reading Numbers Spreadsheet Programmatically in .NET](./reading-numbers-spreadsheet/) @@ -73,4 +77,4 @@ Learn to track TIFF conversion progress programmatically using Aspose.Cells for {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/english/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..03ebe0cf3b --- /dev/null +++ b/cells/english/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-22 +description: Learn how to export Excel to PowerPoint, set print area Excel, and save + Excel as PPTX with editable charts and OLE objects in just a few steps. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: en +og_description: Export Excel to PowerPoint quickly. This tutorial shows how to set + print area Excel and save Excel as PPTX with editable charts and OLE objects. +og_title: Export Excel to PowerPoint – Complete C# Guide +tags: +- Aspose.Cells +- C# +- Office Automation +title: Export Excel to PowerPoint – Complete C# Guide +url: /net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Export Excel to PowerPoint – Complete C# Guide + +Need to **export Excel to PowerPoint**? You're in the right place. Whether you’re building a weekly sales deck or automating a reporting pipeline, turning an Excel worksheet into a PowerPoint slide deck can save you hours of copy‑and‑paste work. + +In this tutorial we’ll walk through a hands‑on example that not only **export excel to powerpoint**, but also shows you how to **set print area Excel** and **save excel as pptx** so the resulting slides keep charts and OLE objects fully editable. By the end you’ll have a ready‑to‑run C# program that produces a professional‑looking `.pptx` file with zero manual tinkering. + +## What You’ll Need + +- **.NET 6+** (any recent .NET runtime works; the code uses C# 10 syntax) +- **Aspose.Cells for .NET** – the library that powers the export. You can grab it from NuGet (`Install-Package Aspose.Cells`). +- An Excel workbook that contains at least one chart and/or an OLE object (the sample file `ChartAndOle.xlsx` is used in the code). +- A favorite IDE (Visual Studio, Rider, or VS Code – whatever you prefer). + +That’s it. No COM interop, no Office installation required. + +> **Why bother with a library?** +> The built‑in Office Interop is fragile, needs Office on the server, and often produces rasterized images when you really want vector‑based, editable shapes. Aspose.Cells handles the heavy lifting and keeps everything editable in PowerPoint. + +--- + +## Step 1: Load the Excel Workbook + +First we bring the source file into memory. The `Workbook` class abstracts the entire Excel file, giving us access to worksheets, charts, and OLE objects. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Why this matters:** Loading the workbook is the foundation. If the path is wrong or the file is corrupted, the rest of the pipeline never runs. The `try…catch` block gives you a friendly error instead of a crash. + +--- + +## Step 2: Set the Print Area in Excel + +Before exporting, you usually want to limit the output to a specific range. This is where **set print area excel** comes into play. By defining a print area, you tell Aspose.Cells exactly which cells (and associated objects) should appear on the slide. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro tip:** If you have multiple worksheets, repeat the `PrintArea` assignment for each one you plan to export. Leaving the print area unset will export the entire sheet, which can bloat the PowerPoint file. + +--- + +## Step 3: Configure Export Options – Keep Charts & OLE Editable + +Aspose.Cells offers a rich `ImageOrPrintOptions` object. By toggling `ExportChartObjects` and `ExportOleObjects` we preserve the vector nature of charts and the live‑editability of OLE objects (like embedded Word docs or PDFs). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**What happens under the hood?** +When `ExportChartObjects` is `true`, Aspose converts the chart into a native PowerPoint chart shape, preserving series, axes, and formatting. With `ExportOleObjects` enabled, embedded objects are inserted as OLE frames, so a double‑click in PowerPoint opens the original application (Word, Excel, etc.) for editing. + +--- + +## Step 4: Save the Worksheet as an Editable PowerPoint File + +Now we tie everything together. The `Save` method writes the `.pptx` file using the options we configured. The result is a slide deck where each worksheet becomes a slide (or a series of slides if the print area spans multiple pages). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Expected Result + +- **File location:** `C:\MyProjects\EditableChartOle.pptx` +- **Content:** + - A slide showing the range `A1:H30` exactly as it appears in Excel. + - All charts are PowerPoint chart objects—click a bar and edit the data. + - OLE objects (e.g., an embedded Word doc) can be opened and edited directly from the slide. + +If you open the PPTX in PowerPoint, you should see a clean slide with fully editable components—no rasterized screenshots. + +--- + +## Edge Cases & Variations + +### Multiple Worksheets → Multiple Slides +If you want each worksheet to become its own slide, simply loop through `workbook.Worksheets` and call `Save` with a `SheetToImageOptions` that targets a specific sheet index. Aspose will automatically generate a new slide for each iteration. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Large Ranges & Performance +Exporting a massive print area (e.g., `A1:Z1000`) can increase memory usage. To mitigate, consider: +- Splitting the range into smaller chunks and exporting them as separate slides. +- Using `WorkbookSettings` to increase the `MemorySetting` if you hit `OutOfMemoryException`. + +### Compatibility Concerns +The generated PPTX works with PowerPoint 2016 and newer. Older versions may still open the file but could lose some advanced chart features. Always test on the target Office version if you’re distributing the deck widely. + +--- + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Replace the hard‑coded paths with configuration values or command‑line arguments for a more flexible tool. + +--- + +## Frequently Asked Questions + +**Q: Can I export only a chart without the surrounding cells?** +A: Yes. Use `ExportChartObjects` alone and set the print area to the chart’s bounding range. The chart will appear centered on the slide. + +**Q: What if my workbook contains macros?** +A: Aspose.Cells ignores VBA macros during export. If you need macro functionality in PowerPoint, you’ll have to recreate it using PowerPoint VBA or add‑ins. + +**Q: Does this work on Linux/macOS?** +A: Absolutely. Aspose.Cells is a pure .NET library; as long as you have the .NET runtime, the code runs cross‑platform. + +--- + +## Conclusion + +You’ve just learned how to **export Excel to PowerPoint** while precisely **set print area excel** and **save excel as pptx** with fully editable charts and OLE objects. The key steps are loading the workbook, defining the print area, configuring `ImageOrPrintOptions`, and finally saving the PPTX. + +From here you can explore: +- Exporting multiple worksheets into a single deck. +- Adding custom slide titles or notes programmatically. +- Converting the PPTX to PDF for distribution (use `SaveFormat.Pdf`). + +Give the code a spin, tweak the print area, and watch your Excel data magically appear in PowerPoint—no manual copy‑pasting required. If you run into hiccups, check the Aspose.Cells documentation or drop a comment below. Happy coding! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/english/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..daecd6c4ee --- /dev/null +++ b/cells/english/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Set print area in Excel and convert excel to powerpoint with editable + shapes. Learn how to repeat title row, create powerpoint from excel and export excel + to pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: en +og_description: Set print area in Excel and convert it to a PowerPoint slide with + editable shapes. Follow this complete guide to repeat title row and export excel + to pptx. +og_title: Set Print Area in Excel – Export to PowerPoint Tutorial +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Set Print Area in Excel and Export to PowerPoint – Step‑by‑Step Guide +url: /net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Set Print Area in Excel and Export to PowerPoint – Complete Programming Tutorial + +Ever needed to **set print area** in an Excel worksheet and then turn that slice into a PowerPoint slide? You're not the only one. In many reporting pipelines the same data that prints nicely also needs to appear in a presentation, often with the first row repeated as a title. The good news? With a few lines of C# you can **convert excel to powerpoint**, keep all text boxes editable, and even **repeat title row** automatically. + +In this guide we’ll walk through everything you need to know: from configuring the print area to creating a PPTX file that you can edit right in PowerPoint. By the end you’ll be able to **create powerpoint from excel**, export the result as **export excel to pptx**, and reuse the same code in any .NET project. No magic, just clear steps and a full, runnable example. + +## What You’ll Need + +Before we dive in, make sure you have: + +- **.NET 6.0** or later (the API works with .NET Framework as well) +- **Aspose.Cells for .NET** (the library that provides `Workbook`, `ImageOrPrintOptions`, etc.) +- A basic C# IDE (Visual Studio, Rider, or VS Code with the C# extension) +- An Excel file (`input.xlsx`) that contains the data you want to export + +That’s it—no extra NuGet packages beyond Aspose.Cells. If you haven’t added the library yet, run: + +```bash +dotnet add package Aspose.Cells +``` + +Now we’re ready to roll. + +## Step 1: Load the Workbook – the Starting Point for Export + +The first thing you have to do is load the workbook that holds the sheet you want to turn into a slide. Think of the workbook as the source document; without it nothing else matters. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Why this matters:** Loading the workbook gives you access to the worksheet collection, page‑setup options, and the export engine. If you skip this step you won’t be able to set the **print area** or repeat any rows. + +> **Pro tip:** Use an absolute path while testing, then switch to a relative one or configuration‑based path for production. + +## Step 2: Configure Export Options – Keep Text Boxes and Shapes Editable + +When you export to PowerPoint you probably want the resulting slide to be editable. Aspose.Cells lets you control that with `ImageOrPrintOptions`. Setting `ExportTextBoxes` and `ExportShapeObjects` to `true` tells the library to preserve those objects as native PowerPoint elements instead of flattening them into an image. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Why this matters:** If you ever needed to **convert excel to powerpoint** and then tweak the slide manually, this setting saves you from re‑creating text boxes from scratch. It also ensures that any shapes (like arrows or charts) stay as vector objects you can resize. + +## Step 3: Set Print Area and Repeat the Title Row + +Now we get to the heart of the tutorial: **set print area** and make the first row repeat on every printed page (or, in our case, on the exported slide). The print area tells Excel which cells to consider for printing—or exporting in our scenario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Why this matters:** By limiting the export to `A1:G20` you avoid pulling in massive empty ranges, which speeds up the conversion and keeps the slide tidy. The `PrintTitleRows` line makes the first row act like a header—exactly what you want when you **repeat title row** in a presentation. + +> **Edge case:** If your data starts on row 2, adjust the range accordingly (e.g., `PrintTitleRows = "$2:$2"`). + +## Step 4: Save the Worksheet as a PowerPoint File + +Finally, we write the slide to disk. The `Save` method takes the target filename and the options we configured earlier. The result is a PPTX file with editable text boxes and shapes, ready to be opened in PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**What you’ll see:** Open `SheetWithEditableShapes.pptx` in PowerPoint. The first row appears as a title, all cells from `A1:G20` are rendered, and any shapes you added in Excel are still movable and editable. No rasterized images—just native PowerPoint objects. + +## Full Working Example – All Steps Combined + +Below is the complete, copy‑paste‑ready program. Run it as a console app or embed it in any larger solution. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Expected output:** After running the program, the console prints the success message, and the PPTX file appears at the specified location. Opening the file shows a single slide with the selected range, editable text boxes, and any original shapes. + +## Common Questions & Gotchas + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Yes. Loop through `workbook.Worksheets` and repeat the same steps for each sheet, changing the output filename each time. | +| **What if I need to export more than one slide?** | Call `workbook.Save` multiple times with different `ImageOrPrintOptions` objects, each configured with a different `PageSetup` if needed. | +| **Can I change the slide size?** | Use `exportOptions.ImageFormat` to set DPI, or adjust `sheet.PageSetup.PaperSize` before saving. | +| **Is Aspose.Cells free?** | It offers a free evaluation with watermarks. For production, a license is required. | +| **What about Excel formulas?** | The exported values are the **calculated results** at the time of export. If you need live formulas in PowerPoint, you’ll need a different approach. | + +## Tips for a Smooth Workflow + +- **Pro tip:** Set `Workbook.Settings.CalcMode = CalculationModeType.Automatic` before export to guarantee all formulas are up‑to‑date. +- **Watch out for:** Very large ranges can cause memory pressure. Trim the print area to the smallest necessary range. +- **Performance tip:** Reuse a single `ImageOrPrintOptions` instance if you’re exporting many sheets; creating a new one each time adds overhead. +- **Version note:** The code above targets Aspose.Cells 23.10 (released November 2023). Later versions keep the same API, but always double‑check the release notes for breaking changes. + +## Conclusion + +We’ve covered how to **set print area** in an Excel worksheet, repeat the first row as a title, and then **export excel to pptx** while preserving editable text boxes and shapes. In short, you now know a reliable way to **convert excel to powerpoint**, **repeat title row**, and **create powerpoint from excel** with just a few lines of C#. + +Ready for the next step? Try automating a batch conversion of dozens of reports, or add custom slide layouts using the PowerPoint SDK after the export. The sky’s the limit—experiment, break things, and enjoy the power of programmatic document generation. + +If you found this tutorial useful, give it a share, drop a comment with your own tweaks, or explore our other guides on **export excel to pptx** and related automation topics. Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/csv-file-handling/_index.md b/cells/english/net/csv-file-handling/_index.md index 0b9e140afc..eebf081781 100644 --- a/cells/english/net/csv-file-handling/_index.md +++ b/cells/english/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ For additional insights, feel free to check our detailed tutorials on [opening C Learn how to open CSV files using Aspose.Cells for .NET with our comprehensive, step-by-step guide. Master data manipulation. ### [Opening CSV Files with Preferred Parser](./csv-file-opening-csv-files-with-preferred-parser/) Learn how to open and parse CSV files with custom parsers in Aspose.Cells for .NET. Handle text and dates effortlessly. Perfect for developers. +### [Save workbook as CSV in C# – Export Excel to CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Learn how to save a workbook as CSV using C# with Aspose.Cells for .NET. Export Excel data efficiently to CSV format. {{< /blocks/products/pf/tutorial-page-section >}} @@ -42,4 +44,4 @@ Learn how to open and parse CSV files with custom parsers in Aspose.Cells for .N {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/english/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..05557d86fa --- /dev/null +++ b/cells/english/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: Save workbook as CSV in C# quickly. Learn how to export Excel to CSV, + set precision, and convert xlsx to CSV with Aspose.Cells in just a few lines. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: en +og_description: Save workbook as CSV in C# quickly. This guide shows how to export + Excel to CSV, set precision, and convert xlsx to CSV using Aspose.Cells. +og_title: Save workbook as CSV in C# – Export Excel to CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Save workbook as CSV in C# – Export Excel to CSV +url: /net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save workbook as CSV in C# – Export Excel to CSV + +Ever needed to **save workbook as CSV** but weren’t sure how to keep the numbers tidy? You’re not alone. In many data‑pipeline scenarios we have to **export Excel to CSV** while preserving a specific number of significant digits, and the Aspose.Cells library makes it a piece of cake. + +In this tutorial you’ll see a complete, ready‑to‑run example that **saves a workbook as CSV**, shows *how to set precision*, and even explains *how to convert xlsx to CSV* for real‑world projects. No vague references—just code you can copy, paste, and run today. + +## What You’ll Learn + +- The exact steps to **save workbook as CSV** with a custom precision setting. +- How to **export Excel to CSV** using `CsvSaveOptions` and why the `SignificantDigits` property matters. +- Variations for different precision needs and common pitfalls when dealing with large numbers. +- A quick look at converting an `.xlsx` file to `.csv` without losing data integrity. + +### Prerequisites + +- .NET 6.0 or later (the code works on .NET Framework 4.6+ as well). +- The **Aspose.Cells for .NET** NuGet package (`Install-Package Aspose.Cells`). +- A basic understanding of C# and file I/O. + +If you’ve got those, let’s dive in. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Save workbook as CSV – Step‑by‑Step Guide + +Below is the full program. Every line is commented so you can see *why* each piece is there, not just *what* it does. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Why Use `CsvSaveOptions.SignificantDigits`? + +When you **how to set precision** for a CSV export, you’re really deciding how many digits of a floating‑point number survive the conversion. Excel stores numbers with up to 15‑digit precision, but most downstream systems (databases, analytics pipelines) only need a few. By setting `SignificantDigits = 4`, the library rounds `123.456789` to `123.5`, keeping the file compact and human‑readable. + +> **Pro tip:** If you need *exact* values (e.g., for financial data), set `SignificantDigits` to a higher number or omit it entirely. The default is 15, which mirrors Excel’s internal precision. + +## Export Excel to CSV – Common Variations + +### Changing the Delimiter + +Some systems expect a semicolon (`;`) instead of a comma. You can adjust it like this: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exporting a Specific Worksheet + +If you only want to export the second sheet, replace the optional block with: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Then call `workbook.Save` as before. This technique is handy when you **convert xlsx to csv** but only care about a particular tab. + +### Handling Large Datasets + +When dealing with millions of rows, consider streaming the CSV instead of loading the whole workbook into memory. Aspose.Cells offers a `CsvSaveOptions` property `ExportDataOnly` that skips style information, reducing memory overhead: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## How to Export CSV – Verifying the Result + +After running the program, open `Numbers_4sd.csv` in a plain‑text editor. You should see something like: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Notice how the numbers are limited to four significant digits, exactly as we requested. If you open the file in Excel, the values will appear identical because Excel respects the rounding that was applied during export. + +## Edge Cases & Troubleshooting + +| Situation | What to Check | Fix | +|-----------|---------------|-----| +| **File not found** | Verify `sourcePath` points to a real `.xlsx` file. | Use `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Ensure `SignificantDigits` is set before calling `Save`. | Move the `CsvSaveOptions` assignment earlier or double‑check the value. | +| **Special characters appear as �** | CSV encoding defaults to UTF‑8 without BOM. | Set `csvOptions.Encoding = System.Text.Encoding.UTF8` or `Encoding.Unicode`. | +| **Extra empty columns** | Some worksheets have stray formatting beyond the used range. | Call `worksheet.Cells.MaxDisplayRange` to trim unused columns before export. | + +## How to Set Precision Dynamically + +Sometimes the required precision isn’t known at compile time. You can read it from a config file or command‑line argument: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Now you can run: + +``` +dotnet run -- 6 +``` + +and get a CSV with six significant digits. This tiny tweak makes the solution flexible for **how to export csv** in varied environments. + +## Full Working Example Recap + +Putting it all together, the complete program (including optional tweaks) looks like this: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Run the program, open the generated CSV, and you’ll see the precision you asked for, confirming that you have successfully **saved workbook as CSV**. + +## Conclusion + +You now have a solid, production‑ready recipe for **saving a workbook as CSV** in C#. The guide covered *how to export Excel to CSV*, demonstrated *how to set precision* via `CsvSaveOptions.SignificantDigits`, and showed several variations for **convert xlsx to csv** scenarios. With the full code snippet, you can drop this into any .NET project and start exporting data instantly. + +**What’s next?** + +- Experiment with different delimiters (`;`, `\t`) for TSV exports. +- Combine this approach with a file‑watcher to automate CSV generation whenever an Excel file changes. +- Explore Aspose.Cells’ `CsvLoadOptions` if you ever need to read CSVs back into a workbook. + +Feel free to tweak the precision, add custom headers, or hook the exporter + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/document-properties/_index.md b/cells/english/net/document-properties/_index.md index 9c3bc48740..8f5a4bc8bb 100644 --- a/cells/english/net/document-properties/_index.md +++ b/cells/english/net/document-properties/_index.md @@ -35,6 +35,8 @@ Learn how to access document properties in Excel using Aspose.Cells for .NET. Fo Learn how to access document properties in Excel using Aspose.Cells for .NET with our step-by-step guide. Manage your spreadsheets efficiently. ### [Adding Document Properties in .NET](./adding-document-properties/) Learn how to add document properties in Excel using Aspose.Cells for .NET with this detailed step-by-step guide. +### [Create Excel Workbook – Add Custom Properties and Save as XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Learn how to create an Excel workbook, add custom properties, and save it as XLSB using Aspose.Cells for .NET. {{< /blocks/products/pf/tutorial-page-section >}} @@ -42,4 +44,4 @@ Learn how to add document properties in Excel using Aspose.Cells for .NET with t {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/english/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..0beb1276d5 --- /dev/null +++ b/cells/english/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Create Excel workbook, add custom properties, set worksheet name, and + save as XLSB binary file using C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: en +og_description: Create Excel workbook, add custom properties, set worksheet name, + and save as XLSB binary file using C#. +og_title: Create Excel Workbook – Add Custom Properties and Save as XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Create Excel Workbook – Add Custom Properties and Save as XLSB +url: /net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Excel Workbook – Add Custom Properties and Save as XLSB + +Ever needed to **create Excel workbook** programmatically but also keep some metadata attached? Maybe you’re building a reporting engine that tags each file with a report ID, author name, or version number. In that case, learning how to **add custom properties** while you **set worksheet name** and finally **save as XLSB** will save you a lot of manual post‑processing. + +In this tutorial we’ll walk through a complete, runnable example that shows exactly how to **write binary Excel file** using C#. You’ll see why the XLSB format is the right choice for transporting custom properties, how to avoid the most common pitfalls, and what to do if you need to support older Excel versions. + +--- + +## What You’ll Need + +- **.NET 6+** (or .NET Framework 4.6+). The code works on any recent runtime. +- **Aspose.Cells for .NET** (free trial or licensed). It provides the `Workbook`, `Worksheet`, and `CustomProperties` classes used below. +- An IDE you’re comfortable with – Visual Studio, Rider, or even VS Code will do. +- Write access to a folder where the generated file will be saved. + +No other third‑party libraries are required. + +--- + +## Step 1: Install Aspose.Cells + +To start, add the Aspose.Cells NuGet package to your project: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** If you’re on a CI server, store the license key in an environment variable and load it at runtime – this prevents the “evaluation” watermark from sneaking into your output. + +--- + +## Step 2: Create Excel Workbook – Overview + +The first real action is to **create Excel workbook**. This object represents the whole file in memory and gives you access to worksheets, styles, and custom properties. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Why instantiate a fresh `Workbook` instead of loading a template? A blank workbook guarantees no hidden styles or leftover custom properties, which is especially important when you intend to **write binary excel file** for downstream systems that expect a clean slate. + +--- + +## Step 3: Set Worksheet Name (and Why It Matters) + +Excel sheets default to “Sheet1”, “Sheet2”, etc. Giving a sheet a meaningful name makes downstream processing—like Power Query or VBA macros—much easier to read. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +If you try to assign a duplicate name, Aspose.Cells will throw an `ArgumentException`. To be safe, you can check `Worksheets.Exists("Data")` before renaming. + +--- + +## Step 4: Add Custom Properties + +Custom properties are stored in the workbook’s internal XML and travel with the file regardless of format. They’re perfect for embedding things like `ReportId` or `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Why use custom properties?** +> • They’re accessible via Excel’s “File → Info → Properties” panel. +> • Code that consumes the workbook can read them without scanning cell contents. +> • They survive format conversions (XLSX ↔ XLSB) because they’re part of the file’s metadata. + +You can also store dates, booleans, or even binary blobs, but keep the payload small—Excel isn’t a database. + +--- + +## Step 5: Save as XLSB (Write Binary Excel File) + +The XLSB format stores data in a binary structure, which makes the file smaller and faster to open. More importantly for this tutorial, **custom properties are baked into the binary stream**, guaranteeing they travel with the file. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Expected Result + +After running the program, you’ll find `WithCustomProps.xlsb` on your desktop. Open it in Excel, go to **File → Info → Properties**, and you’ll see `ReportId` and `GeneratedBy` listed under *Custom*. + +--- + +## Step 6: Edge Cases & Common Questions + +### What if the target folder is read‑only? + +Wrap the `Save` call in a `try/catch` block and fall back to a user‑writable location, such as `%TEMP%`. This prevents the application from crashing on permission errors. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Can I **save as XLSX** and still keep custom properties? + +Yes—just change `SaveFormat.Xlsb` to `SaveFormat.Xlsx`. The properties are stored in the same XML part, so they survive the format switch. However, XLSX files are larger because they’re zipped XML, whereas XLSB offers better performance for large data sets. + +### How do I read the custom properties later? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +This snippet prints every custom property, making it trivial for downstream services to verify the file’s provenance. + +--- + +## Full Working Example + +Below is the complete program you can copy‑paste into a new console project. No pieces are missing—everything from `using` statements to the final `Console.WriteLine` is included. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Run the program, open the resulting file, and verify the custom properties. That’s the whole process of **create excel workbook**, **add custom properties**, **set worksheet name**, and **save as xlsb** in one tidy flow. + +--- + +## Conclusion + +You now know exactly how to **create Excel workbook**, give its sheet a clear **set worksheet name**, embed useful metadata with **add custom properties**, and finally **save as XLSB** to produce a compact, binary Excel file. This workflow is reliable, works across .NET versions, and scales nicely whether you’re generating one report or a thousand. + +What’s next? Try adding a data table to the “Data” sheet, experiment with different property types (dates, booleans), or switch the output to **save as xlsb** for massive data sets. You might also explore protecting the workbook with a password—Aspose.Cells makes that a one‑liner as well. + +Feel free to drop a comment if you hit any snags, or share how you’ve extended this pattern in your own projects. Happy coding! + +--- + +![Create Excel workbook screenshot](image.png){alt="Create Excel workbook with custom properties"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-advanced-named-ranges/_index.md b/cells/english/net/excel-advanced-named-ranges/_index.md index 052b57fcb3..4941ca867d 100644 --- a/cells/english/net/excel-advanced-named-ranges/_index.md +++ b/cells/english/net/excel-advanced-named-ranges/_index.md @@ -32,6 +32,8 @@ Next up is one of the most visually appealing yet practical operations—merging The beauty of this functionality lies in its ease of use. You can merge cells programmatically, which means your formatting can be automated. Imagine creating weekly reports where the header automatically merges every time. With Aspose, this task takes only a few clicks and lines of code. Curious how to do it? Head over to our guide on [Merging Cells in Named Range](./merge-cells-in-named-range/). ## Advanced Operations with Named Ranges in Excel Tutorials +### [Create Excel Workbook – Step‑by‑Step Guide to Adding Tables and Naming Rules](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Learn how to create an Excel workbook, add tables, and apply naming rules using Aspose.Cells for .NET in this step-by-step tutorial. ### [Identify Cells in Named Range in Excel](./identify-cells-in-named-range/) Effortlessly identify cells in a named range in Excel using Aspose.Cells for .NET with this comprehensive step-by-step tutorial. ### [Merge Cells in Named Range in Excel](./merge-cells-in-named-range/) @@ -43,4 +45,4 @@ Learn how to merge cells in a named range using Aspose.Cells for .NET in this st {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/english/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..5d4c06a4fc --- /dev/null +++ b/cells/english/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: Create excel workbook with a table, learn excel table naming rules, avoid + named range error, and set excel table name correctly in C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: en +og_description: Create excel workbook in C# and master excel table naming rules. Learn + how to add a table worksheet, set excel table name, and fix named range errors. +og_title: Create Excel Workbook – Complete C# Table & Naming Guide +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Create Excel Workbook – Step‑by‑Step Guide to Adding Tables and Naming Rules +url: /net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Excel Workbook – Complete C# Guide to Tables and Naming + +Ever needed to **create excel workbook** programmatically and wondered why your table name suddenly collides with a named range? You’re not alone. In many automation projects the moment you try to give a table a friendly identifier, Excel throws a *named range error* that stalls the whole process. + +In this tutorial we’ll walk through a fully‑runnable example that **creates an Excel workbook**, **adds a table to a worksheet**, and explains the **excel table naming rules** that keep you from tripping over yourself. By the end you’ll know exactly how to **add table worksheet**, **set excel table name**, and gracefully handle the occasional naming clash. + +> **Pro tip:** Most of the confusion stems from the fact that Excel treats table names and workbook‑level named ranges as a single namespace. Understanding that rule early saves you hours of debugging. + +## What You’ll Need + +- **Aspose.Cells for .NET** (or any library that exposes `Workbook`, `Worksheet`, `ListObject` classes). +- .NET 6+ or .NET Framework 4.8 – the code works on both. +- A basic grasp of C# syntax – no advanced tricks required. + +If you’ve got those, let’s dive in. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Step 1: Create Excel Workbook and Access the First Worksheet + +The first thing you do when you **create excel workbook** is instantiate the `Workbook` class and grab a reference to the sheet you’ll work on. In Aspose.Cells the workbook starts with a default sheet named “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Why is this step crucial? Without a workbook object you have nothing to attach a table to, and the `Worksheet` reference gives you a canvas where the **add table worksheet** operation will occur. + +## Step 2: Add Table (ListObject) Covering a Specific Range + +Next we **add table worksheet**‑level data. The `ListObjects.Add` method expects a range string and a boolean indicating whether the first row contains headers. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Notice the call to `salesTable.Name = "SalesData"`. This is where **excel table naming rules** kick in: the name must be unique across the entire workbook, not just the sheet. It also can’t contain spaces or special characters, and it must start with a letter or underscore. + +## Step 3: Attempt to Create a Workbook‑Level Named Range with the Same Identifier + +Now we deliberately provoke the **named range error** to see what happens when a name clash occurs. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +If you uncomment the line, Aspose.Cells throws an `ArgumentException` stating that the name already exists. The error message looks like: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +That message is the **named range error** we warned about earlier. It tells you that the **excel table naming rules** treat table names and named ranges as a single namespace. + +## Step 4: Handling the Naming Conflict Gracefully + +In real‑world code you’ll want to catch that exception and either rename the table or choose a different range name. Here’s a tidy way to do it: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +By wrapping the call in a `try/catch`, you avoid a hard crash and give the user (or calling code) a clear explanation—exactly the kind of **excel table naming rules** insight that prevents future bugs. + +## Step 5: Save the Workbook and Verify the Result + +Finally, persist the file to disk and open it in Excel to confirm the table and any named ranges are present. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +When you open *SalesReport.xlsx* you’ll see: + +- A table spanning **A1:C5** named **SalesData**. +- If you kept the alternative range, a workbook‑level named range **SalesData_Range** pointing to **D1**. + +No runtime crashes, and the naming conflict is resolved. + +## Understanding Excel Table Naming Rules in Depth + +Let’s unpack why the rules exist: + +| Rule | What It Means | Example | +|------|----------------|---------| +| **Unique across workbook** | No two tables or named ranges can share the same identifier. | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | Names cannot begin with a number. | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | Use CamelCase or underscores. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | Practically always satisfied. | N/A | + +Keeping these rules in mind while you **set excel table name** eliminates the dreaded *named range error*. + +## Common Variations and Edge Cases + +1. **Adding multiple tables** – Each table must have its own unique name. +2. **Renaming an existing table** – Use `salesTable.Name = "NewName"` before creating any conflicting named ranges. +3. **Using dynamic ranges** – If you need a range that expands, use a structured reference like `=SalesData[Amount]` instead of a static address. +4. **Cross‑sheet named ranges** – They’re still part of the same namespace, so a table on Sheet1 blocks a range of the same name on Sheet2. + +## Pro Tips for Smooth Excel Automation + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: Append a GUID or incremental counter (`SalesData_{Guid.NewGuid()}`) when you’re unsure. +- **Use `ListObject.ShowHeaders = true`** to make your tables self‑documenting. +- **Validate after saving**: Open the file with a lightweight library (e.g., EPPlus) to ensure the table was created correctly. + +## Recap: What We Covered + +- How to **create excel workbook** from scratch using Aspose.Cells. +- The exact **excel table naming rules** that govern table and named range identifiers. +- Why a **named range error** appears when you reuse a name. +- The correct way to **add table worksheet** and **set excel table name** without collisions. +- A robust pattern for handling naming conflicts gracefully. + +## What’s Next? + +Now that you’ve mastered the basics, consider exploring: + +- **Dynamic table growth** using `ListObject.Resize`. +- **Applying styles** to tables (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** while preserving table structures. +- **Integrating with Office Open XML** for even tighter control over workbook internals. + +Feel free to experiment—change the range, add more tables, or play with different naming schemes. The more you tinker, the deeper your understanding of **excel table naming rules** becomes. + +--- + +*Happy coding, and may your workbooks never clash again!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-custom-number-date-formatting/_index.md b/cells/english/net/excel-custom-number-date-formatting/_index.md index 072ad59089..00d7d6a163 100644 --- a/cells/english/net/excel-custom-number-date-formatting/_index.md +++ b/cells/english/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ This tutorial will equip you with the skills to import your datasets while maint Learn how to check Excel cell values against custom number formats using Aspose.Cells for .NET with this step-by-step tutorial. ### [Specify Formula Fields When Importing Data to Excel Sheet](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Learn how to import data into Excel sheets with specified formula fields using Aspose.Cells for .NET in this detailed tutorial. +### [Custom Number Format Excel in C# – Complete Guide](./custom-number-format-excel-in-c-complete-guide/) +Learn how to apply custom number formats in Excel using C# with Aspose.Cells for .NET in this comprehensive guide. {{< /blocks/products/pf/tutorial-page-section >}} @@ -43,4 +45,4 @@ Learn how to import data into Excel sheets with specified formula fields using A {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/english/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..aa09794f16 --- /dev/null +++ b/cells/english/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Custom number format excel tutorial showing how to import datatable to + excel, set column background color, format column as currency and save workbook + as xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: en +og_description: Custom number format excel tutorial that walks you through importing + a DataTable, setting column background color, formatting a column as currency, and + saving the workbook as xlsx. +og_title: Custom Number Format Excel in C# – Step‑by‑Step Guide +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Custom Number Format Excel in C# – Complete Guide +url: /net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Custom Number Format Excel – Full‑Stack C# Tutorial + +Ever wondered how to apply a **custom number format excel** style directly from C#? Maybe you’ve tried dumping a DataTable into a spreadsheet only to see plain numbers, no colors, and no currency formatting. That’s a common pain point—especially when you need a polished report for stakeholders. + +In this guide we’ll solve that problem together: you’ll learn how to **import datatable to excel**, **set column background color**, **format column as currency**, and finally **save workbook as xlsx** with a custom number format that makes your figures pop. No vague references, just a complete, runnable solution you can copy‑paste into your project. + +--- + +## What You’ll Build + +By the end of this tutorial you’ll have a self‑contained C# console app that: + +1. Retrieves a `DataTable` (you can replace the stub with your own query). +2. Creates a new Excel workbook using Aspose.Cells (or any compatible library). +3. Applies a blue, bold font to the first column, a light‑yellow background to the second, and a currency format (`$#,##0.00`) to the third. +4. Saves the file as `DataTableWithStyleArray.xlsx` in a folder you choose. + +You’ll see exactly how each line contributes to the final Excel file, and we’ll discuss why those choices matter for maintainability and performance. + +--- + +## Prerequisites + +- .NET 6.0 or later (the code works with .NET Framework 4.7+ as well). +- Aspose.Cells for .NET (free trial or licensed version). Install via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Basic familiarity with `DataTable` and C# console applications. + +--- + +## Step 1: Retrieve the Source Data as a DataTable + +First, we need some data to export. In a real‑world scenario you’d probably call a repository or run a SQL query. For illustration we’ll create a simple table in‑memory. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** Using a `DataTable` gives you a tabular, schema‑aware source that maps cleanly onto Excel rows and columns. It also lets you reuse the same export logic for any dataset without rewriting code. + +--- + +## Step 2: Create a New Workbook and Grab the First Worksheet + +Now we spin up an Excel workbook. The `Workbook` class represents the entire file; its `Worksheets[0]` is the default sheet where we’ll drop our data. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** If you need multiple sheets, just call `workbook.Worksheets.Add("SheetName")` and repeat the styling steps for each. + +--- + +## Step 3: Define Column Styles – Font, Background, and Number Format + +Styling in Aspose.Cells is done via `Style` objects. We’ll build an array where each element corresponds to a column in the DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** Passing an array to `ImportDataTable` lets you apply a distinct style to each column in a single call, which is both concise and performant. It also guarantees that the formatting stays in sync with the data order. + +--- + +## Step 4: Import the DataTable While Applying the Styles + +Here’s the heart of the operation: we feed the `DataTable` into the worksheet, tell Aspose to include the header row, and hand over our `columnStyles` array. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose iterates through each column, writes the header, then writes each row value. While doing so it applies the corresponding `Style` from the array, so you end up with a blue header for “Product”, a yellow‑shaded “Quantity”, and a nicely formatted “Revenue” column. + +--- + +## Step 5: Save the Workbook as an XLSX File + +Finally, we persist the workbook to disk. The `Save` method automatically chooses the XLSX format based on the file extension. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** If you need to stream the file (e.g., for a web API), use `workbook.Save(stream, SaveFormat.Xlsx)` instead of a file path. + +--- + +## Full Working Example + +Below is the complete program you can paste into a new console project. It compiles and runs as‑is, producing a styled Excel file. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Expected Result + +When you open `DataTableWithStyleArray.xlsx` you’ll see: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +The **custom number format excel** you specified (`$#,##0.00`) ensures every revenue cell displays a dollar sign, thousands separator, and two decimal places—exactly what finance teams expect. + +--- + +## Frequently Asked Questions & Edge Cases + +### Can I use this with a different Excel library? + +Absolutely. The concept—creating a style per column and applying it during import—translates to EPPlus, ClosedXML, or NPOI. The API calls differ, but the pattern stays the same. + +### What if my DataTable has more columns than styles? + +Aspose will apply the default style to any column without a matching entry in the `columnStyles` array. To avoid surprises, either size the array to `dataTable.Columns.Count` or generate styles dynamically in a loop. + +### How do I set a custom number format for dates? + +Just set `style.Custom = "dd‑mm‑yyyy"` (or any valid Excel format string). The same array‑based approach works for dates, percentages, or scientific notation. + +### Is there a way to auto‑size columns after import? + +Yes—call `worksheet.AutoFitColumns();` after the import. It runs a quick width calculation based on cell contents. + +### What about large data sets (100k+ rows)? + +`ImportDataTable` is optimized for bulk operations, but you might hit memory limits. In that case, consider streaming rows manually with `Cells[i, j].PutValue(...)` and re‑using a single `Style` object to reduce overhead. + +--- + +## Pro Tips & Common Pitfalls + +- **Avoid hard‑coding paths** in production code; use `Environment.GetFolderPath` or configuration settings. +- **Dispose of the workbook** if you’re in a long‑running service—wrap it in a `using` block to free native resources. +- **Watch out for culture‑specific separators**. The custom format `$#,##0.00` forces a period as decimal separator regardless of the OS locale, which is usually what you want for financial reports. +- **Remember to reference System.Drawing** (or `System.Drawing.Common` on .NET Core) for the color structs used in styling. +- **Test the output on different Excel versions**; older versions might interpret some custom formats slightly differently. + +--- + +## Conclusion + +We’ve covered everything you need to **custom number format excel** files from C#: pulling data from a `DataTable`, **import datatable to excel**, applying a **set column background color**, using **format column as currency**, and finally **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-workbook/_index.md b/cells/english/net/excel-workbook/_index.md index 218f2099fa..eed8c28ad6 100644 --- a/cells/english/net/excel-workbook/_index.md +++ b/cells/english/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ So why not embrace this chance to enhance your Excel skills? Each tutorial not o | [Workbook Print Preview](./workbook-print-preview/) | Learn how to create print previews for Excel files using Aspose.Cells for .NET. Learn coding steps in a detailed, easy-to-follow tutorial. | | [Working With Content Type Properties](./working-with-content-type-properties/) | Learn how to use Aspose.Cells for .NET to work with content type properties for enhanced Excel metadata management. Follow this simple step-by-step guide. | | [Xades Signature Support](./xades-signature-support/) | Learn how to add Xades signatures to Excel files using Aspose.Cells for .NET with this step-by-step guide. Secure your documents. | +| [Create new workbook C# – Step‑by‑Step Guide with Spilled Formulas](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Learn how to create a new workbook in C# with spilled formulas using Aspose.Cells for .NET in a step-by-step guide. | {{< /blocks/products/pf/tutorial-page-section >}} @@ -93,4 +94,4 @@ So why not embrace this chance to enhance your Excel skills? Each tutorial not o {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/english/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..edfa6b68b0 --- /dev/null +++ b/cells/english/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Create new workbook C# quickly using Aspose.Cells. Learn how to add a + SEQUENCE spilling formula, recalc automatically, and handle dependent cells. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: en +og_description: Create new workbook C# with Aspose.Cells. This tutorial shows how + to add a SEQUENCE spilling formula, recalc the workbook, and manage dependent cells. +og_title: Create new workbook C# – Complete Guide +tags: +- C# +- Excel automation +- Aspose.Cells +title: Create new workbook C# – Step‑by‑Step Guide with Spilled Formulas +url: /net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create new workbook C# – Complete Programming Walkthrough + +Ever wondered how to **create new workbook C#** without wrestling with COM interop? You're not alone. In many projects you need to spin up an Excel file on the fly, drop a dynamic array formula in, and have everything refresh automatically. + +In this guide we’ll show you exactly that—using the modern **Aspose.Cells** library, adding a spilling `SEQUENCE` formula, tweaking a dependent cell, and forcing a recalculation so the results stay fresh. By the end you’ll have a self‑contained, runnable example you can copy‑paste into any .NET app. + +## What You’ll Learn + +- How to **create new workbook C#** programmatically. +- The mechanics behind a **spilled array formula** and why it’s handy. +- Using the **Excel SEQUENCE function** from C# code. +- Triggering **C# workbook calculation** so dependent cells update instantly. +- Common pitfalls (e.g., forgetting to call `Calculate`) and quick fixes. + +No external docs required—everything you need is right here. + +## Prerequisites + +- .NET 6+ (or .NET Framework 4.7.2+) installed. +- Visual Studio 2022 or any IDE you prefer. +- The **Aspose.Cells** NuGet package (`Install-Package Aspose.Cells`). +- Basic familiarity with C# syntax (if you’re brand new, the code is heavily commented). + +--- + +## Step 1: Create a new workbook in C# + +This H2 header contains the **primary keyword** exactly where the SEO checklist demands it. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Why this matters:** +> Instantiating `Workbook` gives you an in‑memory representation of an Excel file. No COM, no interop, just pure .NET objects that you can manipulate safely. + +--- + +## Step 2: Add a spilling SEQUENCE formula + +A **spilled array formula** automatically expands into adjacent cells, which is perfect for generating dynamic lists. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **How it works:** +> The `SEQUENCE` function (introduced in Excel 365) creates a vertical array of numbers. Because we’re using a *spilling* formula, Excel (and Aspose.Cells) will automatically fill the range beneath `A1` without us having to write a loop. + +--- + +## Step 3: Change a dependent cell to see auto‑refresh + +Let’s modify `B1` so we can observe how the workbook recalculates the spilled array. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tip:** +> If you later reference the spilled range in other formulas, changing any cell inside the spill will cause those formulas to update after you call `Calculate`. + +--- + +## Step 4: Force C# workbook calculation + +Without an explicit call, Aspose.Cells won’t automatically recompute formulas. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **What `Calculate` does:** +> It walks through every formula cell, evaluates them, and writes the results back into the sheet. This is the core of **C# workbook calculation** and ensures that your spilled array stays in sync with any dependent data. + +### Expected Output + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Open `SpilledSequenceDemo.xlsx` and you’ll see the numbers 1‑5 filling `A1:A5`, while `B1` holds the value `10`. Change any cell inside the spill, run `Calculate` again, and the new values appear instantly. + +--- + +## Understanding the Excel SEQUENCE function in C# + +If you’re curious why `SEQUENCE` is preferred over a manual loop, consider these points: + +1. **Performance** – The engine evaluates the whole array in one pass. +2. **Readability** – One line of code replaces dozens of `PutValue` calls. +3. **Dynamic sizing** – You can replace the static `5` with a reference to another cell, making the length adjustable at runtime. + +This is a classic example of a **spilled array formula** that simplifies data generation tasks. + +--- + +## Common Pitfalls & Pro Tips + +| Pitfall | Fix | +|---------|-----| +| Forgetting `workbook.Calculate()` | Always call it after modifying formulas; otherwise the sheet shows old cached values. | +| Using an older Aspose.Cells version | Upgrade to the latest NuGet package to ensure support for dynamic array functions like `SEQUENCE`. | +| Saving before calculation | Save **after** `Calculate` so the file contains the latest results. | +| Assuming the spill will overwrite existing data | Aspose.Cells respects existing data beyond the spill range; clear the area first if you need a clean slate. | + +**Pro tip:** If you need the sequence length to be configurable, store the count in a cell (e.g., `C1`) and use `=SEQUENCE(C1)`—the calculation engine will read the value at runtime. + +--- + +## Extending the Example + +Now that you know how to **create new workbook C#**, you can: + +- Add more complex formulas that reference the spilled range (`=SUM(A1#)` where `#` denotes the spill). +- Export to PDF with `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Insert charts that automatically adjust to the dynamic array size. + +All of these build on the same **C# workbook calculation** foundation we just covered. + +--- + +## Conclusion + +We’ve walked through the entire process of **create new workbook C#**, from instantiating the `Workbook` object to inserting a spilling `SEQUENCE` formula, tweaking a dependent cell, and finally forcing a recalculation so everything stays up‑to‑date. The complete code snippet above is ready to run—just drop it into a console app, add the Aspose.Cells NuGet package, and you’ll have a functional Excel file in seconds. + +Ready for the next step? Try swapping the static `5` with a cell reference, experiment with other dynamic array functions like `FILTER` or `UNIQUE`, and explore how **Aspose.Cells C#** can power full‑blown reporting engines. Happy coding! + +--- + +*Image placeholder:* + +![Screenshot showing a freshly created workbook with spilled SEQUENCE formula – create new workbook C# example](/images/create-new-workbook-csharp.png) + +--- + +*If you found this tutorial helpful, consider starring the repository, sharing with teammates, or leaving a comment below. Your feedback fuels future guides!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/formulas-functions/_index.md b/cells/english/net/formulas-functions/_index.md index 830f9c24c1..1d98010838 100644 --- a/cells/english/net/formulas-functions/_index.md +++ b/cells/english/net/formulas-functions/_index.md @@ -84,6 +84,9 @@ Learn how to enhance your Excel-like calculations with custom logic using Aspose ### [How to Implement Custom Functions in Aspose.Cells for .NET: A Step-by-Step Guide](./implement-custom-functions-aspose-cells-net) Learn how to create and implement custom functions in Excel using Aspose.Cells for .NET. Enhance your spreadsheets with tailored calculations that extend beyond Excel's built-in functions. +### [How to Use Lambda in C# with Excel Formulas – Complete Guide](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Learn how to leverage C# lambda expressions within Excel formulas using Aspose.Cells for .NET, enabling concise and powerful custom calculations. + ### [How to Implement Named Range Formulas in .NET using Aspose.Cells for Excel Automation](./implement-named-range-formulas-net-aspose-cells) Learn how to automate named range formulas in localized Excel solutions with Aspose.Cells for .NET. Streamline your workflows and enhance productivity with formula references using named ranges. diff --git a/cells/english/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/english/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..166e029991 --- /dev/null +++ b/cells/english/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: How to use lambda in C# to work with Excel formulas. Learn to write formula + to cell, convert range to array, display array in console, and calculate cotangent + in Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: en +og_description: How to use lambda in C# to manipulate Excel formulas, convert range + to array, write formula to cell, display array in console, and calculate cotangent + in Excel. +og_title: How to Use Lambda in C# with Excel Formulas – Step‑by‑Step +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: How to Use Lambda in C# with Excel Formulas – Complete Guide +url: /net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Use Lambda in C# with Excel Formulas – Complete Guide + +Ever wondered **how to use lambda** when you’re automating Excel from C#? You’re not alone. Many developers hit a wall when they need to combine the power of Excel’s new dynamic array functions with C#’s `LAMBDA` capability. The good news? It’s actually pretty straightforward once you see the pieces fit together. + +In this tutorial we’ll walk through **writing a formula to a cell**, **converting a range to an array**, **displaying that array in the console**, and even **calculating cotangent in Excel**—all while showing you **how to use lambda** inside a `REDUCE` call. By the end you’ll have a runnable snippet that you can drop into any .NET project that references Aspose.Cells (or a similar library). + +--- + +## What You’ll Learn + +- How to **write formula to cell** using C#. +- How to **convert range to array** with the `EXPAND` function. +- How to **display array in console** after calculation. +- How to **calculate cotangent in Excel** using `COT` and `COTH`. +- The exact syntax for **how to use lambda** inside Excel’s `REDUCE` function from C#. + +> **Prerequisite:** You need a recent version of .NET (Core 6+ or .NET Framework 4.7+) and the Aspose.Cells for .NET library installed via NuGet. + +--- + +## Step 1: Set Up the Workbook and Write Formula to Cell + +The first thing we do is spin up a fresh workbook and grab the first worksheet. Then we **write a formula to a cell** – in this case `A1` will hold the result of an `EXPAND` call. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Why this matters:** Writing the formula directly from code means you can generate complex spreadsheets on the fly without ever opening Excel. It also sets the stage for the next step where we **convert range to array**. + +--- + +## Step 2: Convert Range to Array with EXPAND + +`EXPAND` is Excel’s way of turning a small range into a larger matrix. By placing the formula in `A1`, Excel will spill a 4 × 5 block starting at that cell. From C#, we don’t have to manually copy values – the library will do the heavy lifting when we call `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**How to use lambda:** Not yet, but stay tuned. First we need the data in the sheet, then we’ll reduce it with a lambda. + +--- + +## Step 3: Use LAMBDA Inside REDUCE – The Core of “How to Use Lambda” + +Excel 365 introduced `REDUCE`, which accepts an **initial value**, a **range**, and a **LAMBDA** that tells it how to combine each element. From C# we simply assign the formula string; the lambda lives inside the Excel formula, not in C# code. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explanation:** +- `0` is the starting accumulator (`acc`). +- `A1:D4` is the range we want to process (the first four columns of the spill). +- `LAMBDA(acc, x, acc + x)` tells Excel to add each cell (`x`) to the accumulator. + +That’s the essence of **how to use lambda** for aggregation in a spreadsheet context. + +--- + +## Step 4: Calculate Cotangent in Excel – From Degrees to Hyperbolic + +If you need trigonometric results, Excel’s `COT` and `COTH` functions are a breeze. We’ll place them in `G1` and `G2` respectively. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Why this is handy:** Knowing **calculate cotangent in Excel** can save you from writing custom math code, especially when the workbook will be shared with non‑developers. + +--- + +## Step 5: Force Calculation and Retrieve the Expanded Array + +Now we tell the workbook to evaluate every formula, then pull the spilled array out of `A1`. This is where we **display array in console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**What you’ll see:** +- A nicely formatted 4 × 5 matrix printed line‑by‑line. +- The sum computed by the `REDUCE` lambda. +- The two cotangent values. + +That completes the flow from **write formula to cell** all the way to **display array in console**. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Below is the entire program you can drop into a console app. Remember to add the `Aspose.Cells` NuGet package first (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Expected console output (values will vary based on the default contents of B1:C2, which are 0 by default):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Feel free to populate `B1:C2` with your own numbers before running – the matrix will reflect those values. + +--- + +## Pro Tips & Common Pitfalls + +- **Pro tip:** If you need the spilled range to start elsewhere, just change the target cell (`A1`). The `EXPAND` function respects the anchor. +- **Watch out for:** Empty cells in the source range become `0` in the spilled array, which can affect your `REDUCE` sum. +- **Edge case:** When the workbook contains formulas that depend on volatile functions (e.g., `NOW()`), call `workbook.Calculate()` after setting all formulas to ensure everything is up‑to‑date. +- **Performance note:** For huge spills, consider limiting the size in the `EXPAND` call; otherwise you might allocate more memory than needed. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/number-and-display-formats-in-excel/_index.md b/cells/english/net/number-and-display-formats-in-excel/_index.md index 5f37449de9..79ed382c11 100644 --- a/cells/english/net/number-and-display-formats-in-excel/_index.md +++ b/cells/english/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ If you’re looking to add a personal touch to your Excel sheets, customizing di Automate number formatting in Excel using Aspose.Cells for .NET. Learn how to apply date, percentage, and currency formats programmatically. ### [Customizing Display Formats with User-Defined Numbers](./customizing-display-formats-with-user-defined-numbers/) Learn how to customize display formats with Aspose.Cells for .NET. Format dates, percentages, and currency using this step-by-step guide. +### [How to Export Excel with Formatting – Preserve Number Format](./how-to-export-excel-with-formatting-preserve-number-format/) +Learn how to export Excel files while preserving number formats using Aspose.Cells for .NET. +### [format datetime to iso in C# – Complete Guide](./format-datetime-to-iso-in-c-complete-guide/) +Learn how to format DateTime values to ISO 8601 strings in C# with Aspose.Cells for .NET. {{< /blocks/products/pf/tutorial-page-section >}} @@ -39,4 +43,4 @@ Learn how to customize display formats with Aspose.Cells for .NET. Format dates, {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/english/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..3766f7603a --- /dev/null +++ b/cells/english/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Learn how to format datetime to iso while extracting date from excel + and display iso date using Aspose.Cells in C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: en +og_description: format datetime to iso made easy. This guide shows how to extract + date from excel and display iso date with Aspose.Cells. +og_title: format datetime to iso in C# – Step‑by‑Step Tutorial +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: format datetime to iso in C# – Complete Guide +url: /net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime to iso in C# – Complete Guide + +Ever needed to **format datetime to iso** but the source lives inside an Excel workbook? Maybe the cell contains a Japanese era like “令和3年5月1日” and you’re scratching your head wondering how to turn that into a clean `2021‑05‑01` string. You’re not alone. In this tutorial we’ll **extract date from excel**, parse the Japanese era, and then **display iso date** on the console—all with a few lines of C# and Aspose.Cells. + +We’ll walk through everything you need: the required NuGet package, the exact code you can copy‑paste, why each line matters, and a handful of edge‑case tips. By the end you’ll have a reusable snippet that formats datetime to iso no matter how quirky the original Excel value looks. + +## What You’ll Need + +- .NET 6.0 or later (the code compiles on .NET Framework 4.6+ as well) +- Visual Studio 2022 (or any editor you prefer) +- **Aspose.Cells for .NET** NuGet package – `Install-Package Aspose.Cells` +- An Excel file (or a fresh workbook) that holds a date in Japanese era format + +That’s it. No extra libraries, no COM interop, just a single, well‑documented method. + +## Step 1: Create a Workbook and Write a Japanese Era Date + +First, we need a workbook to work with. If you already have an Excel file, you can load it with `new Workbook("path")`. For this example we’ll create a new workbook in memory and drop a Japanese era string into cell **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells treats cell values as strings by default. By inserting the raw era text we simulate a real‑world scenario where a Japanese client has entered dates in their native calendar. + +## Step 2: Enable Japanese Era Parsing and Extract the Date + +Aspose.Cells can automatically translate Japanese era strings into .NET `DateTime` objects—provided you tell it to. The `DateTimeParseOptions.EnableJapaneseEra` flag does the heavy lifting. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** If you forget the `EnableJapaneseEra` option, the library will return the original string, and your subsequent conversion will fail. Always verify `parsed.Type` if you’re handling mixed content. + +## Step 3: Convert the Parsed DateTime to ISO 8601 + +Now that we have a proper `DateTime`, turning it into an ISO‑formatted string is a breeze. The `"yyyy-MM-dd"` pattern complies with the ISO 8601 date portion, which is what most APIs expect. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Running the program prints: + +``` +ISO date: 2021-05-01 +``` + +That’s the **display iso date** you were after. + +## Full, Runnable Example + +Below is the complete code block you can copy straight into a console project. No hidden dependencies, no extra configuration. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## Step‑by‑Step Breakdown (Why Each Piece Matters) + +| Step | What Happens | Why It’s Important | +|------|--------------|--------------------| +| **Create workbook** | Initializes an in‑memory Excel container. | Gives you a sandbox to test without touching the file system. | +| **PutValue** | Stores the raw Japanese era string in **A1**. | Mimics real data entry; ensures the parser sees the exact text. | +| **GetValue with `EnableJapaneseEra`** | Converts the era string into a .NET `DateTime`. | Handles the calendar conversion automatically—no manual lookup tables needed. | +| **`ToString("yyyy-MM-dd")`** | Formats the `DateTime` to ISO 8601. | Guarantees a culture‑invariant, sortable date string accepted by REST APIs, databases, etc. | +| **Console.WriteLine** | Shows the final ISO date. | Confirms the whole pipeline works end‑to‑end. | + +## Handling Common Variations + +### 1. Different Cell Locations + +If your date lives in **B2** or a named range, simply replace `"A1"` with the appropriate address: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Multiple Dates in a Column + +When you need to **extract date from excel** for many rows, loop through the used range: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback for Non‑Era Dates + +If a cell already contains a standard date string, the parser still works, but you might want a safety net: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +The `TryParse` flag prevents exceptions and returns the original value if conversion fails. + +### 4. Time Component + +Should you need the time part as well, use `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +That yields a full ISO 8601 timestamp (`2021-05-01T00:00:00`). + +## Visual Aid + +![format datetime to iso example](image.png "An example of formatting datetime to iso in C#") + +*Alt text:* *format datetime to iso example showing console output* + +## Frequently Asked Questions + +- **Can I use this with .xls files?** + Yes. Aspose.Cells supports `.xls`, `.xlsx`, `.csv`, and many other formats out of the box. + +- **What if the workbook is password‑protected?** + Load it with `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Is the ISO format locale‑dependent?** + No. The `"yyyy-MM-dd"` pattern is culture‑invariant, guaranteeing the same string on any machine. + +- **Does this work on .NET Core?** + Absolutely—Aspose.Cells is .NET Standard 2.0 compliant. + +## Wrap‑Up + +We’ve covered how to **format datetime to iso** by **extracting date from excel**, parsing Japanese era strings, and finally **displaying iso date** on the console. The core steps—create a workbook, write or load the era text, enable Japanese era parsing, and format with `ToString("yyyy-MM-dd")`—are all you need for most scenarios. + +Next, you might want to: + +- Write the ISO dates back into another column for downstream processing. +- Export the transformed workbook to CSV for bulk import. +- Combine this logic with a web API that accepts Excel uploads and returns JSON‑encoded ISO dates. + +Feel free to experiment with different date formats, time zones, or even custom calendars. The flexibility of Aspose.Cells means you rarely hit a wall. + +Happy coding, and may all your dates be perfectly ISO‑compliant! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/english/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..4283cda4b7 --- /dev/null +++ b/cells/english/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: How to export Excel with formatting and preserve number format. Learn + to convert Excel range, get formula result, and export Excel with formatting using + Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: en +og_description: How to export Excel with formatting and preserve number format. Step‑by‑step + guide to convert Excel range, get formula result, and export Excel with formatting + in C#. +og_title: How to Export Excel with Formatting – Preserve Number Format +tags: +- C# +- Aspose.Cells +- Excel automation +title: How to Export Excel with Formatting – Preserve Number Format +url: /net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Export Excel with Formatting – Preserve Number Format + +Ever wondered **how to export Excel** data while keeping every cell’s look exactly as you see it in the workbook? Maybe you need to ship a report to a client, feed a grid control, or just stash the values in a database. The pain point is usually the loss of number formatting or formulas turning into raw strings. + +In this tutorial we’ll walk through a complete, ready‑to‑run C# example that **preserves number format**, **converts an Excel range** to a `DataTable`, **gets the formula result**, and finally **exports Excel with formatting** using Aspose.Cells. By the end you’ll have a single method you can drop into any project and call with a worksheet reference. + +> **Quick preview:** the code creates a workbook, writes a value and a formula, tells Aspose.Cells to export the cells as formatted strings, and prints `123.456 | 246.912` – exactly what you’d expect to see in Excel. + +--- + +## What You’ll Need + +- **Aspose.Cells for .NET** (the free trial works fine for learning) +- .NET 6.0 or later (the API is the same on .NET Framework) +- A basic C# development environment (Visual Studio, VS Code, Rider… you choose) + +No extra NuGet packages beyond Aspose.Cells are required. If you haven’t installed it yet, run: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Step 1 – Create a Workbook and Write Values (including a formula) + +First we spin up a fresh workbook and drop a numeric value into **A1**. Then we add a simple formula in **B1** that multiplies the first cell by two. This sets the stage for demonstrating **get formula result** later on. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Why this matters:** +- `PutValue` stores the raw number, while `PutFormula` stores the calculation. +- Aspose.Cells keeps the formula **alive**, so when we later ask for the cell’s value we’ll actually get `246.912`, not the string `"=A1*2"`. + +--- + +## Step 2 – Tell Aspose.Cells to Export Values as Formatted Strings + +If you simply call `ExportDataTable` with default settings, numeric cells will be returned as their underlying `double` values. That strips away any thousands separators, currency symbols, or custom decimal places you may have set. The `ExportTableOptions` class lets us **preserve number format** and **export as string**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Key point:** `ExportNumberFormat = true` is the flag that makes **preserve number format** work. Without it you’d see `"123.456"` and `"246.912"` as raw numbers, which may look fine in code but not when you paste the data into a UI that expects the same formatting as Excel. + +--- + +## Step 3 – Print the Exported Data (Verification) + +Now that we have a `DataTable` full of formatted strings, let’s dump the contents to the console. This also demonstrates that we successfully **get formula result** without evaluating the formula ourselves. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Notice how the second column shows the **formula result**, not the formula text. That’s exactly what you need when you **export Excel with formatting** for downstream processing. + +--- + +## Step 4 – Converting Larger Excel Ranges (Optional) + +The example above handles a tiny `A1:B1` slice, but real‑world scenarios often require exporting entire tables. The same method works for any rectangular block – just adjust the `firstRow`, `firstColumn`, `totalRows`, and `totalColumns` arguments. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tip:** If your sheet already has a header row, set `includeColumnNames` to `true`. Aspose.Cells will use the first row of the range as column names, which is handy when you later bind the `DataTable` to a UI grid. + +--- + +## Step 5 – Common Pitfalls & How to Avoid Them + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Numbers lose commas or currency symbols** | `ExportAsString` is `false` or `ExportNumberFormat` is omitted | Set both `ExportAsString = true` **and** `ExportNumberFormat = true`. | +| **Formula cells return the formula text** | You didn’t call `CalculateFormula` before export (only needed if the workbook isn’t set to auto‑calculate) | Either enable auto‑calculate (`workbook.CalculateFormula()`) or rely on `ExportAsString` which forces evaluation. | +| **Headers appear as data rows** | `includeColumnNames` set to `false` while your range includes a header row | Set `includeColumnNames = true` to treat the first row as column names. | +| **Large ranges cause memory pressure** | Exporting the entire sheet at once loads everything into memory | Export in chunks (e.g., 500 rows at a time) and merge `DataTable`s if needed. | + +--- + +## Step 6 – Full Working Example (Copy‑Paste Ready) + +Below is the entire program, from `using` statements to `Main`. Paste it into a console app and hit **F5** – you’ll see the formatted output instantly. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +That’s the entire **how to export excel** workflow, with formatting intact, formula results evaluated, and a clean `DataTable` ready for any .NET consumer. + +--- + +## Conclusion + +We’ve covered everything you need to know about **how to export Excel** data while **preserving number format**, **converting an Excel range** to a `DataTable`, and **getting formula results** without extra parsing. The key is the `ExportTableOptions` configuration – once you set `ExportAsString` and `ExportNumberFormat` to `true`, Aspose.Cells does the heavy lifting for you. + +From here you can: + +- Plug the `DataTable` into a WPF `DataGrid` or ASP.NET MVC view. +- Write the table to a CSV file while keeping the exact visual representation. +- Extend the approach to multiple sheets or dynamic ranges. + +Feel free to experiment with different formats (currency, percentages) and larger blocks of data. If you run into any quirks, refer back to the **common pitfalls** table – it covers the most frequent hiccups when you **export excel with formatting**. + +Happy coding, and may your exported spreadsheets always look as polished as the originals! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/english/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..352aa893b6 --- /dev/null +++ b/cells/english/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-03-22 +description: Learn how to duplicate pivot in C# using Aspose.Cells. This guide also + shows how to copy rows and load Excel workbook c# for seamless excel automation + copy rows. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: en +og_description: How to duplicate pivot in C#? Follow this concise tutorial to load + Excel workbook c#, copy rows, and master excel automation copy rows. +og_title: How to Duplicate Pivot in C# – Complete Guide +tags: +- C# +- Excel Automation +- Aspose.Cells +title: How to Duplicate Pivot in C# – Complete Step‑by‑Step Guide +url: /net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Duplicate Pivot in C# – Complete Step‑by‑Step Guide + +Ever wondered **how to duplicate pivot** tables programmatically without manually dragging them in Excel? You're not the only one. In many reporting pipelines the same pivot layout is needed on a fresh set of rows, and doing it by hand is a waste of time. + +The good news? With a few lines of C# you can load an Excel workbook, define the area that holds the pivot, and **how to copy rows** so the pivot appears in a new location—all in one automated run. In this tutorial we’ll also cover **load excel workbook c#** basics and give you a solid foundation for **excel automation copy rows** tasks. + +> **What you’ll walk away with** +> • A complete, runnable example that duplicates a pivot table. +> • An explanation of why each line matters. +> • Tips for handling edge cases like hidden worksheets or multiple pivots. + +--- + +## Prerequisites + +Before we dive in, make sure you have: + +- **.NET 6.0** (or any recent .NET version) installed. +- **Aspose.Cells for .NET** – the library we’ll use to manipulate Excel files. You can grab it via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- A source workbook (`Source.xlsx`) that already contains a pivot table in the range **A1:J20** (the range we’ll duplicate). +- Basic familiarity with C# syntax – nothing fancy, just the usual `using` statements and `Main` method. + +If any of these sound unfamiliar, pause a moment and install the package; the rest of the guide assumes the library is ready to go. + +--- + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "how to duplicate pivot in C# illustration") + +*Image alt text: "how to duplicate pivot in C# example showing source and duplicated pivot rows".* + +--- + +## Step 1: Load Excel Workbook C# – Opening the File + +The very first thing you need to do when you want to **load excel workbook c#** is create a `Workbook` instance pointing at your file. This object gives you access to every worksheet, cell, and pivot inside the file. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Why this matters:** +`Workbook` abstracts the whole Excel file into an in‑memory model. Without loading it first you can’t inspect the pivot’s location or copy rows. Also, the constructor automatically detects the file format (XLS, XLSX, CSV, etc.), so you don’t need extra code for format detection. + +--- + +## Step 2: How to Copy Rows – Defining the Pivot Area + +Now that the workbook is in memory, we need to tell Aspose.Cells which rows contain the pivot. In our example the pivot lives in **A1:J20**, which translates to rows **0‑19** (zero‑based indexing). We’ll wrap that in a `CellArea` structure. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Why we use `CellArea`:** +It’s a lightweight way to describe a rectangular block. When you later call `CopyRows`, the method reads this object to know exactly which rows to duplicate. If you ever need to adjust the range (say the pivot grows to column K), you only change the `endColumn` value. + +--- + +## Step 3: Access the Target Worksheet + +Most workbooks have a single sheet, but the API works the same for multiple sheets. Grab the first worksheet (index 0) – that’s where the original pivot lives. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tip:** +If you have named sheets, you can also retrieve them by name: `workbook.Worksheets["Sheet1"]`. This helps avoid hard‑coding indices when the workbook structure changes. + +--- + +## Step 4: How to Copy Rows – Duplicating the Pivot Table + +Here’s the heart of **how to duplicate pivot**: we copy the rows containing the pivot to a new location. In our case we start at row 31 (zero‑based index 30). The `CopyRows` method copies *both* the data and the underlying pivot cache, so the new rows behave exactly like the original. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**What’s happening under the hood?** +`CopyRows` clones each row, preserving formulas, styles, and pivot definitions. Because the pivot’s cache lives at the workbook level, the duplicated pivot automatically references the same data source – no extra configuration needed. + +**Edge case – hidden rows:** +If any of the rows in the source range are hidden, they stay hidden after copying. If you want to unhide them, call `worksheet.Rows[destRow].IsHidden = false` after the copy. + +--- + +## Step 5: Save the Workbook – Verifying the Duplicate + +Finally, write the changes back to disk. You can overwrite the original file or, safer, save to a new name so you can compare the before/after. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Result you should see:** +Open `CopyWithPivot.xlsx`. You’ll find the original pivot at **A1:J20** and an identical copy starting at **A31:J50**. Both pivots can be refreshed independently, and any slicers attached to the original will still work for the copy because they share the same cache. + +--- + +## Common Questions & Variations + +### Can I duplicate multiple pivots at once? + +Absolutely. Loop through all pivot tables (`worksheet.PivotTables`) and copy each one’s range to a different destination. Just make sure the destination ranges don’t overlap. + +### What if the source workbook is password‑protected? + +Aspose.Cells lets you open a protected file by passing the password to the `Workbook` constructor: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### How to copy rows without affecting formulas? + +If you only need the *values* (no formulas), use `CopyRows` with the `CopyOptions` flag: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Is there a way to copy rows to a *different* workbook? + +Yes. After copying rows in the source sheet, you can clone the worksheet into another `Workbook` instance via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Pro Tips for Reliable Excel Automation Copy Rows + +- **Validate the range** before copying. A quick `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` prevents out‑of‑range errors. +- **Turn off calculation** while copying large ranges: `workbook.Settings.CalcMode = CalcMode.Manual;` – this speeds up the operation dramatically. +- **Dispose objects** (`workbook.Dispose()`) if you’re processing many files in a loop to free native resources. +- **Log the operation** – especially in production pipelines – so you can trace which files were processed and catch failures early. + +--- + +## Conclusion + +You now know **how to duplicate pivot** tables in C# using Aspose.Cells, and you’ve seen the full workflow from **load excel workbook c#** to **excel automation copy rows** and finally saving the result. The example is self‑contained, runs out of the box, and can be extended to handle multiple pivots, protected files, or cross‑workbook copying. + +Next steps? Try adapting the script to: + +- Refresh the duplicated pivot programmatically (`pivotTable.RefreshData();`). +- Export the duplicated area to a CSV for downstream processing. +- Integrate the code into an ASP.NET Core API so users can upload a file and receive a duplicated‑pivot version instantly. + +Happy coding, and may your Excel automation be ever smooth! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/row-and-column-management/_index.md b/cells/english/net/row-and-column-management/_index.md index da7cb11f8f..f25c8693a1 100644 --- a/cells/english/net/row-and-column-management/_index.md +++ b/cells/english/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Learn how to unhide rows and columns in Excel using Aspose.Cells for .NET with o Learn how to delete a column in an Excel file using Aspose.Cells for .NET. Follow our detailed, step-by-step guide to streamline your Excel file modifications. ### [Delete a Row in Aspose.Cells .NET](./delete-row-aspose-cells/) Learn how to delete a row in Excel with Aspose.Cells for .NET. This step-by-step guide covers prerequisites, code import, and a detailed walkthrough for seamless data manipulation. +### [Aspose Cells Delete Rows – Protect Header Row in Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Learn how to delete rows while preserving the header row in Excel using Aspose.Cells for .NET. Step-by-step guide. ### [Delete Multiple Rows in Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Learn to delete multiple rows in Excel using Aspose.Cells for .NET. This detailed, step-by-step guide covers prerequisites, coding examples, and FAQs for developers. ### [Insert a Column in Aspose.Cells .NET](./insert-column-aspose-cells/) @@ -83,4 +85,4 @@ Learn to insert multiple rows in Excel using Aspose.Cells for .NET. Follow our d {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/english/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..10311f3100 --- /dev/null +++ b/cells/english/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells Delete Rows while protecting the header row. Learn how to + retrieve first table and safely delete Excel table rows in C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: en +og_description: Aspose Cells Delete Rows while protecting the header row. Learn how + to retrieve first table and safely delete Excel table rows in C#. +og_title: Aspose Cells Delete Rows – Protect Header Row in Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Delete Rows – Protect Header Row in Excel +url: /net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Protect Header Row in Excel + +Ever tried to **aspose cells delete rows** from a table only to discover that the header vanished? That’s a common pitfall when manipulating Excel sheets programmatically. In this guide we’ll walk through a complete, runnable solution that **protects the header row**, shows you how to **retrieve first table**, and safely **delete Excel table rows** without breaking the structure. + +We’ll cover everything from loading the workbook to handling the exception Aspose throws when you attempt to orphan the header. By the end you’ll have a solid pattern you can drop into any .NET project that uses Aspose.Cells. + +--- + +## What You’ll Need + +- **Aspose.Cells for .NET** (v23.12 or later) – the library that lets you work with Excel files without Office installed. +- A basic C# development environment (Visual Studio, Rider, or the `dotnet` CLI). +- An Excel file (`TableWithHeader.xlsx`) that contains at least one **ListObject** (Excel table) with a header row in the first row. + +No additional NuGet packages are required beyond Aspose.Cells. + +--- + +## Step 1: Load the Workbook and Retrieve the First Table + +The first thing you have to do is open the workbook and grab the table you want to modify. This is where the secondary keyword **retrieve first table** comes into play. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Why this matters:** +- `Workbook` reads the file without needing Excel installed. +- `worksheet.ListObjects[0]` is the most straightforward way to **retrieve first table**; if you have multiple tables you can iterate or use the table name. + +> **Pro tip:** If you aren’t sure whether a worksheet actually contains a table, check `worksheet.ListObjects.Count` first to avoid an `IndexOutOfRangeException`. + +--- + +## Step 2: Protect Header Row While Deleting Rows + +Now comes the heart of the matter: **aspose cells delete rows** without wiping out the header. Aspose’s `DeleteRows` method takes a zero‑based start index and a count. Trying to delete the header (row 0) triggers an exception, which is exactly what we want to avoid. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explanation of the logic:** + +| Step | Reason | +|------|--------| +| `table.DeleteRows(1, 2);` | Index 1 points to the **second** row (the first data row). Deleting two rows removes rows 2‑3 in Excel terms, leaving the header (row 1) untouched. | +| `catch (Exception ex)` | Aspose throws an exception **only** when the operation would orphan the header. Catching it lets you log a friendly message instead of crashing the app. | +| `Save` | Persisting the changes lets you open `Result.xlsx` and see that the header is still present. | + +> **What if you really need to delete the header?** +> Use `table.ShowHeaders = false;` before deletion, or delete the entire table and recreate it. But in most business scenarios you’ll want to **protect header row**. + +--- + +## Step 3: Verify the Result – Expected Output + +After running the program, open `Result.xlsx`. You should see: + +- The first row still contains the original column titles. +- Rows 2‑3 (the ones we targeted) are gone, and the remaining data has shifted up. + +The console will display: + +``` +Rows deleted successfully. +``` + +If you mistakenly tried to delete the header (e.g., `table.DeleteRows(0, 1);`), the output would be: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +That message confirms Aspose’s built‑in safeguard is doing its job. + +--- + +## Step 4: Alternative Ways to **Delete Excel Table Rows** + +Sometimes you need more control—like deleting rows based on a condition, or removing non‑contiguous rows. Here are two quick patterns that keep the header safe. + +### 4.1 Delete Rows by Data Filter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Delete Using a Range + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Both snippets respect the **protect header row** rule because the start index never drops below 1. + +--- + +## Step 5: Common Pitfalls & How to Avoid Them + +| Pitfall | Why it Happens | Fix | +|---------|----------------|-----| +| Accidentally deleting the header | Using `0` as the start index | Always start at `1` for data rows, or check `table.ShowHeaders` first. | +| `IndexOutOfRangeException` when the sheet has no tables | Assuming a table exists | Verify `worksheet.ListObjects.Count > 0` before accessing `[0]`. | +| Changes not saved | Forgetting to call `Save` | Call `workbook.Save` after modifications. | +| Deleting rows in the middle shifts indices, causing skips | Forward iteration while deleting | Iterate **backwards** or collect rows to delete first. | + +--- + +## Step 6: Put It All Together – Full Working Example + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Run this program, open `Result.xlsx`, and you’ll see the header untouched while the selected rows are gone. That’s the **complete, self‑contained solution** for **aspose cells delete rows** without sacrificing the header. + +--- + +## Conclusion + +We’ve just demonstrated how to **aspose cells delete rows** while **protecting the header row**, how to **retrieve first table**, and several ways to **delete excel table rows** safely. The key takeaways are: + +- Always start deletions at index 1 to keep the header alive. +- Use `try/catch` to handle Aspose’s built‑in protection exception. +- Verify table existence before operating, and iterate backwards when removing rows conditionally. + +Ready to level up? Try combining this approach with **Aspose Cells’** styling APIs to highlight deleted rows before removal, or automate the process across multiple worksheets. The possibilities are endless, and now you have a reliable pattern to build on. + +If you found this tutorial helpful, give it a thumbs‑up, share it with teammates, or drop a comment with your own edge‑case solutions. Happy coding! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/english/net/saving-and-exporting-excel-files-with-options/_index.md index 2377980eed..c5690647d8 100644 --- a/cells/english/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/english/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Learn how to handle warnings while loading Excel files in .NET using Aspose.Cell Learn how to specify document properties like version, author, and title in an Excel file programmatically using Aspose.Cells for .NET with step-by-step instructions. ### [Trimming Leading Blank Rows and Columns while Exporting](./trimming-leading-blank-rows-and-columns/) Streamline your CSV exports by trimming leading blank rows and columns with Aspose.Cells for .NET. Clean data is just a few steps away. +### [How to Save Workbook in C# – Complete Excel Automation Guide](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Learn how to save a workbook using C# with Aspose.Cells for .NET in a complete automation guide. {{< /blocks/products/pf/tutorial-page-section >}} @@ -51,4 +53,4 @@ Streamline your CSV exports by trimming leading blank rows and columns with Aspo {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/english/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..848cd34ecc --- /dev/null +++ b/cells/english/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: How to save workbook in C# using Aspose.Cells—step-by-step guide covering + how to load Excel, create sheet, reuse sheet, and generate report. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: en +og_description: How to save workbook in C# with Aspose.Cells. Learn how to load Excel, + create sheet, reuse sheet, and generate report in a single tutorial. +og_title: How to Save Workbook in C# – Complete Excel Automation Guide +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: How to Save Workbook in C# – Complete Excel Automation Guide +url: /net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Save Workbook in C# – Complete Excel Automation Guide + +Ever wondered **how to save workbook** in C# after you’ve crunched some data? You’re not alone. Most developers hit a wall when the report looks perfect on screen but refuses to write itself back to disk. In this tutorial we’ll walk through a full‑featured example that not only shows you **how to save workbook**, but also covers **how to load Excel**, **how to create sheet**, **how to reuse sheet**, and **how to generate report**—all with Aspose.Cells. + +Think of it as a coffee‑break chat where I’m pulling the code out of my laptop and explaining each line. By the end you’ll have a runnable program that loads a template, injects data via SmartMarker, reuses an existing detail sheet name, and finally writes the file to your folder. No mysteries, just clear steps you can copy‑paste. + +## What You’ll Need + +- **Aspose.Cells for .NET** (latest version as of 2026). You can grab it from NuGet with `Install-Package Aspose.Cells`. +- A .NET development environment (Visual Studio, Rider, or VS Code with the C# extension works fine). +- A basic Excel template file named `MasterTemplate.xlsx` placed in a folder you control. +- Minimal C# knowledge—if you’ve written a `Console.WriteLine` before, you’re good to go. + +> **Pro tip:** Keep your template in a separate *Resources* folder and mark it as “Copy if newer” so the path stays consistent across builds. + +Now, let’s dive into the code. + +## Step 1: How to Load Excel – Open the Template Workbook + +The first thing you have to do is get the workbook into memory. Aspose.Cells makes this a one‑liner, but understanding the why helps when you need to troubleshoot later. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Why this matters:** Loading the workbook gives you access to every worksheet, style, and named range inside the template. If the file isn’t found, Aspose throws a `FileNotFoundException`, so double‑check the path. +- **Edge case:** If the template is password‑protected, pass the password to the `Workbook` constructor: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Step 2: How to Reuse Sheet – Configure SmartMarker Options + +SmartMarker can automatically create a new detail sheet, but you might already have a sheet named **Detail**. To avoid a clash we tell the processor to reuse that name. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Why this matters:** Without this option Aspose would append a numeric suffix (e.g., “Detail1”) which can break downstream macros or formulas that expect a fixed sheet name. +- **What if the sheet doesn’t exist?** Aspose will create it for you—so the same code works whether the sheet is present or not. + +## Step 3: How to Create Sheet – Prepare the Data Source + +Even though we’re not manually adding a sheet here, the data you feed into SmartMarker dictates whether a new sheet gets created. Let’s build a simple anonymous object that mimics an order list. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Why this matters:** SmartMarker scans the template for markers like `&=Header` and `&=Items.Id`. The structure of `orderData` must match those markers exactly, otherwise the processor silently skips them. +- **Variation:** If you pull data from a database, replace the anonymous type with a list of DTOs or a `DataTable`. The processor handles both. + +## Step 4: How to Generate Report – Process the SmartMarker + +Now we bind the data to the template. The processor walks through the first worksheet, replaces markers, and builds the detail sheet. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Why this matters:** This single line does the heavy lifting—populating the header, iterating over `Items`, and respecting the `DetailSheetNewName` we set earlier. +- **Common question:** *What if I have multiple worksheets with markers?* Loop through each worksheet and call `SmartMarkerProcessor.Process` individually. + +## Step 5: How to Save Workbook – Persist the Resulting File + +Finally, we write the modified workbook back to disk. This is the moment where **how to save workbook** becomes concrete. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Why this matters:** The `Save` method supports many formats (`.xlsx`, `.xls`, `.csv`, `.pdf`, etc.). By default it writes an Excel file, but you can pass a `SaveOptions` object to change the output. +- **Edge case:** If the target file is open in Excel, `Save` throws an `IOException`. Make sure to close any instances or use a unique filename each run. + +![How to Save Workbook in C# example](/images/how-to-save-workbook-csharp.png "How to Save Workbook in C# – visual overview of the process") + +### Full Working Example + +Putting everything together, here’s a self‑contained console app you can compile and run: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Expected output:** After running, you’ll find `SmartMarkerWithDupDetail.xlsx` in `YOUR_DIRECTORY`. Open it and you should see: + +- The original header populated with “Orders”. +- A new (or reused) sheet named **Detail** containing two rows: `Id=1, Qty=5` and `Id=2, Qty=3`. + +If the **Detail** sheet already existed, its content will be overwritten with the fresh data—no extra sheets cluttering your file. + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| *Can I save to PDF instead of XLSX?* | Yes. Replace `workbook.Save("file.xlsx")` with `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *What if my template has multiple SmartMarker sections?* | Call `SmartMarkerProcessor.Process` on each worksheet that contains markers, or pass a collection of data objects that match each section. | +| *Is there a way to append data instead of overwriting the Detail sheet?* | Use `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (available in newer Aspose versions). | +| *Do I need to dispose the Workbook?* | The `Workbook` class implements `IDisposable`. Wrap it in a `using` block for clean resource management. | + +## Conclusion + +We’ve just covered **how to save workbook** in C# from start to finish, demonstrating the entire pipeline: **how to load Excel**, **how to create sheet** (implicitly via SmartMarker), **how to reuse sheet**, and **how to generate report**. The code is ready to drop into any .NET project, and the explanations should give you enough context to adapt it to more complex scenarios—like multi‑sheet reports, conditional formatting, or exporting to PDF. + +Ready for the next challenge? Try adding a chart that visualizes the order quantities, or switch the output format to CSV for downstream processing. The same principles—loading, processing, and saving—still apply, so you’ll find yourself reusing this pattern across many reporting tasks. + +If you hit a snag or have ideas for extensions, feel free to leave a comment. Happy coding, and enjoy the smooth experience of finally being able to **save workbook** exactly the way you need! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/smart-markers-dynamic-data/_index.md b/cells/english/net/smart-markers-dynamic-data/_index.md index feabb08a86..49286f5417 100644 --- a/cells/english/net/smart-markers-dynamic-data/_index.md +++ b/cells/english/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Unlock the power of Aspose.Cells with this step-by-step tutorial on using the HT Unlock the potential of Excel reporting with Aspose.Cells by handling nested objects effortlessly using Smart Markers in a step-by-step guide. ### [Implement Variable Array with Smart Markers Aspose.Cells](./variable-array-smart-markers/) Unlock the power of Aspose.Cells. Learn how to implement variable arrays with Smart Markers step-by-step for seamless Excel report generation. +### [How to Generate Excel Report in C# – Full Guide Using SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} @@ -91,4 +92,4 @@ Unlock the power of Aspose.Cells. Learn how to implement variable arrays with Sm {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/english/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..e05d24a139 --- /dev/null +++ b/cells/english/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-22 +description: How to generate Excel report in C# with a master‑detail template. Learn + to populate Excel template C# quickly, using SmartMarker for repeatable sheets. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: en +og_description: How to generate Excel report in C# using a reusable template. This + step‑by‑step guide shows you how to populate Excel template C# with master‑detail + data. +og_title: How to Generate Excel Report in C# – Complete SmartMarker Tutorial +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: How to Generate Excel Report in C# – Full Guide Using SmartMarker +url: /net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Generate Excel Report in C# – Full Guide Using SmartMarker + +Ever wondered **how to generate Excel report** in C# without writing endless cell‑by‑cell code? You're not the only one. Most devs hit a wall when they need a polished, multi‑sheet report that reflects master‑detail relationships—think orders and line items—yet they don't want to reinvent the wheel each time. + +The good news? With a ready‑made Excel template and Aspose.Cells' **SmartMarker** engine, you can **populate Excel template C#** in just a handful of lines. In this tutorial we'll walk through a real‑world scenario, explain why each step matters, and give you a complete, runnable example you can copy‑paste today. + +> **What you'll get:** a master‑detail Excel report where each order spawns its own worksheet, all driven by plain C# objects. No manual looping over cells, no fragile formulas—just clean, maintainable code. + +--- + +## Prerequisites + +Before we dive in, make sure you have: + +- **.NET 6.0** (or later) installed – the code targets .NET 6 but works on .NET Framework 4.7+ as well. +- **Aspose.Cells for .NET** NuGet package (`Install-Package Aspose.Cells`) – this provides the `Workbook`, `SmartMarkerProcessor`, and related classes. +- An Excel file named **MasterDetailTemplate.xlsx** placed in `YOUR_DIRECTORY`. It should contain a SmartMarker block like `{{Orders.OrderId}}` in the first sheet and a nested block `{{Orders.Items.Prod}}` for the line items. +- A basic understanding of C# anonymous types – we’ll use them to model orders and items. + +If any of these sound unfamiliar, don't worry. We'll mention alternatives (e.g., using EPPlus) later, but the core concept stays the same. + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +The first thing we do is open the template file. Think of the template as a skeleton; SmartMarker will later flesh it out with real data. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Why this matters:** By separating layout (the template) from data (the C# objects), you keep designers happy and developers happy. Designers can tweak fonts, colors, or formulas without touching code. + +--- + +## Step 2: Build the Master‑Detail Data Source + +Next, we create the data that will populate the template. For a typical order report, you have a collection of orders, each with its own collection of items. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Use strongly‑typed classes instead of anonymous types if you need reuse across multiple reports. The anonymous approach keeps the example concise. + +**Why this matters:** SmartMarker works by matching property names (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) with the placeholders in the template. The hierarchy must line up exactly, otherwise the engine will skip those sections. + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +By default SmartMarker writes all rows into a single sheet. We want each order on its own worksheet, which is perfect for printing or emailing per‑order PDFs later. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Why this matters:** `EnableRepeatingSheet` eliminates the need for manual sheet cloning. The engine copies the original sheet, injects the order data, and renames the sheet automatically (usually using the first column value). + +--- + +## Step 4: Process the Template with Your Data + +Now we bind everything together. The `SmartMarkerProcessor` walks through the workbook, replaces tags, and creates new sheets as instructed. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Why this matters:** This single line does the heavy lifting—parsing the template, iterating over collections, and handling nested tables. It’s the heart of **populate Excel template C#** without any manual loops. + +--- + +## Step 5: Save the Finished Report + +Finally, write the populated workbook to disk. You can also stream it directly to an HTTP response for web apps. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Why this matters:** Saving to a file gives you a tangible artifact you can open in Excel, share with stakeholders, or feed into downstream processes like PDF conversion. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Below is the complete program, including `using` directives and a `Main` method. Drop it into a console app, adjust the file paths, and run. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +When you open `MasterDetailResult.xlsx` you’ll see: + +- **Sheet “Order_1”** – contains Order 1’s header and two rows for products A and B. +- **Sheet “Order_2”** – contains Order 2’s header and a single row for product C. +- All formulas, formatting, and charts from the original template are preserved. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +Set `EnableRepeatingSheet = true` **only** on the worksheet that contains the master block. Other sheets will stay untouched, so you can keep a summary page in the original template. + +### Can I use a DataTable instead of anonymous objects? + +Absolutely. SmartMarker works with any object that implements `IEnumerable`. Just replace the anonymous type with a `DataTable` and ensure column names match the tags. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +Implement a custom `ISmartMarkerSheetNaming` interface (or manipulate `workbook.Worksheets` after processing). Most developers simply rename sheets based on a cell value: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker allows custom delimiters via `SmartMarkerOptions`. For example, to use `<< >>` instead of `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache the template** in memory if you generate many reports per request; loading from disk each time adds latency. +- **Combine with PDF conversion** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) for email-friendly outputs. +- **Parameterize the file paths** using configuration files or environment variables to make the solution portable across dev, test, and prod. +- **Unit‑test the data layer** separately; SmartMarker itself is deterministic, so you only need to verify that the data you feed matches the expected schema. + +--- + +## Conclusion + +We’ve covered **how to generate Excel report** in C# end‑to‑end, from loading a SmartMarker‑enabled template to saving a multi‑sheet workbook that reflects master‑detail relationships. By **populate Excel template C#** with just a few lines of code, you avoid brittle cell‑by‑cell logic and give designers freedom to shape the final look. + +Next, you might explore: + +- Using **populate Excel template C#** with charts that auto‑update per sheet. +- Integrating **excel smartmarker c#** with ASP.NET Core to stream reports directly to browsers. +- Automating **c# excel automation** pipelines that pull data from APIs or databases. + +Give it a try, tweak the template, and watch how quickly you can turn raw data into a polished Excel report. Got questions or a cool use‑case? Drop a comment below—happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/tables-and-lists/_index.md b/cells/english/net/tables-and-lists/_index.md index 7440579806..fa533601f2 100644 --- a/cells/english/net/tables-and-lists/_index.md +++ b/cells/english/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Easily convert tables to ranges in Excel using Aspose.Cells for .NET with step-b Unlock the power of Aspose.Cells for .NET. Learn to read & write tables with query data sources in this detailed step-by-step guide. ### [Set Comment of Table or List in Excel](./setting-comment-of-table-or-list/) Learn how to set comments for tables in Excel using Aspose.Cells for .NET with our easy step-by-step guide. +### [Create Excel Table in C# – Step‑by‑Step Guide](./create-excel-table-in-c-step-by-step-guide/) +Create an Excel table in C# using Aspose.Cells for .NET with this detailed step‑by‑step guide. {{< /blocks/products/pf/tutorial-page-section >}} @@ -58,4 +60,4 @@ Learn how to set comments for tables in Excel using Aspose.Cells for .NET with o {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/english/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/english/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..c5b26419e1 --- /dev/null +++ b/cells/english/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-22 +description: Create Excel table in C# quickly. Learn how to add table, define table + range, hide table header, and disable table filter with a complete code example. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: en +og_description: Create Excel table in C# with a clear example. Learn how to add table, + define table range, hide table header, and disable filter in just a few lines. +og_title: Create Excel Table in C# – Complete Programming Guide +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Create Excel Table in C# – Step‑by‑Step Guide +url: /net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Excel Table in C# – Step‑by‑Step Guide + +Ever needed to **create Excel table** programmatically using C#? Creating an Excel table can be a breeze when you know the right steps. In this tutorial we’ll walk through a full, runnable example that shows **how to add table**, **define table range**, **hide table header**, and even **disable table filter** – all without leaving your IDE. + +If you’ve ever struggled with the AutoFilter UI popping up when you don’t want it, you’re in the right place. By the end of this guide you’ll have a ready‑to‑run snippet that produces a clean workbook named *TableNoFilter.xlsx* and you’ll understand why each line matters. + +## What You’ll Learn + +- How to **create Excel table** from scratch with Aspose.Cells. +- The exact syntax to **define table range** (A1:D5 in our case). +- How to enable the header row so the built‑in filter UI appears. +- The trick to **hide table header** and **disable table filter** when you no longer need them. +- A complete, copy‑paste‑ready C# program that you can run today. + +### Prerequisites + +- .NET 6.0 or later (the code works with .NET Framework 4.7+ as well). +- Aspose.Cells for .NET installed via NuGet (`Install-Package Aspose.Cells`). +- Basic familiarity with C# and Visual Studio (or any IDE you prefer). + +--- + +## Step 1: Set Up the Project and Import Namespaces + +Before you can **create Excel table**, you need a console project that references Aspose.Cells. Open a terminal and run: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Now open *Program.cs* and add the required `using` statements: + +```csharp +using System; +using Aspose.Cells; +``` + +These imports give you access to the `Workbook`, `Worksheet`, `CellArea`, and `ListObject` classes that power the rest of the tutorial. + +## Step 2: Initialize a New Workbook and Grab the First Worksheet + +Creating a fresh workbook is the first logical step. Think of the workbook as the Excel file container, and the worksheet as the individual sheet where we’ll place our table. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Why this matters:** A brand‑new `Workbook` starts with a single empty sheet. By pulling `Worksheets[0]` we ensure we’re working on the default sheet without having to create one manually. + +## Step 3: Define the Table Range (A1:D5) + +In Excel parlance, a *table* lives inside a rectangular block of cells. The `CellArea` struct lets us pinpoint that block. Here we’ll cover **define table range** for the cells A1 through D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** If you ever need a dynamic range, you can compute `endRow` and `endColumn` based on data length. The zero‑based indexing is a common source of off‑by‑one bugs, so double‑check your numbers. + +## Step 4: Add the Table and Enable the Header Row + +Now comes the heart of the tutorial: **how to add table** to the worksheet. The `ListObjects` collection handles tables, and setting `ShowHeaders = true` automatically injects the AutoFilter UI. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explanation:** +> - `Add(tableRange, true)` creates a new `ListObject` (i.e., an Excel table) inside the specified range. +> - The `true` flag tells Aspose.Cells that the first row of the range should be treated as a header. +> - Setting `ShowHeaders` to `true` makes the header visible and triggers the built‑in filter UI. + +At this point, if you open the generated workbook, you’ll see a nicely formatted table with filter arrows on each column header. + +## Step 5: Hide the Header Row and Disable the AutoFilter + +Sometimes you want the data without the UI clutter. Perhaps you’re exporting a clean report where filters aren’t needed. Here’s the **hide table header** and **disable table filter** technique: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Why you’d do this:** +> - `ShowHeaders = false` removes the visual header row, turning the table into a plain data block. +> - Setting `AutoFilter = null` clears the hidden filter object, ensuring no residual filter logic remains. This is what we mean by **disable table filter**. + +## Step 6: Save the Workbook to Disk + +Finally, we write the file to a location of your choice. Replace `"YOUR_DIRECTORY"` with an actual path on your machine. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +When you run the program, you should see: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Opening the file reveals a sheet with the data block (no header, no filter arrows). That’s the complete cycle—from **create Excel table** to **disable table filter**. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Below is the entire program, ready to compile. Just replace the placeholder directory with a valid path. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Expected result:** A file named *TableNoFilter.xlsx* containing a plain data range A1:D5 with no visible header row and no filter dropdowns. + +--- + +## Frequently Asked Questions & Edge Cases + +### What if I need multiple tables in the same worksheet? + +Simply repeat **Step 3** with a new `CellArea` and a fresh `ListObject`. Each table maintains its own header and filter settings, so you can hide one and keep another visible. + +### Can I style the table (banded rows, colors) before hiding the header? + +Absolutely. The `ListObject` exposes a `TableStyleType` property. For example: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +You can apply the style **before** you hide the header; the visual formatting will stay intact. + +### What if I need to keep the header but just hide the filter arrows? + +Set `ShowHeaders = true` (keep the row) and then clear the filter: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +That satisfies the **disable table filter** requirement without losing column labels. + +### Does this work with .xlsx files only? + +Aspose.Cells automatically detects the format based on the file extension you pass to `Save`. You could also output to `.xls`, `.csv`, or even `.pdf` with a different extension. + +--- + +## Conclusion + +We’ve just covered everything you need to **create Excel table** in C# using Aspose.Cells, from **define table range** to **hide table header** and **disable table filter**. The code is short, clear, and ready for production use. + +Next, you might explore **how to add table** with dynamic data, apply custom styles, or export the same workbook to PDF. Each of those topics builds on the foundation you’ve just mastered, so feel free to experiment and adapt the snippet to your own projects. + +Got a twist you’d like to share? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/converting-excel-files-to-other-formats/_index.md b/cells/french/net/converting-excel-files-to-other-formats/_index.md index 82c3efb822..e0d463b4a7 100644 --- a/cells/french/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/french/net/converting-excel-files-to-other-formats/_index.md @@ -66,6 +66,10 @@ Découvrez comment enregistrer un classeur au format de feuille de calcul Strict description : Découvrez comment suivre la progression de la conversion de documents par programmation à l'aide d'Aspose.Cells pour .NET dans ce didacticiel détaillé. ### [Suivi de la conversion des documents TIFF par programmation dans .NET](./tracking-document-conversion-progress-for-tiff/) Apprenez à suivre la progression de vos conversions TIFF par programmation avec Aspose.Cells pour .NET grâce à notre guide étape par étape. Améliorez vos compétences en gestion documentaire. +### [Définir la zone d'impression dans Excel et exporter vers PowerPoint – Guide étape par étape](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Apprenez à définir la zone d'impression dans Excel puis à l'exporter en présentation PowerPoint avec Aspose.Cells pour .NET. +### [Exporter Excel vers PowerPoint – Guide complet C#](./export-excel-to-powerpoint-complete-c-guide/) +Apprenez à exporter des classeurs Excel vers des présentations PowerPoint en C# avec Aspose.Cells, étape par étape. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/french/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..67043b967d --- /dev/null +++ b/cells/french/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Apprenez à exporter Excel vers PowerPoint, à définir la zone d’impression + dans Excel et à enregistrer Excel au format PPTX avec des graphiques modifiables + et des objets OLE en quelques étapes seulement. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: fr +og_description: Exportez Excel vers PowerPoint rapidement. Ce tutoriel montre comment + définir la zone d’impression dans Excel et enregistrer le fichier Excel au format + PPTX avec des graphiques modifiables et des objets OLE. +og_title: Exporter Excel vers PowerPoint – Guide complet C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Exporter Excel vers PowerPoint – Guide complet C# +url: /fr/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Exporter Excel vers PowerPoint – Guide complet C# + +Besoin d'**exporter Excel vers PowerPoint** ? Vous êtes au bon endroit. Que vous créiez un deck de ventes hebdomadaire ou que vous automatisiez un pipeline de reporting, transformer une feuille Excel en une présentation PowerPoint peut vous faire gagner des heures de copier‑coller. + +Dans ce tutoriel, nous parcourrons un exemple pratique qui non seulement **export excel to powerpoint**, mais montre aussi comment **set print area Excel** et **save excel as pptx** afin que les diapositives résultantes conservent les graphiques et les objets OLE entièrement modifiables. À la fin, vous disposerez d'un programme C# prêt à l'emploi qui génère un fichier `.pptx` professionnel sans aucune manipulation manuelle. + +## Ce dont vous avez besoin + +- **.NET 6+** (tout runtime .NET récent fonctionne ; le code utilise la syntaxe C# 10) +- **Aspose.Cells for .NET** – la bibliothèque qui assure l'export. Vous pouvez l'obtenir via NuGet (`Install-Package Aspose.Cells`). +- Un classeur Excel contenant au moins un graphique et/ou un objet OLE (le fichier d'exemple `ChartAndOle.xlsx` est utilisé dans le code). +- Un IDE préféré (Visual Studio, Rider ou VS Code – ce qui vous convient). + +C’est tout. Pas d’interop COM, pas d’installation d’Office requise. + +> **Pourquoi passer par une bibliothèque ?** +> L’Interop Office intégré est fragile, nécessite Office sur le serveur, et produit souvent des images rasterisées alors que vous voulez des formes vectorielles et modifiables. Aspose.Cells prend en charge le travail lourd et garde tout éditable dans PowerPoint. + +--- + +## Étape 1 : Charger le classeur Excel + +Tout d'abord, nous chargeons le fichier source en mémoire. La classe `Workbook` abstrait l’ensemble du fichier Excel, nous donnant accès aux feuilles, graphiques et objets OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Pourquoi c’est important :** Le chargement du classeur est la base. Si le chemin est incorrect ou que le fichier est corrompu, le reste du pipeline ne s’exécutera jamais. Le bloc `try…catch` vous fournit une erreur conviviale au lieu d’un plantage. + +--- + +## Étape 2 : Définir la zone d’impression dans Excel + +Avant l’export, vous voulez généralement limiter la sortie à une plage spécifique. C’est là que **set print area excel** entre en jeu. En définissant une zone d’impression, vous indiquez à Aspose.Cells exactement quelles cellules (et quels objets associés) doivent apparaître sur la diapositive. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Astuce :** Si vous avez plusieurs feuilles, répétez l’affectation `PrintArea` pour chacune de celles que vous prévoyez d’exporter. Laisser la zone d’impression non définie exportera la feuille entière, ce qui peut alourdir le fichier PowerPoint. + +--- + +## Étape 3 : Configurer les options d’export – Conserver les graphiques & OLE éditables + +Aspose.Cells propose un riche objet `ImageOrPrintOptions`. En activant `ExportChartObjects` et `ExportOleObjects`, nous préservons la nature vectorielle des graphiques et l’éditabilité des objets OLE (comme les documents Word ou PDF intégrés). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Que se passe-t-il en coulisses ?** +Lorsque `ExportChartObjects` est `true`, Aspose convertit le graphique en une forme native PowerPoint, conservant séries, axes et formatage. Avec `ExportOleObjects` activé, les objets intégrés sont insérés comme cadres OLE, de sorte qu’un double‑clic dans PowerPoint ouvre l’application d’origine (Word, Excel, etc.) pour les modifier. + +--- + +## Étape 4 : Enregistrer la feuille en fichier PowerPoint éditable + +Nous rassemblons maintenant le tout. La méthode `Save` écrit le fichier `.pptx` en utilisant les options que nous avons configurées. Le résultat est un deck où chaque feuille devient une diapositive (ou une série de diapositives si la zone d’impression s’étend sur plusieurs pages). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Résultat attendu + +- **Emplacement du fichier :** `C:\MyProjects\EditableChartOle.pptx` +- **Contenu :** + - Une diapositive affichant la plage `A1:H30` exactement comme elle apparaît dans Excel. + - Tous les graphiques sont des objets graphiques PowerPoint — cliquez sur une barre et modifiez les données. + - Les objets OLE (par ex., un document Word intégré) peuvent être ouverts et modifiés directement depuis la diapositive. + +Si vous ouvrez le PPTX dans PowerPoint, vous devriez voir une diapositive propre avec des composants entièrement éditables—pas de captures d’écran rasterisées. + +--- + +## Cas particuliers & variantes + +### Plusieurs feuilles → Plusieurs diapositives +Si vous voulez que chaque feuille devienne sa propre diapositive, bouclez simplement sur `workbook.Worksheets` et appelez `Save` avec un `SheetToImageOptions` ciblant un indice de feuille spécifique. Aspose générera automatiquement une nouvelle diapositive pour chaque itération. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Grandes plages & performances +Exporter une zone d’impression massive (par ex., `A1:Z1000`) peut augmenter l’utilisation de mémoire. Pour atténuer le problème, envisagez : +- De diviser la plage en morceaux plus petits et de les exporter comme diapositives séparées. +- D’utiliser `WorkbookSettings` pour augmenter le `MemorySetting` si vous rencontrez une `OutOfMemoryException`. + +### Problèmes de compatibilité +Le PPTX généré fonctionne avec PowerPoint 2016 et versions ultérieures. Les versions plus anciennes peuvent tout de même ouvrir le fichier mais perdre certaines fonctionnalités avancées de graphique. Testez toujours sur la version Office cible si vous distribuez largement le deck. + +--- + +## Exemple complet fonctionnel (prêt à copier‑coller) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Conseil :** Remplacez les chemins codés en dur par des valeurs de configuration ou des arguments en ligne de commande pour un outil plus flexible. + +--- + +## FAQ + +**Q : Puis‑je exporter uniquement un graphique sans les cellules environnantes ?** +R : Oui. Utilisez uniquement `ExportChartObjects` et définissez la zone d’impression sur la plage englobant le graphique. Le graphique apparaîtra centré sur la diapositive. + +**Q : Que se passe‑t‑il si mon classeur contient des macros ?** +R : Aspose.Cells ignore les macros VBA lors de l’export. Si vous avez besoin de fonctionnalité macro dans PowerPoint, vous devrez la recréer avec VBA PowerPoint ou des add‑ins. + +**Q : Cela fonctionne‑t‑il sous Linux/macOS ?** +R : Absolument. Aspose.Cells est une bibliothèque .NET pure ; tant que le runtime .NET est présent, le code s’exécute multiplateforme. + +--- + +## Conclusion + +Vous venez d’apprendre comment **exporter Excel vers PowerPoint** tout en définissant précisément **set print area excel** et **save excel as pptx** avec des graphiques et objets OLE entièrement éditables. Les étapes clés sont le chargement du classeur, la définition de la zone d’impression, la configuration de `ImageOrPrintOptions`, puis l’enregistrement du PPTX. + +À partir d’ici, vous pouvez explorer : +- L’exportation de plusieurs feuilles dans un même deck. +- L’ajout de titres ou de notes de diapositive personnalisés par programme. +- La conversion du PPTX en PDF pour la distribution (utilisez `SaveFormat.Pdf`). + +Testez le code, ajustez la zone d’impression, et voyez vos données Excel apparaître magiquement dans PowerPoint—sans copier‑coller manuel. En cas de problème, consultez la documentation Aspose.Cells ou laissez un commentaire ci‑dessous. Bon codage ! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/french/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..515c4927fd --- /dev/null +++ b/cells/french/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-22 +description: Définir la zone d’impression dans Excel et convertir Excel en PowerPoint + avec des formes éditables. Apprenez comment répéter la ligne de titre, créer un + PowerPoint à partir d’Excel et exporter Excel au format PPTX. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: fr +og_description: Définissez la zone d’impression dans Excel et convertissez‑la en diapositive + PowerPoint avec des formes modifiables. Suivez ce guide complet pour répéter la + ligne de titre et exporter Excel au format pptx. +og_title: Définir la zone d'impression dans Excel – Tutoriel d'exportation vers PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Définir la zone d’impression dans Excel et exporter vers PowerPoint – Guide + étape par étape +url: /fr/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Définir la zone d'impression dans Excel et exporter vers PowerPoint – Tutoriel complet de programmation + +Vous avez déjà eu besoin de **set print area** dans une feuille de calcul Excel puis de transformer cette partie en diapositive PowerPoint ? Vous n'êtes pas le seul. Dans de nombreux pipelines de reporting, les mêmes données qui s'impriment bien doivent également apparaître dans une présentation, souvent avec la première ligne répétée comme titre. La bonne nouvelle ? En quelques lignes de C#, vous pouvez **convert excel to powerpoint**, garder toutes les zones de texte éditables, et même **repeat title row** automatiquement. + +Dans ce guide, nous passerons en revue tout ce que vous devez savoir : de la configuration de la zone d'impression à la création d'un fichier PPTX que vous pouvez éditer directement dans PowerPoint. À la fin, vous serez capable de **create powerpoint from excel**, d'exporter le résultat en **export excel to pptx**, et de réutiliser le même code dans n'importe quel projet .NET. Pas de magie, juste des étapes claires et un exemple complet et exécutable. + +## Ce dont vous avez besoin + +- **.NET 6.0** ou version ultérieure (l'API fonctionne également avec .NET Framework) +- **Aspose.Cells for .NET** (la bibliothèque qui fournit `Workbook`, `ImageOrPrintOptions`, etc.) +- Un IDE C# de base (Visual Studio, Rider, ou VS Code avec l'extension C#) +- Un fichier Excel (`input.xlsx`) contenant les données que vous souhaitez exporter + +C’est tout—aucun paquet NuGet supplémentaire au-delà d'Aspose.Cells. Si vous n'avez pas encore ajouté la bibliothèque, exécutez : + +```bash +dotnet add package Aspose.Cells +``` + +Nous sommes maintenant prêts à démarrer. + +## Étape 1 : Charger le classeur – le point de départ pour l'exportation + +La première chose à faire est de charger le classeur qui contient la feuille que vous voulez transformer en diapositive. Considérez le classeur comme le document source ; sans lui, rien d'autre n'a d'importance. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Pourquoi c’est important :** Charger le classeur vous donne accès à la collection de feuilles de calcul, aux options de mise en page, et au moteur d'exportation. Si vous sautez cette étape, vous ne pourrez pas définir la **print area** ni répéter de lignes. + +> **Astuce :** Utilisez un chemin absolu lors des tests, puis passez à un chemin relatif ou basé sur la configuration pour la production. + +## Étape 2 : Configurer les options d'exportation – garder les zones de texte et les formes éditables + +Lorsque vous exportez vers PowerPoint, vous voulez probablement que la diapositive résultante soit éditable. Aspose.Cells vous permet de contrôler cela avec `ImageOrPrintOptions`. Définir `ExportTextBoxes` et `ExportShapeObjects` à `true` indique à la bibliothèque de conserver ces objets en tant qu'éléments PowerPoint natifs plutôt que de les aplatir en image. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Pourquoi c’est important :** Si vous avez jamais eu besoin de **convert excel to powerpoint** puis d'ajuster la diapositive manuellement, ce paramètre vous évite de recréer les zones de texte à partir de zéro. Il garantit également que toutes les formes (comme des flèches ou des graphiques) restent des objets vectoriels que vous pouvez redimensionner. + +## Étape 3 : Définir la zone d'impression et répéter la ligne de titre + +Nous arrivons maintenant au cœur du tutoriel : **set print area** et faire en sorte que la première ligne se répète sur chaque page imprimée (ou, dans notre cas, sur la diapositive exportée). La zone d'impression indique à Excel quelles cellules prendre en compte pour l'impression—ou l'exportation dans notre scénario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Pourquoi c’est important :** En limitant l'exportation à `A1:G20`, vous évitez d'inclure de vastes plages vides, ce qui accélère la conversion et garde la diapositive propre. La ligne `PrintTitleRows` fait en sorte que la première ligne agisse comme un en-tête—exactement ce que vous voulez lorsque vous **repeat title row** dans une présentation. + +> **Cas particulier :** Si vos données commencent à la ligne 2, ajustez la plage en conséquence (par ex., `PrintTitleRows = "$2:$2"`). + +## Étape 4 : Enregistrer la feuille de calcul en tant que fichier PowerPoint + +Enfin, nous écrivons la diapositive sur le disque. La méthode `Save` prend le nom de fichier cible et les options que nous avons configurées précédemment. Le résultat est un fichier PPTX avec des zones de texte et des formes éditables, prêt à être ouvert dans PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Ce que vous verrez :** Ouvrez `SheetWithEditableShapes.pptx` dans PowerPoint. La première ligne apparaît comme un titre, toutes les cellules de `A1:G20` sont rendues, et toutes les formes que vous avez ajoutées dans Excel restent déplaçables et éditables. Pas d'images rasterisées—seulement des objets PowerPoint natifs. + +## Exemple complet fonctionnel – Toutes les étapes combinées + +Voici le programme complet, prêt à être copié‑collé. Exécutez‑le en tant qu'application console ou intégrez‑le dans n'importe quelle solution plus grande. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Sortie attendue :** Après l'exécution du programme, la console affiche le message de succès, et le fichier PPTX apparaît à l'emplacement spécifié. L'ouverture du fichier montre une seule diapositive avec la plage sélectionnée, des zones de texte éditables, et toutes les formes originales. + +## Questions fréquentes & pièges + +| Question | Réponse | +|----------|--------| +| **Cela fonctionne-t-il avec plusieurs feuilles de calcul ?** | Oui. Parcourez `workbook.Worksheets` et répétez les mêmes étapes pour chaque feuille, en changeant le nom de fichier de sortie à chaque fois. | +| **Et si j’ai besoin d’exporter plus d’une diapositive ?** | Appelez `workbook.Save` plusieurs fois avec différents objets `ImageOrPrintOptions`, chacun configuré avec un `PageSetup` différent si nécessaire. | +| **Puis-je changer la taille de la diapositive ?** | Utilisez `exportOptions.ImageFormat` pour définir le DPI, ou ajustez `sheet.PageSetup.PaperSize` avant l’enregistrement. | +| **Aspose.Cells est‑il gratuit ?** | Il propose une évaluation gratuite avec filigranes. Pour la production, une licence est requise. | +| **Qu’en est‑il des formules Excel ?** | Les valeurs exportées sont les **résultats calculés** au moment de l’exportation. Si vous avez besoin de formules actives dans PowerPoint, vous devrez adopter une autre approche. | + +## Conseils pour un flux de travail fluide + +- **Astuce :** Définissez `Workbook.Settings.CalcMode = CalculationModeType.Automatic` avant l’exportation pour garantir que toutes les formules sont à jour. +- **Attention :** Des plages très grandes peuvent provoquer une pression mémoire. Réduisez la zone d'impression à la plus petite plage nécessaire. +- **Conseil de performance :** Réutilisez une seule instance de `ImageOrPrintOptions` si vous exportez de nombreuses feuilles ; créer une nouvelle instance à chaque fois ajoute une surcharge. +- **Note de version :** Le code ci‑dessus cible Aspose.Cells 23.10 (sorti en novembre 2023). Les versions ultérieures conservent la même API, mais vérifiez toujours les notes de version pour les changements incompatibles. + +## Conclusion + +Nous avons vu comment **set print area** dans une feuille de calcul Excel, répéter la première ligne comme titre, puis **export excel to pptx** tout en conservant les zones de texte et les formes éditables. En bref, vous connaissez maintenant une méthode fiable pour **convert excel to powerpoint**, **repeat title row**, et **create powerpoint from excel** avec seulement quelques lignes de C#. + +Prêt pour l’étape suivante ? Essayez d’automatiser une conversion par lots de dizaines de rapports, ou ajoutez des mises en page de diapositives personnalisées en utilisant le PowerPoint SDK après l’exportation. Le ciel est la limite—expérimentez, cassez des choses, et profitez de la puissance de la génération programmatique de documents. + +Si vous avez trouvé ce tutoriel utile, partagez‑le, laissez un commentaire avec vos propres ajustements, ou explorez nos autres guides sur **export excel to pptx** et les sujets d’automatisation associés. Bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/csv-file-handling/_index.md b/cells/french/net/csv-file-handling/_index.md index 856bcfcc54..6fe228fd5f 100644 --- a/cells/french/net/csv-file-handling/_index.md +++ b/cells/french/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Pour plus d'informations, n'hésitez pas à consulter nos tutoriels détaillés Apprenez à ouvrir des fichiers CSV avec Aspose.Cells pour .NET grâce à notre guide complet et détaillé. Maîtrisez la manipulation des données. ### [Ouverture de fichiers CSV avec l'analyseur préféré](./csv-file-opening-csv-files-with-preferred-parser/) Apprenez à ouvrir et analyser des fichiers CSV avec des analyseurs personnalisés dans Aspose.Cells pour .NET. Gérez facilement du texte et des dates. Idéal pour les développeurs. +### [Enregistrer le classeur au format CSV en C# – Exporter Excel vers CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Apprenez à enregistrer un classeur Excel au format CSV en C# avec Aspose.Cells, pour exporter facilement vos données. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/french/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..ca0e402efe --- /dev/null +++ b/cells/french/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Enregistrez le classeur au format CSV en C# rapidement. Apprenez à exporter + Excel en CSV, à définir la précision et à convertir un fichier xlsx en CSV avec + Aspose.Cells en quelques lignes seulement. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: fr +og_description: Enregistrez le classeur au format CSV en C# rapidement. Ce guide montre + comment exporter Excel en CSV, définir la précision et convertir un fichier xlsx + en CSV à l'aide d'Aspose.Cells. +og_title: Enregistrer le classeur au format CSV en C# – Exporter Excel en CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Enregistrer le classeur au format CSV en C# – Exporter Excel en CSV +url: /fr/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer un classeur au format CSV en C# – Exporter Excel vers CSV + +Vous avez déjà eu besoin de **save workbook as CSV** mais vous n'étiez pas sûr de comment garder les nombres propres ? Vous n'êtes pas seul. Dans de nombreux scénarios de pipelines de données, nous devons **export Excel to CSV** tout en préservant un nombre spécifique de chiffres significatifs, et la bibliothèque Aspose.Cells rend cela très simple. + +Dans ce tutoriel, vous verrez un exemple complet, prêt à l'exécution, qui **saves a workbook as CSV**, montre *how to set precision* et explique même *how to convert xlsx to CSV* pour des projets concrets. Pas de références vagues — juste du code que vous pouvez copier, coller et exécuter dès aujourd'hui. + +## Ce que vous apprendrez + +- Les étapes exactes pour **save workbook as CSV** avec un réglage de précision personnalisé. +- Comment **export Excel to CSV** en utilisant `CsvSaveOptions` et pourquoi la propriété `SignificantDigits` est importante. +- Variantes pour différents besoins de précision et pièges courants lors du traitement de grands nombres. +- Un aperçu rapide de la conversion d'un fichier `.xlsx` en `.csv` sans perdre l'intégrité des données. + +### Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également sur .NET Framework 4.6+). +- Le package NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Une compréhension de base de C# et des entrées/sorties de fichiers. + +Si vous avez cela, plongeons-nous. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Enregistrer un classeur au format CSV – Guide étape par étape + +Voici le programme complet. Chaque ligne est commentée afin que vous puissiez voir *pourquoi* chaque partie est là, et pas seulement *ce que* cela fait. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Pourquoi utiliser `CsvSaveOptions.SignificantDigits` ? + +Lorsque vous **how to set precision** pour une exportation CSV, vous décidez en fait combien de chiffres d'un nombre à virgule flottante survivent à la conversion. Excel stocke les nombres avec une précision allant jusqu'à 15 chiffres, mais la plupart des systèmes en aval (bases de données, pipelines d'analyse) n'ont besoin que de quelques-uns. En définissant `SignificantDigits = 4`, la bibliothèque arrondit `123.456789` à `123.5`, gardant le fichier compact et lisible. + +> **Astuce :** Si vous avez besoin de valeurs *exactes* (par ex., pour des données financières), définissez `SignificantDigits` à un nombre plus élevé ou omettez-le complètement. La valeur par défaut est 15, ce qui reflète la précision interne d'Excel. + +## Exporter Excel vers CSV – Variantes courantes + +### Modifier le délimiteur + +Certains systèmes attendent un point-virgule (`;`) au lieu d'une virgule. Vous pouvez le régler ainsi : + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exporter une feuille de calcul spécifique + +Si vous ne souhaitez exporter que la deuxième feuille, remplacez le bloc optionnel par : + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Puis appelez `workbook.Save` comme précédemment. Cette technique est pratique lorsque vous **convert xlsx to csv** mais ne vous intéressez qu'à un onglet particulier. + +### Gérer de grands ensembles de données + +Lorsque vous traitez des millions de lignes, envisagez de diffuser le CSV au lieu de charger tout le classeur en mémoire. Aspose.Cells propose une propriété `CsvSaveOptions` `ExportDataOnly` qui ignore les informations de style, réduisant la consommation de mémoire : + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Comment exporter le CSV – Vérification du résultat + +Après avoir exécuté le programme, ouvrez `Numbers_4sd.csv` dans un éditeur de texte brut. Vous devriez voir quelque chose comme : + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Remarquez comment les nombres sont limités à quatre chiffres significatifs, exactement comme nous l'avons demandé. Si vous ouvrez le fichier dans Excel, les valeurs apparaîtront identiques car Excel respecte l'arrondi appliqué lors de l'exportation. + +## Cas limites & dépannage + +| Situation | Ce qu'il faut vérifier | Solution | +|-----------|------------------------|----------| +| **Fichier non trouvé** | Vérifiez que `sourcePath` pointe vers un vrai fichier `.xlsx`. | Utilisez `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Arrondi incorrect** | Assurez-vous que `SignificantDigits` est défini avant d'appeler `Save`. | Déplacez l'affectation de `CsvSaveOptions` plus tôt ou revérifiez la valeur. | +| **Les caractères spéciaux apparaissent comme �** | L'encodage CSV par défaut est UTF‑8 sans BOM. | Définissez `csvOptions.Encoding = System.Text.Encoding.UTF8` ou `Encoding.Unicode`. | +| **Colonnes vides supplémentaires** | Certaines feuilles ont un formatage errant au-delà de la plage utilisée. | Appelez `worksheet.Cells.MaxDisplayRange` pour tronquer les colonnes inutilisées avant l'export. | + +## Comment définir la précision dynamiquement + +Parfois, la précision requise n'est pas connue au moment de la compilation. Vous pouvez la lire depuis un fichier de configuration ou un argument de ligne de commande : + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Vous pouvez maintenant exécuter : + +``` +dotnet run -- 6 +``` + +et obtenir un CSV avec six chiffres significatifs. Cette petite modification rend la solution flexible pour **how to export csv** dans différents environnements. + +## Récapitulatif de l'exemple complet fonctionnel + +En rassemblant le tout, le programme complet (y compris les ajustements optionnels) ressemble à ceci : + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Exécutez le programme, ouvrez le CSV généré, et vous verrez la précision que vous avez demandée, confirmant que vous avez bien **saved workbook as CSV**. + +## Conclusion + +Vous disposez maintenant d'une recette solide, prête pour la production, pour **saving a workbook as CSV** en C#. Le guide a couvert *how to export Excel to CSV*, a démontré *how to set precision* via `CsvSaveOptions.SignificantDigits`, et a présenté plusieurs variantes pour les scénarios **convert xlsx to csv**. Avec le snippet complet, vous pouvez l'intégrer dans n'importe quel projet .NET et commencer à exporter des données immédiatement. + +**Et après ?** + +- Expérimentez différents délimiteurs (`;`, `\t`) pour les exportations TSV. +- Combinez cette approche avec un surveillant de fichiers pour automatiser la génération de CSV chaque fois qu'un fichier Excel change. +- Explorez `CsvLoadOptions` d'Aspose.Cells si vous avez besoin de lire des CSV dans un classeur. + +N'hésitez pas à ajuster la précision, ajouter des en‑têtes personnalisés, ou connecter l'exportateur + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/document-properties/_index.md b/cells/french/net/document-properties/_index.md index d28464e6ee..714866604f 100644 --- a/cells/french/net/document-properties/_index.md +++ b/cells/french/net/document-properties/_index.md @@ -35,6 +35,8 @@ Apprenez à accéder aux propriétés des documents dans Excel avec Aspose.Cells Découvrez comment accéder aux propriétés des documents dans Excel avec Aspose.Cells pour .NET grâce à notre guide étape par étape. Gérez efficacement vos feuilles de calcul. ### [Ajout de propriétés de document dans .NET](./adding-document-properties/) Découvrez comment ajouter des propriétés de document dans Excel à l’aide d’Aspose.Cells pour .NET avec ce guide détaillé étape par étape. +### [Créer un classeur Excel – Ajouter des propriétés personnalisées et enregistrer au format XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Apprenez à créer un classeur Excel, ajouter des propriétés personnalisées et le sauvegarder au format XLSB avec Aspose.Cells pour .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/french/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..d4ad652eee --- /dev/null +++ b/cells/french/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Créer un classeur Excel, ajouter des propriétés personnalisées, définir + le nom de la feuille de calcul et enregistrer en tant que fichier binaire XLSB en + utilisant C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: fr +og_description: Créer un classeur Excel, ajouter des propriétés personnalisées, définir + le nom de la feuille et enregistrer en tant que fichier binaire XLSB avec C#. +og_title: Créer un classeur Excel – Ajouter des propriétés personnalisées et enregistrer + au format XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Créer un classeur Excel – Ajouter des propriétés personnalisées et enregistrer + au format XLSB +url: /fr/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un classeur Excel – Ajouter des propriétés personnalisées et enregistrer au format XLSB + +Vous avez déjà eu besoin de **create Excel workbook** de façon programmatique tout en conservant des métadonnées associées ? Peut‑être construisez‑vous un moteur de reporting qui associe à chaque fichier un ID de rapport, le nom de l’auteur ou le numéro de version. Dans ce cas, apprendre à **add custom properties** tout en **set worksheet name** et enfin **save as XLSB** vous évitera beaucoup de post‑traitement manuel. + +Dans ce tutoriel, nous parcourrons un exemple complet et exécutable qui montre exactement comment **write binary Excel file** avec C#. Vous verrez pourquoi le format XLSB est le bon choix pour transporter des propriétés personnalisées, comment éviter les pièges les plus courants, et quoi faire si vous devez prendre en charge d’anciennes versions d’Excel. + +--- + +## Ce dont vous avez besoin + +- **.NET 6+** (ou .NET Framework 4.6+). Le code fonctionne sur n’importe quel runtime récent. +- **Aspose.Cells for .NET** (version d’essai gratuite ou sous licence). Il fournit les classes `Workbook`, `Worksheet` et `CustomProperties` utilisées ci‑dessous. +- Un IDE avec lequel vous êtes à l’aise – Visual Studio, Rider, ou même VS Code conviendra. +- Un accès en écriture à un dossier où le fichier généré sera enregistré. + +Aucune autre bibliothèque tierce n’est requise. + +--- + +## Étape 1 : Installer Aspose.Cells + +Pour commencer, ajoutez le package NuGet Aspose.Cells à votre projet : + +```bash +dotnet add package Aspose.Cells +``` + +> **Astuce :** Si vous êtes sur un serveur CI, stockez la clé de licence dans une variable d’environnement et chargez‑la à l’exécution – cela empêche le filigrane « evaluation » de s’infiltrer dans votre sortie. + +--- + +## Étape 2 : Créer un classeur Excel – Vue d’ensemble + +La première vraie action consiste à **create Excel workbook**. Cet objet représente le fichier complet en mémoire et vous donne accès aux feuilles de calcul, aux styles et aux propriétés personnalisées. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Pourquoi instancier un nouveau `Workbook` au lieu de charger un modèle ? Un classeur vierge garantit l’absence de styles cachés ou de propriétés personnalisées résiduelles, ce qui est particulièrement important lorsque vous avez l’intention de **write binary excel file** pour des systèmes en aval qui attendent une ardoise propre. + +--- + +## Étape 3 : Définir le nom de la feuille de calcul (et pourquoi c’est important) + +Les feuilles Excel portent par défaut les noms « Sheet1 », « Sheet2 », etc. Donner à une feuille un nom significatif facilite grandement la lecture du traitement en aval—comme Power Query ou les macros VBA. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Si vous essayez d’attribuer un nom dupliqué, Aspose.Cells lèvera une `ArgumentException`. Pour être prudent, vous pouvez vérifier `Worksheets.Exists("Data")` avant de renommer. + +--- + +## Étape 4 : Ajouter des propriétés personnalisées + +Les propriétés personnalisées sont stockées dans le XML interne du classeur et voyagent avec le fichier quel que soit le format. Elles sont idéales pour intégrer des éléments comme `ReportId` ou `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Pourquoi utiliser les propriétés personnalisées ?** +> • Elles sont accessibles via le panneau « File → Info → Properties » d’Excel. +> • Le code qui consomme le classeur peut les lire sans analyser le contenu des cellules. +> • Elles survivent aux conversions de format (XLSX ↔ XLSB) car elles font partie des métadonnées du fichier. + +Vous pouvez également stocker des dates, des booléens ou même des blobs binaires, mais gardez la charge utile petite — Excel n’est pas une base de données. + +--- + +## Étape 5 : Enregistrer au format XLSB (Write Binary Excel File) + +Le format XLSB stocke les données dans une structure binaire, ce qui rend le fichier plus petit et plus rapide à ouvrir. Plus important pour ce tutoriel, **custom properties are baked into the binary stream**, garantissant qu’elles voyagent avec le fichier. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Résultat attendu + +Après avoir exécuté le programme, vous trouverez `WithCustomProps.xlsb` sur votre bureau. Ouvrez‑le dans Excel, allez dans **File → Info → Properties**, et vous verrez `ReportId` et `GeneratedBy` listés sous *Custom*. + +--- + +## Étape 6 : Cas limites et questions fréquentes + +### Que faire si le dossier cible est en lecture‑seule ? + +Enveloppez l’appel `Save` dans un bloc `try/catch` et revenez à un emplacement accessible en écriture par l’utilisateur, comme `%TEMP%`. Cela empêche l’application de planter en cas d’erreurs de permission. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Puis‑je **save as XLSX** et conserver les propriétés personnalisées ? + +Oui—il suffit de remplacer `SaveFormat.Xlsb` par `SaveFormat.Xlsx`. Les propriétés sont stockées dans la même partie XML, elles survivent donc au changement de format. Cependant, les fichiers XLSX sont plus volumineux car ils sont du XML compressé, tandis que le XLSB offre de meilleures performances pour de grands ensembles de données. + +### Comment lire les propriétés personnalisées plus tard ? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Cet extrait affiche chaque propriété personnalisée, ce qui rend trivial pour les services en aval de vérifier la provenance du fichier. + +--- + +## Exemple complet fonctionnel + +Ci‑dessous se trouve le programme complet que vous pouvez copier‑coller dans un nouveau projet console. Aucun morceau ne manque — tout, des instructions `using` jusqu’au dernier `Console.WriteLine`, est inclus. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Exécutez le programme, ouvrez le fichier résultant et vérifiez les propriétés personnalisées. C’est l’ensemble du processus de **create excel workbook**, **add custom properties**, **set worksheet name**, et **save as xlsb** en un flux bien ordonné. + +--- + +## Conclusion + +Vous savez maintenant exactement comment **create Excel workbook**, donner à sa feuille un **set worksheet name** clair, intégrer des métadonnées utiles avec **add custom properties**, et enfin **save as XLSB** pour produire un fichier Excel compact et binaire. Ce flux de travail est fiable, fonctionne sur toutes les versions de .NET, et s’adapte bien que vous génériez un rapport ou mille. + +Et après ? Essayez d’ajouter un tableau de données à la feuille « Data », expérimentez différents types de propriétés (dates, booléens), ou changez la sortie en **save as xlsb** pour des ensembles de données massifs. Vous pouvez également explorer la protection du classeur par mot de passe—Aspose.Cells rend cela possible en une seule ligne. + +N’hésitez pas à laisser un commentaire si vous rencontrez des problèmes, ou à partager comment vous avez étendu ce modèle dans vos propres projets. Bon codage ! + +--- + +![Create Excel workbook screenshot](image.png){alt="Créer un classeur Excel avec des propriétés personnalisées"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/excel-advanced-named-ranges/_index.md b/cells/french/net/excel-advanced-named-ranges/_index.md index db142c6200..9a330b64a4 100644 --- a/cells/french/net/excel-advanced-named-ranges/_index.md +++ b/cells/french/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ L'avantage de cette fonctionnalité réside dans sa simplicité d'utilisation. V Identifiez sans effort les cellules d'une plage nommée dans Excel à l'aide d'Aspose.Cells pour .NET avec ce didacticiel complet étape par étape. ### [Fusionner les cellules d'une plage nommée dans Excel](./merge-cells-in-named-range/) Apprenez à fusionner des cellules d'une plage nommée avec Aspose.Cells pour .NET dans ce tutoriel pas à pas. Découvrez comment formater, styliser et automatiser des rapports Excel. +### [Créer un classeur Excel – Guide étape par étape pour ajouter des tableaux et des règles de nommage](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Apprenez à créer un classeur Excel, ajouter des tableaux et définir des règles de nommage avec Aspose.Cells pour .NET, étape par étape. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/french/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..c2840c9301 --- /dev/null +++ b/cells/french/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Créer un classeur Excel avec un tableau, apprendre les règles de nommage + des tables Excel, éviter l’erreur de plage nommée et définir correctement le nom + du tableau Excel en C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: fr +og_description: Créer un classeur Excel en C# et maîtriser les règles de nommage des + tables Excel. Apprenez à ajouter une feuille de tableau, à définir le nom d’une + table Excel et à corriger les erreurs de plage nommée. +og_title: Créer un classeur Excel – Guide complet des tables et de la nomenclature + C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Créer un classeur Excel – Guide étape par étape pour ajouter des tableaux et + les règles de nommage +url: /fr/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un classeur Excel – Guide complet C# sur les tableaux et la nomination + +Vous avez déjà eu besoin de **créer un classeur Excel** de façon programmatique et vous êtes demandé pourquoi le nom de votre tableau entre en conflit avec une plage nommée ? Vous n'êtes pas seul. Dans de nombreux projets d’automatisation, dès que vous essayez d’attribuer un identifiant convivial à un tableau, Excel génère une *erreur de plage nommée* qui bloque tout le processus. + +Dans ce tutoriel, nous allons parcourir un exemple entièrement exécutable qui **crée un classeur Excel**, **ajoute un tableau à une feuille**, et explique les **règles de nommage des tableaux Excel** qui vous évitent de vous prendre les pieds dans le tapis. À la fin, vous saurez exactement comment **ajouter un tableau à une feuille**, **définir le nom du tableau Excel**, et gérer gracieusement les éventuels conflits de nommage. + +> **Astuce :** La plupart des confusions proviennent du fait qu’Excel traite les noms de tableaux et les plages nommées au niveau du classeur comme un même espace de noms. Comprendre cette règle dès le départ vous fait gagner des heures de débogage. + +## Ce dont vous aurez besoin + +- **Aspose.Cells for .NET** (ou toute bibliothèque exposant les classes `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ ou .NET Framework 4.8 – le code fonctionne avec les deux. +- Une compréhension de base de la syntaxe C# – aucune astuce avancée requise. + +Si vous avez tout cela, plongeons‑y. + +![Capture d’écran d’un classeur Excel nouvellement créé avec un tableau nommé SalesData](create_excel_workbook_example.png "exemple de création de classeur Excel") + +## Étape 1 : Créer le classeur Excel et accéder à la première feuille + +La première chose à faire lorsque vous **créez un classeur Excel** est d’instancier la classe `Workbook` et d’obtenir une référence à la feuille sur laquelle vous travaillerez. Dans Aspose.Cells, le classeur démarre avec une feuille par défaut nommée « Sheet1 ». + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Pourquoi cette étape est‑elle cruciale ? Sans objet classeur, vous n’avez rien auquel attacher un tableau, et la référence `Worksheet` vous fournit une toile où l’opération **ajouter un tableau à la feuille** aura lieu. + +## Étape 2 : Ajouter un tableau (ListObject) couvrant une plage spécifique + +Ensuite, nous **ajoutons un tableau au niveau de la feuille**. La méthode `ListObjects.Add` attend une chaîne de plage et un booléen indiquant si la première ligne contient des en‑têtes. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Remarquez l’appel à `salesTable.Name = "SalesData"`. C’est ici que les **règles de nommage des tableaux Excel** entrent en jeu : le nom doit être unique dans tout le classeur, pas seulement sur la feuille. Il ne peut pas non plus contenir d’espaces ou de caractères spéciaux, et il doit commencer par une lettre ou un souligné. + +## Étape 3 : Tenter de créer une plage nommée au niveau du classeur avec le même identifiant + +Nous provoquons délibérément l’**erreur de plage nommée** pour voir ce qui se passe lorsqu’un conflit de nom survient. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Si vous décommentez la ligne, Aspose.Cells lève une `ArgumentException` indiquant que le nom existe déjà. Le message d’erreur ressemble à : + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Ce message est l’**erreur de plage nommée** dont nous vous avions parlé. Il indique que les **règles de nommage des tableaux Excel** traitent les noms de tableaux et les plages nommées comme un même espace de noms. + +## Étape 4 : Gérer le conflit de nommage de façon élégante + +Dans du code réel, vous voudrez attraper cette exception et soit renommer le tableau, soit choisir un autre nom de plage. Voici une façon propre de le faire : + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +En enveloppant l’appel dans un `try/catch`, vous évitez un plantage brutal et fournissez à l’utilisateur (ou au code appelant) une explication claire — exactement le type d’insight sur les **règles de nommage des tableaux Excel** qui empêche les futurs bugs. + +## Étape 5 : Enregistrer le classeur et vérifier le résultat + +Enfin, persistez le fichier sur le disque et ouvrez‑le dans Excel pour confirmer que le tableau et les éventuelles plages nommées sont présentes. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Lorsque vous ouvrez *SalesReport.xlsx*, vous verrez : + +- Un tableau couvrant **A1:C5** nommé **SalesData**. +- Si vous avez conservé la plage alternative, une plage nommée au niveau du classeur **SalesData_Range** pointant vers **D1**. + +Aucun plantage à l’exécution, et le conflit de nommage est résolu. + +## Comprendre en profondeur les règles de nommage des tableaux Excel + +Décomposons pourquoi ces règles existent : + +| Règle | Ce que cela signifie | Exemple | +|------|----------------------|---------| +| **Unique dans le classeur** | Aucun deux tableaux ou plages nommées ne peuvent partager le même identifiant. | `Table1` vs `Table1` → conflit | +| **Commence par une lettre ou un souligné** | Les noms ne peuvent pas débuter par un chiffre. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Pas d’espaces ni de caractères spéciaux** | Utilisez le CamelCase ou les soulignés. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Longueur ≤ 255 caractères** | Pratiquement toujours respectée. | N/A | + +Gardez ces règles à l’esprit lorsque vous **définissez le nom du tableau Excel** afin d’éliminer l’effrayante *erreur de plage nommée*. + +## Variations courantes et cas limites + +1. **Ajout de plusieurs tableaux** – Chaque tableau doit avoir un nom unique. +2. **Renommer un tableau existant** – Utilisez `salesTable.Name = "NewName"` avant de créer des plages nommées conflictuelles. +3. **Utiliser des plages dynamiques** – Si vous avez besoin d’une plage qui s’étend, utilisez une référence structurée comme `=SalesData[Amount]` au lieu d’une adresse statique. +4. **Plages nommées inter‑feuilles** – Elles font toujours partie du même espace de noms, donc un tableau sur Sheet1 bloque une plage du même nom sur Sheet2. + +## Astuces pro pour une automatisation Excel fluide + +- **Vérifier l’existence avant d’ajouter** : `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Générer des noms sûrs programmatique** : Ajoutez un GUID ou un compteur incrémental (`SalesData_{Guid.NewGuid()}`) quand vous n’êtes pas sûr. +- **Utiliser `ListObject.ShowHeaders = true`** pour rendre vos tableaux auto‑documentés. +- **Valider après l’enregistrement** : Ouvrez le fichier avec une bibliothèque légère (par ex., EPPlus) pour vous assurer que le tableau a bien été créé. + +## Récapitulatif : Ce que nous avons couvert + +- Comment **créer un classeur Excel** à partir de zéro avec Aspose.Cells. +- Les **règles de nommage des tableaux Excel** qui régissent les identifiants de tableaux et de plages nommées. +- Pourquoi une **erreur de plage nommée** apparaît lorsque vous réutilisez un nom. +- La bonne façon d’**ajouter un tableau à une feuille** et de **définir le nom du tableau Excel** sans collisions. +- Un modèle robuste pour gérer les conflits de nommage de façon élégante. + +## Et après ? + +Maintenant que vous maîtrisez les bases, explorez : + +- **Croissance dynamique de tableau** avec `ListObject.Resize`. +- **Application de styles** aux tableaux (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exportation vers CSV** tout en conservant les structures de tableau. +- **Intégration avec Office Open XML** pour un contrôle encore plus fin des internes du classeur. + +N’hésitez pas à expérimenter — changez la plage, ajoutez d’autres tableaux, ou jouez avec différents schémas de nommage. Plus vous bidouillez, plus votre compréhension des **règles de nommage des tableaux Excel** s’approfondit. + +--- + +*Bon codage, et que vos classeurs ne se heurtent jamais à nouveau !* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/excel-custom-number-date-formatting/_index.md b/cells/french/net/excel-custom-number-date-formatting/_index.md index 1c84a9d7d4..8ee4647a44 100644 --- a/cells/french/net/excel-custom-number-date-formatting/_index.md +++ b/cells/french/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Ce tutoriel vous permettra d'acquérir les compétences nécessaires pour import Apprenez à vérifier les valeurs des cellules Excel par rapport aux formats numériques personnalisés à l'aide d'Aspose.Cells pour .NET avec ce didacticiel étape par étape. ### [Spécifier les champs de formule lors de l'importation de données dans une feuille Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Découvrez comment importer des données dans des feuilles Excel avec des champs de formule spécifiés à l'aide d'Aspose.Cells pour .NET dans ce didacticiel détaillé. +### [Format numérique personnalisé Excel en C# – Guide complet](./custom-number-format-excel-in-c-complete-guide/) +Apprenez à appliquer des formats numériques personnalisés dans Excel avec C# grâce à ce guide complet. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/french/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..11828e5fcc --- /dev/null +++ b/cells/french/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-03-22 +description: Tutoriel sur le format de nombre personnalisé dans Excel montrant comment + importer un DataTable dans Excel, définir la couleur de fond d’une colonne, formater + la colonne en devise et enregistrer le classeur au format xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: fr +og_description: Tutoriel Excel sur le format de nombre personnalisé qui vous guide + à travers l'importation d'un DataTable, la définition de la couleur d'arrière-plan + d'une colonne, le formatage d'une colonne en devise et l'enregistrement du classeur + au format xlsx. +og_title: Format de nombre personnalisé Excel en C# – Guide étape par étape +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Format de nombre personnalisé Excel en C# – Guide complet +url: /fr/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Format de nombre personnalisé Excel – Tutoriel Full‑Stack C# + +Vous êtes‑vous déjà demandé comment appliquer un style **custom number format excel** directement depuis C# ? Peut‑être avez‑vous essayé d’exporter un DataTable dans une feuille de calcul et vous n’avez vu que des nombres bruts, sans couleur et sans format monétaire. C’est un problème fréquent—surtout lorsque vous avez besoin d’un rapport soigné pour les parties prenantes. + +Dans ce guide, nous résoudrons ce problème ensemble : vous apprendrez à **import datatable to excel**, **set column background color**, **format column as currency**, et enfin **save workbook as xlsx** avec un format de nombre personnalisé qui fait ressortir vos chiffres. Pas de références vagues, juste une solution complète et exécutable que vous pouvez copier‑coller dans votre projet. + +--- + +## Ce que vous allez construire + +À la fin de ce tutoriel, vous disposerez d’une application console C# autonome qui : + +1. Récupère un `DataTable` (vous pouvez remplacer le stub par votre propre requête). +2. Crée un nouveau classeur Excel en utilisant Aspose.Cells (ou toute bibliothèque compatible). +3. Applique une police bleue et en gras à la première colonne, un fond jaune clair à la deuxième, et un format monétaire (`$#,##0.00`) à la troisième. +4. Enregistre le fichier sous le nom `DataTableWithStyleArray.xlsx` dans le dossier de votre choix. + +Vous verrez exactement comment chaque ligne contribue au fichier Excel final, et nous discuterons pourquoi ces choix sont importants pour la maintenabilité et les performances. + +--- + +## Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également avec .NET Framework 4.7+). +- Aspose.Cells pour .NET (version d’essai gratuite ou version sous licence). Installez via NuGet : + +```bash +dotnet add package Aspose.Cells +``` + +- Familiarité de base avec `DataTable` et les applications console C#. + +--- + +## Étape 1 : Récupérer les données source sous forme de DataTable + +Tout d’abord, nous avons besoin de données à exporter. Dans un scénario réel, vous appelleriez probablement un dépôt ou exécuteriez une requête SQL. Pour l’illustration, nous créerons une table simple en mémoire. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Pourquoi c’est important :** Utiliser un `DataTable` vous fournit une source tabulaire, consciente du schéma, qui se mappe proprement sur les lignes et colonnes d’Excel. Cela vous permet également de réutiliser la même logique d’exportation pour n’importe quel jeu de données sans réécrire le code. + +--- + +## Étape 2 : Créer un nouveau classeur et récupérer la première feuille de calcul + +Nous créons maintenant un classeur Excel. La classe `Workbook` représente le fichier complet ; son `Worksheets[0]` est la feuille par défaut où nous déposerons nos données. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Astuce :** Si vous avez besoin de plusieurs feuilles, appelez simplement `workbook.Worksheets.Add("SheetName")` et répétez les étapes de style pour chacune. + +--- + +## Étape 3 : Définir les styles de colonne – Police, arrière‑plan et format de nombre + +Le style dans Aspose.Cells se fait via des objets `Style`. Nous construirons un tableau où chaque élément correspond à une colonne du DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Pourquoi un tableau de styles ?** Passer un tableau à `ImportDataTable` vous permet d’appliquer un style distinct à chaque colonne en un seul appel, ce qui est à la fois concis et performant. Cela garantit également que le formatage reste synchronisé avec l’ordre des données. + +--- + +## Étape 4 : Importer le DataTable tout en appliquant les styles + +Voici le cœur de l’opération : nous injectons le `DataTable` dans la feuille, demandons à Aspose d’inclure la ligne d’en‑tête, et transmettons notre tableau `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Ce qui se passe en coulisses :** Aspose parcourt chaque colonne, écrit l’en‑tête, puis écrit chaque valeur de ligne. Pendant ce processus, il applique le `Style` correspondant du tableau, de sorte que vous obtenez un en‑tête bleu pour « Product », une colonne « Quantity » ombrée de jaune, et une colonne « Revenue » joliment formatée. + +--- + +## Étape 5 : Enregistrer le classeur au format XLSX + +Enfin, nous enregistrons le classeur sur le disque. La méthode `Save` choisit automatiquement le format XLSX en fonction de l’extension du fichier. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Conseil :** Si vous devez diffuser le fichier (par ex., pour une API web), utilisez `workbook.Save(stream, SaveFormat.Xlsx)` au lieu d’un chemin de fichier. + +--- + +## Exemple complet fonctionnel + +Voici le programme complet que vous pouvez coller dans un nouveau projet console. Il compile et s’exécute tel quel, produisant un fichier Excel stylisé. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Résultat attendu + +Lorsque vous ouvrez `DataTableWithStyleArray.xlsx`, vous verrez : + +| **Product** (bleu, gras) | **Quantity** (jaune clair) | **Revenue** (monétaire) | +|--------------------------|-----------------------------|--------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Le **custom number format excel** que vous avez spécifié (`$#,##0.00`) garantit que chaque cellule de revenu affiche un signe dollar, un séparateur de milliers et deux décimales—exactement ce que les équipes financières attendent. + +--- + +## Questions fréquentes & cas limites + +### Puis-je l’utiliser avec une autre bibliothèque Excel ? + +Absolument. Le concept—créer un style par colonne et l’appliquer lors de l’importation—se transpose à EPPlus, ClosedXML ou NPOI. Les appels d’API diffèrent, mais le modèle reste le même. + +### Que se passe‑t‑il si mon DataTable a plus de colonnes que de styles ? + +Aspose appliquera le style par défaut à toute colonne sans entrée correspondante dans le tableau `columnStyles`. Pour éviter les surprises, dimensionnez le tableau à `dataTable.Columns.Count` ou générez les styles dynamiquement dans une boucle. + +### Comment définir un format de nombre personnalisé pour les dates ? + +Il suffit de définir `style.Custom = "dd‑mm‑yyyy"` (ou toute chaîne de format Excel valide). La même approche basée sur un tableau fonctionne pour les dates, les pourcentages ou la notation scientifique. + +### Existe‑t‑il un moyen d’ajuster automatiquement la largeur des colonnes après l’import ? + +Oui—appelez `worksheet.AutoFitColumns();` après l’import. Cela effectue un calcul rapide de la largeur basé sur le contenu des cellules. + +### Qu’en est‑il des grands ensembles de données (100 k+ lignes) ? + +`ImportDataTable` est optimisé pour les opérations en masse, mais vous pourriez atteindre les limites de mémoire. Dans ce cas, envisagez de diffuser les lignes manuellement avec `Cells[i, j].PutValue(...)` et de réutiliser un seul objet `Style` pour réduire la surcharge. + +--- + +## Astuces pro & pièges courants + +- **Évitez de coder en dur les chemins** dans le code de production ; utilisez `Environment.GetFolderPath` ou des paramètres de configuration. +- **Libérez le classeur** si vous êtes dans un service de longue durée—encapsulez‑le dans un bloc `using` pour libérer les ressources natives. +- **Faites attention aux séparateurs spécifiques à la culture**. Le format personnalisé `$#,##0.00` impose un point comme séparateur décimal quel que soit le paramètre régional du système, ce qui est généralement ce que vous voulez pour les rapports financiers. +- **N’oubliez pas de référencer System.Drawing** (ou `System.Drawing.Common` sur .NET Core) pour les structures de couleur utilisées dans le style. +- **Testez la sortie sur différentes versions d’Excel** ; les versions plus anciennes peuvent interpréter certains formats personnalisés légèrement différemment. + +--- + +## Conclusion + +Nous avons couvert tout ce dont vous avez besoin pour **custom number format excel** des fichiers depuis C# : extraire des données d’un `DataTable`, **import datatable to excel**, appliquer un **set column background color**, utiliser **format column as currency**, et enfin **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/excel-workbook/_index.md b/cells/french/net/excel-workbook/_index.md index d15679d7ed..c4b85e3464 100644 --- a/cells/french/net/excel-workbook/_index.md +++ b/cells/french/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Alors pourquoi ne pas saisir cette occasion d'améliorer vos compétences Excel | [Aperçu avant impression du cahier d'exercices](./workbook-print-preview/) | Apprenez à créer des aperçus avant impression pour vos fichiers Excel avec Aspose.Cells pour .NET. Découvrez les étapes de codage dans un tutoriel détaillé et facile à suivre. | | [Travailler avec les propriétés du type de contenu](./working-with-content-type-properties/) | Apprenez à utiliser Aspose.Cells pour .NET pour gérer les propriétés de type de contenu et optimiser la gestion des métadonnées Excel. Suivez ce guide simple et étape par étape. | | [Prise en charge de la signature Xades](./xades-signature-support/) | Découvrez comment ajouter des signatures Xades à vos fichiers Excel avec Aspose.Cells pour .NET grâce à ce guide étape par étape. Sécurisez vos documents. | +| [Créer un nouveau classeur C# – Guide étape par étape avec formules débordantes](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Apprenez à créer un nouveau classeur C# avec des formules débordantes à l'aide d'Aspose.Cells pour .NET, guide étape par étape. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/french/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..1c870bd99a --- /dev/null +++ b/cells/french/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Créez rapidement un nouveau classeur C# avec Aspose.Cells. Apprenez à + ajouter une formule SEQUENCE à débordement, à recalculer automatiquement et à gérer + les cellules dépendantes. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: fr +og_description: Créer un nouveau classeur C# avec Aspose.Cells. Ce tutoriel montre + comment ajouter une formule SEQUENCE à débordement, recalculer le classeur et gérer + les cellules dépendantes. +og_title: Créer un nouveau classeur C# – Guide complet +tags: +- C# +- Excel automation +- Aspose.Cells +title: Créer un nouveau classeur C# – Guide étape par étape avec les formules déversées +url: /fr/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un nouveau classeur C# – Guide complet de programmation + +Vous êtes-vous déjà demandé comment **créer un nouveau classeur C#** sans vous battre avec l’interop COM ? Vous n’êtes pas seul. Dans de nombreux projets, il faut générer un fichier Excel à la volée, y déposer une formule de tableau dynamique, et que tout se rafraîchisse automatiquement. + +Dans ce guide, nous vous montrons exactement cela — en utilisant la bibliothèque moderne **Aspose.Cells**, en ajoutant une formule `SEQUENCE` qui déborde, en modifiant une cellule dépendante, et en forçant un recalcul afin que les résultats restent à jour. À la fin, vous disposerez d’un exemple autonome, exécutable, que vous pourrez copier‑coller dans n’importe quelle application .NET. + +## Ce que vous allez apprendre + +- Comment **créer un nouveau classeur C#** programmatique. +- Le fonctionnement d’une **formule de tableau débordante** et pourquoi elle est pratique. +- Utiliser la **fonction Excel SEQUENCE** depuis le code C#. +- Déclencher le **calcul du classeur C#** pour que les cellules dépendantes se mettent à jour instantanément. +- Les pièges courants (par ex. oublier d’appeler `Calculate`) et leurs solutions rapides. + +Aucun document externe requis — tout ce dont vous avez besoin se trouve ici. + +## Prérequis + +- .NET 6+ (ou .NET Framework 4.7.2+) installé. +- Visual Studio 2022 ou tout IDE de votre choix. +- Le package NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Une connaissance de base de la syntaxe C# (si vous débutez, le code est fortement commenté). + +--- + +## Étape 1 : Créer un nouveau classeur en C# + +Cet en‑tête H2 contient le **mot‑clé principal** exactement où la checklist SEO l’exige. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pourquoi c’est important :** +> Instancier `Workbook` vous donne une représentation en mémoire d’un fichier Excel. Pas de COM, pas d’interop, juste des objets .NET purs que vous pouvez manipuler en toute sécurité. + +--- + +## Étape 2 : Ajouter une formule SEQUENCE débordante + +Une **formule de tableau débordante** s’étend automatiquement aux cellules adjacentes, ce qui est parfait pour générer des listes dynamiques. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Comment ça fonctionne :** +> La fonction `SEQUENCE` (introduite dans Excel 365) crée un tableau vertical de nombres. Parce que nous utilisons une formule *débordante*, Excel (et Aspose.Cells) remplira automatiquement la plage sous `A1` sans que nous ayons à écrire de boucle. + +--- + +## Étape 3 : Modifier une cellule dépendante pour voir l’auto‑rafraîchissement + +Modifions `B1` afin d’observer comment le classeur recalcule le tableau débordant. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Astuce :** +> Si vous faites référence plus tard à la plage débordée dans d’autres formules, changer n’importe quelle cellule à l’intérieur du débordement entraînera la mise à jour de ces formules après l’appel à `Calculate`. + +--- + +## Étape 4 : Forcer le calcul du classeur C# + +Sans appel explicite, Aspose.Cells ne recomputera pas automatiquement les formules. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Ce que fait `Calculate` :** +> Il parcourt chaque cellule contenant une formule, les évalue, et écrit les résultats dans la feuille. C’est le cœur du **calcul du classeur C#** et cela garantit que votre tableau débordant reste synchronisé avec toutes les données dépendantes. + +### Résultat attendu + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Ouvrez `SpilledSequenceDemo.xlsx` et vous verrez les nombres 1‑5 remplir `A1:A5`, tandis que `B1` contient la valeur `10`. Modifiez n’importe quelle cellule du débordement, exécutez à nouveau `Calculate`, et les nouvelles valeurs apparaissent instantanément. + +--- + +## Comprendre la fonction Excel SEQUENCE en C# + +Si vous vous demandez pourquoi `SEQUENCE` est préféré à une boucle manuelle, considérez ces points : + +1. **Performance** – Le moteur évalue tout le tableau en un seul passage. +2. **Lisibilité** – Une ligne de code remplace des dizaines d’appels `PutValue`. +3. **Dimensionnement dynamique** – Vous pouvez remplacer le `5` statique par une référence à une autre cellule, rendant la longueur ajustable à l’exécution. + +C’est un exemple classique de **formule de tableau débordante** qui simplifie les tâches de génération de données. + +--- + +## Pièges courants & Astuces pro + +| Problème | Solution | +|----------|----------| +| Oublier `workbook.Calculate()` | Appelez‑le toujours après avoir modifié des formules ; sinon la feuille affichera d’anciennes valeurs en cache. | +| Utiliser une version ancienne d’Aspose.Cells | Mettez à jour vers le dernier package NuGet pour garantir la prise en charge des fonctions de tableau dynamique comme `SEQUENCE`. | +| Enregistrer avant le calcul | Enregistrez **après** `Calculate` afin que le fichier contienne les derniers résultats. | +| Supposer que le débordement écrasera les données existantes | Aspose.Cells respecte les données existantes au‑delà de la plage débordée ; effacez la zone d’abord si vous avez besoin d’une ardoise propre. | + +**Astuce pro :** Si vous avez besoin que la longueur de la séquence soit configurable, stockez le nombre dans une cellule (par ex. `C1`) et utilisez `=SEQUENCE(C1)` — le moteur de calcul lira la valeur à l’exécution. + +--- + +## Étendre l’exemple + +Maintenant que vous savez comment **créer un nouveau classeur C#**, vous pouvez : + +- Ajouter des formules plus complexes qui référencent la plage débordée (`=SUM(A1#)` où `#` désigne le débordement). +- Exporter en PDF avec `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Insérer des graphiques qui s’ajustent automatiquement à la taille du tableau dynamique. + +Tous ces éléments reposent sur la même base de **calcul du classeur C#** que nous venons de couvrir. + +--- + +## Conclusion + +Nous avons parcouru l’ensemble du processus de **créer un nouveau classeur C#**, depuis l’instanciation de l’objet `Workbook` jusqu’à l’insertion d’une formule `SEQUENCE` débordante, la modification d’une cellule dépendante, et enfin le forçage d’un recalcul pour que tout reste à jour. Le fragment de code complet ci‑dessus est prêt à être exécuté — il suffit de le placer dans une application console, d’ajouter le package NuGet Aspose.Cells, et vous obtiendrez un fichier Excel fonctionnel en quelques secondes. + +Prêt pour l’étape suivante ? Essayez de remplacer le `5` statique par une référence de cellule, expérimentez d’autres fonctions de tableau dynamique comme `FILTER` ou `UNIQUE`, et explorez comment **Aspose.Cells C#** peut alimenter des moteurs de reporting complets. Bon codage ! + +--- + +*Espace réservé à l’image :* + +![Capture d’écran montrant un classeur fraîchement créé avec une formule SEQUENCE débordante – exemple créer nouveau classeur C#](/images/create-new-workbook-csharp.png) + +--- + +*Si ce tutoriel vous a été utile, pensez à étoiler le dépôt, à le partager avec vos collègues, ou à laisser un commentaire ci‑dessous. Vos retours alimentent les futurs guides !* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/french/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..43e9cdfa85 --- /dev/null +++ b/cells/french/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Comment utiliser lambda en C# pour travailler avec les formules Excel. + Apprenez à écrire une formule dans une cellule, convertir une plage en tableau, + afficher le tableau dans la console et calculer la cotangente dans Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: fr +og_description: Comment utiliser les lambda en C# pour manipuler les formules Excel, + convertir une plage en tableau, écrire une formule dans une cellule, afficher le + tableau dans la console et calculer la cotangente dans Excel. +og_title: Comment utiliser les lambda en C# avec les formules Excel – Étape par étape +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Comment utiliser les lambda en C# avec les formules Excel – Guide complet +url: /fr/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment utiliser Lambda en C# avec les formules Excel – Guide complet + +Vous vous êtes déjà demandé **comment utiliser lambda** lorsque vous automatisez Excel depuis C# ? Vous n'êtes pas seul. De nombreux développeurs se heurtent à un mur lorsqu'ils doivent combiner la puissance des nouvelles fonctions de tableau dynamique d'Excel avec la capacité `LAMBDA` de C#. Bonne nouvelle ? C’est en fait assez simple une fois que vous voyez comment les pièces s’emboîtent. + +Dans ce tutoriel, nous passerons en revue **l’écriture d’une formule dans une cellule**, **la conversion d’une plage en tableau**, **l’affichage de ce tableau dans la console**, et même **le calcul de la cotangente dans Excel** — tout en vous montrant **comment utiliser lambda** à l’intérieur d’un appel `REDUCE`. À la fin, vous disposerez d’un extrait exécutable que vous pourrez intégrer à n’importe quel projet .NET faisant référence à Aspose.Cells (ou à une bibliothèque similaire). + +--- + +## Ce que vous apprendrez + +- Comment **écrire une formule dans une cellule** en utilisant C#. +- Comment **convertir une plage en tableau** avec la fonction `EXPAND`. +- Comment **afficher le tableau dans la console** après le calcul. +- Comment **calculer la cotangente dans Excel** en utilisant `COT` et `COTH`. +- La syntaxe exacte pour **comment utiliser lambda** à l’intérieur de la fonction `REDUCE` d’Excel depuis C#. + +> **Prérequis :** Vous avez besoin d’une version récente de .NET (Core 6+ ou .NET Framework 4.7+) et de la bibliothèque Aspose.Cells pour .NET installée via NuGet. + +--- + +## Étape 1 : Configurer le classeur et écrire la formule dans la cellule + +La première chose que nous faisons est de créer un nouveau classeur et de récupérer la première feuille de calcul. Ensuite, nous **écrivons une formule dans une cellule** – dans ce cas, `A1` contiendra le résultat d’un appel `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Pourquoi c’est important :** Écrire la formule directement depuis le code vous permet de générer des feuilles de calcul complexes à la volée sans jamais ouvrir Excel. Cela prépare également l’étape suivante où nous **convertissons une plage en tableau**. + +--- + +## Étape 2 : Convertir une plage en tableau avec EXPAND + +`EXPAND` est la façon dont Excel transforme une petite plage en une matrice plus grande. En plaçant la formule dans `A1`, Excel déversera un bloc de 4 × 5 cellules à partir de cette cellule. Depuis C#, nous n’avons pas besoin de copier manuellement les valeurs – la bibliothèque se charge du travail lourd lorsque nous appelons `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Comment utiliser lambda :** Pas encore, mais restez à l’écoute. D’abord nous avons besoin des données dans la feuille, puis nous les réduirons avec un lambda. + +--- + +## Étape 3 : Utiliser LAMBDA à l’intérieur de REDUCE – Le cœur de « Comment utiliser Lambda » + +Excel 365 a introduit `REDUCE`, qui accepte une **valeur initiale**, une **plage**, et un **LAMBDA** qui indique comment combiner chaque élément. Depuis C#, nous assignons simplement la chaîne de formule ; le lambda vit à l’intérieur de la formule Excel, pas dans le code C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explication :** +- `0` est l’accumulateur de départ (`acc`). +- `A1:D4` est la plage que nous voulons traiter (les quatre premières colonnes du débordement). +- `LAMBDA(acc, x, acc + x)` indique à Excel d’ajouter chaque cellule (`x`) à l’accumulateur. + +C’est l’essence de **comment utiliser lambda** pour l’agrégation dans le contexte d’une feuille de calcul. + +--- + +## Étape 4 : Calculer la cotangente dans Excel – Des degrés à l’hyperbolique + +Si vous avez besoin de résultats trigonométriques, les fonctions `COT` et `COTH` d’Excel sont un jeu d’enfant. Nous les placerons respectivement dans `G1` et `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Pourquoi c’est pratique :** Savoir **calculer la cotangente dans Excel** peut vous éviter d’écrire du code mathématique personnalisé, surtout lorsque le classeur sera partagé avec des non‑développeurs. + +--- + +## Étape 5 : Forcer le calcul et récupérer le tableau étendu + +Nous demandons maintenant au classeur d’évaluer chaque formule, puis d’extraire le tableau déversé de `A1`. C’est ici que nous **affichons le tableau dans la console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Ce que vous verrez :** +- Une matrice 4 × 5 joliment formatée imprimée ligne par ligne. +- La somme calculée par le lambda `REDUCE`. +- Les deux valeurs de cotangente. + +Cela complète le flux depuis **écrire une formule dans une cellule** jusqu’à **afficher le tableau dans la console**. + +--- + +## Exemple complet (prêt à copier‑coller) + +Ci-dessous se trouve le programme complet que vous pouvez insérer dans une application console. N’oubliez pas d’ajouter d’abord le package NuGet `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Sortie console attendue (les valeurs varieront en fonction du contenu par défaut de B1:C2, qui est 0 par défaut) :** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +N’hésitez pas à remplir `B1:C2` avec vos propres nombres avant d’exécuter – la matrice reflétera ces valeurs. + +--- + +## Astuces pro & pièges courants + +- **Astuce pro :** Si vous avez besoin que la plage déversée commence ailleurs, il suffit de changer la cellule cible (`A1`). La fonction `EXPAND` respecte l’ancre. +- **Attention à :** Les cellules vides dans la plage source deviennent `0` dans le tableau déversé, ce qui peut affecter la somme `REDUCE`. +- **Cas limite :** Lorsque le classeur contient des formules dépendant de fonctions volatiles (par ex., `NOW()`), appelez `workbook.Calculate()` après avoir défini toutes les formules pour garantir que tout est à jour. +- **Note de performance :** Pour de très grands débordements, envisagez de limiter la taille dans l’appel `EXPAND` ; sinon vous pourriez allouer plus de mémoire que nécessaire. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/number-and-display-formats-in-excel/_index.md b/cells/french/net/number-and-display-formats-in-excel/_index.md index fc95ef324d..3e97a2dd03 100644 --- a/cells/french/net/number-and-display-formats-in-excel/_index.md +++ b/cells/french/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Si vous souhaitez apporter une touche personnelle à vos feuilles Excel, la pers Automatisez la mise en forme des nombres dans Excel avec Aspose.Cells pour .NET. Apprenez à appliquer des formats de date, de pourcentage et de devise par programmation. ### [Personnalisation des formats d'affichage avec des nombres définis par l'utilisateur](./customizing-display-formats-with-user-defined-numbers/) Découvrez comment personnaliser les formats d'affichage avec Aspose.Cells pour .NET. Formatez les dates, les pourcentages et les devises grâce à ce guide étape par étape. +### [Comment exporter Excel avec mise en forme – Conserver le format des nombres](./how-to-export-excel-with-formatting-preserve-number-format/) +Exportez un classeur Excel tout en conservant le format des nombres grâce à Aspose.Cells pour .NET. +### [Format de date/heure en ISO en C# – Guide complet](./format-datetime-to-iso-in-c-complete-guide/) +Apprenez à convertir des objets DateTime en chaînes ISO 8601 avec C# en utilisant Aspose.Cells pour .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/french/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..0f106921f6 --- /dev/null +++ b/cells/french/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Apprenez à formater la date/heure au format ISO lors de l'extraction + d'une date depuis Excel et à afficher la date ISO à l'aide d'Aspose.Cells en C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: fr +og_description: Formater la date et l'heure en ISO facilement. Ce guide montre comment + extraire une date d’Excel et afficher la date ISO avec Aspose.Cells. +og_title: Formater la date/heure en ISO en C# – Tutoriel étape par étape +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formater la date et l'heure au format ISO en C# – Guide complet +url: /fr/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# formater datetime en iso en C# – Guide complet + +Vous avez déjà eu besoin de **formater datetime en iso** alors que la source se trouve dans un classeur Excel ? Peut‑être la cellule contient une ère japonaise comme « 令和3年5月1日 » et vous vous demandez comment la transformer en une chaîne propre `2021‑05‑01`. Vous n’êtes pas seul. Dans ce tutoriel nous allons **extraire la date d’Excel**, analyser l’ère japonaise, puis **afficher la date iso** dans la console — le tout avec quelques lignes de C# et Aspose.Cells. + +Nous passerons en revue tout ce dont vous avez besoin : le package NuGet requis, le code exact à copier‑coller, pourquoi chaque ligne est importante, et quelques astuces pour les cas limites. À la fin, vous disposerez d’un extrait réutilisable qui formate datetime en iso quel que soit le format original de la valeur Excel. + +## Ce dont vous aurez besoin + +- .NET 6.0 ou ultérieur (le code compile également sous .NET Framework 4.6+) +- Visual Studio 2022 (ou tout autre éditeur de votre choix) +- **Aspose.Cells for .NET** package NuGet – `Install-Package Aspose.Cells` +- Un fichier Excel (ou un nouveau classeur) contenant une date au format d’ère japonaise + +C’est tout. Pas de bibliothèques supplémentaires, pas d’interop COM, juste une méthode unique et bien documentée. + +## Étape 1 : Créer un classeur et écrire une date d’ère japonaise + +Tout d’abord, nous avons besoin d’un classeur avec lequel travailler. Si vous avez déjà un fichier Excel, vous pouvez le charger avec `new Workbook("path")`. Pour cet exemple, nous créerons un nouveau classeur en mémoire et y placerons une chaîne d’ère japonaise dans la cellule **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Pourquoi faisons‑nous cela :** Aspose.Cells traite les valeurs des cellules comme des chaînes par défaut. En insérant le texte brut de l’ère, nous simulons un scénario réel où un client japonais a saisi des dates dans son calendrier natif. + +## Étape 2 : Activer l’analyse d’ère japonaise et extraire la date + +Aspose.Cells peut automatiquement traduire les chaînes d’ère japonaise en objets .NET `DateTime` — à condition de le lui indiquer. Le drapeau `DateTimeParseOptions.EnableJapaneseEra` fait le gros du travail. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Astuce pro :** Si vous oubliez l’option `EnableJapaneseEra`, la bibliothèque renverra la chaîne originale et votre conversion ultérieure échouera. Vérifiez toujours `parsed.Type` si vous traitez du contenu mixte. + +## Étape 3 : Convertir le DateTime analysé en ISO 8601 + +Maintenant que nous disposons d’un `DateTime` correct, le transformer en chaîne au format ISO est un jeu d’enfant. Le modèle `"yyyy-MM-dd"` respecte la partie date d’ISO 8601, ce que la plupart des API attendent. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +L’exécution du programme affiche : + +``` +ISO date: 2021-05-01 +``` + +C’est la **date iso affichée** que vous recherchiez. + +## Exemple complet, exécutable + +Voici le bloc de code complet que vous pouvez copier directement dans un projet console. Aucun dépendance cachée, aucune configuration supplémentaire. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Sortie attendue :** `ISO date: 2021-05-01` + +## Décomposition étape par étape (Pourquoi chaque partie est importante) + +| Étape | Ce qui se passe | Pourquoi c’est important | +|------|----------------|---------------------------| +| **Créer le classeur** | Initialise un conteneur Excel en mémoire. | Vous offre un bac à sable pour tester sans toucher au système de fichiers. | +| **PutValue** | Stocke la chaîne brute d’ère japonaise dans **A1**. | Reproduit une saisie réelle ; garantit que le parseur voit le texte exact. | +| **GetValue avec `EnableJapaneseEra`** | Convertit la chaîne d’ère en un .NET `DateTime`. | Gère automatiquement la conversion de calendrier — aucune table de correspondance manuelle nécessaire. | +| **`ToString("yyyy-MM-dd")`** | Formate le `DateTime` en ISO 8601. | Assure une chaîne de date indépendante de la culture, triable et acceptée par les API REST, bases de données, etc. | +| **Console.WriteLine** | Affiche la date ISO finale. | Confirme que toute la chaîne fonctionne de bout en bout. | + +## Gestion des variations courantes + +### 1. Emplacements de cellule différents + +Si votre date se trouve en **B2** ou dans une plage nommée, remplacez simplement `"A1"` par l’adresse appropriée : + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Plusieurs dates dans une colonne + +Lorsque vous devez **extraire la date d’Excel** pour de nombreuses lignes, parcourez la plage utilisée : + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Solution de secours pour les dates non‑ère + +Si une cellule contient déjà une chaîne de date standard, le parseur fonctionne toujours, mais vous pouvez ajouter une sécurité : + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Le drapeau `TryParse` empêche les exceptions et renvoie la valeur originale si la conversion échoue. + +### 4. Composante temporelle + +Si vous avez besoin de la partie heure également, utilisez `"yyyy-MM-ddTHH:mm:ss"` : + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Cela produit un horodatage ISO 8601 complet (`2021-05-01T00:00:00`). + +## Aide visuelle + +![exemple de formatage datetime en iso](image.png "Un exemple de formatage datetime en iso en C#") + +*Texte alternatif :* *exemple de formatage datetime en iso montrant la sortie console* + +## Questions fréquentes + +- **Puis‑je l’utiliser avec des fichiers .xls ?** + Oui. Aspose.Cells prend en charge `.xls`, `.xlsx`, `.csv` et de nombreux autres formats dès le départ. + +- **Que faire si le classeur est protégé par mot de passe ?** + Chargez‑le avec `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Le format ISO dépend‑il de la locale ?** + Non. Le modèle `"yyyy-MM-dd"` est indépendant de la culture, garantissant la même chaîne sur n’importe quelle machine. + +- **Cela fonctionne‑t‑il sur .NET Core ?** + Absolument — Aspose.Cells est compatible avec .NET Standard 2.0. + +## Conclusion + +Nous avons vu comment **formater datetime en iso** en **extraitant la date d’Excel**, en analysant les chaînes d’ère japonaise, puis en **affichant la date iso** dans la console. Les étapes essentielles — créer un classeur, écrire ou charger le texte d’ère, activer l’analyse d’ère japonaise, et formater avec `ToString("yyyy-MM-dd")` — sont tout ce dont vous avez besoin dans la plupart des scénarios. + +Ensuite, vous pourriez : + +- Écrire les dates ISO dans une autre colonne pour un traitement en aval. +- Exporter le classeur transformé en CSV pour une importation massive. +- Combiner cette logique avec une API web qui accepte les téléchargements Excel et renvoie des dates ISO encodées en JSON. + +N’hésitez pas à expérimenter avec différents formats de date, fuseaux horaires, ou même des calendriers personnalisés. La flexibilité d’Aspose.Cells vous évite rarement les impasses. + +Bon codage, et que toutes vos dates soient parfaitement conformes à l’ISO ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/french/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..100cdb71fa --- /dev/null +++ b/cells/french/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Comment exporter Excel avec mise en forme et préserver le format des + nombres. Apprenez à convertir une plage Excel, obtenir le résultat d’une formule + et exporter Excel avec mise en forme en utilisant Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: fr +og_description: Comment exporter Excel avec mise en forme et préserver le format des + nombres. Guide étape par étape pour convertir une plage Excel, obtenir le résultat + d’une formule et exporter Excel avec mise en forme en C#. +og_title: Comment exporter Excel avec mise en forme – Conserver le format des nombres +tags: +- C# +- Aspose.Cells +- Excel automation +title: Comment exporter Excel avec mise en forme – Conserver le format des nombres +url: /fr/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment exporter Excel avec mise en forme – Conserver le format des nombres + +Vous êtes‑vous déjà demandé **comment exporter Excel** tout en conservant l’apparence exacte de chaque cellule telle qu’elle apparaît dans le classeur ? Peut‑être devez‑vous envoyer un rapport à un client, alimenter un contrôle de grille, ou simplement stocker les valeurs dans une base de données. Le problème habituel est la perte du format des nombres ou les formules qui se transforment en chaînes brutes. + +Dans ce tutoriel, nous parcourrons un exemple complet, prêt à l’emploi en C#, qui **conserve le format des nombres**, **convertit une plage Excel** en `DataTable`, **obtient le résultat de la formule**, et enfin **exporte Excel avec mise en forme** en utilisant Aspose.Cells. À la fin, vous disposerez d’une méthode unique que vous pourrez intégrer à n’importe quel projet et appeler avec une référence de feuille de calcul. + +> **Aperçu rapide :** le code crée un classeur, écrit une valeur et une formule, indique à Aspose.Cells d’exporter les cellules sous forme de chaînes formatées, et affiche `123.456 | 246.912` – exactement ce que vous vous attendez à voir dans Excel. + +--- + +## Ce dont vous aurez besoin + +- **Aspose.Cells for .NET** (l’essai gratuit suffit pour l’apprentissage) +- .NET 6.0 ou version ultérieure (l’API est identique sur .NET Framework) +- Un environnement de développement C# basique (Visual Studio, VS Code, Rider… à vous de choisir) + +Aucun package NuGet supplémentaire au‑delà d’Aspose.Cells n’est requis. Si vous ne l’avez pas encore installé, exécutez : + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Étape 1 – Créer un classeur et écrire des valeurs (y compris une formule) + +Tout d’abord, nous créons un nouveau classeur et insérons une valeur numérique dans **A1**. Ensuite, nous ajoutons une formule simple dans **B1** qui multiplie la première cellule par deux. Cela prépare le terrain pour démontrer **obtenir le résultat de la formule** plus tard. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Pourquoi c’est important :** +- `PutValue` stocke le nombre brut, tandis que `PutFormula` stocke le calcul. +- Aspose.Cells garde la formule **active**, de sorte que lorsque nous demanderons plus tard la valeur de la cellule, nous obtiendrons réellement `246.912`, et non la chaîne `"=A1*2"`. + +--- + +## Étape 2 – Indiquer à Aspose.Cells d’exporter les valeurs sous forme de chaînes formatées + +Si vous appelez simplement `ExportDataTable` avec les paramètres par défaut, les cellules numériques seront renvoyées sous forme de leurs valeurs `double` sous‑jacentes. Cela supprime les séparateurs de milliers, les symboles monétaires ou les décimales personnalisées que vous avez éventuellement définis. La classe `ExportTableOptions` nous permet de **conserver le format des nombres** et **d’exporter sous forme de chaîne**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Point clé :** `ExportNumberFormat = true` est le drapeau qui rend **conserver le format des nombres** fonctionnel. Sans cela, vous verriez `"123.456"` et `"246.912"` comme nombres bruts, ce qui peut sembler correct dans le code mais pas lorsque vous collez les données dans une UI qui attend le même format qu’Excel. + +--- + +## Étape 3 – Imprimer les données exportées (vérification) + +Maintenant que nous disposons d’un `DataTable` rempli de chaînes formatées, affichons le contenu dans la console. Cela montre également que nous **obtenons le résultat de la formule** sans évaluer nous‑mêmes la formule. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Exécution du programme affiche : + +``` +123.456 | 246.912 +``` + +Remarquez comment la deuxième colonne montre le **résultat de la formule**, et non le texte de la formule. C’est exactement ce dont vous avez besoin lorsque vous **exportez Excel avec mise en forme** pour un traitement en aval. + +--- + +## Étape 4 – Convertir de plus grandes plages Excel (optionnel) + +L’exemple ci‑dessus traite d’une petite tranche `A1:B1`, mais les scénarios réels nécessitent souvent l’exportation de tables complètes. La même méthode fonctionne pour n’importe quel bloc rectangulaire – il suffit d’ajuster les arguments `firstRow`, `firstColumn`, `totalRows` et `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Astuce :** Si votre feuille possède déjà une ligne d’en‑tête, définissez `includeColumnNames` sur `true`. Aspose.Cells utilisera la première ligne de la plage comme noms de colonnes, ce qui est pratique lorsque vous liez ensuite le `DataTable` à une grille UI. + +--- + +## Étape 5 – Pièges courants & comment les éviter + +| Problème | Pourquoi cela se produit | Solution | +|----------|--------------------------|----------| +| **Les nombres perdent les virgules ou les symboles monétaires** | `ExportAsString` est `false` ou `ExportNumberFormat` est omis | Définissez à la fois `ExportAsString = true` **et** `ExportNumberFormat = true`. | +| **Les cellules de formule renvoient le texte de la formule** | Vous n’avez pas appelé `CalculateFormula` avant l’exportation (nécessaire uniquement si le classeur n’est pas en auto‑calcul) | Activez le calcul automatique (`workbook.CalculateFormula()`) ou utilisez `ExportAsString` qui force l’évaluation. | +| **Les en‑têtes apparaissent comme des lignes de données** | `includeColumnNames` défini à `false` alors que votre plage inclut une ligne d’en‑tête | Définissez `includeColumnNames = true` pour traiter la première ligne comme noms de colonnes. | +| **Les grandes plages provoquent une pression mémoire** | Exporter la feuille entière en une fois charge tout en mémoire | Exportez par morceaux (par ex., 500 lignes à la fois) et fusionnez les `DataTable` si besoin. | + +--- + +## Étape 6 – Exemple complet fonctionnel (prêt à copier‑coller) + +Voici le programme complet, des déclarations `using` à `Main`. Collez‑le dans une application console et appuyez sur **F5** – vous verrez immédiatement la sortie formatée. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Sortie attendue** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +C’est l’ensemble du workflow **comment exporter Excel**, avec le format conservé, les résultats de formule évalués, et un `DataTable` propre prêt pour tout consommateur .NET. + +--- + +## Conclusion + +Nous avons couvert tout ce que vous devez savoir sur **comment exporter Excel** tout en **conservant le format des nombres**, **convertissant une plage Excel** en `DataTable`, et **obtenant les résultats de formule** sans analyse supplémentaire. La clé réside dans la configuration de `ExportTableOptions` : une fois que vous avez défini `ExportAsString` et `ExportNumberFormat` sur `true`, Aspose.Cells effectue le travail lourd pour vous. + +À partir d’ici, vous pouvez : + +- Brancher le `DataTable` dans un `DataGrid` WPF ou une vue ASP.NET MVC. +- Écrire la table dans un fichier CSV tout en conservant la représentation visuelle exacte. +- Étendre l’approche à plusieurs feuilles ou à des plages dynamiques. + +N’hésitez pas à expérimenter avec différents formats (monétaire, pourcentage) et des blocs de données plus volumineux. Si vous rencontrez des particularités, revenez à la table **pièges courants** – elle couvre les difficultés les plus fréquentes lorsque vous **exportez Excel avec mise en forme**. + +Bon codage, et que vos feuilles de calcul exportées soient toujours aussi soignées que les originales ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/french/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..ab7270d4b1 --- /dev/null +++ b/cells/french/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Apprenez comment dupliquer un tableau croisé dynamique en C# à l’aide + d’Aspose.Cells. Ce guide montre également comment copier des lignes et charger un + classeur Excel en C# pour une automatisation fluide d’Excel lors de la copie de + lignes. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: fr +og_description: Comment dupliquer un tableau croisé dynamique en C# ? Suivez ce tutoriel + concis pour charger un classeur Excel en C#, copier des lignes et maîtriser l’automatisation + Excel pour copier des lignes. +og_title: Comment dupliquer un pivot en C# – Guide complet +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Comment dupliquer le pivot en C# – Guide complet étape par étape +url: /fr/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment dupliquer un tableau croisé dynamique en C# – Guide complet étape par étape + +Vous vous êtes déjà demandé **comment dupliquer un tableau croisé dynamique** de manière programmatique sans les faire glisser manuellement dans Excel ? Vous n'êtes pas le seul. Dans de nombreux pipelines de reporting, la même mise en page de tableau croisé dynamique est nécessaire sur un nouvel ensemble de lignes, et le faire à la main est une perte de temps. + +Bonne nouvelle ? En quelques lignes de C#, vous pouvez charger un classeur Excel, définir la zone qui contient le tableau croisé dynamique, et **comment copier des lignes** afin que le tableau croisé dynamique apparaisse à un nouvel emplacement — le tout en une exécution automatisée. Dans ce tutoriel, nous couvrirons également les bases de **load excel workbook c#** et vous fournirons une base solide pour les tâches de **excel automation copy rows**. + +> **Ce que vous en retirerez** +> • Un exemple complet et exécutable qui duplique un tableau croisé dynamique. +> • Une explication de l'importance de chaque ligne. +> • Des astuces pour gérer les cas particuliers comme les feuilles cachées ou plusieurs tableaux croisés dynamiques. + +--- + +## Prérequis + +Avant de commencer, assurez-vous d'avoir : + +- **.NET 6.0** (ou toute version récente de .NET) installé. +- **Aspose.Cells for .NET** – la bibliothèque que nous utiliserons pour manipuler les fichiers Excel. Vous pouvez l'obtenir via NuGet : + +```bash +dotnet add package Aspose.Cells +``` + +- Un classeur source (`Source.xlsx`) qui contient déjà un tableau croisé dynamique dans la plage **A1:J20** (la plage que nous dupliquerons). +- Une connaissance de base de la syntaxe C# – rien de compliqué, juste les déclarations `using` habituelles et la méthode `Main`. + +Si l'un de ces éléments vous est inconnu, faites une pause et installez le package ; le reste du guide suppose que la bibliothèque est prête à l'emploi. + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "illustration de comment dupliquer un tableau croisé dynamique en C#") +*Texte alternatif de l'image : « exemple de duplication d'un tableau croisé dynamique en C# montrant les lignes source et dupliquées ». * + +## Étape 1 : Charger un classeur Excel C# – Ouverture du fichier + +La toute première chose à faire lorsque vous voulez **load excel workbook c#** est de créer une instance `Workbook` pointant vers votre fichier. Cet objet vous donne accès à chaque feuille, cellule et tableau croisé dynamique du fichier. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Pourquoi c’est important :** +`Workbook` abstrait l’ensemble du fichier Excel en un modèle en mémoire. Sans le charger d’abord, vous ne pouvez pas inspecter l’emplacement du tableau croisé dynamique ni copier les lignes. De plus, le constructeur détecte automatiquement le format du fichier (XLS, XLSX, CSV, etc.), vous n’avez donc pas besoin de code supplémentaire pour la détection du format. + +## Étape 2 : Comment copier des lignes – Définition de la zone du tableau croisé dynamique + +Maintenant que le classeur est en mémoire, nous devons indiquer à Aspose.Cells quelles lignes contiennent le tableau croisé dynamique. Dans notre exemple, le tableau croisé dynamique se trouve dans **A1:J20**, ce qui correspond aux lignes **0‑19** (indexation à partir de zéro). Nous allons encapsuler cela dans une structure `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Pourquoi nous utilisons `CellArea` :** +C’est une façon légère de décrire un bloc rectangulaire. Lorsque vous appelez plus tard `CopyRows`, la méthode lit cet objet pour savoir exactement quelles lignes dupliquer. Si vous devez ajuster la plage (par exemple le tableau croisé dynamique s’étend à la colonne K), vous ne modifiez que la valeur `endColumn`. + +## Étape 3 : Accéder à la feuille cible + +La plupart des classeurs ont une seule feuille, mais l’API fonctionne de la même manière pour plusieurs feuilles. Récupérez la première feuille (index 0) – c’est là que se trouve le tableau croisé dynamique original. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Astuce :** +Si vous avez des feuilles nommées, vous pouvez également les récupérer par leur nom : `workbook.Worksheets["Sheet1"]`. Cela évite de coder en dur les indices lorsque la structure du classeur change. + +## Étape 4 : Comment copier des lignes – Duplication du tableau croisé dynamique + +Voici le cœur de **how to duplicate pivot** : nous copions les lignes contenant le tableau croisé dynamique vers un nouvel emplacement. Dans notre cas, nous commençons à la ligne 31 (index zéro 30). La méthode `CopyRows` copie *à la fois* les données et le cache du tableau croisé dynamique sous-jacent, de sorte que les nouvelles lignes se comportent exactement comme l’original. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Que se passe-t-il en coulisses ?** +`CopyRows` clone chaque ligne, en préservant les formules, les styles et les définitions du tableau croisé dynamique. Comme le cache du tableau croisé dynamique réside au niveau du classeur, le tableau dupliqué référence automatiquement la même source de données – aucune configuration supplémentaire n’est nécessaire. + +**Cas particulier – lignes cachées :** +Si l’une des lignes de la plage source est cachée, elle restera cachée après la copie. Si vous souhaitez les afficher, appelez `worksheet.Rows[destRow].IsHidden = false` après la copie. + +## Étape 5 : Enregistrer le classeur – Vérifier la duplication + +Enfin, écrivez les modifications sur le disque. Vous pouvez écraser le fichier original ou, plus prudent, enregistrer sous un nouveau nom afin de comparer avant/après. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Résultat attendu :** +Ouvrez `CopyWithPivot.xlsx`. Vous trouverez le tableau croisé dynamique original à **A1:J20** et une copie identique commençant à **A31:J50**. Les deux tableaux peuvent être actualisés indépendamment, et tout segment (slicer) attaché à l’original fonctionnera toujours pour la copie car ils partagent le même cache. + +## Questions fréquentes & variantes + +### Puis-je dupliquer plusieurs tableaux croisés dynamiques à la fois ? + +Absolument. Parcourez tous les tableaux croisés dynamiques (`worksheet.PivotTables`) et copiez la plage de chacun vers une destination différente. Veillez simplement à ce que les plages de destination ne se chevauchent pas. + +### Et si le classeur source est protégé par mot de passe ? + +Aspose.Cells vous permet d’ouvrir un fichier protégé en passant le mot de passe au constructeur `Workbook` : + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Comment copier des lignes sans affecter les formules ? + +Si vous avez uniquement besoin des *valeurs* (pas de formules), utilisez `CopyRows` avec le drapeau `CopyOptions` : + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Existe-t-il un moyen de copier des lignes vers un classeur *différent* ? + +Oui. Après avoir copié les lignes dans la feuille source, vous pouvez cloner la feuille dans une autre instance `Workbook` via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Astuces pro pour une copie fiable de lignes en automatisation Excel + +- **Validez la plage** avant de copier. Un simple `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` évite les erreurs de dépassement de plage. +- **Désactivez le calcul** pendant la copie de grandes plages : `workbook.Settings.CalcMode = CalcMode.Manual;` – cela accélère considérablement l’opération. +- **Libérez les objets** (`workbook.Dispose()`) si vous traitez de nombreux fichiers dans une boucle afin de libérer les ressources natives. +- **Enregistrez l’opération** – surtout dans les pipelines de production – afin de tracer quels fichiers ont été traités et de détecter les échecs rapidement. + +## Conclusion + +Vous savez maintenant **how to duplicate pivot** tables en C# avec Aspose.Cells, et vous avez vu le flux complet depuis **load excel workbook c#** jusqu’à **excel automation copy rows** et enfin l’enregistrement du résultat. L’exemple est autonome, fonctionne immédiatement, et peut être étendu pour gérer plusieurs tableaux croisés dynamiques, des fichiers protégés ou la copie entre classeurs. + +Prochaines étapes ? Essayez d’adapter le script pour : + +- Actualiser le tableau croisé dynamique dupliqué de façon programmatique (`pivotTable.RefreshData();`). +- Exporter la zone dupliquée vers un CSV pour le traitement en aval. +- Intégrer le code dans une API ASP.NET Core afin que les utilisateurs puissent télécharger un fichier et recevoir immédiatement une version dupliquée du tableau croisé dynamique. + +Bonne programmation, et que votre automatisation Excel soit toujours fluide ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/row-and-column-management/_index.md b/cells/french/net/row-and-column-management/_index.md index 43580071e2..543f358fdd 100644 --- a/cells/french/net/row-and-column-management/_index.md +++ b/cells/french/net/row-and-column-management/_index.md @@ -68,6 +68,8 @@ Apprenez à supprimer une colonne dans un fichier Excel avec Aspose.Cells pour . Apprenez à supprimer une ligne dans Excel avec Aspose.Cells pour .NET. Ce guide étape par étape couvre les prérequis, l'importation de code et une procédure détaillée pour une manipulation fluide des données. ### [Supprimer plusieurs lignes dans Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Apprenez à supprimer plusieurs lignes dans Excel avec Aspose.Cells pour .NET. Ce guide détaillé, étape par étape, couvre les prérequis, des exemples de codage et une FAQ pour les développeurs. +### [Aspose Cells – Supprimer des lignes tout en protégeant la ligne d’en-tête dans Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Apprenez à supprimer des lignes tout en protégeant la ligne d’en-tête dans Excel avec Aspose.Cells pour .NET. Guide étape par étape. ### [Insérer une colonne dans Aspose.Cells .NET](./insert-column-aspose-cells/) Apprenez à insérer une colonne dans Excel avec Aspose.Cells pour .NET. Suivez notre guide simple et étape par étape pour ajouter une nouvelle colonne en toute simplicité. Idéal pour les développeurs .NET. ### [Insérer une ligne dans Aspose.Cells .NET](./insert-row-aspose-cells/) diff --git a/cells/french/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/french/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..ec9a1cc4e9 --- /dev/null +++ b/cells/french/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells supprime des lignes tout en protégeant la ligne d’en‑tête. + Apprenez comment récupérer la première table et supprimer en toute sécurité les + lignes d’une table Excel en C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: fr +og_description: Aspose Cells supprime des lignes tout en protégeant la ligne d’en-tête. + Apprenez à récupérer la première table et à supprimer en toute sécurité les lignes + d’une table Excel en C#. +og_title: Aspose Cells Supprimer des lignes – Protéger la ligne d’en-tête dans Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Supprimer des lignes – Protéger la ligne d’en-tête dans Excel +url: /fr/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Protéger la ligne d’en‑tête dans Excel + +Vous avez déjà essayé de **aspose cells delete rows** d’un tableau pour découvrir que l’en‑tête avait disparu ? C’est un piège courant lors de la manipulation programmatique des feuilles Excel. Dans ce guide, nous parcourrons une solution complète et exécutable qui **protège la ligne d’en‑tête**, vous montre comment **retrieve first table**, et supprime en toute sécurité les **delete Excel table rows** sans casser la structure. + +Nous couvrirons tout, du chargement du classeur à la gestion de l’exception qu’Aspose lance lorsque vous essayez d’abandonner l’en‑tête. À la fin, vous disposerez d’un modèle solide que vous pourrez intégrer à n’importe quel projet .NET utilisant Aspose.Cells. + +--- + +## Ce dont vous avez besoin + +- **Aspose.Cells for .NET** (v23.12 ou ultérieur) – la bibliothèque qui vous permet de travailler avec des fichiers Excel sans Office installé. +- Un environnement de développement C# de base (Visual Studio, Rider ou le `dotnet` CLI). +- Un fichier Excel (`TableWithHeader.xlsx`) contenant au moins un **ListObject** (tableau Excel) avec une ligne d’en‑tête dans la première ligne. + +Aucun package NuGet supplémentaire n’est requis au-delà d’Aspose.Cells. + +--- + +## Étape 1 : Charger le classeur et récupérer le premier tableau + +La première chose à faire est d’ouvrir le classeur et de récupérer le tableau que vous souhaitez modifier. C’est ici que le mot‑clé secondaire **retrieve first table** entre en jeu. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Pourquoi c’est important :** +- `Workbook` lit le fichier sans nécessiter Excel installé. +- `worksheet.ListObjects[0]` est la façon la plus directe de **retrieve first table** ; si vous avez plusieurs tableaux, vous pouvez itérer ou utiliser le nom du tableau. + +> **Astuce :** Si vous n’êtes pas sûr qu’une feuille de calcul contienne réellement un tableau, vérifiez d’abord `worksheet.ListObjects.Count` pour éviter une `IndexOutOfRangeException`. + +--- + +## Étape 2 : Protéger la ligne d’en‑tête lors de la suppression des lignes + +Voici le cœur du problème : **aspose cells delete rows** sans effacer l’en‑tête. La méthode `DeleteRows` d’Aspose prend un indice de départ basé sur zéro et un nombre. Tenter de supprimer l’en‑tête (ligne 0) déclenche une exception, ce que nous voulons absolument éviter. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explication de la logique :** + +| Étape | Raison | +|------|--------| +| `table.DeleteRows(1, 2);` | L’indice 1 pointe sur la **deuxième** ligne (la première ligne de données). Supprimer deux lignes enlève les lignes 2‑3 en termes Excel, laissant l’en‑tête (ligne 1) intacte. | +| `catch (Exception ex)` | Aspose lance une exception **uniquement** lorsque l’opération isolerait l’en‑tête. La capturer vous permet d’enregistrer un message convivial au lieu de faire planter l’application. | +| `Save` | La persistance des modifications vous permet d’ouvrir `Result.xlsx` et de voir que l’en‑tête est toujours présent. | + +> **Et si vous devez vraiment supprimer l’en‑tête ?** +> Utilisez `table.ShowHeaders = false;` avant la suppression, ou supprimez le tableau entier et recréez‑le. Mais dans la plupart des scénarios métier, vous voudrez **protect header row**. + +--- + +## Étape 3 : Vérifier le résultat – Sortie attendue + +Après avoir exécuté le programme, ouvrez `Result.xlsx`. Vous devriez voir : + +- La première ligne contient toujours les titres de colonnes d’origine. +- Les lignes 2‑3 (celles que nous avons ciblées) ont disparu, et les données restantes ont été décalées vers le haut. + +La console affichera : + +``` +Rows deleted successfully. +``` + +Si vous avez accidentellement tenté de supprimer l’en‑tête (par ex., `table.DeleteRows(0, 1);`), la sortie serait : + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Ce message confirme que la protection intégrée d’Aspose fonctionne comme prévu. + +--- + +## Étape 4 : Méthodes alternatives pour **Delete Excel Table Rows** + +Parfois, vous avez besoin de plus de contrôle — par exemple supprimer des lignes selon une condition, ou enlever des lignes non contiguës. Voici deux modèles rapides qui préservent l’en‑tête. + +### 4.1 Supprimer des lignes par filtre de données + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Suppression en masse à l’aide d’une plage + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Les deux extraits respectent la règle **protect header row** car l’indice de départ ne descend jamais en dessous de 1. + +--- + +## Étape 5 : Pièges courants et comment les éviter + +| Piège | Pourquoi cela se produit | Solution | +|---------|----------------|-----| +| Suppression accidentelle de l’en‑tête | Utilisation de `0` comme indice de départ | Commencez toujours à `1` pour les lignes de données, ou vérifiez d’abord `table.ShowHeaders`. | +| `IndexOutOfRangeException` lorsque la feuille ne contient aucun tableau | Supposer qu’un tableau existe | Vérifiez que `worksheet.ListObjects.Count > 0` avant d’accéder à `[0]`. | +| Modifications non enregistrées | Oublier d’appeler `Save` | Appelez `workbook.Save` après les modifications. | +| Supprimer des lignes au milieu décale les indices, entraînant des sauts | Itération en avant lors de la suppression | Itérez **en arrière** ou collectez d’abord les lignes à supprimer. | + +--- + +## Étape 6 : Assembler le tout – Exemple complet fonctionnel + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Exécutez ce programme, ouvrez `Result.xlsx`, et vous verrez l’en‑tête intacte tandis que les lignes sélectionnées ont disparu. C’est la **solution complète et autonome** pour **aspose cells delete rows** sans sacrifier l’en‑tête. + +--- + +## Conclusion + +Nous venons de démontrer comment **aspose cells delete rows** tout en **protecting the header row**, comment **retrieve first table**, et plusieurs méthodes pour **delete excel table rows** en toute sécurité. Les points clés sont : + +- Commencez toujours les suppressions à l’indice 1 pour garder l’en‑tête intacte. +- Utilisez `try/catch` pour gérer l’exception de protection intégrée d’Aspose. +- Vérifiez l’existence du tableau avant d’opérer, et itérez en arrière lors de la suppression conditionnelle de lignes. + +Prêt à passer à la vitesse supérieure ? Essayez de combiner cette approche avec les API de style d’**Aspose Cells** pour mettre en évidence les lignes supprimées avant la suppression, ou automatisez le processus sur plusieurs feuilles de calcul. Les possibilités sont infinies, et vous disposez maintenant d’un modèle fiable sur lequel construire. + +Si vous avez trouvé ce tutoriel utile, donnez‑lui un pouce en l’air, partagez‑le avec vos collègues, ou laissez un commentaire avec vos propres solutions de cas limites. Bon codage ! + +--- + +![Exemple de suppression de lignes Aspose Cells – En‑tête protégé](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/french/net/saving-and-exporting-excel-files-with-options/_index.md index c0b5041ded..ddc0035e4a 100644 --- a/cells/french/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/french/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,7 @@ Découvrez comment gérer les avertissements lors du chargement de fichiers Exce Découvrez comment spécifier les propriétés d'un document telles que la version, l'auteur et le titre dans un fichier Excel par programmation à l'aide d'Aspose.Cells pour .NET avec des instructions étape par étape. ### [Suppression des lignes et des colonnes vides de début lors de l'exportation](./trimming-leading-blank-rows-and-columns/) Simplifiez vos exportations CSV en supprimant les lignes et colonnes vides avec Aspose.Cells pour .NET. Nettoyez vos données en quelques étapes seulement. +### [Comment enregistrer un classeur en C# – Guide complet d'automatisation Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/french/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..b521a21978 --- /dev/null +++ b/cells/french/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Comment enregistrer un classeur en C# avec Aspose.Cells — guide étape + par étape couvrant le chargement d’Excel, la création de feuille, la réutilisation + de feuille et la génération de rapport. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: fr +og_description: Comment enregistrer un classeur en C# avec Aspose.Cells. Apprenez + à charger un fichier Excel, créer une feuille, réutiliser une feuille et générer + un rapport dans un seul tutoriel. +og_title: Comment enregistrer un classeur en C# – Guide complet d’automatisation Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Comment enregistrer un classeur en C# – Guide complet d’automatisation Excel +url: /fr/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment enregistrer un classeur en C# – Guide complet d'automatisation Excel + +Vous vous êtes déjà demandé **how to save workbook** en C# après avoir traité des données ? Vous n'êtes pas seul. La plupart des développeurs se heurtent à un mur lorsque le rapport semble parfait à l'écran mais refuse de s'écrire sur le disque. Dans ce tutoriel, nous parcourrons un exemple complet qui non seulement vous montre **how to save workbook**, mais couvre également **how to load Excel**, **how to create sheet**, **how to reuse sheet**, et **how to generate report**—le tout avec Aspose.Cells. + +Imaginez cela comme une discussion pendant la pause café où je sors le code de mon ordinateur portable et explique chaque ligne. À la fin, vous disposerez d’un programme exécutable qui charge un modèle, injecte des données via SmartMarker, réutilise le nom d’une feuille de détail existante, et enfin écrit le fichier dans votre dossier. Pas de mystères, juste des étapes claires que vous pouvez copier‑coller. + +## Ce dont vous aurez besoin + +- **Aspose.Cells for .NET** (dernière version en 2026). Vous pouvez l’obtenir depuis NuGet avec `Install-Package Aspose.Cells`. +- Un environnement de développement .NET (Visual Studio, Rider, ou VS Code avec l’extension C# fonctionne très bien). +- Un fichier modèle Excel de base nommé `MasterTemplate.xlsx` placé dans un dossier que vous contrôlez. +- Connaissances minimales en C#—si vous avez déjà écrit un `Console.WriteLine`, vous êtes prêt. + +> **Astuce :** Conservez votre modèle dans un dossier *Resources* séparé et marquez‑le comme « Copy if newer » afin que le chemin reste cohérent entre les builds. + +Passons maintenant au code. + +## Étape 1 : How to Load Excel – Ouvrir le classeur modèle + +La première chose à faire est de charger le classeur en mémoire. Aspose.Cells rend cela possible en une seule ligne, mais comprendre le pourquoi aide lorsqu’il faut dépanner plus tard. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Pourquoi c’est important :** Charger le classeur vous donne accès à chaque feuille de calcul, style et plage nommée du modèle. Si le fichier n’est pas trouvé, Aspose lève une `FileNotFoundException`, vérifiez donc le chemin. +- **Cas limite :** Si le modèle est protégé par mot de passe, transmettez le mot de passe au constructeur `Workbook` : `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Étape 2 : How to Reuse Sheet – Configurer les options SmartMarker + +SmartMarker peut créer automatiquement une nouvelle feuille de détail, mais il se peut que vous ayez déjà une feuille nommée **Detail**. Pour éviter un conflit, nous indiquons au processeur de réutiliser ce nom. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Pourquoi c’est important :** Sans cette option, Aspose ajouterait un suffixe numérique (par ex., « Detail1 ») ce qui peut casser les macros ou formules en aval qui attendent un nom de feuille fixe. +- **Et si la feuille n’existe pas ?** Aspose la créera pour vous—le même code fonctionne que la feuille soit présente ou non. + +## Étape 3 : How to Create Sheet – Préparer la source de données + +Même si nous n’ajoutons pas manuellement une feuille ici, les données que vous fournissez à SmartMarker déterminent si une nouvelle feuille est créée. Construisons un objet anonyme simple qui imite une liste de commandes. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Pourquoi c’est important :** SmartMarker parcourt le modèle à la recherche de marqueurs comme `&=Header` et `&=Items.Id`. La structure de `orderData` doit correspondre exactement à ces marqueurs, sinon le processeur les ignore silencieusement. +- **Variation :** Si vous récupérez des données depuis une base de données, remplacez le type anonyme par une liste de DTO ou un `DataTable`. Le processeur gère les deux. + +## Étape 4 : How to Generate Report – Traiter le SmartMarker + +Nous liason maintenant les données au modèle. Le processeur parcourt la première feuille, remplace les marqueurs et construit la feuille de détail. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Pourquoi c’est important :** Cette ligne unique effectue le travail lourd — remplissage de l’en‑tête, itération sur `Items` et respect du `DetailSheetNewName` que nous avons défini précédemment. +- **Question fréquente :** *Et si j’ai plusieurs feuilles avec des marqueurs ?* Parcourez chaque feuille et appelez `SmartMarkerProcessor.Process` individuellement. + +## Étape 5 : How to Save Workbook – Persister le fichier résultant + +Enfin, nous écrivons le classeur modifié sur le disque. C’est le moment où **how to save workbook** devient concret. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Pourquoi c’est important :** La méthode `Save` prend en charge de nombreux formats (`.xlsx`, `.xls`, `.csv`, `.pdf`, etc.). Par défaut elle écrit un fichier Excel, mais vous pouvez fournir un objet `SaveOptions` pour changer le format de sortie. +- **Cas limite :** Si le fichier cible est ouvert dans Excel, `Save` lève une `IOException`. Veillez à fermer toutes les instances ou utilisez un nom de fichier unique à chaque exécution. + +![Exemple de comment enregistrer un classeur en C#](/images/how-to-save-workbook-csharp.png "Comment enregistrer un classeur en C# – aperçu visuel du processus") + +### Exemple complet fonctionnel + +En assemblant tout, voici une application console autonome que vous pouvez compiler et exécuter : + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Sortie attendue :** Après exécution, vous trouverez `SmartMarkerWithDupDetail.xlsx` dans `YOUR_DIRECTORY`. Ouvrez‑le et vous devriez voir : + +- L’en‑tête original rempli avec « Orders ». +- Une nouvelle feuille (ou réutilisée) nommée **Detail** contenant deux lignes : `Id=1, Qty=5` et `Id=2, Qty=3`. + +Si la feuille **Detail** existait déjà, son contenu sera écrasé par les nouvelles données—aucune feuille supplémentaire n’encombrera votre fichier. + +## Questions fréquemment posées (FAQ) + +| Question | Réponse | +|----------|--------| +| *Puis-je enregistrer en PDF au lieu de XLSX ?* | Oui. Remplacez `workbook.Save("file.xlsx")` par `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Et si mon modèle comporte plusieurs sections SmartMarker ?* | Appelez `SmartMarkerProcessor.Process` sur chaque feuille contenant des marqueurs, ou transmettez une collection d’objets de données correspondant à chaque section. | +| *Existe‑t‑il un moyen d’ajouter des données au lieu d’écraser la feuille Detail ?* | Utilisez `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (disponible dans les versions plus récentes d’Aspose). | +| *Dois‑je disposer du Workbook ?* | La classe `Workbook` implémente `IDisposable`. Enveloppez‑la dans un bloc `using` pour une gestion propre des ressources. | + +## Conclusion + +Nous venons de couvrir **how to save workbook** en C# du début à la fin, en démontrant l’ensemble du pipeline : **how to load Excel**, **how to create sheet** (implicit via SmartMarker), **how to reuse sheet**, et **how to generate report**. Le code est prêt à être intégré dans n’importe quel projet .NET, et les explications devraient vous fournir suffisamment de contexte pour l’adapter à des scénarios plus complexes—comme des rapports multi‑feuilles, le formatage conditionnel, ou l’exportation en PDF. + +Prêt pour le prochain défi ? Essayez d’ajouter un graphique visualisant les quantités de commande, ou changez le format de sortie en CSV pour le traitement en aval. Les mêmes principes—chargement, traitement et sauvegarde—s’appliquent toujours, vous vous retrouverez donc à réutiliser ce modèle dans de nombreuses tâches de reporting. + +Si vous rencontrez un problème ou avez des idées d’extensions, n’hésitez pas à laisser un commentaire. Bon codage, et profitez de l’expérience fluide de pouvoir enfin **save workbook** exactement comme vous le souhaitez ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/smart-markers-dynamic-data/_index.md b/cells/french/net/smart-markers-dynamic-data/_index.md index 1bb071562e..581f7c578e 100644 --- a/cells/french/net/smart-markers-dynamic-data/_index.md +++ b/cells/french/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Libérez la puissance d'Aspose.Cells avec ce didacticiel étape par étape sur l Libérez le potentiel des rapports Excel avec Aspose.Cells en gérant les objets imbriqués sans effort à l'aide de marqueurs intelligents dans un guide étape par étape. ### [Implémenter un tableau de variables avec des marqueurs intelligents Aspose.Cells](./variable-array-smart-markers/) Exploitez toute la puissance d'Aspose.Cells. Apprenez à implémenter des tableaux de variables avec des marqueurs intelligents, étape par étape, pour générer facilement des rapports Excel. +### [Comment générer un rapport Excel en C# – Guide complet utilisant SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Apprenez à générer un rapport Excel complet en C# avec SmartMarker, étape par étape. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/french/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..2223e9c7e9 --- /dev/null +++ b/cells/french/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Comment générer un rapport Excel en C# avec un modèle maître‑détail. + Apprenez à remplir rapidement un modèle Excel en C# en utilisant SmartMarker pour + des feuilles répétables. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: fr +og_description: Comment générer un rapport Excel en C# à l'aide d'un modèle réutilisable. + Ce guide étape par étape vous montre comment remplir un modèle Excel en C# avec + des données maître‑détail. +og_title: Comment générer un rapport Excel en C# – Tutoriel complet sur SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Comment générer un rapport Excel en C# – Guide complet avec SmartMarker +url: /fr/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment générer un rapport Excel en C# – Guide complet avec SmartMarker + +Vous vous êtes déjà demandé **comment générer un rapport Excel** en C# sans écrire du code cellule par cellule à l’infini ? Vous n’êtes pas seul. La plupart des développeurs se heurtent à un mur lorsqu’ils ont besoin d’un rapport poli, multi‑feuilles, reflétant des relations maître‑détail—pensez aux commandes et aux lignes de commande—sans vouloir réinventer la roue à chaque fois. + +Bonne nouvelle ? Avec un modèle Excel prêt à l’emploi et le moteur **SmartMarker** d’Aspose.Cells, vous pouvez **populate Excel template C#** en quelques lignes seulement. Dans ce tutoriel, nous parcourrons un scénario réel, expliquerons pourquoi chaque étape est importante, et vous fournirons un exemple complet et exécutable que vous pouvez copier‑coller dès aujourd’hui. + +> **Ce que vous obtiendrez :** un rapport Excel maître‑détail où chaque commande génère sa propre feuille de calcul, le tout piloté par de simples objets C#. Aucun bouclage manuel sur les cellules, aucune formule fragile—juste du code propre et maintenable. + +--- + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +- **.NET 6.0** (ou supérieur) installé – le code cible .NET 6 mais fonctionne également avec .NET Framework 4.7+. +- **Aspose.Cells for .NET** package NuGet (`Install-Package Aspose.Cells`) – il fournit les classes `Workbook`, `SmartMarkerProcessor` et les classes associées. +- Un fichier Excel nommé **MasterDetailTemplate.xlsx** placé dans `YOUR_DIRECTORY`. Il doit contenir un bloc SmartMarker tel que `{{Orders.OrderId}}` dans la première feuille et un bloc imbriqué `{{Orders.Items.Prod}}` pour les lignes de détail. +- Une compréhension de base des types anonymes C# – nous les utiliserons pour modéliser les commandes et les articles. + +Si l’un de ces points vous semble inconnu, pas d’inquiétude. Nous mentionnerons des alternatives (par ex., EPPlus) plus loin, mais le concept central reste le même. + +--- + +## Étape 1 : Charger le modèle Excel contenant les blocs SmartMarker + +La première chose que nous faisons est d’ouvrir le fichier modèle. Pensez au modèle comme à un squelette ; SmartMarker le remplira ensuite avec les données réelles. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Pourquoi c’est important :** En séparant la mise en page (le modèle) des données (les objets C#), vous gardez les designers heureux et les développeurs satisfaits. Les designers peuvent ajuster polices, couleurs ou formules sans toucher au code. + +--- + +## Étape 2 : Construire la source de données maître‑détail + +Ensuite, nous créons les données qui alimenteront le modèle. Pour un rapport de commandes typique, vous avez une collection de commandes, chacune contenant sa propre collection d’articles. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Astuce :** Utilisez des classes fortement typées au lieu de types anonymes si vous devez réutiliser le modèle sur plusieurs rapports. L’approche anonyme garde l’exemple concis. + +**Pourquoi c’est important :** SmartMarker fonctionne en faisant correspondre les noms de propriétés (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) avec les espaces réservés du modèle. La hiérarchie doit correspondre exactement, sinon le moteur ignorera ces sections. + +--- + +## Étape 3 : Dire à SmartMarker de créer une nouvelle feuille pour chaque enregistrement maître + +Par défaut, SmartMarker écrit toutes les lignes dans une seule feuille. Nous voulons chaque commande sur sa propre feuille de calcul, ce qui est idéal pour l’impression ou l’envoi de PDF par commande plus tard. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Pourquoi c’est important :** `EnableRepeatingSheet` élimine le besoin de cloner manuellement les feuilles. Le moteur copie la feuille d’origine, injecte les données de la commande, et renomme la feuille automatiquement (généralement en utilisant la valeur de la première colonne). + +--- + +## Étape 4 : Traiter le modèle avec vos données + +Maintenant, nous relions le tout. Le `SmartMarkerProcessor` parcourt le classeur, remplace les balises et crée de nouvelles feuilles selon les instructions. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Pourquoi c’est important :** Cette ligne unique fait le gros du travail—analyse du modèle, itération sur les collections, et gestion des tables imbriquées. C’est le cœur du **populate Excel template C#** sans aucune boucle manuelle. + +--- + +## Étape 5 : Enregistrer le rapport final + +Enfin, écrivez le classeur rempli sur le disque. Vous pouvez également le diffuser directement dans une réponse HTTP pour les applications web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Pourquoi c’est important :** Sauvegarder dans un fichier vous donne un artefact tangible que vous pouvez ouvrir dans Excel, partager avec les parties prenantes, ou acheminer vers des processus en aval comme la conversion PDF. + +--- + +## Exemple complet fonctionnel (prêt à copier‑coller) + +Voici le programme complet, incluant les directives `using` et une méthode `Main`. Déposez‑le dans une application console, ajustez les chemins de fichiers, et exécutez. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Résultat attendu + +Lorsque vous ouvrez `MasterDetailResult.xlsx`, vous verrez : + +- **Feuille “Order_1”** – contient l’en‑tête de la Commande 1 et deux lignes pour les produits A et B. +- **Feuille “Order_2”** – contient l’en‑tête de la Commande 2 et une seule ligne pour le produit C. +- Toutes les formules, le formatage et les graphiques du modèle original sont conservés. + +![Rapport Excel avec des feuilles séparées pour chaque commande – exemple de classeur rempli](/images/excel-report-example.png "Rapport Excel généré avec des données maître‑détail") + +*Texte alternatif de l’image : rapport Excel généré avec des feuilles séparées pour chaque commande, montrant comment générer un rapport Excel en C# avec SmartMarker.* + +--- + +## Questions fréquentes & cas particuliers + +### Et si j’ai besoin d’une feuille statique (par ex., un résumé) en plus des feuilles répétées ? + +Définissez `EnableRepeatingSheet = true` **uniquement** sur la feuille qui contient le bloc maître. Les autres feuilles resteront intactes, vous pouvez donc garder une page de résumé dans le modèle d’origine. + +### Puis‑je utiliser un DataTable au lieu d’objets anonymes ? + +Absolument. SmartMarker fonctionne avec tout objet implémentant `IEnumerable`. Remplacez simplement le type anonyme par un `DataTable` et assurez‑vous que les noms de colonnes correspondent aux balises. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Comment modifier la convention de nommage des feuilles générées ? + +Implémentez une interface personnalisée `ISmartMarkerSheetNaming` (ou manipulez `workbook.Worksheets` après le traitement). La plupart des développeurs renomme simplement les feuilles en fonction d’une valeur de cellule : + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Et si mon modèle utilise une syntaxe de placeholder différente ? + +SmartMarker autorise des délimiteurs personnalisés via `SmartMarkerOptions`. Par exemple, pour utiliser `<< >>` au lieu de `{{ }}` : + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Conseils pour faire évoluer cette approche + +- **Mettez en cache le modèle** en mémoire si vous générez de nombreux rapports par requête ; le chargement depuis le disque à chaque fois ajoute de la latence. +- **Combinez avec la conversion PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) pour des sorties prêtes à l’envoi par e‑mail. +- **Paramétrez les chemins de fichiers** à l’aide de fichiers de configuration ou de variables d’environnement afin de rendre la solution portable entre dev, test et prod. +- **Testez unitaires la couche de données** séparément ; SmartMarker est déterministe, vous n’avez donc besoin que de vérifier que les données fournies correspondent au schéma attendu. + +--- + +## Conclusion + +Nous avons couvert **comment générer un rapport Excel** en C# de bout en bout, du chargement d’un modèle compatible SmartMarker à l’enregistrement d’un classeur multi‑feuilles reflétant des relations maître‑détail. En **populate Excel template C#** avec seulement quelques lignes de code, vous évitez la logique fragile cellule par cellule et offrez aux designers la liberté de façonner le rendu final. + +Ensuite, vous pourriez explorer : + +- Utiliser **populate Excel template C#** avec des graphiques qui se mettent à jour automatiquement par feuille. +- Intégrer **excel smartmarker c#** avec ASP.NET Core pour diffuser les rapports directement aux navigateurs. +- Automatiser des pipelines **c# excel automation** qui récupèrent les données depuis des API ou des bases de données. + +Essayez, ajustez le modèle, et voyez à quel point il est rapide de transformer des données brutes en un rapport Excel soigné. Des questions ou un cas d’usage intéressant ? Laissez un commentaire ci‑dessous—bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/french/net/tables-and-lists/_index.md b/cells/french/net/tables-and-lists/_index.md index 31c64d3940..1cba8e58a2 100644 --- a/cells/french/net/tables-and-lists/_index.md +++ b/cells/french/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Convertissez facilement des tableaux en plages dans Excel grâce à Aspose.Cells Exploitez toute la puissance d'Aspose.Cells pour .NET. Apprenez à lire et écrire des tables avec des sources de données de requête grâce à ce guide détaillé étape par étape. ### [Définir un commentaire sur un tableau ou une liste dans Excel](./setting-comment-of-table-or-list/) Apprenez à définir des commentaires pour les tableaux dans Excel à l’aide d’Aspose.Cells pour .NET avec notre guide étape par étape simple. +### [Créer un tableau Excel en C# – Guide étape par étape](./create-excel-table-in-c-step-by-step-guide/) +Apprenez à créer un tableau Excel en C# avec Aspose.Cells pour .NET grâce à ce guide détaillé pas à pas. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/french/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/french/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..55d7904475 --- /dev/null +++ b/cells/french/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Créez rapidement un tableau Excel en C#. Apprenez comment ajouter un + tableau, définir la plage du tableau, masquer l’en‑tête du tableau et désactiver + le filtre du tableau avec un exemple de code complet. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: fr +og_description: Créer un tableau Excel en C# avec un exemple clair. Apprenez à ajouter + un tableau, définir la plage du tableau, masquer l’en‑tête et désactiver le filtre + en quelques lignes seulement. +og_title: Créer un tableau Excel en C# – Guide complet de programmation +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Créer un tableau Excel en C# – Guide étape par étape +url: /fr/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un tableau Excel en C# – Guide étape par étape + +Vous avez déjà eu besoin de **create Excel table** de manière programmatique avec C# ? Créer un tableau Excel peut être un jeu d'enfant quand vous connaissez les bonnes étapes. Dans ce tutoriel, nous parcourrons un exemple complet et exécutable qui montre **how to add table**, **define table range**, **hide table header**, et même **disable table filter** – tout cela sans quitter votre IDE. + +Si vous avez déjà eu du mal avec l'interface AutoFilter qui apparaît alors que vous ne le souhaitez pas, vous êtes au bon endroit. À la fin de ce guide, vous disposerez d’un extrait prêt à l’exécution qui génère un classeur propre nommé *TableNoFilter.xlsx* et vous comprendrez pourquoi chaque ligne est importante. + +## Ce que vous apprendrez + +- Comment **create Excel table** à partir de zéro avec Aspose.Cells. +- La syntaxe exacte pour **define table range** (A1:D5 dans notre cas). +- Comment activer la ligne d’en‑tête afin que l’interface de filtre intégrée apparaisse. +- L’astuce pour **hide table header** et **disable table filter** lorsque vous n’en avez plus besoin. +- Un programme C# complet, prêt à copier‑coller, que vous pouvez exécuter dès aujourd’hui. + +### Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également avec .NET Framework 4.7+). +- Aspose.Cells pour .NET installé via NuGet (`Install-Package Aspose.Cells`). +- Familiarité de base avec C# et Visual Studio (ou tout IDE de votre choix). + +--- + +## Étape 1 : Configurer le projet et importer les espaces de noms + +Avant de pouvoir **create Excel table**, vous avez besoin d’un projet console qui référence Aspose.Cells. Ouvrez un terminal et exécutez : + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Ouvrez maintenant *Program.cs* et ajoutez les déclarations `using` requises : + +```csharp +using System; +using Aspose.Cells; +``` + +Ces importations vous donnent accès aux classes `Workbook`, `Worksheet`, `CellArea` et `ListObject` qui alimentent le reste du tutoriel. + +## Étape 2 : Initialiser un nouveau classeur et récupérer la première feuille de calcul + +Créer un nouveau classeur est la première étape logique. Considérez le classeur comme le conteneur du fichier Excel, et la feuille de calcul comme la feuille individuelle où nous placerons notre tableau. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Pourquoi c’est important :** Un `Workbook` tout neuf commence avec une seule feuille vide. En récupérant `Worksheets[0]`, nous nous assurons de travailler sur la feuille par défaut sans avoir à en créer une manuellement. + +## Étape 3 : Définir la plage du tableau (A1:D5) + +Dans le jargon Excel, un *tableau* vit à l’intérieur d’un bloc rectangulaire de cellules. La structure `CellArea` nous permet de localiser ce bloc. Ici, nous couvrirons **define table range** pour les cellules A1 à D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Astuce :** Si vous avez besoin d’une plage dynamique, vous pouvez calculer `endRow` et `endColumn` en fonction de la longueur des données. L’indexation à partir de zéro est une source fréquente d’erreurs de décalage, alors vérifiez bien vos nombres. + +## Étape 4 : Ajouter le tableau et activer la ligne d’en‑tête + +Voici le cœur du tutoriel : **how to add table** à la feuille de calcul. La collection `ListObjects` gère les tableaux, et définir `ShowHeaders = true` injecte automatiquement l’interface AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explication :** +> - `Add(tableRange, true)` crée un nouveau `ListObject` (c’est‑à‑dire un tableau Excel) dans la plage spécifiée. +> - Le drapeau `true` indique à Aspose.Cells que la première ligne de la plage doit être traitée comme un en‑tête. +> - Définir `ShowHeaders` à `true` rend l’en‑tête visible et déclenche l’interface de filtre intégrée. + +À ce stade, si vous ouvrez le classeur généré, vous verrez un tableau joliment formaté avec des flèches de filtre sur chaque en‑tête de colonne. + +## Étape 5 : Masquer la ligne d’en‑tête et désactiver l’AutoFilter + +Parfois vous voulez les données sans l’encombrement de l’interface. Peut‑être exportez‑vous un rapport épuré où les filtres ne sont pas nécessaires. Voici la technique pour **hide table header** et **disable table filter** : + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Pourquoi le faire :** +> - `ShowHeaders = false` supprime la ligne d’en‑tête visuelle, transformant le tableau en un simple bloc de données. +> - Définir `AutoFilter = null` efface l’objet filtre caché, garantissant qu’aucune logique de filtre résiduelle ne reste. C’est ce que nous entendons par **disable table filter**. + +## Étape 6 : Enregistrer le classeur sur le disque + +Enfin, nous écrivons le fichier à l’emplacement de votre choix. Remplacez `"YOUR_DIRECTORY"` par un chemin réel sur votre machine. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Lorsque vous exécutez le programme, vous devriez voir : + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +L’ouverture du fichier révèle une feuille avec le bloc de données (pas d’en‑tête, pas de flèches de filtre). C’est le cycle complet — de **create Excel table** à **disable table filter**. + +--- + +## Exemple complet fonctionnel (prêt à copier‑coller) + +Voici le programme complet, prêt à être compilé. Remplacez simplement le répertoire placeholder par un chemin valide. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Résultat attendu :** Un fichier nommé *TableNoFilter.xlsx* contenant une plage de données simple A1:D5 sans ligne d’en‑tête visible et sans listes déroulantes de filtre. + +--- + +## Questions fréquentes et cas particuliers + +### Et si j’ai besoin de plusieurs tableaux dans la même feuille ? + +Répétez simplement **Step 3** avec un nouveau `CellArea` et un nouveau `ListObject`. Chaque tableau conserve ses propres paramètres d’en‑tête et de filtre, vous pouvez donc en masquer un et en garder un autre visible. + +### Puis-je styliser le tableau (lignes alternées, couleurs) avant de masquer l’en‑tête ? + +Absolument. Le `ListObject` expose une propriété `TableStyleType`. Par exemple : + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Vous pouvez appliquer le style **avant** de masquer l’en‑tête ; le formatage visuel restera intact. + +### Et si je dois garder l’en‑tête mais simplement masquer les flèches de filtre ? + +Définissez `ShowHeaders = true` (conservez la ligne) puis effacez le filtre : + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Cela satisfait l’exigence **disable table filter** sans perdre les libellés de colonnes. + +### Cela ne fonctionne‑t‑il qu’avec les fichiers .xlsx ? + +Aspose.Cells détecte automatiquement le format en fonction de l’extension du fichier que vous passez à `Save`. Vous pouvez également exporter en `.xls`, `.csv`, ou même `.pdf` avec une extension différente. + +--- + +## Conclusion + +Nous venons de couvrir tout ce dont vous avez besoin pour **create Excel table** en C# avec Aspose.Cells, de **define table range** à **hide table header** et **disable table filter**. Le code est court, clair, et prêt pour une utilisation en production. + +Ensuite, vous pourriez explorer **how to add table** avec des données dynamiques, appliquer des styles personnalisés, ou exporter le même classeur en PDF. Chacun de ces sujets s’appuie sur les bases que vous venez d’acquérir, alors n’hésitez pas à expérimenter et à adapter l’extrait à vos propres projets. + +Vous avez une variante à partager ? Laissez un commentaire ci‑dessous, et bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/converting-excel-files-to-other-formats/_index.md b/cells/german/net/converting-excel-files-to-other-formats/_index.md index 440aa28ffc..68e9ab0ea3 100644 --- a/cells/german/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/german/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Erfahren Sie, wie Sie Excel-Dateien mit Aspose.Cells für .NET zu Archivierungsz Erfahren Sie, wie Sie JSON mit Aspose.Cells programmgesteuert in .NET in CSV konvertieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung für eine reibungslose Datentransformation. ### [Programmgesteuertes Konvertieren einer Excel-Datei in PPTX in .NET](./converting-excel-file-to-pptx/) Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET eine Excel-Datei programmgesteuert in eine PowerPoint-Präsentation (PPTX) konvertieren. +### [Excel nach PowerPoint exportieren – Vollständiger C#‑Leitfaden](./export-excel-to-powerpoint-complete-c-guide/) +Erfahren Sie, wie Sie mit Aspose.Cells Excel-Arbeitsmappen programmgesteuert in PowerPoint-Präsentationen konvertieren – Schritt für Schritt in C#. +### [Druckbereich in Excel festlegen und nach PowerPoint exportieren – Schritt‑für‑Schritt‑Anleitung](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Erfahren Sie, wie Sie mit Aspose.Cells den Druckbereich festlegen und die Arbeitsmappe programmgesteuert nach PowerPoint exportieren. ### [Programmgesteuertes Angeben von HTML CrossType in der HTML-Ausgabe in .NET](./specifying-html-crosstype-in-output-html/) Erfahren Sie, wie Sie HTML CrossType in Aspose.Cells für .NET angeben. Folgen Sie unserer Schritt-für-Schritt-Anleitung, um Excel-Dateien präzise in HTML zu konvertieren. ### [Numbers-Tabellenkalkulation programmgesteuert in .NET lesen](./reading-numbers-spreadsheet/) diff --git a/cells/german/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/german/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..b18ebffd3b --- /dev/null +++ b/cells/german/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Erfahren Sie, wie Sie Excel nach PowerPoint exportieren, den Druckbereich + in Excel festlegen und Excel als PPTX mit editierbaren Diagrammen und OLE‑Objekten + in nur wenigen Schritten speichern. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: de +og_description: Exportieren Sie Excel schnell nach PowerPoint. Dieses Tutorial zeigt, + wie Sie den Druckbereich in Excel festlegen und Excel als PPTX mit editierbaren + Diagrammen und OLE‑Objekten speichern. +og_title: Excel nach PowerPoint exportieren – Vollständiger C#‑Leitfaden +tags: +- Aspose.Cells +- C# +- Office Automation +title: Excel nach PowerPoint exportieren – kompletter C#‑Leitfaden +url: /de/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel nach PowerPoint exportieren – Vollständiger C#‑Leitfaden + +Möchten Sie **Excel nach PowerPoint exportieren**? Dann sind Sie hier genau richtig. Egal, ob Sie ein wöchentliches Sales‑Deck erstellen oder eine Reporting‑Pipeline automatisieren – das Umwandeln eines Excel‑Arbeitsblatts in eine PowerPoint‑Präsentation kann Ihnen Stunden an Copy‑and‑Paste‑Arbeit ersparen. + +In diesem Tutorial gehen wir Schritt für Schritt durch ein praktisches Beispiel, das nicht nur **excel nach powerpoint exportiert**, sondern Ihnen auch zeigt, wie Sie **set print area excel** festlegen und **save excel as pptx** ausführen, sodass die resultierenden Folien Diagramme und OLE‑Objekte vollständig editierbar behalten. Am Ende haben Sie ein sofort lauffähiges C#‑Programm, das eine professionell aussehende `.pptx`‑Datei ohne manuelles Nachbessern erzeugt. + +## Was Sie benötigen + +- **.NET 6+** (jede aktuelle .NET‑Runtime funktioniert; der Code verwendet C# 10‑Syntax) +- **Aspose.Cells für .NET** – die Bibliothek, die den Export ermöglicht. Sie können sie über NuGet beziehen (`Install-Package Aspose.Cells`). +- Eine Excel‑Arbeitsmappe, die mindestens ein Diagramm und/oder ein OLE‑Objekt enthält (die Beispieldatei `ChartAndOle.xlsx` wird im Code verwendet). +- Eine bevorzugte IDE (Visual Studio, Rider oder VS Code – was Ihnen am besten gefällt). + +Das war’s. Kein COM‑Interop, keine Office‑Installation erforderlich. + +> **Warum eine Bibliothek verwenden?** +> Das integrierte Office‑Interop ist anfällig, benötigt Office auf dem Server und erzeugt häufig gerasterte Bilder, wenn Sie eigentlich vektorbasierte, editierbare Formen wollen. Aspose.Cells übernimmt die schwere Arbeit und hält alles in PowerPoint editierbar. + +--- + +## Schritt 1: Die Excel‑Arbeitsmappe laden + +Zuerst laden wir die Quelldatei in den Speicher. Die Klasse `Workbook` abstrahiert die gesamte Excel‑Datei und gibt uns Zugriff auf Arbeitsblätter, Diagramme und OLE‑Objekte. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Warum das wichtig ist:** Das Laden der Arbeitsmappe ist die Basis. Wenn der Pfad falsch ist oder die Datei beschädigt ist, läuft die restliche Pipeline nie. Der `try…catch`‑Block liefert Ihnen eine freundliche Fehlermeldung statt eines Absturzes. + +--- + +## Schritt 2: Druckbereich in Excel festlegen + +Bevor Sie exportieren, möchten Sie normalerweise die Ausgabe auf einen bestimmten Bereich beschränken. Hier kommt **set print area excel** ins Spiel. Durch das Definieren eines Druckbereichs sagen Sie Aspose.Cells genau, welche Zellen (und zugehörigen Objekte) auf der Folie erscheinen sollen. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro‑Tipp:** Wenn Sie mehrere Arbeitsblätter haben, wiederholen Sie die Zuweisung von `PrintArea` für jedes Blatt, das Sie exportieren möchten. Ohne gesetzten Druckbereich wird das gesamte Blatt exportiert, was die PowerPoint‑Datei unnötig aufblähen kann. + +--- + +## Schritt 3: Exportoptionen konfigurieren – Diagramme & OLE editierbar behalten + +Aspose.Cells bietet ein umfangreiches `ImageOrPrintOptions`‑Objekt. Durch das Umschalten von `ExportChartObjects` und `ExportOleObjects` bewahren wir die Vektor‑Natur von Diagrammen und die Live‑Editierbarkeit von OLE‑Objekten (wie eingebetteten Word‑Dokumenten oder PDFs). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Was im Hintergrund passiert:** +Wenn `ExportChartObjects` auf `true` steht, konvertiert Aspose das Diagramm in ein natives PowerPoint‑Diagramm‑Shape und behält Serien, Achsen und Formatierung bei. Mit aktiviertem `ExportOleObjects` werden eingebettete Objekte als OLE‑Frames eingefügt, sodass ein Doppelklick in PowerPoint die ursprüngliche Anwendung (Word, Excel usw.) zum Bearbeiten öffnet. + +--- + +## Schritt 4: Das Arbeitsblatt als editierbare PowerPoint‑Datei speichern + +Jetzt fügen wir alles zusammen. Die Methode `Save` schreibt die `.pptx`‑Datei unter Verwendung der konfigurierten Optionen. Das Ergebnis ist ein Foliensatz, bei dem jedes Arbeitsblatt zu einer Folie wird (oder zu mehreren Folien, wenn der Druckbereich mehrere Seiten umfasst). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Erwartetes Ergebnis + +- **Dateipfad:** `C:\MyProjects\EditableChartOle.pptx` +- **Inhalt:** + - Eine Folie, die den Bereich `A1:H30` exakt so zeigt, wie er in Excel erscheint. + - Alle Diagramme sind PowerPoint‑Diagramm‑Objekte – klicken Sie auf einen Balken und bearbeiten Sie die Daten. + - OLE‑Objekte (z. B. ein eingebettetes Word‑Dokument) können direkt von der Folie aus geöffnet und bearbeitet werden. + +Wenn Sie die PPTX in PowerPoint öffnen, sollten Sie eine saubere Folie mit vollständig editierbaren Komponenten sehen – keine gerasterten Screenshots. + +--- + +## Sonderfälle & Varianten + +### Mehrere Arbeitsblätter → Mehrere Folien +Wenn jedes Arbeitsblatt zu einer eigenen Folie werden soll, durchlaufen Sie einfach `workbook.Worksheets` und rufen `Save` mit einem `SheetToImageOptions`‑Objekt auf, das einen bestimmten Blatt‑Index anspricht. Aspose erzeugt automatisch eine neue Folie für jede Iteration. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Große Bereiche & Performance +Der Export eines riesigen Druckbereichs (z. B. `A1:Z1000`) kann den Speicherverbrauch erhöhen. Zur Entlastung können Sie: +- Den Bereich in kleinere Stücke aufteilen und als separate Folien exportieren. +- `WorkbookSettings` verwenden, um `MemorySetting` zu erhöhen, falls Sie auf `OutOfMemoryException` stoßen. + +### Kompatibilitätsaspekte +Die erzeugte PPTX funktioniert mit PowerPoint 2016 und neuer. Ältere Versionen können die Datei öffnen, verlieren jedoch möglicherweise einige erweiterte Diagrammfunktionen. Testen Sie stets die Ziel‑Office‑Version, wenn Sie die Präsentation breit verteilen. + +--- + +## Vollständiges, lauffähiges Beispiel (Einfach kopieren & einfügen) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Hinweis:** Ersetzen Sie die fest codierten Pfade durch Konfigurationswerte oder Befehlszeilen‑Argumente, um ein flexibleres Tool zu erhalten. + +--- + +## Häufig gestellte Fragen + +**F: Kann ich nur ein Diagramm ohne die umgebenden Zellen exportieren?** +A: Ja. Verwenden Sie ausschließlich `ExportChartObjects` und setzen Sie den Druckbereich auf den Begrenzungsbereich des Diagramms. Das Diagramm erscheint zentriert auf der Folie. + +**F: Was passiert, wenn meine Arbeitsmappe Makros enthält?** +A: Aspose.Cells ignoriert VBA‑Makros beim Export. Wenn Sie Makrofunktionalität in PowerPoint benötigen, müssen Sie diese mit PowerPoint‑VBA oder Add‑Ins neu erstellen. + +**F: Läuft das auf Linux/macOS?** +A: Absolut. Aspose.Cells ist eine reine .NET‑Bibliothek; solange die .NET‑Runtime vorhanden ist, läuft der Code plattformübergreifend. + +--- + +## Fazit + +Sie haben gerade gelernt, wie Sie **Excel nach PowerPoint exportieren** und dabei exakt **set print area excel** festlegen sowie **save excel as pptx** mit vollständig editierbaren Diagrammen und OLE‑Objekten durchführen. Die wichtigsten Schritte sind das Laden der Arbeitsmappe, das Definieren des Druckbereichs, das Konfigurieren von `ImageOrPrintOptions` und schließlich das Speichern der PPTX. + +Ab hier können Sie: +- Mehrere Arbeitsblätter in ein einziges Deck exportieren. +- Programmgesteuert benutzerdefinierte Folientitel oder Notizen hinzufügen. +- Die PPTX in PDF für die Verteilung konvertieren (verwenden Sie `SaveFormat.Pdf`). + +Probieren Sie den Code aus, passen Sie den Druckbereich an und sehen Sie zu, wie Ihre Excel‑Daten magisch in PowerPoint erscheinen – ganz ohne manuelles Kopieren und Einfügen. Bei Problemen schauen Sie in die Aspose.Cells‑Dokumentation oder hinterlassen Sie einen Kommentar unten. Viel Spaß beim Coden! + +![Diagramm, das den Export von Excel nach PowerPoint zeigt](/images/export-excel-to-powerpoint.png "Export von Excel nach PowerPoint Workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/german/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..3bdac96291 --- /dev/null +++ b/cells/german/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Druckbereich in Excel festlegen und Excel in PowerPoint mit editierbaren + Formen konvertieren. Erfahren Sie, wie Sie die Titelzeile wiederholen, PowerPoint + aus Excel erstellen und Excel nach PPTX exportieren. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: de +og_description: Druckbereich in Excel festlegen und in eine PowerPoint‑Folie mit editierbaren + Formen konvertieren. Folgen Sie dieser vollständigen Anleitung, um die Titelzeile + zu wiederholen und Excel nach PPTX zu exportieren. +og_title: Druckbereich in Excel festlegen – Export nach PowerPoint Tutorial +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Druckbereich in Excel festlegen und nach PowerPoint exportieren – Schritt‑für‑Schritt‑Anleitung +url: /de/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Druckbereich in Excel festlegen und nach PowerPoint exportieren – Vollständiges Programmier‑Tutorial + +Haben Sie schon einmal **den Druckbereich** in einem Excel‑Arbeitsblatt festlegen und diesen Ausschnitt dann in eine PowerPoint‑Folie umwandeln müssen? Sie sind nicht allein. In vielen Reporting‑Pipelines sollen dieselben Daten, die sich schön drucken lassen, auch in einer Präsentation erscheinen, oft mit der ersten Zeile als Titel wiederholt. Die gute Nachricht? Mit ein paar Zeilen C# können Sie **excel to powerpoint konvertieren**, alle Textfelder editierbar halten und sogar **die Titelzeile automatisch wiederholen**. + +In diesem Leitfaden gehen wir Schritt für Schritt durch alles, was Sie wissen müssen: von der Konfiguration des Druckbereichs bis zur Erstellung einer PPTX‑Datei, die Sie direkt in PowerPoint bearbeiten können. Am Ende können Sie **powerpoint from excel erstellen**, das Ergebnis als **export excel to pptx** ausgeben und denselben Code in jedem .NET‑Projekt wiederverwenden. Kein Zauber, nur klare Schritte und ein vollständiges, ausführbares Beispiel. + +## Was Sie benötigen + +Bevor wir starten, stellen Sie sicher, dass Sie folgendes haben: + +- **.NET 6.0** oder höher (die API funktioniert auch mit .NET Framework) +- **Aspose.Cells for .NET** (die Bibliothek, die `Workbook`, `ImageOrPrintOptions` usw. bereitstellt) +- Eine grundlegende C#‑IDE (Visual Studio, Rider oder VS Code mit der C#‑Erweiterung) +- Eine Excel‑Datei (`input.xlsx`), die die zu exportierenden Daten enthält + +Das war’s – keine zusätzlichen NuGet‑Pakete außer Aspose.Cells. Falls Sie die Bibliothek noch nicht hinzugefügt haben, führen Sie aus: + +```bash +dotnet add package Aspose.Cells +``` + +Jetzt können wir loslegen. + +## Schritt 1: Arbeitsmappe laden – Ausgangspunkt für den Export + +Das Erste, was Sie tun müssen, ist die Arbeitsmappe zu laden, die das Blatt enthält, das Sie in eine Folie umwandeln wollen. Denken Sie an die Arbeitsmappe als das Quelldokument; ohne sie ist nichts weiter von Bedeutung. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Warum das wichtig ist:** Das Laden der Arbeitsmappe gibt Ihnen Zugriff auf die Arbeitsblatt‑Sammlung, die Seiten‑Einrichtungs‑Optionen und die Export‑Engine. Wenn Sie diesen Schritt überspringen, können Sie weder den **Druckbereich** festlegen noch Zeilen wiederholen. + +> **Pro‑Tipp:** Verwenden Sie während des Testens einen absoluten Pfad und wechseln Sie anschließend zu einem relativen Pfad oder einem konfigurationsbasierten Pfad für die Produktion. + +## Schritt 2: Export‑Optionen konfigurieren – Textfelder und Formen editierbar halten + +Beim Export nach PowerPoint möchten Sie wahrscheinlich, dass die resultierende Folie editierbar ist. Aspose.Cells lässt das mit `ImageOrPrintOptions` steuern. Wenn Sie `ExportTextBoxes` und `ExportShapeObjects` auf `true` setzen, bewahrt die Bibliothek diese Objekte als native PowerPoint‑Elemente, anstatt sie zu einem Bild zu flatten. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Warum das wichtig ist:** Wenn Sie jemals **excel to powerpoint konvertieren** und dann die Folie manuell anpassen wollen, spart Ihnen diese Einstellung das mühsame Neuerstellen von Textfeldern. Außerdem bleiben alle Formen (wie Pfeile oder Diagramme) als Vektorobjekte erhalten, die Sie skalieren können. + +## Schritt 3: Druckbereich festlegen und Titelzeile wiederholen + +Jetzt kommen wir zum Kern des Tutorials: **Druckbereich festlegen** und die erste Zeile auf jeder gedruckten Seite (bzw. auf jeder exportierten Folie) wiederholen. Der Druckbereich sagt Excel, welche Zellen für den Druck – bzw. in unserem Fall für den Export – berücksichtigt werden sollen. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Warum das wichtig ist:** Durch die Begrenzung des Exports auf `A1:G20` vermeiden Sie das Einbeziehen riesiger leerer Bereiche, was die Konvertierung beschleunigt und die Folie übersichtlich hält. Die Zeile `PrintTitleRows` lässt die erste Zeile wie eine Kopfzeile wirken – genau das, was Sie benötigen, wenn Sie **Titelzeile wiederholen** in einer Präsentation. + +> **Randfall:** Beginnt Ihr Datenbereich in Zeile 2, passen Sie den Bereich entsprechend an (z. B. `PrintTitleRows = "$2:$2"`). + +## Schritt 4: Arbeitsblatt als PowerPoint‑Datei speichern + +Zum Schluss schreiben wir die Folie auf die Festplatte. Die `Save`‑Methode erhält den Ziel‑Dateinamen und die zuvor konfigurierten Optionen. Das Ergebnis ist eine PPTX‑Datei mit editierbaren Textfeldern und Formen, bereit zum Öffnen in PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Was Sie sehen werden:** Öffnen Sie `SheetWithEditableShapes.pptx` in PowerPoint. Die erste Zeile erscheint als Titel, alle Zellen von `A1:G20` werden gerendert, und alle Formen, die Sie in Excel hinzugefügt haben, bleiben verschieb‑ und editierbar. Keine gerasterten Bilder – nur native PowerPoint‑Objekte. + +## Vollständiges funktionierendes Beispiel – Alle Schritte kombiniert + +Unten finden Sie das komplette, copy‑paste‑bereite Programm. Führen Sie es als Konsolen‑App aus oder betten Sie es in eine größere Lösung ein. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Erwartete Ausgabe:** Nach dem Ausführen des Programms gibt die Konsole die Erfolgsmeldung aus und die PPTX‑Datei erscheint am angegebenen Ort. Beim Öffnen der Datei sehen Sie eine einzelne Folie mit dem ausgewählten Bereich, editierbaren Textfeldern und allen ursprünglichen Formen. + +## Häufige Fragen & Stolperfallen + +| Frage | Antwort | +|----------|--------| +| **Funktioniert das mit mehreren Arbeitsblättern?** | Ja. Durchlaufen Sie `workbook.Worksheets` und wiederholen Sie die gleichen Schritte für jedes Blatt, wobei Sie den Ausgabedateinamen jeweils anpassen. | +| **Was, wenn ich mehr als eine Folie exportieren muss?** | Rufen Sie `workbook.Save` mehrfach mit unterschiedlichen `ImageOrPrintOptions`‑Objekten auf, die ggf. unterschiedliche `PageSetup`‑Einstellungen haben. | +| **Kann ich die Foliengröße ändern?** | Verwenden Sie `exportOptions.ImageFormat`, um die DPI zu setzen, oder passen Sie `sheet.PageSetup.PaperSize` vor dem Speichern an. | +| **Ist Aspose.Cells kostenlos?** | Es gibt eine kostenlose Evaluierung mit Wasserzeichen. Für den Produktionseinsatz ist eine Lizenz erforderlich. | +| **Was ist mit Excel‑Formeln?** | Exportiert werden die **berechneten Ergebnisse** zum Zeitpunkt des Exports. Wenn Sie Live‑Formeln in PowerPoint benötigen, müssen Sie einen anderen Ansatz wählen. | + +## Tipps für einen reibungslosen Workflow + +- **Pro‑Tipp:** Setzen Sie `Workbook.Settings.CalcMode = CalculationModeType.Automatic` vor dem Export, um sicherzustellen, dass alle Formeln aktuell sind. +- **Achten Sie auf:** Sehr große Bereiche können zu Speicherbelastungen führen. Beschränken Sie den Druckbereich auf das kleinste notwendige Gebiet. +- **Performance‑Tipp:** Wiederverwenden Sie ein einzelnes `ImageOrPrintOptions`‑Objekt, wenn Sie viele Blätter exportieren; das Erzeugen eines neuen Objekts bei jedem Durchlauf verursacht zusätzlichen Overhead. +- **Versionshinweis:** Der obige Code zielt auf Aspose.Cells 23.10 (veröffentlicht November 2023). Neuere Versionen behalten dieselbe API bei, prüfen Sie jedoch immer die Release‑Notes auf mögliche Breaking Changes. + +## Fazit + +Wir haben gezeigt, wie man **den Druckbereich** in einem Excel‑Arbeitsblatt festlegt, die erste Zeile als Titel wiederholt und dann **excel to pptx exportiert**, wobei editierbare Textfelder und Formen erhalten bleiben. Kurz gesagt, Sie kennen jetzt einen zuverlässigen Weg, **excel to powerpoint zu konvertieren**, **Titelzeile zu wiederholen** und **powerpoint from excel zu erstellen** – mit nur wenigen Zeilen C#. + +Bereit für den nächsten Schritt? Automatisieren Sie die Stapelkonvertierung Dutzender Berichte oder fügen Sie nach dem Export benutzerdefinierte Folien‑Layouts mit dem PowerPoint‑SDK hinzu. Der Himmel ist das Limit – experimentieren Sie, brechen Sie Dinge und genießen Sie die Macht der programmatischen Dokumentengenerierung. + +Wenn Ihnen dieses Tutorial gefallen hat, teilen Sie es, hinterlassen Sie einen Kommentar mit Ihren eigenen Anpassungen oder entdecken Sie unsere anderen Anleitungen zu **export excel to pptx** und verwandten Automatisierungsthemen. Viel Spaß beim Coden! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/csv-file-handling/_index.md b/cells/german/net/csv-file-handling/_index.md index c3121381b4..cb4b5f30b2 100644 --- a/cells/german/net/csv-file-handling/_index.md +++ b/cells/german/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Weitere Informationen finden Sie in unseren ausführlichen Tutorials auf [Öffne Erfahren Sie in unserer umfassenden Schritt-für-Schritt-Anleitung, wie Sie CSV-Dateien mit Aspose.Cells für .NET öffnen. Meistern Sie die Datenmanipulation. ### [Öffnen von CSV-Dateien mit dem bevorzugten Parser](./csv-file-opening-csv-files-with-preferred-parser/) Erfahren Sie, wie Sie CSV-Dateien mit benutzerdefinierten Parsern in Aspose.Cells für .NET öffnen und analysieren. Verarbeiten Sie Text und Datum mühelos. Perfekt für Entwickler. +### [Arbeitsmappe als CSV in C# speichern – Excel nach CSV exportieren](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Erfahren Sie, wie Sie mit Aspose.Cells für .NET Arbeitsmappen in CSV-Dateien exportieren und speichern. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/german/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..d61ab41e16 --- /dev/null +++ b/cells/german/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Speichern Sie die Arbeitsmappe schnell als CSV in C#. Erfahren Sie, wie + Sie Excel nach CSV exportieren, die Genauigkeit festlegen und xlsx mit Aspose.Cells + in nur wenigen Zeilen in CSV konvertieren. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: de +og_description: Speichern Sie die Arbeitsmappe schnell als CSV in C#. Dieser Leitfaden + zeigt, wie man Excel nach CSV exportiert, die Genauigkeit einstellt und xlsx mit + Aspose.Cells in CSV konvertiert. +og_title: Arbeitsmappe in C# als CSV speichern – Excel nach CSV exportieren +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Arbeitsmappe als CSV in C# speichern – Excel nach CSV exportieren +url: /de/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Arbeitsmappe als CSV speichern in C# – Excel nach CSV exportieren + +Haben Sie jemals **eine Arbeitsmappe als CSV speichern** müssen, waren sich aber nicht sicher, wie Sie die Zahlen ordentlich halten? Sie sind nicht allein. In vielen Daten‑Pipeline‑Szenarien müssen wir **Excel nach CSV exportieren**, wobei wir eine bestimmte Anzahl signifikanter Stellen beibehalten, und die Aspose.Cells‑Bibliothek macht das kinderleicht. + +In diesem Tutorial sehen Sie ein vollständiges, sofort ausführbares Beispiel, das **eine Arbeitsmappe als CSV speichert**, zeigt *wie man die Genauigkeit einstellt* und sogar erklärt *wie man xlsx nach CSV konvertiert* für Praxisprojekte. Keine vagen Verweise – nur Code, den Sie heute kopieren, einfügen und ausführen können. + +## Was Sie lernen werden + +- Die genauen Schritte, um **eine Arbeitsmappe als CSV zu speichern** mit einer benutzerdefinierten Genauigkeitseinstellung. +- Wie man **Excel nach CSV exportiert** mit `CsvSaveOptions` und warum die Eigenschaft `SignificantDigits` wichtig ist. +- Varianten für unterschiedliche Genauigkeitsanforderungen und häufige Fallstricke beim Umgang mit großen Zahlen. +- Ein kurzer Blick darauf, wie man eine `.xlsx`‑Datei in `.csv` konvertiert, ohne Datenintegrität zu verlieren. + +### Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.6+). +- Das **Aspose.Cells for .NET** NuGet‑Paket (`Install-Package Aspose.Cells`). +- Grundlegende Kenntnisse in C# und Datei‑I/O. + +Wenn Sie das haben, legen wir los. + +![Arbeitsmappe als CSV Beispiel](image.png "Arbeitsmappe als CSV Beispiel") + +## Arbeitsmappe als CSV speichern – Schritt‑für‑Schritt‑Anleitung + +Unten finden Sie das vollständige Programm. Jede Zeile ist kommentiert, sodass Sie *warum* jedes Teil vorhanden ist, nicht nur *was* es tut, sehen können. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Warum `CsvSaveOptions.SignificantDigits` verwenden? + +Wenn Sie **die Genauigkeit festlegen** für einen CSV‑Export, entscheiden Sie tatsächlich, wie viele Stellen einer Gleitkommazahl die Konvertierung überstehen. Excel speichert Zahlen mit bis zu 15‑stelliger Genauigkeit, aber die meisten nachgelagerten Systeme (Datenbanken, Analyse‑Pipelines) benötigen nur wenige. Durch das Setzen von `SignificantDigits = 4` rundet die Bibliothek `123.456789` auf `123.5`, wodurch die Datei kompakt und lesbar bleibt. + +> **Profi‑Tipp:** Wenn Sie *exakte* Werte benötigen (z. B. für Finanzdaten), setzen Sie `SignificantDigits` auf eine höhere Zahl oder lassen Sie es ganz weg. Der Standardwert ist 15, was der internen Genauigkeit von Excel entspricht. + +## Excel nach CSV exportieren – Häufige Varianten + +### Ändern des Trennzeichens + +Einige Systeme erwarten ein Semikolon (`;`) anstelle eines Kommas. Sie können es so anpassen: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Export eines bestimmten Arbeitsblatts + +Wenn Sie nur das zweite Blatt exportieren möchten, ersetzen Sie den optionalen Block durch: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Rufen Sie dann `workbook.Save` wie zuvor auf. Diese Technik ist praktisch, wenn Sie **xlsx nach csv konvertieren** und nur an einem bestimmten Tab interessiert sind. + +### Umgang mit großen Datensätzen + +Wenn Sie mit Millionen von Zeilen arbeiten, sollten Sie das CSV streamen, anstatt die gesamte Arbeitsmappe in den Speicher zu laden. Aspose.Cells bietet die `CsvSaveOptions`‑Eigenschaft `ExportDataOnly`, die Stilinformationen überspringt und den Speicherverbrauch reduziert: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## CSV exportieren – Ergebnis überprüfen + +Nachdem Sie das Programm ausgeführt haben, öffnen Sie `Numbers_4sd.csv` in einem Texteditor. Sie sollten etwas Ähnliches sehen: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Beachten Sie, dass die Zahlen auf vier signifikante Stellen begrenzt sind, genau wie wir es verlangt haben. Wenn Sie die Datei in Excel öffnen, erscheinen die Werte identisch, da Excel die beim Export angewandte Rundung respektiert. + +## Sonderfälle & Fehlersuche + +| Situation | Was zu prüfen ist | Lösung | +|-----------|-------------------|--------| +| **Datei nicht gefunden** | Stellen Sie sicher, dass `sourcePath` auf eine reale `.xlsx`‑Datei zeigt. | Verwenden Sie `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Falsche Rundung** | Stellen Sie sicher, dass `SignificantDigits` vor dem Aufruf von `Save` gesetzt ist. | Verschieben Sie die Zuweisung von `CsvSaveOptions` nach vorne oder überprüfen Sie den Wert erneut. | +| **Sonderzeichen erscheinen als �** | CSV‑Kodierung ist standardmäßig UTF‑8 ohne BOM. | Setzen Sie `csvOptions.Encoding = System.Text.Encoding.UTF8` oder `Encoding.Unicode`. | +| **Zusätzliche leere Spalten** | Einige Arbeitsblätter haben Formatierungen außerhalb des genutzten Bereichs. | Rufen Sie `worksheet.Cells.MaxDisplayRange` auf, um ungenutzte Spalten vor dem Export zu kürzen. | + +## Genauigkeit dynamisch festlegen + +Manchmal ist die erforderliche Genauigkeit zur Compile‑Zeit nicht bekannt. Sie können sie aus einer Konfigurationsdatei oder einem Befehlszeilenargument lesen: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Jetzt können Sie ausführen: + +``` +dotnet run -- 6 +``` + +und erhalten ein CSV mit sechs signifikanten Stellen. Diese kleine Anpassung macht die Lösung flexibel für **wie man csv exportiert** in unterschiedlichen Umgebungen. + +## Vollständiges funktionierendes Beispiel – Zusammenfassung + +Wenn man alles zusammenfügt, sieht das komplette Programm (inklusive optionaler Anpassungen) so aus: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Führen Sie das Programm aus, öffnen Sie das erzeugte CSV, und Sie sehen die gewünschte Genauigkeit, was bestätigt, dass Sie erfolgreich **eine Arbeitsmappe als CSV gespeichert** haben. + +## Fazit + +Sie haben nun ein solides, produktionsreifes Rezept zum **Speichern einer Arbeitsmappe als CSV** in C#. Der Leitfaden behandelte *wie man Excel nach CSV exportiert*, zeigte *wie man die Genauigkeit* über `CsvSaveOptions.SignificantDigits` einstellt und präsentierte mehrere Varianten für **xlsx nach csv konvertieren**‑Szenarien. Mit dem vollständigen Code‑Snippet können Sie dies in jedes .NET‑Projekt einbinden und sofort Daten exportieren. + +**Was kommt als Nächstes?** + +- Experimentieren Sie mit verschiedenen Trennzeichen (`;`, `\t`) für TSV‑Exporte. +- Kombinieren Sie diesen Ansatz mit einem File‑Watcher, um die CSV‑Erstellung zu automatisieren, sobald sich eine Excel‑Datei ändert. +- Erkunden Sie `CsvLoadOptions` von Aspose.Cells, falls Sie CSV‑Dateien wieder in eine Arbeitsmappe einlesen müssen. + +Passen Sie die Genauigkeit gerne an, fügen Sie benutzerdefinierte Header hinzu oder binden Sie den Exporter ein + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/document-properties/_index.md b/cells/german/net/document-properties/_index.md index 2dd483fb81..b1ea7bb846 100644 --- a/cells/german/net/document-properties/_index.md +++ b/cells/german/net/document-properties/_index.md @@ -35,6 +35,8 @@ Erfahren Sie, wie Sie mit Aspose.Cells für .NET auf Dokumenteigenschaften in Ex Erfahren Sie in unserer Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET auf Dokumenteigenschaften in Excel zugreifen. Verwalten Sie Ihre Tabellenkalkulationen effizient. ### [Hinzufügen von Dokumenteigenschaften in .NET](./adding-document-properties/) Erfahren Sie in dieser ausführlichen Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET Dokumenteigenschaften in Excel hinzufügen. +### [Excel-Arbeitsmappe erstellen – Benutzerdefinierte Eigenschaften hinzufügen und als XLSB speichern](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Erfahren Sie, wie Sie mit Aspose.Cells für .NET eine Excel-Arbeitsmappe erstellen, benutzerdefinierte Eigenschaften hinzufügen und sie als XLSB speichern. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/german/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..347c11644a --- /dev/null +++ b/cells/german/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: Erstelle eine Excel-Arbeitsmappe, füge benutzerdefinierte Eigenschaften + hinzu, setze den Arbeitsblattnamen und speichere sie als XLSB‑Binärdatei mit C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: de +og_description: Erstelle eine Excel‑Arbeitsmappe, füge benutzerdefinierte Eigenschaften + hinzu, setze den Arbeitsblattnamen und speichere sie als XLSB‑Binärdatei mit C#. +og_title: Excel-Arbeitsmappe erstellen – Benutzerdefinierte Eigenschaften hinzufügen + und als XLSB speichern +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excel-Arbeitsmappe erstellen – benutzerdefinierte Eigenschaften hinzufügen + und als XLSB speichern +url: /de/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel-Arbeitsmappe erstellen – Benutzerdefinierte Eigenschaften hinzufügen und als XLSB speichern + +Haben Sie jemals **eine Excel-Arbeitsmappe** programmgesteuert erstellen müssen, dabei aber auch Metadaten beibehalten wollen? Vielleicht bauen Sie eine Reporting‑Engine, die jede Datei mit einer Bericht‑ID, dem Autorennamen oder einer Versionsnummer versieht. In diesem Fall wird Ihnen das Erlernen, wie Sie **benutzerdefinierte Eigenschaften** hinzufügen, während Sie **den Arbeitsblattnamen festlegen** und schließlich **als XLSB speichern**, viel manuelle Nachbearbeitung ersparen. + +In diesem Tutorial gehen wir Schritt für Schritt durch ein vollständiges, ausführbares Beispiel, das genau zeigt, wie man mit C# **eine binäre Excel‑Datei schreibt**. Sie erfahren, warum das XLSB‑Format die richtige Wahl für den Transport benutzerdefinierter Eigenschaften ist, wie Sie die häufigsten Fallstricke vermeiden und was zu tun ist, wenn Sie ältere Excel‑Versionen unterstützen müssen. + +--- + +## Was Sie benötigen + +- **.NET 6+** (oder .NET Framework 4.6+). Der Code funktioniert mit jeder aktuellen Runtime. +- **Aspose.Cells for .NET** (Kostenlose Testversion oder lizenziert). Es stellt die Klassen `Workbook`, `Worksheet` und `CustomProperties` bereit, die im Folgenden verwendet werden. +- Eine IDE Ihrer Wahl – Visual Studio, Rider oder sogar VS Code reicht aus. +- Schreibzugriff auf einen Ordner, in dem die erzeugte Datei gespeichert werden soll. + +Weitere Drittanbieter‑Bibliotheken sind nicht nötig. + +--- + +## Schritt 1: Aspose.Cells installieren + +Fügen Sie zunächst das Aspose.Cells‑NuGet‑Paket zu Ihrem Projekt hinzu: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro‑Tipp:** Wenn Sie auf einem CI‑Server arbeiten, speichern Sie den Lizenzschlüssel in einer Umgebungsvariable und laden ihn zur Laufzeit – so verhindern Sie, dass das „Evaluation“‑Wasserzeichen in Ihre Ausgabe gelangt. + +--- + +## Schritt 2: Excel‑Arbeitsmappe erstellen – Überblick + +Die erste eigentliche Aktion ist das **Erstellen einer Excel‑Arbeitsmappe**. Dieses Objekt repräsentiert die gesamte Datei im Speicher und gibt Ihnen Zugriff auf Arbeitsblätter, Stile und benutzerdefinierte Eigenschaften. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Warum ein frisches `Workbook` instanziieren, anstatt eine Vorlage zu laden? Eine leere Arbeitsmappe garantiert, dass keine versteckten Stile oder übrig gebliebenen benutzerdefinierten Eigenschaften vorhanden sind – besonders wichtig, wenn Sie **eine binäre Excel‑Datei schreiben** für nachgelagerte Systeme, die eine saubere Basis erwarten. + +--- + +## Schritt 3: Arbeitsblattnamen festlegen (und warum das wichtig ist) + +Excel‑Blätter heißen standardmäßig „Sheet1“, „Sheet2“ usw. Einen sinnvollen Namen zu vergeben, erleichtert die nachgelagerte Verarbeitung – etwa Power Query oder VBA‑Makros – erheblich. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Wenn Sie versuchen, einen doppelten Namen zuzuweisen, wirft Aspose.Cells eine `ArgumentException`. Um sicherzugehen, können Sie vor dem Umbenennen prüfen, ob `Worksheets.Exists("Data")` bereits existiert. + +--- + +## Schritt 4: Benutzerdefinierte Eigenschaften hinzufügen + +Benutzerdefinierte Eigenschaften werden im internen XML der Arbeitsmappe gespeichert und reisen mit der Datei, unabhängig vom Format, mit. Sie eignen sich perfekt, um Dinge wie `ReportId` oder `GeneratedBy` einzubetten. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Warum benutzerdefinierte Eigenschaften verwenden?** +> • Sie sind über das Excel‑Panel **Datei → Info → Eigenschaften** zugänglich. +> • Code, der die Arbeitsmappe verarbeitet, kann sie auslesen, ohne Zelleninhalte zu durchsuchen. +> • Sie überleben Formatkonvertierungen (XLSX ↔ XLSB), weil sie Teil der Metadaten der Datei sind. + +Sie können auch Datumswerte, Booleans oder sogar Binärblobs speichern, sollten jedoch die Payload klein halten – Excel ist keine Datenbank. + +--- + +## Schritt 5: Als XLSB speichern (binäre Excel‑Datei schreiben) + +Das XLSB‑Format speichert Daten in einer binären Struktur, wodurch die Datei kleiner und schneller zu öffnen ist. Noch wichtiger für dieses Tutorial: **Benutzerdefinierte Eigenschaften werden in den Binärstrom eingebettet**, sodass sie mit der Datei transportiert werden. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Erwartetes Ergebnis + +Nach dem Ausführen des Programms finden Sie `WithCustomProps.xlsb` auf Ihrem Desktop. Öffnen Sie die Datei in Excel, gehen Sie zu **Datei → Info → Eigenschaften**, und Sie sehen `ReportId` und `GeneratedBy` unter *Benutzerdefiniert* aufgelistet. + +--- + +## Schritt 6: Randfälle & häufige Fragen + +### Was, wenn der Zielordner schreibgeschützt ist? + +Umgeben Sie den `Save`‑Aufruf mit einem `try/catch`‑Block und greifen Sie im Fehlerfall auf einen benutzerbeschreibbaren Ort wie `%TEMP%` zurück. So verhindert man, dass die Anwendung bei Berechtigungsfehlern abstürzt. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Kann ich **als XLSX speichern** und trotzdem benutzerdefinierte Eigenschaften behalten? + +Ja – ändern Sie einfach `SaveFormat.Xlsb` zu `SaveFormat.Xlsx`. Die Eigenschaften werden im selben XML‑Teil gespeichert und überleben den Formatwechsel. XLSX‑Dateien sind jedoch größer, weil sie komprimiertes XML enthalten, während XLSB bei großen Datenmengen bessere Performance bietet. + +### Wie lese ich die benutzerdefinierten Eigenschaften später? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Dieses Snippet gibt jede benutzerdefinierte Eigenschaft aus und macht es für nachgelagerte Dienste trivial, die Herkunft der Datei zu prüfen. + +--- + +## Vollständiges Arbeitsbeispiel + +Unten finden Sie das komplette Programm, das Sie in ein neues Konsolen‑Projekt kopieren‑und‑einfügen können. Es fehlt nichts – von den `using`‑Anweisungen bis zur abschließenden `Console.WriteLine` ist alles enthalten. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Führen Sie das Programm aus, öffnen Sie die resultierende Datei und prüfen Sie die benutzerdefinierten Eigenschaften. Das ist der gesamte Prozess, um **eine Excel‑Arbeitsmappe zu erstellen**, **einem Blatt einen klaren Namen zu geben**, **nützliche Metadaten mit benutzerdefinierten Eigenschaften einzubetten** und **schließlich als XLSB zu speichern** – alles in einem sauberen Ablauf. + +--- + +## Fazit + +Sie wissen jetzt genau, wie Sie **eine Excel‑Arbeitsmappe erstellen**, ihr Blatt mit einem eindeutigen **Arbeitsblattnamen versehen**, nützliche Metadaten mit **benutzerdefinierten Eigenschaften** einbetten und schließlich **als XLSB speichern**, um eine kompakte, binäre Excel‑Datei zu erzeugen. Dieser Workflow ist zuverlässig, funktioniert über .NET‑Versionen hinweg und skaliert gut, egal ob Sie einen Bericht oder tausend erzeugen. + +Was kommt als Nächstes? Versuchen Sie, eine Datentabelle zum Blatt „Data“ hinzuzufügen, experimentieren Sie mit verschiedenen Eigenschaftstypen (Datum, Boolean) oder wechseln Sie die Ausgabe zu **XLSB** für massive Datensätze. Sie können auch das Arbeitsmappen‑Passwort schützen – Aspose.Cells macht das mit einer einzigen Zeile möglich. + +Hinterlassen Sie gern einen Kommentar, falls Sie auf Probleme stoßen, oder teilen Sie, wie Sie dieses Muster in Ihren eigenen Projekten erweitert haben. Viel Spaß beim Coden! + +--- + +![Create Excel workbook screenshot](image.png){alt="Excel-Arbeitsmappe mit benutzerdefinierten Eigenschaften erstellen"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/excel-advanced-named-ranges/_index.md b/cells/german/net/excel-advanced-named-ranges/_index.md index e00cfb0367..62130fb567 100644 --- a/cells/german/net/excel-advanced-named-ranges/_index.md +++ b/cells/german/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Das Besondere an dieser Funktionalität ist ihre Benutzerfreundlichkeit. Sie kö Identifizieren Sie mit Aspose.Cells für .NET mühelos Zellen in einem benannten Bereich in Excel mit diesem umfassenden Schritt-für-Schritt-Tutorial. ### [Zellen in benannten Bereichen in Excel zusammenführen](./merge-cells-in-named-range/) Erfahren Sie in diesem Schritt-für-Schritt-Tutorial, wie Sie mit Aspose.Cells für .NET Zellen in einem benannten Bereich zusammenführen. Erfahren Sie, wie Sie Excel-Berichte formatieren, gestalten und automatisieren. +### [Excel-Arbeitsmappe erstellen – Schritt‑für‑Schritt‑Anleitung zum Hinzufügen von Tabellen und Namensregeln](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Erfahren Sie in diesem Schritt‑für‑Schritt‑Tutorial, wie Sie mit Aspose.Cells für .NET eine Excel‑Arbeitsmappe erstellen, Tabellen hinzufügen und Namensregeln setzen. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/german/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..e726560db1 --- /dev/null +++ b/cells/german/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Erstelle eine Excel‑Arbeitsmappe mit einer Tabelle, lerne die Benennungsregeln + für Excel‑Tabellen, vermeide Fehler bei benannten Bereichen und setze den Excel‑Tabellennamen + korrekt in C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: de +og_description: Erstelle eine Excel-Arbeitsmappe in C# und beherrsche die Benennungsregeln + für Excel-Tabellen. Lerne, wie du ein Tabellenblatt hinzufügst, den Namen einer + Excel-Tabelle festlegst und Fehler bei benannten Bereichen behebst. +og_title: Excel-Arbeitsmappe erstellen – Vollständiger C#‑Tabellen‑ und Namensleitfaden +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excel‑Arbeitsmappe erstellen – Schritt‑für‑Schritt‑Anleitung zum Hinzufügen + von Tabellen und Namensregeln +url: /de/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel-Arbeitsmappe erstellen – Vollständiger C#‑Leitfaden zu Tabellen und Benennung + +Haben Sie schon einmal **eine Excel‑Arbeitsmappe** programmgesteuert erstellen müssen und sich gefragt, warum Ihr Tabellenname plötzlich mit einem benannten Bereich kollidiert? Sie sind nicht allein. In vielen Automatisierungsprojekten wirft Excel, sobald Sie einer Tabelle einen freundlichen Bezeichner geben, einen *named range error*, der den gesamten Prozess stoppt. + +In diesem Tutorial gehen wir Schritt für Schritt durch ein vollständig ausführbares Beispiel, das **eine Excel‑Arbeitsmappe erstellt**, **eine Tabelle zu einem Arbeitsblatt hinzufügt** und die **excel table naming rules** erklärt, die Sie davor bewahren, sich selbst zu überlisten. Am Ende wissen Sie genau, wie Sie **add table worksheet**, **set excel table name** durchführen und gelegentliche Namenskollisionen elegant behandeln. + +> **Pro‑Tipp:** Die meiste Verwirrung entsteht dadurch, dass Excel Tabellennamen und benannte Bereiche auf Arbeitsmappen‑Ebene als einen einzigen Namensraum behandelt. Dieses Prinzip früh zu verstehen, spart Ihnen Stunden an Fehlersuche. + +## Was Sie benötigen + +- **Aspose.Cells für .NET** (oder jede Bibliothek, die die Klassen `Workbook`, `Worksheet`, `ListObject` bereitstellt). +- .NET 6+ oder .NET Framework 4.8 – der Code funktioniert in beiden Umgebungen. +- Grundkenntnisse in C#‑Syntax – keine fortgeschrittenen Tricks nötig. + +Wenn Sie das haben, legen wir los. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Schritt 1: Excel‑Arbeitsmappe erstellen und das erste Arbeitsblatt öffnen + +Das Erste, was Sie tun, wenn Sie **create excel workbook** ausführen, ist die Instanz der Klasse `Workbook` zu erzeugen und eine Referenz auf das Blatt zu holen, auf dem Sie arbeiten wollen. In Aspose.Cells startet die Arbeitsmappe mit einem Standardblatt namens „Sheet1“. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Warum ist dieser Schritt entscheidend? Ohne ein Workbook‑Objekt haben Sie nichts, dem Sie eine Tabelle zuordnen können, und die `Worksheet`‑Referenz liefert Ihnen die Leinwand, auf der die **add table worksheet**‑Operation stattfindet. + +## Schritt 2: Tabelle (ListObject) über einen bestimmten Bereich hinzufügen + +Als Nächstes **add table worksheet**‑Daten auf Tabellenebene. Die Methode `ListObjects.Add` erwartet einen Bereichs‑String und ein Boolean, das angibt, ob die erste Zeile Überschriften enthält. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Beachten Sie den Aufruf `salesTable.Name = "SalesData"`. Hier greifen die **excel table naming rules**: Der Name muss innerhalb der gesamten Arbeitsmappe eindeutig sein, nicht nur im jeweiligen Blatt. Er darf keine Leerzeichen oder Sonderzeichen enthalten und muss mit einem Buchstaben oder Unterstrich beginnen. + +## Schritt 3: Versuch, einen benannten Bereich auf Arbeitsmappen‑Ebene mit demselben Bezeichner zu erstellen + +Jetzt provozieren wir bewusst den **named range error**, um zu sehen, was passiert, wenn ein Namenskonflikt auftritt. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Wenn Sie die Zeile auskommentieren, wirft Aspose.Cells eine `ArgumentException` mit dem Hinweis, dass der Name bereits existiert. Die Fehlermeldung sieht folgendermaßen aus: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Diese Meldung ist der **named range error**, den wir zuvor erwähnt haben. Sie zeigt, dass die **excel table naming rules** Tabellen‑ und benannte Bereichsnamen als einen einzigen Namensraum behandeln. + +## Schritt 4: Den Namenskonflikt elegant behandeln + +Im realen Code sollten Sie diese Ausnahme abfangen und entweder die Tabelle umbenennen oder einen anderen Bereichsnamen wählen. Hier ein sauberer Ansatz: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Durch das Einwickeln des Aufrufs in ein `try/catch` vermeiden Sie einen harten Absturz und geben dem Benutzer (oder dem Aufrufer) eine klare Erklärung – genau die Art von **excel table naming rules**‑Einblick, der zukünftige Bugs verhindert. + +## Schritt 5: Arbeitsmappe speichern und Ergebnis prüfen + +Zum Schluss schreiben wir die Datei auf die Festplatte und öffnen sie in Excel, um zu bestätigen, dass die Tabelle und etwaige benannte Bereiche vorhanden sind. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Wenn Sie *SalesReport.xlsx* öffnen, sehen Sie: + +- Eine Tabelle, die **A1:C5** umfasst und **SalesData** heißt. +- Falls Sie den alternativen Bereich beibehalten haben, einen benannten Bereich auf Arbeitsmappen‑Ebene **SalesData_Range**, der auf **D1** zeigt. + +Keine Laufzeitabstürze und der Namenskonflikt ist gelöst. + +## Excel‑Tabellenbenennungsregeln im Detail verstehen + +Wir zerlegen, warum die Regeln existieren: + +| Regel | Bedeutung | Beispiel | +|------|-----------|----------| +| **Eindeutig über die gesamte Arbeitsmappe** | Keine zwei Tabellen oder benannten Bereiche dürfen denselben Bezeichner teilen. | `Table1` vs `Table1` → Konflikt | +| **Beginnt mit einem Buchstaben oder Unterstrich** | Namen dürfen nicht mit einer Zahl starten. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Keine Leerzeichen oder Sonderzeichen** | Verwenden Sie CamelCase oder Unterstriche. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Länge ≤ 255 Zeichen** | Praktisch immer erfüllt. | N/A | + +Wenn Sie diese Regeln beim **set excel table name** beachten, vermeiden Sie den gefürchteten *named range error*. + +## Häufige Varianten und Sonderfälle + +1. **Mehrere Tabellen hinzufügen** – Jede Tabelle muss einen eigenen, eindeutigen Namen besitzen. +2. **Eine bestehende Tabelle umbenennen** – Verwenden Sie `salesTable.Name = "NewName"` bevor Sie konfliktverursachende benannte Bereiche erstellen. +3. **Dynamische Bereiche verwenden** – Wenn Sie einen Bereich benötigen, der sich erweitert, nutzen Sie eine strukturierte Referenz wie `=SalesData[Amount]` statt einer statischen Adresse. +4. **Benannte Bereiche über mehrere Blätter** – Sie gehören weiterhin zum selben Namensraum, sodass eine Tabelle auf Sheet1 einen gleichnamigen Bereich auf Sheet2 blockiert. + +## Pro‑Tipps für reibungslose Excel‑Automatisierung + +- **Existenz prüfen, bevor Sie hinzufügen**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Sichere Namen programmatisch erzeugen**: Einen GUID oder inkrementellen Zähler anhängen (`SalesData_{Guid.NewGuid()}`), wenn Sie unsicher sind. +- **`ListObject.ShowHeaders = true`** verwenden, um Ihre Tabellen selbsterklärend zu machen. +- **Nach dem Speichern validieren**: Öffnen Sie die Datei mit einer leichten Bibliothek (z. B. EPPlus), um sicherzustellen, dass die Tabelle korrekt erstellt wurde. + +## Zusammenfassung: Was wir behandelt haben + +- Wie man **create excel workbook** von Grund auf mit Aspose.Cells erstellt. +- Die genauen **excel table naming rules**, die Tabellen‑ und benannte Bereichs‑Bezeichner regeln. +- Warum ein **named range error** erscheint, wenn Sie einen Namen wiederverwenden. +- Der korrekte Weg, **add table worksheet** und **set excel table name** ohne Kollisionen durchzuführen. +- Ein robustes Muster, um Namenskonflikte elegant zu handhaben. + +## Was kommt als Nächstes? + +Jetzt, wo Sie die Grundlagen beherrschen, können Sie folgendes erkunden: + +- **Dynamisches Tabellenwachstum** mit `ListObject.Resize`. +- **Stile auf Tabellen anwenden** (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Export nach CSV**, wobei Tabellenstrukturen erhalten bleiben. +- **Integration mit Office Open XML** für noch feinere Kontrolle über die Arbeitsmappen‑Interna. + +Experimentieren Sie gern – ändern Sie den Bereich, fügen Sie weitere Tabellen hinzu oder probieren Sie unterschiedliche Benennungsschemata aus. Je mehr Sie tüfteln, desto tiefer wird Ihr Verständnis der **excel table naming rules**. + +--- + +*Viel Spaß beim Coden und möge Ihre Arbeitsmappe nie wieder kollidieren!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/excel-custom-number-date-formatting/_index.md b/cells/german/net/excel-custom-number-date-formatting/_index.md index 235dc457ad..7c622f5f4c 100644 --- a/cells/german/net/excel-custom-number-date-formatting/_index.md +++ b/cells/german/net/excel-custom-number-date-formatting/_index.md @@ -35,7 +35,9 @@ Dieses Tutorial vermittelt Ihnen die Fähigkeiten, Ihre Datensätze unter Beibeh ### [Überprüfen, ob ein Zellenwert in einem bestimmten benutzerdefinierten Zahlenformat vorliegt](./check-if-a-cell-value-is-in-a-specific-custom-number-format/) Erfahren Sie in diesem Schritt-für-Schritt-Tutorial, wie Sie mit Aspose.Cells für .NET Excel-Zellenwerte mit benutzerdefinierten Zahlenformaten vergleichen. ### [Geben Sie beim Importieren von Daten in ein Excel-Tabellenblatt Formelfelder an](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) -Erfahren Sie in diesem ausführlichen Tutorial, wie Sie mit Aspose.Cells für .NET Daten mit angegebenen Formelfeldern in Excel-Tabellen importieren. +Erfahren Sie in diesem ausführlichen Tutorial, wie Sie mit Aspose.Cells für .NET Daten mit angegebenen Formelfeldern in Excel-Tabten importieren. +### [Benutzerdefiniertes Zahlenformat in Excel mit C# – Komplettanleitung](./custom-number-format-excel-in-c-complete-guide/) +Erfahren Sie in diesem umfassenden Leitfaden, wie Sie benutzerdefinierte Zahlenformate in Excel mit C# implementieren. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/german/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..0a0c93f89c --- /dev/null +++ b/cells/german/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-03-22 +description: Anleitung zum benutzerdefinierten Zahlenformat in Excel, die zeigt, wie + man eine Datentabelle nach Excel importiert, die Hintergrundfarbe einer Spalte festlegt, + die Spalte als Währung formatiert und die Arbeitsmappe als xlsx speichert. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: de +og_description: Excel‑Tutorial zum benutzerdefinierten Zahlenformat, das Sie Schritt + für Schritt durch das Importieren einer DataTable, das Festlegen der Hintergrundfarbe + einer Spalte, das Formatieren einer Spalte als Währung und das Speichern der Arbeitsmappe + als xlsx führt. +og_title: Benutzerdefiniertes Zahlenformat in Excel mit C# – Schritt‑für‑Schritt‑Anleitung +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Benutzerdefiniertes Zahlenformat in Excel mit C# – Vollständiger Leitfaden +url: /de/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Benutzerdefiniertes Zahlenformat Excel – Full‑Stack C# Tutorial + +Haben Sie sich jemals gefragt, wie man einen **custom number format excel** Stil direkt aus C# anwendet? Vielleicht haben Sie versucht, eine DataTable in ein Tabellenblatt zu exportieren, nur um reine Zahlen zu sehen, keine Farben und keine Währungsformatierung. Das ist ein häufiges Problem – besonders wenn Sie einen professionellen Bericht für Stakeholder benötigen. + +In diesem Leitfaden werden wir dieses Problem gemeinsam lösen: Sie lernen, wie man **import datatable to excel**, **set column background color**, **format column as currency** und schließlich **save workbook as xlsx** mit einem benutzerdefinierten Zahlenformat, das Ihre Zahlen hervorhebt. Keine vagen Hinweise, nur eine vollständige, ausführbare Lösung, die Sie in Ihr Projekt kopieren‑und‑einfügen können. + +--- + +## Was Sie bauen werden + +Am Ende dieses Tutorials haben Sie eine eigenständige C# Konsolenanwendung, die: + +1. Ruft eine `DataTable` ab (Sie können den Stub durch Ihre eigene Abfrage ersetzen). +2. Erstellt ein neues Excel‑Arbeitsbuch mit Aspose.Cells (oder einer beliebigen kompatiblen Bibliothek). +3. Wendet eine blaue, fette Schrift auf die erste Spalte an, einen hellgelben Hintergrund auf die zweite und ein Währungsformat (`$#,##0.00`) auf die dritte. +4. Speichert die Datei als `DataTableWithStyleArray.xlsx` in einem von Ihnen gewählten Ordner. + +Sie sehen genau, wie jede Zeile zur endgültigen Excel‑Datei beiträgt, und wir diskutieren, warum diese Entscheidungen für Wartbarkeit und Performance wichtig sind. + +--- + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.7+). +- Aspose.Cells für .NET (Testversion oder lizenzierte Version). Installation über NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Grundlegende Kenntnisse von `DataTable` und C# Konsolenanwendungen. + +--- + +## Schritt 1: Abrufen der Quelldaten als DataTable + +Zuerst benötigen wir einige Daten zum Exportieren. In einem realen Szenario würden Sie wahrscheinlich ein Repository aufrufen oder eine SQL‑Abfrage ausführen. Zur Veranschaulichung erstellen wir eine einfache Tabelle im Speicher. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Warum das wichtig ist:** Die Verwendung einer `DataTable` liefert eine tabellarische, schema‑bewusste Quelle, die sauber auf Excel‑Zeilen und -Spalten abgebildet werden kann. Sie ermöglicht es Ihnen außerdem, dieselbe Exportlogik für jedes Dataset wiederzuverwenden, ohne den Code neu zu schreiben. + +--- + +## Schritt 2: Erstellen eines neuen Arbeitsbuchs und Abrufen des ersten Arbeitsblatts + +Jetzt erstellen wir ein Excel‑Arbeitsbuch. Die Klasse `Workbook` repräsentiert die gesamte Datei; ihr `Worksheets[0]` ist das Standard‑Blatt, in das wir unsere Daten einfügen werden. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro Tipp:** Wenn Sie mehrere Blätter benötigen, rufen Sie einfach `workbook.Worksheets.Add("SheetName")` auf und wiederholen die Formatierungsschritte für jedes. + +--- + +## Schritt 3: Definieren von Spaltenstilen – Schrift, Hintergrund und Zahlenformat + +Das Styling in Aspose.Cells erfolgt über `Style`‑Objekte. Wir erstellen ein Array, bei dem jedes Element einer Spalte in der DataTable entspricht. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Warum ein Stil‑Array?** Das Übergeben eines Arrays an `ImportDataTable` ermöglicht es, jedem Spalten in einem einzigen Aufruf einen eigenen Stil zuzuweisen, was sowohl kompakt als auch performant ist. Es stellt zudem sicher, dass die Formatierung mit der Datenreihenfolge synchron bleibt. + +--- + +## Schritt 4: Importieren der DataTable unter Anwendung der Stile + +Hier ist das Kernstück der Operation: Wir übergeben die `DataTable` an das Arbeitsblatt, weisen Aspose an, die Kopfzeile einzuschließen, und übergeben unser `columnStyles`‑Array. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Was im Hintergrund passiert:** Aspose iteriert durch jede Spalte, schreibt die Kopfzeile und anschließend jede Zeilenwert. Dabei wendet es den entsprechenden `Style` aus dem Array an, sodass Sie eine blaue Kopfzeile für „Product“, eine gelb schattierte „Quantity“ und eine schön formatierte „Revenue“-Spalte erhalten. + +--- + +## Schritt 5: Speichern des Arbeitsbuchs als XLSX‑Datei + +Abschließend speichern wir das Arbeitsbuch auf dem Datenträger. Die Methode `Save` wählt automatisch das XLSX‑Format basierend auf der Dateierweiterung. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tipp:** Wenn Sie die Datei streamen müssen (z. B. für eine Web‑API), verwenden Sie `workbook.Save(stream, SaveFormat.Xlsx)` anstelle eines Dateipfads. + +--- + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein neues Konsolenprojekt einfügen können. Es kompiliert und läuft unverändert und erzeugt eine formatierte Excel‑Datei. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Erwartetes Ergebnis + +Wenn Sie `DataTableWithStyleArray.xlsx` öffnen, sehen Sie: + +| **Product** (blau, fett) | **Quantity** (hellgelb) | **Revenue** (Währung) | +|--------------------------|--------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Das **custom number format excel**, das Sie angegeben haben (`$#,##0.00`), sorgt dafür, dass jede Umsatzzelle ein Dollarzeichen, ein Tausendertrennzeichen und zwei Dezimalstellen anzeigt – genau das, was Finanzteams erwarten. + +--- + +## Häufig gestellte Fragen & Sonderfälle + +### Kann ich das mit einer anderen Excel‑Bibliothek verwenden? + +Absolut. Das Konzept – für jede Spalte einen Stil zu erstellen und ihn beim Import anzuwenden – lässt sich auf EPPlus, ClosedXML oder NPOI übertragen. Die API‑Aufrufe unterscheiden sich, aber das Muster bleibt gleich. + +### Was, wenn meine DataTable mehr Spalten als Stile hat? + +Aspose wendet den Standardstil auf jede Spalte an, für die kein entsprechender Eintrag im `columnStyles`‑Array vorhanden ist. Um Überraschungen zu vermeiden, passen Sie die Größe des Arrays an `dataTable.Columns.Count` an oder erzeugen Sie Stile dynamisch in einer Schleife. + +### Wie setze ich ein benutzerdefiniertes Zahlenformat für Datumsangaben? + +Setzen Sie einfach `style.Custom = "dd‑mm‑yyyy"` (oder eine beliebige gültige Excel‑Formatzeichenfolge). Der gleiche array‑basierte Ansatz funktioniert für Datumsangaben, Prozentsätze oder wissenschaftliche Notation. + +### Gibt es eine Möglichkeit, Spalten nach dem Import automatisch zu skalieren? + +Ja – rufen Sie nach dem Import `worksheet.AutoFitColumns();` auf. Es führt eine schnelle Breitenberechnung basierend auf dem Zelleninhalt durch. + +### Was ist mit großen Datensätzen (100 k+ Zeilen)? + +`ImportDataTable` ist für Bulk‑Operationen optimiert, aber Sie könnten Speichergrenzen erreichen. In diesem Fall sollten Sie erwägen, Zeilen manuell mit `Cells[i, j].PutValue(...)` zu streamen und ein einzelnes `Style`‑Objekt wiederzuverwenden, um den Overhead zu reduzieren. + +--- + +## Pro‑Tipps & häufige Fallstricke + +- **Vermeiden Sie das Hard‑Coding von Pfaden** im Produktionscode; verwenden Sie `Environment.GetFolderPath` oder Konfigurationseinstellungen. +- **Entsorgen Sie das Arbeitsbuch**, wenn Sie in einem langlaufenden Service sind – wickeln Sie es in einen `using`‑Block, um native Ressourcen freizugeben. +- **Achten Sie auf kulturspezifische Trennzeichen**. Das benutzerdefinierte Format `$#,##0.00` erzwingt einen Punkt als Dezimaltrennzeichen, unabhängig von der OS‑Locale, was für Finanzberichte in der Regel gewünscht ist. +- **Denken Sie daran, System.Drawing zu referenzieren** (oder `System.Drawing.Common` unter .NET Core) für die Farb‑Structs, die beim Styling verwendet werden. +- **Testen Sie die Ausgabe in verschiedenen Excel‑Versionen**; ältere Versionen könnten einige benutzerdefinierte Formate leicht anders interpretieren. + +--- + +## Fazit + +Wir haben alles behandelt, was Sie benötigen, um **custom number format excel** Dateien aus C# zu erstellen: Daten aus einer `DataTable` holen, **import datatable to excel**, eine **set column background color** anwenden, **format column as currency** verwenden und schließlich **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/excel-workbook/_index.md b/cells/german/net/excel-workbook/_index.md index fc426a9323..ac6badf070 100644 --- a/cells/german/net/excel-workbook/_index.md +++ b/cells/german/net/excel-workbook/_index.md @@ -75,7 +75,7 @@ Warum also nicht diese Chance nutzen, Ihre Excel-Kenntnisse zu verbessern? Jedes | [Komprimierungsstufe anpassen](./adjust-compression-level/) Erfahren Sie, wie Sie die Komprimierungsstufen für Excel-Dateien mit Aspose.Cells für .NET anpassen. Optimieren Sie Ihre Dateigrößen effizient mit dieser Schritt-für-Schritt-Anleitung. | | [Führenden Apostroph zulassen](./allow-leading-apostrophe/) | Verwalten Sie führende Apostrophe in Excel mühelos mit Aspose.Cells für .NET. Dieses umfassende Tutorial führt Sie Schritt für Schritt durch den Prozess. | | [Freigegebene Arbeitsmappe erstellen](./create-shared-workbook/) | Erfahren Sie in dieser einfachen Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET eine freigegebene Arbeitsmappe erstellen. Perfekt für die Verbesserung der Teamzusammenarbeit. | -| [Linktypen erkennen](./detect-link-types/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET Hyperlinktypen in Excel erkennen. Einfache Schritte und Codebeispiele inklusive. | +| [Linktypen erkennen](./detect-link-types/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET Hyperlinktypen in Excel erkennen. Ein einfache Schritte und Codebeispiele inklusive. | | [Eingebettete Mol-Datei extrahieren](./extract-embedded-mol-file/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET einfach eingebettete MOL-Dateien aus einer Excel-Arbeitsmappe extrahieren. | | [Filtern Sie definierte Namen beim Laden der Arbeitsmappe](./filter-defined-names-while-loading-workbook/) Erfahren Sie in diesem umfassenden Handbuch, wie Sie beim Laden einer Arbeitsmappe mit Aspose.Cells für .NET definierte Namen filtern. | | [Odata-Details abrufen](./get-odata-details/) | Entdecken Sie in diesem ausführlichen Schritt-für-Schritt-Tutorial, wie Sie mit Aspose.Cells für .NET OData-Details aus Excel extrahieren. | @@ -86,6 +86,7 @@ Warum also nicht diese Chance nutzen, Ihre Excel-Kenntnisse zu verbessern? Jedes | [Druckvorschau der Arbeitsmappe](./workbook-print-preview/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET Druckvorschauen für Excel-Dateien erstellen. Lernen Sie die Programmierschritte in einem detaillierten, leicht verständlichen Tutorial. | | [Arbeiten mit Inhaltstypeigenschaften](./working-with-content-type-properties/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET Inhaltstypeigenschaften für eine verbesserte Excel-Metadatenverwaltung verwenden. Folgen Sie dieser einfachen Schritt-für-Schritt-Anleitung. | | [Xades Signature-Unterstützung](./xades-signature-support/) | Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET Xades-Signaturen zu Excel-Dateien hinzufügen. Sichern Sie Ihre Dokumente. | +| [Neues Arbeitsbuch in C# erstellen – Schritt‑für‑Schritt‑Anleitung mit Spilled-Formeln](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Erfahren Sie, wie Sie mit Aspose.Cells für .NET ein neues Excel‑Arbeitsbuch in C# erstellen und Spilled‑Formeln verwenden. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/german/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..2af7af1979 --- /dev/null +++ b/cells/german/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Erstellen Sie schnell ein neues Arbeitsbuch in C# mit Aspose.Cells. Lernen + Sie, wie Sie eine SEQUENCE‑Spill‑Formel hinzufügen, die automatisch neu berechnet + wird, und wie Sie abhängige Zellen handhaben. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: de +og_description: Erstellen Sie ein neues Arbeitsbuch in C# mit Aspose.Cells. Dieses + Tutorial zeigt, wie man eine SEQUENCE‑Spill‑Formel hinzufügt, das Arbeitsbuch neu + berechnet und abhängige Zellen verwaltet. +og_title: Neues Arbeitsbuch in C# erstellen – Komplettanleitung +tags: +- C# +- Excel automation +- Aspose.Cells +title: Neues Arbeitsbuch in C# erstellen – Schritt‑für‑Schritt‑Anleitung mit Spill‑Formeln +url: /de/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Neues Workbook C# erstellen – Vollständiger Programmierleitfaden + +Haben Sie sich jemals gefragt, wie man **create new workbook C#** ohne das Ringen mit COM-Interop erstellt? Sie sind nicht allein. In vielen Projekten muss man eine Excel‑Datei on the fly erzeugen, eine dynamische Array‑Formel einfügen und alles automatisch aktualisieren lassen. + +In diesem Leitfaden zeigen wir Ihnen genau das – mit der modernen **Aspose.Cells**‑Bibliothek, indem wir eine spillende `SEQUENCE`‑Formel hinzufügen, eine abhängige Zelle anpassen und eine Neuberechnung erzwingen, damit die Ergebnisse frisch bleiben. Am Ende haben Sie ein eigenständiges, ausführbares Beispiel, das Sie in jede .NET‑App kopieren‑und‑einfügen können. + +## Was Sie lernen werden + +- Wie man **create new workbook C#** programmgesteuert erstellt. +- Die Funktionsweise einer **spilled array formula** und warum sie praktisch ist. +- Verwendung der **Excel SEQUENCE function** aus C#‑Code. +- Auslösen der **C# workbook calculation**, damit abhängige Zellen sofort aktualisiert werden. +- Häufige Fallstricke (z. B. das Vergessen des Aufrufs von `Calculate`) und schnelle Lösungen. + +Keine externen Dokumente erforderlich – alles, was Sie benötigen, finden Sie hier. + +## Voraussetzungen + +- .NET 6+ (oder .NET Framework 4.7.2+) installiert. +- Visual Studio 2022 oder eine beliebige IDE Ihrer Wahl. +- Das **Aspose.Cells**‑NuGet‑Paket (`Install-Package Aspose.Cells`). +- Grundlegende Kenntnisse der C#‑Syntax (wenn Sie ganz neu sind, ist der Code stark kommentiert). + +--- + +## Schritt 1: Neues Workbook in C# erstellen + +Diese H2‑Überschrift enthält das **primary keyword** genau dort, wo es die SEO‑Checkliste verlangt. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Warum das wichtig ist:** +> Das Instanziieren von `Workbook` liefert Ihnen eine In‑Memory‑Darstellung einer Excel‑Datei. Kein COM, kein Interop, nur reine .NET‑Objekte, die Sie sicher manipulieren können. + +--- + +## Schritt 2: Eine spillende SEQUENCE‑Formel hinzufügen + +Eine **spilled array formula** erweitert sich automatisch auf benachbarte Zellen, was perfekt für die Erzeugung dynamischer Listen ist. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Wie es funktioniert:** +> Die `SEQUENCE`‑Funktion (eingeführt in Excel 365) erzeugt ein vertikales Zahlen‑Array. Da wir eine *spilling*‑Formel verwenden, füllt Excel (und Aspose.Cells) automatisch den Bereich unterhalb von `A1`, ohne dass wir eine Schleife schreiben müssen. + +--- + +## Schritt 3: Eine abhängige Zelle ändern, um die automatische Aktualisierung zu sehen + +Lassen Sie uns `B1` ändern, damit wir beobachten können, wie das Workbook das spillende Array neu berechnet. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tipp:** +> Wenn Sie den spillenden Bereich später in anderen Formeln referenzieren, führt das Ändern einer beliebigen Zelle innerhalb des Spills dazu, dass diese Formeln nach dem Aufruf von `Calculate` aktualisiert werden. + +--- + +## Schritt 4: C#‑Workbook‑Berechnung erzwingen + +Ohne einen expliziten Aufruf wird Aspose.Cells Formeln nicht automatisch neu berechnen. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Was `Calculate` macht:** +> Es durchläuft jede Formelzelle, wertet sie aus und schreibt die Ergebnisse zurück ins Blatt. Das ist das Kernstück der **C# workbook calculation** und stellt sicher, dass Ihr spillendes Array mit allen abhängigen Daten synchron bleibt. + +### Erwartete Ausgabe + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Öffnen Sie `SpilledSequenceDemo.xlsx` und Sie sehen die Zahlen 1‑5, die `A1:A5` füllen, während `B1` den Wert `10` enthält. Ändern Sie eine beliebige Zelle innerhalb des Spills, führen Sie `Calculate` erneut aus, und die neuen Werte erscheinen sofort. + +--- + +## Verständnis der Excel‑SEQUENCE‑Funktion in C# + +Wenn Sie sich fragen, warum `SEQUENCE` einer manuellen Schleife vorgezogen wird, beachten Sie diese Punkte: + +1. **Performance** – Die Engine wertet das gesamte Array in einem Durchlauf aus. +2. **Readability** – Eine Codezeile ersetzt Dutzende `PutValue`‑Aufrufe. +3. **Dynamic sizing** – Sie können das statische `5` durch einen Verweis auf eine andere Zelle ersetzen, sodass die Länge zur Laufzeit anpassbar ist. + +Dies ist ein klassisches Beispiel einer **spilled array formula**, die Aufgaben zur Datengenerierung vereinfacht. + +--- + +## Häufige Fallstricke & Pro‑Tipps + +| Fallstrick | Lösung | +|------------|--------| +| Vergessen von `workbook.Calculate()` | Immer nach dem Ändern von Formeln aufrufen; sonst zeigt das Blatt alte zwischengespeicherte Werte. | +| Verwendung einer älteren Aspose.Cells‑Version | Auf das neueste NuGet‑Paket aktualisieren, um Unterstützung für dynamische Array‑Funktionen wie `SEQUENCE` zu gewährleisten. | +| Speichern vor der Berechnung | **Nach** `Calculate` speichern, damit die Datei die neuesten Ergebnisse enthält. | +| Annahme, dass der Spill vorhandene Daten überschreibt | Aspose.Cells respektiert vorhandene Daten außerhalb des Spill‑Bereichs; löschen Sie den Bereich zuerst, wenn Sie eine saubere Basis benötigen. | + +**Pro‑Tipp:** Wenn Sie die Länge der Sequenz konfigurierbar benötigen, speichern Sie die Anzahl in einer Zelle (z. B. `C1`) und verwenden Sie `=SEQUENCE(C1)` – die Berechnungs‑Engine liest den Wert zur Laufzeit. + +--- + +## Beispiel erweitern + +Jetzt, da Sie wissen, wie man **create new workbook C#** erstellt, können Sie: + +- Komplexere Formeln hinzufügen, die den spillenden Bereich referenzieren (`=SUM(A1#)`, wobei `#` den Spill bezeichnet). +- Als PDF exportieren mit `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Diagramme einfügen, die sich automatisch an die Größe des dynamischen Arrays anpassen. + +All dies baut auf derselben **C# workbook calculation**‑Grundlage auf, die wir gerade behandelt haben. + +--- + +## Fazit + +Wir haben den gesamten Prozess von **create new workbook C#** durchlaufen, vom Instanziieren des `Workbook`‑Objekts über das Einfügen einer spillenden `SEQUENCE`‑Formel, das Anpassen einer abhängigen Zelle bis hin zum Erzwingen einer Neuberechnung, damit alles aktuell bleibt. Das komplette Code‑Snippet oben ist sofort ausführbar – einfach in eine Konsolen‑App einfügen, das Aspose.Cells‑NuGet‑Paket hinzufügen, und Sie haben in Sekunden eine funktionierende Excel‑Datei. + +Sind Sie bereit für den nächsten Schritt? Ersetzen Sie das statische `5` durch einen Zellverweis, experimentieren Sie mit anderen dynamischen Array‑Funktionen wie `FILTER` oder `UNIQUE` und entdecken Sie, wie **Aspose.Cells C#** komplette Reporting‑Engines antreiben kann. Viel Spaß beim Coden! + +--- + +*Image placeholder:* + +![Screenshot, der ein frisch erstelltes Workbook mit spillender SEQUENCE‑Formel zeigt – Beispiel create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*Wenn Ihnen dieses Tutorial geholfen hat, geben Sie dem Repository einen Stern, teilen Sie es mit Kollegen oder hinterlassen Sie unten einen Kommentar. Ihr Feedback treibt zukünftige Anleitungen an!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/german/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..e0882ba2b1 --- /dev/null +++ b/cells/german/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Wie man Lambda in C# verwendet, um mit Excel-Formeln zu arbeiten. Lernen + Sie, Formeln in Zellen zu schreiben, Bereiche in ein Array zu konvertieren, das + Array in der Konsole anzuzeigen und den Kotangens in Excel zu berechnen. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: de +og_description: Wie man Lambda in C# verwendet, um Excel‑Formeln zu manipulieren, + einen Bereich in ein Array zu konvertieren, eine Formel in eine Zelle zu schreiben, + ein Array in der Konsole anzuzeigen und den Kotangens in Excel zu berechnen. +og_title: Wie man Lambda in C# mit Excel‑Formeln verwendet – Schritt für Schritt +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Wie man Lambda in C# mit Excel-Formeln verwendet – Vollständiger Leitfaden +url: /de/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Lambda in C# mit Excel-Formeln verwendet – Komplettanleitung + +Haben Sie sich jemals gefragt, **wie man Lambda** verwendet, wenn Sie Excel aus C# automatisieren? Sie sind nicht allein. Viele Entwickler stoßen an Grenzen, wenn sie die Leistungsfähigkeit der neuen dynamischen Array‑Funktionen von Excel mit der `LAMBDA`‑Fähigkeit von C# kombinieren müssen. Die gute Nachricht? Es ist eigentlich ziemlich einfach, sobald man sieht, wie die Teile zusammenpassen. + +In diesem Tutorial führen wir Sie durch **das Schreiben einer Formel in eine Zelle**, **das Konvertieren eines Bereichs in ein Array**, **die Anzeige dieses Arrays in der Konsole** und sogar **die Berechnung des Kotangens in Excel** – und zeigen dabei **wie man Lambda** innerhalb eines `REDUCE`‑Aufrufs verwendet. Am Ende haben Sie ein ausführbares Snippet, das Sie in jedes .NET‑Projekt einbinden können, das Aspose.Cells (oder eine ähnliche Bibliothek) referenziert. + +--- + +## Was Sie lernen werden + +- Wie man **eine Formel in eine Zelle schreibt** mit C#. +- Wie man **einen Bereich in ein Array konvertiert** mit der `EXPAND`‑Funktion. +- Wie man **ein Array in der Konsole anzeigt** nach der Berechnung. +- Wie man **den Kotangens in Excel** mit `COT` und `COTH` berechnet. +- Die genaue Syntax für **wie man Lambda** innerhalb von Excels `REDUCE`‑Funktion aus C# verwendet. + +> **Voraussetzung:** Sie benötigen eine aktuelle Version von .NET (Core 6+ oder .NET Framework 4.7+) und die Aspose.Cells für .NET‑Bibliothek, die über NuGet installiert wird. + +--- + +## Schritt 1: Arbeitsmappe einrichten und Formel in Zelle schreiben + +Das Erste, was wir tun, ist eine neue Arbeitsmappe zu erstellen und das erste Arbeitsblatt zu holen. Dann **schreiben wir eine Formel in eine Zelle** – in diesem Fall wird `A1` das Ergebnis eines `EXPAND`‑Aufrufs enthalten. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Warum das wichtig ist:** Das Schreiben der Formel direkt aus dem Code ermöglicht es Ihnen, komplexe Tabellenkalkulationen on the fly zu erzeugen, ohne Excel zu öffnen. Es legt auch die Grundlage für den nächsten Schritt, in dem wir **den Bereich in ein Array konvertieren**. + +--- + +## Schritt 2: Bereich mit EXPAND in ein Array konvertieren + +`EXPAND` ist Excels Methode, einen kleinen Bereich in eine größere Matrix zu verwandeln. Durch das Platzieren der Formel in `A1` wird Excel einen 4 × 5‑Block ausgehend von dieser Zelle ausgeben. Aus C# müssen wir die Werte nicht manuell kopieren – die Bibliothek übernimmt die schwere Arbeit, wenn wir `Calculate` aufrufen. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Wie man Lambda verwendet:** Noch nicht, aber bleiben Sie dran. Zuerst benötigen wir die Daten im Blatt, dann werden wir sie mit einem Lambda reduzieren. + +--- + +## Schritt 3: LAMBDA innerhalb von REDUCE verwenden – Der Kern von „Wie man Lambda verwendet“ + +Excel 365 hat `REDUCE` eingeführt, das einen **Anfangswert**, einen **Bereich** und ein **LAMBDA** akzeptiert, das angibt, wie jedes Element kombiniert werden soll. Aus C# weisen wir einfach den Formel‑String zu; das Lambda befindet sich innerhalb der Excel‑Formel, nicht im C#‑Code. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Erklärung:** +- `0` ist der Anfangs‑Accumulator (`acc`). +- `A1:D4` ist der Bereich, den wir verarbeiten wollen (die ersten vier Spalten des Spill). +- `LAMBDA(acc, x, acc + x)` weist Excel an, jede Zelle (`x`) zum Accumulator hinzuzufügen. + +Das ist das Wesentliche von **wie man Lambda** für Aggregationen in einem Tabellenkalkulations‑Kontext verwendet. + +--- + +## Schritt 4: Kotangens in Excel berechnen – Von Grad zu hyperbolisch + +Wenn Sie trigonometrische Ergebnisse benötigen, sind Excels Funktionen `COT` und `COTH` ein Kinderspiel. Wir werden sie jeweils in `G1` und `G2` platzieren. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Warum das praktisch ist:** Zu wissen, **wie man Kotangens in Excel berechnet**, kann Sie davor bewahren, eigenen mathematischen Code zu schreiben, besonders wenn die Arbeitsmappe mit Nicht‑Entwicklern geteilt wird. + +--- + +## Schritt 5: Berechnung erzwingen und das erweiterte Array abrufen + +Jetzt veranlassen wir die Arbeitsmappe, jede Formel zu berechnen, und holen dann das ausgegebene Array aus `A1`. Hier **zeigen wir das Array in der Konsole an**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Was Sie sehen werden:** +- Eine schön formatierte 4 × 5‑Matrix, Zeile für Zeile ausgegeben. +- Die von dem `REDUCE`‑Lambda berechnete Summe. +- Die beiden Kotangens‑Werte. + +Damit ist der Ablauf von **Formel in Zelle schreiben** bis **Array in der Konsole anzeigen** abgeschlossen. + +--- + +## Vollständiges funktionierendes Beispiel (zum Kopieren‑Einfügen bereit) + +Unten finden Sie das komplette Programm, das Sie in eine Konsolen‑App einfügen können. Denken Sie daran, zuerst das `Aspose.Cells`‑NuGet‑Paket hinzuzufügen (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Erwartete Konsolenausgabe (Werte können variieren, je nach dem Standardinhalt von B1:C2, die standardmäßig 0 sind):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Fühlen Sie sich frei, `B1:C2` vor dem Ausführen mit eigenen Zahlen zu füllen – die Matrix wird diese Werte widerspiegeln. + +--- + +## Pro‑Tipps & häufige Fallstricke + +- **Pro‑Tipp:** Wenn Sie möchten, dass der ausgegebene Bereich an einer anderen Stelle beginnt, ändern Sie einfach die Zielzelle (`A1`). Die `EXPAND`‑Funktion respektiert den Anker. +- **Achten Sie darauf:** Leere Zellen im Quellbereich werden im ausgegebenen Array zu `0`, was Ihre `REDUCE`‑Summe beeinflussen kann. +- **Randfall:** Wenn die Arbeitsmappe Formeln enthält, die von volatilen Funktionen abhängen (z. B. `NOW()`), rufen Sie `workbook.Calculate()` nach dem Setzen aller Formeln auf, um sicherzustellen, dass alles aktuell ist. +- **Leistungshinweis:** Bei sehr großen Spills sollten Sie die Größe im `EXPAND`‑Aufruf begrenzen; sonst könnten Sie mehr Speicher zuweisen als nötig. +- **Kompatibilität:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/number-and-display-formats-in-excel/_index.md b/cells/german/net/number-and-display-formats-in-excel/_index.md index 9e18260325..25336f54ac 100644 --- a/cells/german/net/number-and-display-formats-in-excel/_index.md +++ b/cells/german/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Wenn Sie Ihren Excel-Tabellen eine persönliche Note verleihen möchten, ist die Automatisieren Sie die Zahlenformatierung in Excel mit Aspose.Cells für .NET. Erfahren Sie, wie Sie Datums-, Prozent- und Währungsformate programmgesteuert anwenden. ### [Anpassen von Anzeigeformaten mit benutzerdefinierten Zahlen](./customizing-display-formats-with-user-defined-numbers/) Erfahren Sie, wie Sie Anzeigeformate mit Aspose.Cells für .NET anpassen. Formatieren Sie Datumsangaben, Prozentsätze und Währungen mithilfe dieser Schritt-für-Schritt-Anleitung. +### [Excel mit Formatierung exportieren – Zahlenformat beibehalten](./how-to-export-excel-with-formatting-preserve-number-format/) +Erfahren Sie, wie Sie Excel-Dateien mit Aspose.Cells exportieren und das Zahlenformat beibehalten. +### [Datum/Uhrzeit in C# nach ISO formatieren – Vollständiger Leitfaden](./format-datetime-to-iso-in-c-complete-guide/) +Erfahren Sie, wie Sie Datum- und Uhrzeitwerte in C# in das ISO‑Format konvertieren – Schritt für Schritt erklärt. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/german/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..bf2be8b42b --- /dev/null +++ b/cells/german/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Erfahren Sie, wie Sie ein Datum/Uhrzeit-Objekt in ISO formatieren, während + Sie das Datum aus Excel extrahieren und das ISO-Datum mit Aspose.Cells in C# anzeigen. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: de +og_description: Datumszeitformatierung zu ISO leicht gemacht. Dieser Leitfaden zeigt, + wie man das Datum aus Excel extrahiert und das ISO‑Datum mit Aspose.Cells anzeigt. +og_title: Datum/Zeit in ISO formatieren in C# – Schritt‑für‑Schritt‑Tutorial +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Datum/Zeit im ISO-Format in C# formatieren – Vollständige Anleitung +url: /de/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Datum/Zeit im ISO-Format in C# – Vollständige Anleitung + +Ever needed to **format datetime to iso** but the source lives inside an Excel workbook? Maybe the cell contains a Japanese era like “令和3年5月1日” and you’re scratching your head wondering how to turn that into a clean `2021‑05‑01` string. You’re not alone. In this tutorial we’ll **extract date from excel**, parse the Japanese era, and then **display iso date** on the console—all with a few lines of C# and Aspose.Cells. + +We’ll walk through everything you need: the required NuGet package, the exact code you can copy‑paste, why each line matters, and a handful of edge‑case tips. By the end you’ll have a reusable snippet that formats datetime to iso no matter how quirky the original Excel value looks. + +## Was Sie benötigen + +- .NET 6.0 oder höher (der Code kompiliert auch unter .NET Framework 4.6+) +- Visual Studio 2022 (oder ein beliebiger Editor Ihrer Wahl) +- **Aspose.Cells for .NET** NuGet‑Paket – `Install-Package Aspose.Cells` +- Eine Excel‑Datei (oder eine neue Arbeitsmappe), die ein Datum im japanischen Ära‑Format enthält + +Das ist alles. Keine zusätzlichen Bibliotheken, kein COM‑Interop, nur eine einzelne, gut dokumentierte Methode. + +## Schritt 1: Erstellen einer Arbeitsmappe und Schreiben eines japanischen Ära‑Datums + +Zuerst benötigen wir eine Arbeitsmappe zum Arbeiten. Wenn Sie bereits eine Excel‑Datei haben, können Sie sie mit `new Workbook("path")` laden. Für dieses Beispiel erstellen wir eine neue Arbeitsmappe im Speicher und setzen einen japanischen Ära‑String in die Zelle **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Warum wir das tun:** Aspose.Cells behandelt Zellwerte standardmäßig als Zeichenketten. Durch das Einfügen des rohen Ära‑Texts simulieren wir ein reales Szenario, in dem ein japanischer Kunde Daten in seinem eigenen Kalender eingegeben hat. + +## Schritt 2: Japanische Ära‑Parsing aktivieren und das Datum extrahieren + +Aspose.Cells kann japanische Ära‑Zeichenketten automatisch in .NET `DateTime`‑Objekte übersetzen – vorausgesetzt, Sie aktivieren es. Das Flag `DateTimeParseOptions.EnableJapaneseEra` übernimmt die schwere Arbeit. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro‑Tipp:** Wenn Sie die Option `EnableJapaneseEra` vergessen, gibt die Bibliothek die ursprüngliche Zeichenkette zurück und Ihre nachfolgende Konvertierung schlägt fehl. Überprüfen Sie stets `parsed.Type`, wenn Sie gemischte Inhalte verarbeiten. + +## Schritt 3: Konvertieren des geparsten DateTime in ISO 8601 + +Jetzt, wo wir ein korrektes `DateTime` haben, ist das Umwandeln in einen ISO‑formatierten String ein Kinderspiel. Das Muster `"yyyy-MM-dd"` entspricht dem Datumsanteil von ISO 8601, was die meisten APIs erwarten. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Das Ausführen des Programms gibt aus: + +``` +ISO date: 2021-05-01 +``` + +Das ist das **display iso date**, das Sie gesucht haben. + +## Vollständiges, ausführbares Beispiel + +Unten finden Sie den vollständigen Codeblock, den Sie direkt in ein Konsolenprojekt kopieren können. Keine versteckten Abhängigkeiten, keine zusätzliche Konfiguration. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Erwartete Ausgabe:** `ISO date: 2021-05-01` + +## Schritt‑für‑Schritt‑Aufschlüsselung (Warum jedes Teil wichtig ist) + +| Schritt | Was passiert | Warum es wichtig ist | +|------|--------------|--------------------| +| **Arbeitsmappe erstellen** | Initialisiert einen Excel‑Container im Speicher. | Bietet Ihnen eine Sandbox zum Testen, ohne das Dateisystem zu berühren. | +| **PutValue** | Speichert den rohen japanischen Ära‑String in **A1**. | Simuliert reale Dateneingabe; stellt sicher, dass der Parser den genauen Text sieht. | +| **GetValue with `EnableJapaneseEra`** | Konvertiert den Ära‑String in ein .NET `DateTime`. | Handhabt die Kalenderkonvertierung automatisch – keine manuellen Nachschlagetabellen nötig. | +| **`ToString("yyyy-MM-dd")`** | Formatiert das `DateTime` nach ISO 8601. | Garantiert eine kulturunabhängige, sortierbare Datumszeichenkette, die von REST‑APIs, Datenbanken usw. akzeptiert wird. | +| **Console.WriteLine** | Zeigt das endgültige ISO‑Datum an. | Bestätigt, dass die gesamte Pipeline von Anfang bis Ende funktioniert. | + +## Umgang mit gängigen Variationen + +### 1. Unterschiedliche Zellpositionen + +Wenn Ihr Datum in **B2** oder einem benannten Bereich liegt, ersetzen Sie einfach `"A1"` durch die entsprechende Adresse: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Mehrere Daten in einer Spalte + +Wenn Sie **extract date from excel** für viele Zeilen benötigen, iterieren Sie über den genutzten Bereich: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback für Nicht‑Ära‑Daten + +Wenn eine Zelle bereits eine Standard‑Datumszeichenkette enthält, funktioniert der Parser weiterhin, aber Sie möchten vielleicht ein Sicherheitsnetz: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Das `TryParse`‑Flag verhindert Ausnahmen und gibt den Originalwert zurück, wenn die Konvertierung fehlschlägt. + +### 4. Zeitkomponente + +Falls Sie auch den Zeitanteil benötigen, verwenden Sie `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Das ergibt einen vollständigen ISO 8601‑Zeitstempel (`2021-05-01T00:00:00`). + +## Visuelle Hilfe + +![Beispiel für das Formatieren von datetime zu iso](image.png "Ein Beispiel für das Formatieren von datetime zu iso in C#") + +*Alt‑Text:* *Beispiel für das Formatieren von datetime zu iso, das die Konsolenausgabe zeigt* + +## Häufig gestellte Fragen + +- **Kann ich das mit .xls‑Dateien verwenden?** + Ja. Aspose.Cells unterstützt `.xls`, `.xlsx`, `.csv` und viele weitere Formate sofort. + +- **Was ist, wenn die Arbeitsmappe passwortgeschützt ist?** + Laden Sie sie mit `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Ist das ISO‑Format lokalisierungsabhängig?** + Nein. Das Muster `"yyyy-MM-dd"` ist kulturunabhängig und garantiert denselben String auf jeder Maschine. + +- **Funktioniert das unter .NET Core?** + Absolut – Aspose.Cells ist .NET Standard 2.0‑konform. + +## Abschluss + +Wir haben behandelt, wie man **format datetime to iso** durch **extracting date from excel**, das Parsen japanischer Ära‑Zeichenketten und schließlich **displaying iso date** in der Konsole durchführt. Die Kernschritte – eine Arbeitsmappe erstellen, den Ära‑Text zu schreiben oder zu laden, das japanische Ära‑Parsing aktivieren und mit `ToString("yyyy-MM-dd")` formatieren – sind alles, was Sie für die meisten Szenarien benötigen. + +Als Nächstes möchten Sie vielleicht: + +- Die ISO‑Daten zurück in eine andere Spalte schreiben für die nachgelagerte Verarbeitung. +- Die transformierte Arbeitsmappe nach CSV exportieren für den Massenupload. +- Diese Logik mit einer Web‑API kombinieren, die Excel‑Uploads akzeptiert und JSON‑kodierte ISO‑Daten zurückgibt. + +Fühlen Sie sich frei, mit verschiedenen Datumsformaten, Zeitzonen oder sogar benutzerdefinierten Kalendern zu experimentieren. Die Flexibilität von Aspose.Cells bedeutet, dass Sie selten an Grenzen stoßen. + +Viel Spaß beim Programmieren, und möge jedes Ihrer Daten perfekt ISO‑konform sein! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/german/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..25cd393ac9 --- /dev/null +++ b/cells/german/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Wie man Excel mit Formatierung exportiert und das Zahlenformat beibehält. + Erfahren Sie, wie Sie einen Excel‑Bereich konvertieren, das Formel­ergebnis erhalten + und Excel mit Formatierung mithilfe von Aspose.Cells exportieren. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: de +og_description: Wie man Excel mit Formatierung exportiert und das Zahlenformat beibehält. + Schritt‑für‑Schritt‑Anleitung zum Konvertieren eines Excel‑Bereichs, zum Abrufen + des Formel­ergebnisses und zum Exportieren von Excel mit Formatierung in C#. +og_title: Wie man Excel mit Formatierung exportiert – Zahlenformat beibehalten +tags: +- C# +- Aspose.Cells +- Excel automation +title: Wie man Excel mit Formatierung exportiert – Zahlenformat beibehalten +url: /de/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel mit Formatierung exportieren – Zahlenformat beibehalten + +Haben Sie sich jemals gefragt, **wie man Excel**‑Daten exportiert, während das Aussehen jeder Zelle exakt so bleibt, wie Sie es im Arbeitsblatt sehen? Vielleicht müssen Sie einen Bericht an einen Kunden senden, ein Grid‑Steuerelement füttern oder die Werte einfach in einer Datenbank speichern. Das Problem ist meist der Verlust von Zahlenformaten oder dass Formeln in rohe Zeichenketten umgewandelt werden. + +In diesem Tutorial gehen wir Schritt für Schritt durch ein vollständiges, sofort ausführbares C#‑Beispiel, das **Zahlenformat beibehält**, **einen Excel‑Bereich** in ein `DataTable` **konvertiert**, **das Formel‑Ergebnis liefert** und schließlich **Excel mit Formatierung exportiert** mithilfe von Aspose.Cells. Am Ende haben Sie eine einzelne Methode, die Sie in jedes Projekt einbinden und mit einem Arbeitsblatt‑Verweis aufrufen können. + +> **Schnelle Vorschau:** Der Code erstellt eine Arbeitsmappe, schreibt einen Wert und eine Formel, weist Aspose.Cells an, die Zellen als formatierte Zeichenketten zu exportieren, und gibt `123.456 | 246.912` aus – genau das, was Sie in Excel erwarten würden. + +--- + +## Was Sie benötigen + +- **Aspose.Cells für .NET** (die kostenlose Testversion reicht für Lernzwecke) +- .NET 6.0 oder höher (die API ist identisch unter .NET Framework) +- Eine grundlegende C#‑Entwicklungsumgebung (Visual Studio, VS Code, Rider … Sie entscheiden) + +Es werden keine zusätzlichen NuGet‑Pakete über Aspose.Cells hinaus benötigt. Wenn Sie es noch nicht installiert haben, führen Sie aus: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Schritt 1 – Arbeitsmappe erstellen und Werte schreiben (inkl. Formel) + +Zuerst erzeugen wir eine neue Arbeitsmappe und schreiben einen numerischen Wert in **A1**. Anschließend fügen wir in **B1** eine einfache Formel ein, die die erste Zelle mit zwei multipliziert. Das legt die Grundlage, um später **Formelergebnis erhalten** zu demonstrieren. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Warum das wichtig ist:** +- `PutValue` speichert die rohe Zahl, während `PutFormula` die Berechnung speichert. +- Aspose.Cells hält die Formel **lebendig**, sodass wir später beim Abrufen des Zellwertes tatsächlich `246.912` erhalten und nicht den Text `"=A1*2"`. + +--- + +## Schritt 2 – Aspose.Cells anweisen, Werte als formatierte Zeichenketten zu exportieren + +Rufen Sie einfach `ExportDataTable` mit den Standardeinstellungen auf, werden numerische Zellen als ihre zugrunde liegenden `double`‑Werte zurückgegeben. Das entfernt Tausendertrennzeichen, Währungssymbole oder benutzerdefinierte Dezimalstellen, die Sie eventuell gesetzt haben. Die Klasse `ExportTableOptions` ermöglicht es uns, **Zahlenformat beizubehalten** und **als Zeichenkette zu exportieren**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Wichtiger Hinweis:** `ExportNumberFormat = true` ist das Flag, das das **Beibehalten des Zahlenformats** aktiviert. Ohne diese Einstellung würden Sie `"123.456"` und `"246.912"` als rohe Zahlen sehen, was im Code zwar funktioniert, aber nicht, wenn Sie die Daten in eine UI einfügen, die das gleiche Format wie Excel erwartet. + +--- + +## Schritt 3 – Exportierte Daten ausgeben (Verifizierung) + +Jetzt, wo wir ein `DataTable` voller formatierter Zeichenketten haben, geben wir den Inhalt auf der Konsole aus. Das zeigt zudem, dass wir erfolgreich **Formelergebnis erhalten** haben, ohne die Formel selbst auszuwerten. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Das Programm gibt aus: + +``` +123.456 | 246.912 +``` + +Beachten Sie, dass die zweite Spalte das **Formelergebnis** und nicht den Formelttext anzeigt. Genau das benötigen Sie, wenn Sie **Excel mit Formatierung exportieren** für nachgelagerte Verarbeitung. + +--- + +## Schritt 4 – Größere Excel‑Bereiche konvertieren (optional) + +Das obige Beispiel behandelt einen winzigen Ausschnitt `A1:B1`, aber in der Praxis müssen häufig ganze Tabellen exportiert werden. Die gleiche Methode funktioniert für jedes rechteckige Feld – passen Sie einfach die Argumente `firstRow`, `firstColumn`, `totalRows` und `totalColumns` an. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro‑Tipp:** Wenn Ihr Blatt bereits eine Kopfzeile enthält, setzen Sie `includeColumnNames` auf `true`. Aspose.Cells verwendet dann die erste Zeile des Bereichs als Spaltennamen, was praktisch ist, wenn Sie das `DataTable` später an ein UI‑Grid binden. + +--- + +## Schritt 5 – Häufige Stolperfallen & wie man sie vermeidet + +| Problem | Warum es passiert | Lösung | +|---------|-------------------|--------| +| **Zahlen verlieren Kommas oder Währungssymbole** | `ExportAsString` ist `false` oder `ExportNumberFormat` fehlt | Setzen Sie sowohl `ExportAsString = true` **als auch** `ExportNumberFormat = true`. | +| **Formelzellen geben den Formelttext zurück** | Sie haben `CalculateFormula` nicht vor dem Export aufgerufen (nur nötig, wenn die Arbeitsmappe nicht automatisch berechnet) | Aktivieren Sie die Auto‑Berechnung (`workbook.CalculateFormula()`) oder nutzen Sie `ExportAsString`, das die Auswertung erzwingt. | +| **Kopfzeilen erscheinen als Datenzeilen** | `includeColumnNames` ist `false`, obwohl Ihr Bereich eine Kopfzeile enthält | Setzen Sie `includeColumnNames = true`, um die erste Zeile als Spaltennamen zu behandeln. | +| **Große Bereiche verursachen Speicherbelastung** | Das Exportieren des gesamten Blatts auf einmal lädt alles in den Speicher | Exportieren Sie in Teilen (z. B. 500 Zeilen gleichzeitig) und fügen Sie die `DataTable`s bei Bedarf zusammen. | + +--- + +## Schritt 6 – Vollständiges Beispiel (Copy‑Paste‑bereit) + +Unten finden Sie das gesamte Programm, von den `using`‑Anweisungen bis zur `Main`‑Methode. Kopieren Sie es in eine Konsolen‑App und drücken Sie **F5** – Sie sehen sofort die formatierte Ausgabe. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Erwartete Ausgabe** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Damit ist der gesamte **Wie‑man‑Excel‑exportiert**‑Workflow abgedeckt: Formatierung bleibt erhalten, Formelergebnisse werden ausgewertet und ein sauberes `DataTable` steht jedem .NET‑Verbraucher bereit. + +--- + +## Fazit + +Wir haben alles behandelt, was Sie über **wie man Excel**‑Daten exportiert, **Zahlenformat beibehält**, **einen Excel‑Bereich** in ein `DataTable` **konvertiert** und **Formelergebnisse** ohne zusätzliche Analyse erhält, wissen müssen. Der Schlüssel liegt in der Konfiguration von `ExportTableOptions` – sobald Sie `ExportAsString` und `ExportNumberFormat` auf `true` setzen, übernimmt Aspose.Cells die schwere Arbeit für Sie. + +Ab hier können Sie: + +- Das `DataTable` in ein WPF‑`DataGrid` oder eine ASP.NET‑MVC‑View einbinden. +- Die Tabelle in eine CSV‑Datei schreiben und dabei die exakte visuelle Darstellung beibehalten. +- Den Ansatz auf mehrere Blätter oder dynamische Bereiche ausweiten. + +Experimentieren Sie gern mit verschiedenen Formaten (Währung, Prozentsätze) und größeren Datenblöcken. Wenn Sie auf Eigenheiten stoßen, schauen Sie noch einmal in die **häufigen Stolperfallen**‑Tabelle – sie deckt die häufigsten Probleme beim **Exportieren von Excel mit Formatierung** ab. + +Viel Spaß beim Coden und mögen Ihre exportierten Tabellen immer so poliert aussehen wie die Originale! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/german/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..0d7de764a6 --- /dev/null +++ b/cells/german/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,190 @@ +--- +category: general +date: 2026-03-22 +description: Erfahren Sie, wie Sie Pivot-Tabellen in C# mit Aspose.Cells duplizieren. + Dieser Leitfaden zeigt außerdem, wie Sie Zeilen kopieren und eine Excel-Arbeitsmappe + in C# laden, um eine nahtlose Excel‑Automatisierung beim Kopieren von Zeilen zu + ermöglichen. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: de +og_description: Wie du eine Pivot-Tabelle in C# duplizierst? Folge diesem kurzen Tutorial, + um eine Excel-Arbeitsmappe in C# zu laden, Zeilen zu kopieren und die Excel‑Automatisierung + zum Kopieren von Zeilen zu meistern. +og_title: Wie man Pivot in C# dupliziert – Vollständiger Leitfaden +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Wie man Pivot in C# dupliziert – Vollständige Schritt‑für‑Schritt‑Anleitung +url: /de/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Pivot in C# dupliziert – Vollständige Schritt‑für‑Schritt-Anleitung + +Haben Sie sich jemals gefragt, **wie man Pivot**‑Tabellen programmgesteuert dupliziert, ohne sie manuell in Excel zu ziehen? Sie sind nicht der Einzige. In vielen Reporting‑Pipelines wird das gleiche Pivot‑Layout auf einem neuen Satz von Zeilen benötigt, und es von Hand zu erledigen ist Zeitverschwendung. + +Die gute Nachricht? Mit ein paar Zeilen C# können Sie eine Excel‑Arbeitsmappe laden, den Bereich definieren, der das Pivot enthält, und **wie man Zeilen kopiert**, sodass das Pivot an einem neuen Ort erscheint – alles in einem automatisierten Durchlauf. In diesem Tutorial behandeln wir außerdem die Grundlagen von **load excel workbook c#** und geben Ihnen eine solide Grundlage für **excel automation copy rows**‑Aufgaben. + +> **Was Sie am Ende wissen werden** +> • Ein vollständiges, ausführbares Beispiel, das eine Pivot‑Tabelle dupliziert. +> • Eine Erklärung, warum jede Zeile wichtig ist. +> • Tipps zum Umgang mit Sonderfällen wie ausgeblendeten Arbeitsblättern oder mehreren Pivots. + +--- + +## Voraussetzungen + +- **.NET 6.0** (oder eine aktuelle .NET‑Version) installiert. +- **Aspose.Cells for .NET** – die Bibliothek, die wir zur Manipulation von Excel‑Dateien verwenden. Sie können sie über NuGet beziehen: + +```bash +dotnet add package Aspose.Cells +``` + +- Eine Quellarbeitsmappe (`Source.xlsx`), die bereits eine Pivot‑Tabelle im Bereich **A1:J20** enthält (der Bereich, den wir duplizieren werden). +- Grundlegende Kenntnisse der C#‑Syntax – nichts Besonderes, nur die üblichen `using`‑Anweisungen und die `Main`‑Methode. + +Falls Ihnen etwas davon unbekannt ist, machen Sie eine kurze Pause und installieren Sie das Paket; der Rest der Anleitung geht davon aus, dass die Bibliothek einsatzbereit ist. + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "how to duplicate pivot in C# illustration") + +*Bildbeschreibung: "how to duplicate pivot in C# example showing source and duplicated pivot rows".* + +## Schritt 1: Excel‑Arbeitsmappe laden C# – Öffnen der Datei + +Das allererste, was Sie tun müssen, wenn Sie **load excel workbook c#** ausführen möchten, ist, eine `Workbook`‑Instanz zu erstellen, die auf Ihre Datei zeigt. Dieses Objekt gibt Ihnen Zugriff auf jedes Arbeitsblatt, jede Zelle und jedes Pivot in der Datei. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Warum das wichtig ist:** +`Workbook` abstrahiert die gesamte Excel‑Datei in ein In‑Memory‑Modell. Ohne sie zuerst zu laden, können Sie den Ort des Pivots nicht untersuchen oder Zeilen kopieren. Außerdem erkennt der Konstruktor automatisch das Dateiformat (XLS, XLSX, CSV usw.), sodass Sie keinen zusätzlichen Code zur Format­erkennung benötigen. + +## Schritt 2: Wie man Zeilen kopiert – Definieren des Pivot‑Bereichs + +Jetzt, wo die Arbeitsmappe im Speicher ist, müssen wir Aspose.Cells mitteilen, welche Zeilen das Pivot enthalten. In unserem Beispiel befindet sich das Pivot in **A1:J20**, was den Zeilen **0‑19** (nullbasierte Indizierung) entspricht. Wir packen das in eine `CellArea`‑Struktur. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Warum wir `CellArea` verwenden:** +Es ist eine leichtgewichtige Methode, um einen rechteckigen Block zu beschreiben. Wenn Sie später `CopyRows` aufrufen, liest die Methode dieses Objekt, um genau zu wissen, welche Zeilen dupliziert werden sollen. Wenn Sie den Bereich jemals anpassen müssen (z. B. das Pivot wächst bis Spalte K), ändern Sie nur den Wert von `endColumn`. + +## Schritt 3: Zugriff auf das Ziel‑Arbeitsblatt + +Die meisten Arbeitsmappen haben ein einzelnes Blatt, aber die API funktioniert genauso bei mehreren Blättern. Holen Sie sich das erste Arbeitsblatt (Index 0) – dort befindet sich das ursprüngliche Pivot. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro‑Tipp:** +Wenn Sie benannte Blätter haben, können Sie diese auch per Name abrufen: `workbook.Worksheets["Sheet1"]`. Das hilft, harte Index‑Kodierungen zu vermeiden, wenn sich die Struktur der Arbeitsmappe ändert. + +## Schritt 4: Wie man Zeilen kopiert – Duplizieren der Pivot‑Tabelle + +Hier ist das Kernstück von **how to duplicate pivot**: Wir kopieren die Zeilen, die das Pivot enthalten, an einen neuen Ort. In unserem Fall beginnen wir bei Zeile 31 (nullbasierter Index 30). Die Methode `CopyRows` kopiert *sowohl* die Daten als auch den zugrunde liegenden Pivot‑Cache, sodass die neuen Zeilen sich exakt wie das Original verhalten. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Was passiert im Hintergrund?** +`CopyRows` klont jede Zeile und bewahrt Formeln, Formatierungen und Pivot‑Definitionen. Da der Pivot‑Cache auf Arbeitsmappen‑Ebene liegt, verweist das duplizierte Pivot automatisch auf dieselbe Datenquelle – keine zusätzliche Konfiguration nötig. + +**Sonderfall – ausgeblendete Zeilen:** +Wenn eine der Zeilen im Quellbereich ausgeblendet ist, bleibt sie nach dem Kopieren ausgeblendet. Wenn Sie sie einblenden möchten, rufen Sie nach dem Kopieren `worksheet.Rows[destRow].IsHidden = false` auf. + +## Schritt 5: Arbeitsmappe speichern – Duplikat überprüfen + +Schließlich schreiben Sie die Änderungen zurück auf die Festplatte. Sie können die Originaldatei überschreiben oder, sicherer, unter einem neuen Namen speichern, um Vorher/Nachher vergleichen zu können. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Ergebnis, das Sie sehen sollten:** +Öffnen Sie `CopyWithPivot.xlsx`. Sie finden das ursprüngliche Pivot bei **A1:J20** und eine identische Kopie, die bei **A31:J50** beginnt. Beide Pivots können unabhängig aktualisiert werden, und alle an das Original angehängten Slicer funktionieren weiterhin für die Kopie, da sie denselben Cache teilen. + +## Häufige Fragen & Variationen + +### Kann ich mehrere Pivots gleichzeitig duplizieren? + +Absolut. Durchlaufen Sie alle Pivot‑Tabellen (`worksheet.PivotTables`) und kopieren Sie den Bereich jeder einzelnen an ein anderes Ziel. Achten Sie nur darauf, dass sich die Zielbereiche nicht überschneiden. + +### Was, wenn die Quellarbeitsmappe passwortgeschützt ist? + +Aspose.Cells lässt Sie eine geschützte Datei öffnen, indem Sie das Passwort an den `Workbook`‑Konstruktor übergeben: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Wie kopiere ich Zeilen, ohne Formeln zu beeinflussen? + +Wenn Sie nur die *Werte* (keine Formeln) benötigen, verwenden Sie `CopyRows` mit dem `CopyOptions`‑Flag: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Gibt es eine Möglichkeit, Zeilen in eine *andere* Arbeitsmappe zu kopieren? + +Ja. Nachdem Sie Zeilen im Quellblatt kopiert haben, können Sie das Arbeitsblatt in eine andere `Workbook`‑Instanz klonen über `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Pro‑Tipps für zuverlässige Excel‑Automation‑Copy‑Rows + +- **Validieren Sie den Bereich** vor dem Kopieren. Ein kurzer `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` verhindert Out‑of‑Range‑Fehler. +- **Deaktivieren Sie die Berechnung**, während Sie große Bereiche kopieren: `workbook.Settings.CalcMode = CalcMode.Manual;` – das beschleunigt den Vorgang erheblich. +- **Entsorgen Sie Objekte** (`workbook.Dispose()`), wenn Sie viele Dateien in einer Schleife verarbeiten, um native Ressourcen freizugeben. +- **Protokollieren Sie den Vorgang** – besonders in Produktions‑Pipelines – damit Sie nachverfolgen können, welche Dateien verarbeitet wurden, und Fehler frühzeitig erkennen. + +## Fazit + +Sie wissen jetzt, **how to duplicate pivot**‑Tabellen in C# mit Aspose.Cells zu duplizieren, und Sie haben den kompletten Workflow von **load excel workbook c#** über **excel automation copy rows** bis zum finalen Speichern des Ergebnisses gesehen. Das Beispiel ist eigenständig, läuft sofort und kann erweitert werden, um mehrere Pivots, geschützte Dateien oder das Kopieren zwischen Arbeitsmappen zu handhaben. + +Nächste Schritte? Versuchen Sie, das Skript anzupassen, um: + +- Das duplizierte Pivot programmgesteuert zu aktualisieren (`pivotTable.RefreshData();`). +- Den duplizierten Bereich in eine CSV für die Weiterverarbeitung zu exportieren. +- Den Code in eine ASP.NET Core‑API zu integrieren, sodass Benutzer eine Datei hochladen und sofort eine duplizierte‑Pivot‑Version erhalten können. + +Viel Spaß beim Coden, und möge Ihre Excel‑Automation stets reibungslos laufen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/row-and-column-management/_index.md b/cells/german/net/row-and-column-management/_index.md index 281bb571ac..e2e3edbbab 100644 --- a/cells/german/net/row-and-column-management/_index.md +++ b/cells/german/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Erfahren Sie in unserer Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells Erfahren Sie, wie Sie mit Aspose.Cells für .NET eine Spalte in einer Excel-Datei löschen. Folgen Sie unserer detaillierten Schritt-für-Schritt-Anleitung, um Ihre Excel-Dateiänderungen zu optimieren. ### [Löschen einer Zeile in Aspose.Cells .NET](./delete-row-aspose-cells/) Erfahren Sie, wie Sie mit Aspose.Cells für .NET eine Zeile in Excel löschen. Diese Schritt-für-Schritt-Anleitung behandelt die Voraussetzungen, den Codeimport und eine detaillierte Anleitung zur nahtlosen Datenmanipulation. +### [Aspose.Cells Zeilen löschen – Kopfzeile in Excel schützen](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Erfahren Sie, wie Sie mit Aspose.Cells für .NET Zeilen löschen, während Sie die Kopfzeile Ihrer Excel‑Tabelle schützen. ### [Löschen mehrerer Zeilen in Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Erfahren Sie, wie Sie mit Aspose.Cells für .NET mehrere Zeilen in Excel löschen. Diese detaillierte Schritt-für-Schritt-Anleitung enthält Voraussetzungen, Programmierbeispiele und FAQs für Entwickler. ### [Einfügen einer Spalte in Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/german/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/german/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..9f404672f9 --- /dev/null +++ b/cells/german/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells löscht Zeilen, wobei die Kopfzeile geschützt bleibt. Erfahren + Sie, wie Sie die erste Tabelle abrufen und Excel‑Tabellenzeilen sicher in C# löschen. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: de +og_description: Aspose Cells löscht Zeilen, wobei die Kopfzeile geschützt bleibt. + Erfahren Sie, wie Sie die erste Tabelle abrufen und Excel‑Tabellenzeilen sicher + in C# löschen. +og_title: Aspose Cells Zeilen löschen – Kopfzeile in Excel schützen +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Zeilen löschen – Kopfzeile in Excel schützen +url: /de/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Headerzeile in Excel schützen + +Haben Sie schon einmal versucht, **aspose cells delete rows** aus einer Tabelle zu entfernen, nur um festzustellen, dass die Kopfzeile verschwunden ist? Das ist ein häufiger Stolperstein beim programmgesteuerten Umgang mit Excel‑Tabellen. In diesem Leitfaden führen wir Sie durch eine vollständige, ausführbare Lösung, die **die Kopfzeile schützt**, Ihnen zeigt, wie Sie **die erste Tabelle abrufen**, und sicher **Excel‑Tabellenzeilen löschen** können, ohne die Struktur zu zerstören. + +Wir behandeln alles, von dem Laden der Arbeitsmappe bis zum Umgang mit der Ausnahme, die Aspose wirft, wenn Sie versuchen, die Kopfzeile zu verwaisen. Am Ende haben Sie ein robustes Muster, das Sie in jedes .NET‑Projekt, das Aspose.Cells verwendet, einbinden können. + +--- + +## Was Sie benötigen + +- **Aspose.Cells for .NET** (v23.12 oder neuer) – die Bibliothek, mit der Sie Excel‑Dateien ohne installierte Office‑Suite bearbeiten können. +- Eine grundlegende C#‑Entwicklungsumgebung (Visual Studio, Rider oder die `dotnet`‑CLI). +- Eine Excel‑Datei (`TableWithHeader.xlsx`), die mindestens ein **ListObject** (Excel‑Tabelle) mit einer Kopfzeile in der ersten Zeile enthält. + +Keine zusätzlichen NuGet‑Pakete sind über Aspose.Cells hinaus erforderlich. + +--- + +## Schritt 1: Arbeitsmappe laden und erste Tabelle abrufen + +Das Erste, was Sie tun müssen, ist die Arbeitsmappe zu öffnen und die Tabelle zu holen, die Sie ändern möchten. Hier kommt das sekundäre Schlüsselwort **retrieve first table** zum Einsatz. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Warum das wichtig ist:** +- `Workbook` liest die Datei, ohne dass Excel installiert sein muss. +- `worksheet.ListObjects[0]` ist der einfachste Weg, um **retrieve first table** zu erreichen; wenn Sie mehrere Tabellen haben, können Sie iterieren oder den Tabellennamen verwenden. + +> **Profi‑Tipp:** Wenn Sie sich nicht sicher sind, ob ein Arbeitsblatt tatsächlich eine Tabelle enthält, prüfen Sie zuerst `worksheet.ListObjects.Count`, um eine `IndexOutOfRangeException` zu vermeiden. + +--- + +## Schritt 2: Kopfzeile beim Löschen von Zeilen schützen + +Jetzt kommt der Kern der Sache: **aspose cells delete rows** ohne die Kopfzeile zu entfernen. Die `DeleteRows`‑Methode von Aspose verwendet einen nullbasierten Startindex und eine Anzahl. Der Versuch, die Kopfzeile (Zeile 0) zu löschen, löst eine Ausnahme aus, was genau das ist, was wir vermeiden wollen. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Erklärung der Logik:** + +| Schritt | Grund | +|------|--------| +| `table.DeleteRows(1, 2);` | Index 1 verweist auf die **zweite** Zeile (die erste Datenzeile). Das Löschen von zwei Zeilen entfernt die Zeilen 2‑3 in Excel, wobei die Kopfzeile (Zeile 1) unverändert bleibt. | +| `catch (Exception ex)` | Aspose wirft eine Ausnahme **nur**, wenn die Operation die Kopfzeile verwaisen lassen würde. Das Abfangen ermöglicht es, eine freundliche Meldung zu protokollieren, anstatt die Anwendung abstürzen zu lassen. | +| `Save` | Das Persistieren der Änderungen ermöglicht das Öffnen von `Result.xlsx` und zeigt, dass die Kopfzeile noch vorhanden ist. | + +> **Was, wenn Sie die Kopfzeile wirklich löschen müssen?** +> Verwenden Sie `table.ShowHeaders = false;` vor dem Löschen, oder löschen Sie die gesamte Tabelle und erstellen Sie sie neu. In den meisten geschäftlichen Szenarien möchten Sie jedoch die **Kopfzeile schützen**. + +--- + +## Schritt 3: Ergebnis überprüfen – Erwartete Ausgabe + +Nach dem Ausführen des Programms öffnen Sie `Result.xlsx`. Sie sollten sehen: + +- Die erste Zeile enthält weiterhin die ursprünglichen Spaltenüberschriften. +- Zeilen 2‑3 (die von uns ausgewählten) sind verschwunden, und die übrigen Daten wurden nach oben verschoben. + +Die Konsole zeigt an: + +``` +Rows deleted successfully. +``` + +Wenn Sie versehentlich versucht haben, die Kopfzeile zu löschen (z. B. `table.DeleteRows(0, 1);`), wäre die Ausgabe: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Diese Meldung bestätigt, dass Asposes integrierte Schutzfunktion ihre Arbeit tut. + +--- + +## Schritt 4: Alternative Methoden zum **Delete Excel Table Rows** + +Manchmal benötigen Sie mehr Kontrolle – etwa das Löschen von Zeilen basierend auf einer Bedingung oder das Entfernen nicht zusammenhängender Zeilen. Hier sind zwei schnelle Muster, die die Kopfzeile schützen. + +### 4.1 Zeilen nach Datenfilter löschen + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Massenlöschung mit einem Bereich + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Beide Code‑Snippets beachten die Regel **protect header row**, weil der Startindex niemals unter 1 fällt. + +--- + +## Schritt 5: Häufige Fallstricke & wie man sie vermeidet + +| Fallstrick | Warum es passiert | Lösung | +|-----------|-------------------|--------| +| Versehentliches Löschen der Kopfzeile | Verwendung von `0` als Startindex | Immer bei `1` für Datenzeilen beginnen oder zuerst `table.ShowHeaders` prüfen. | +| `IndexOutOfRangeException`, wenn das Blatt keine Tabellen enthält | Annahme, dass eine Tabelle existiert | `worksheet.ListObjects.Count > 0` prüfen, bevor `[0]` zugegriffen wird. | +| Änderungen nicht gespeichert | Vergessen, `Save` aufzurufen | `workbook.Save` nach Änderungen aufrufen. | +| Löschen von Zeilen in der Mitte verschiebt Indizes, was zu Auslassungen führt | Vorwärts-Iteration beim Löschen | Rückwärts iterieren oder zuerst zu löschende Zeilen sammeln. | + +--- + +## Schritt 6: Alles zusammenführen – Vollständiges funktionierendes Beispiel + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Führen Sie dieses Programm aus, öffnen Sie `Result.xlsx`, und Sie sehen, dass die Kopfzeile unverändert bleibt, während die ausgewählten Zeilen entfernt wurden. Das ist die **vollständige, eigenständige Lösung** für **aspose cells delete rows**, ohne die Kopfzeile zu opfern. + +--- + +## Fazit + +Wir haben gerade gezeigt, wie man **aspose cells delete rows** ausführt, während man **die Kopfzeile schützt**, wie man **retrieve first table** verwendet und mehrere sichere Methoden zum **delete excel table rows** anwendet. Die wichtigsten Erkenntnisse sind: + +- Immer bei Index 1 mit dem Löschen beginnen, um die Kopfzeile zu erhalten. +- `try/catch` verwenden, um Asposes integrierte Schutz‑Ausnahme zu behandeln. +- Vor dem Arbeiten die Existenz der Tabelle prüfen und rückwärts iterieren, wenn Zeilen bedingt entfernt werden. + +Bereit für den nächsten Schritt? Versuchen Sie, diesen Ansatz mit den Styling‑APIs von **Aspose Cells** zu kombinieren, um zu löschende Zeilen vor dem Entfernen hervorzuheben, oder automatisieren Sie den Vorgang über mehrere Arbeitsblätter hinweg. Die Möglichkeiten sind endlos, und jetzt haben Sie ein zuverlässiges Muster zum Weiterbauen. + +Wenn Ihnen dieses Tutorial geholfen hat, geben Sie ihm einen Daumen hoch, teilen Sie es mit Kolleg*innen oder hinterlassen Sie einen Kommentar mit Ihren eigenen Sonderfall‑Lösungen. Viel Spaß beim Coden! + +--- + +![Aspose Cells Delete Rows Beispiel – Kopfzeile geschützt](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/german/net/saving-and-exporting-excel-files-with-options/_index.md index 639b6e7f3a..2fb773a55b 100644 --- a/cells/german/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/german/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Erfahren Sie mit unserer einfachen Schritt-für-Schritt-Anleitung, wie Sie mit W Erfahren Sie anhand schrittweiser Anleitungen, wie Sie Dokumenteigenschaften wie Version, Autor und Titel in einer Excel-Datei programmgesteuert mit Aspose.Cells für .NET angeben. ### [Entfernen führender leerer Zeilen und Spalten beim Exportieren](./trimming-leading-blank-rows-and-columns/) Optimieren Sie Ihre CSV-Exporte, indem Sie führende leere Zeilen und Spalten mit Aspose.Cells für .NET entfernen. Saubere Daten sind nur wenige Schritte entfernt. +### [Wie man eine Arbeitsmappe in C# speichert – Vollständiger Excel-Automatisierungsleitfaden](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Erfahren Sie, wie Sie mit Aspose.Cells für .NET eine Arbeitsmappe in C# vollständig automatisieren und speichern. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/german/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..26f78c8c2c --- /dev/null +++ b/cells/german/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-22 +description: Wie man eine Arbeitsmappe in C# mit Aspose.Cells speichert – Schritt‑für‑Schritt‑Anleitung, + die erklärt, wie man Excel lädt, ein Blatt erstellt, ein Blatt wiederverwendet und + einen Bericht generiert. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: de +og_description: Wie man eine Arbeitsmappe in C# mit Aspose.Cells speichert. Erfahren + Sie, wie Sie Excel laden, ein Blatt erstellen, ein Blatt wiederverwenden und einen + Bericht in einem einzigen Tutorial generieren. +og_title: Wie man eine Arbeitsmappe in C# speichert – Vollständiger Leitfaden zur + Excel‑Automatisierung +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Wie man ein Arbeitsbuch in C# speichert – Vollständiger Leitfaden zur Excel‑Automatisierung +url: /de/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man ein Arbeitsbuch in C# speichert – Vollständiger Excel-Automatisierungsleitfaden + +Haben Sie sich jemals gefragt, **wie man ein Arbeitsbuch** in C# speichert, nachdem Sie einige Daten verarbeitet haben? Sie sind nicht allein. Die meisten Entwickler stoßen auf ein Problem, wenn der Bericht auf dem Bildschirm perfekt aussieht, sich aber weigert, zurück auf die Festplatte geschrieben zu werden. In diesem Tutorial führen wir Sie durch ein vollwertiges Beispiel, das Ihnen nicht nur **zeigt, wie man ein Arbeitsbuch speichert**, sondern auch **wie man Excel lädt**, **wie man ein Blatt erstellt**, **wie man ein Blatt wiederverwendet** und **wie man einen Bericht generiert** – alles mit Aspose.Cells. + +Stellen Sie sich das wie ein Gespräch bei einer Kaffeepause vor, bei dem ich den Code aus meinem Laptop hole und jede Zeile erkläre. Am Ende haben Sie ein ausführbares Programm, das eine Vorlage lädt, Daten über SmartMarker einfügt, einen bestehenden Detail‑Blattnamen wiederverwendet und schließlich die Datei in Ihren Ordner schreibt. Keine Geheimnisse, nur klare Schritte, die Sie copy‑paste können. + +## Was Sie benötigen + +- **Aspose.Cells for .NET** (neueste Version ab 2026). Sie können es über NuGet mit `Install-Package Aspose.Cells` beziehen. +- Eine .NET‑Entwicklungsumgebung (Visual Studio, Rider oder VS Code mit der C#‑Erweiterung funktioniert einwandfrei). +- Eine einfache Excel‑Vorlagendatei namens `MasterTemplate.xlsx`, die in einem von Ihnen kontrollierten Ordner liegt. +- Grundlegende C#‑Kenntnisse – wenn Sie schon einmal `Console.WriteLine` geschrieben haben, sind Sie startklar. + +> **Pro Tipp:** Bewahren Sie Ihre Vorlage in einem separaten *Resources*-Ordner auf und markieren Sie sie als „Copy if newer“, damit der Pfad bei Builds konsistent bleibt. + +Jetzt tauchen wir in den Code ein. + +## Schritt 1: Wie man Excel lädt – Öffnen der Vorlagen‑Arbeitsmappe + +Das Erste, was Sie tun müssen, ist, die Arbeitsmappe in den Speicher zu laden. Aspose.Cells macht das mit einer einzigen Zeile, aber das Verständnis des Warum hilft, wenn Sie später Fehler beheben müssen. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Warum das wichtig ist:** Das Laden der Arbeitsmappe gibt Ihnen Zugriff auf jedes Arbeitsblatt, jede Formatvorlage und jeden benannten Bereich in der Vorlage. Wenn die Datei nicht gefunden wird, wirft Aspose eine `FileNotFoundException`, also überprüfen Sie den Pfad doppelt. +- **Randfall:** Wenn die Vorlage passwortgeschützt ist, übergeben Sie das Passwort dem `Workbook`‑Konstruktor: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Schritt 2: Wie man ein Blatt wiederverwendet – SmartMarker‑Optionen konfigurieren + +SmartMarker kann automatisch ein neues Detail‑Blatt erstellen, aber Sie haben möglicherweise bereits ein Blatt mit dem Namen **Detail**. Um einen Konflikt zu vermeiden, weisen wir den Prozessor an, diesen Namen wiederzuverwenden. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Warum das wichtig ist:** Ohne diese Option würde Aspose eine numerische Endung anhängen (z. B. „Detail1“), was nachgelagerte Makros oder Formeln, die einen festen Blattnamen erwarten, beschädigen kann. +- **Was, wenn das Blatt nicht existiert?** Aspose erstellt es für Sie – der gleiche Code funktioniert also, egal ob das Blatt vorhanden ist oder nicht. + +## Schritt 3: Wie man ein Blatt erstellt – Datenquelle vorbereiten + +Obwohl wir hier kein Blatt manuell hinzufügen, bestimmt die Daten, die Sie an SmartMarker übergeben, ob ein neues Blatt erstellt wird. Lassen Sie uns ein einfaches anonymes Objekt erstellen, das eine Bestellliste nachahmt. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Warum das wichtig ist:** SmartMarker durchsucht die Vorlage nach Markern wie `&=Header` und `&=Items.Id`. Die Struktur von `orderData` muss exakt zu diesen Markern passen, sonst überspringt der Prozessor sie stillschweigend. +- **Variation:** Wenn Sie Daten aus einer Datenbank holen, ersetzen Sie den anonymen Typ durch eine Liste von DTOs oder eine `DataTable`. Der Prozessor verarbeitet beides. + +## Schritt 4: Wie man einen Bericht generiert – SmartMarker verarbeiten + +Jetzt binden wir die Daten an die Vorlage. Der Prozessor durchläuft das erste Arbeitsblatt, ersetzt Marker und erstellt das Detail‑Blatt. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Warum das wichtig ist:** Diese eine Zeile erledigt die schwere Arbeit – sie füllt die Kopfzeile, iteriert über `Items` und berücksichtigt den zuvor gesetzten `DetailSheetNewName`. +- **Häufige Frage:** *Was, wenn ich mehrere Arbeitsblätter mit Markern habe?* Durchlaufen Sie jedes Arbeitsblatt und rufen Sie `SmartMarkerProcessor.Process` einzeln auf. + +## Schritt 5: Wie man ein Arbeitsbuch speichert – Ergebnisdatei persistieren + +Schließlich schreiben wir die modifizierte Arbeitsmappe zurück auf die Festplatte. Das ist der Moment, in dem **wie man ein Arbeitsbuch speichert** konkret wird. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Warum das wichtig ist:** Die `Save`‑Methode unterstützt viele Formate (`.xlsx`, `.xls`, `.csv`, `.pdf` usw.). Standardmäßig schreibt sie eine Excel‑Datei, aber Sie können ein `SaveOptions`‑Objekt übergeben, um die Ausgabe zu ändern. +- **Randfall:** Wenn die Zieldatei in Excel geöffnet ist, wirft `Save` eine `IOException`. Stellen Sie sicher, dass Sie alle Instanzen schließen oder bei jedem Durchlauf einen eindeutigen Dateinamen verwenden. + +![Beispiel zum Speichern eines Arbeitsbuchs in C#](/images/how-to-save-workbook-csharp.png "Wie man ein Arbeitsbuch in C# speichert – visuelle Übersicht des Prozesses") + +### Vollständiges funktionierendes Beispiel + +Wenn wir alles zusammenfügen, hier eine eigenständige Konsolen‑App, die Sie kompilieren und ausführen können: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Erwartete Ausgabe:** Nach dem Ausführen finden Sie `SmartMarkerWithDupDetail.xlsx` in `YOUR_DIRECTORY`. Öffnen Sie sie und Sie sollten sehen: + +- Die ursprüngliche Kopfzeile ist mit „Orders“ gefüllt. +- Ein neues (oder wiederverwendetes) Blatt mit dem Namen **Detail**, das zwei Zeilen enthält: `Id=1, Qty=5` und `Id=2, Qty=3`. + +Wenn das Blatt **Detail** bereits existierte, wird sein Inhalt mit den neuen Daten überschrieben – keine zusätzlichen Blätter, die Ihre Datei überladen. + +## Häufig gestellte Fragen (FAQ) + +| Frage | Antwort | +|----------|--------| +| *Kann ich statt XLSX in PDF speichern?* | Ja. Ersetzen Sie `workbook.Save("file.xlsx")` durch `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Was, wenn meine Vorlage mehrere SmartMarker‑Abschnitte hat?* | Rufen Sie `SmartMarkerProcessor.Process` für jedes Arbeitsblatt auf, das Marker enthält, oder übergeben Sie eine Sammlung von Datenobjekten, die zu jedem Abschnitt passen. | +| *Gibt es eine Möglichkeit, Daten anzuhängen, anstatt das Detail‑Blatt zu überschreiben?* | Verwenden Sie `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (verfügbar in neueren Aspose‑Versionen). | +| *Muss ich die Arbeitsmappe freigeben?* | Die Klasse `Workbook` implementiert `IDisposable`. Packen Sie sie in einen `using`‑Block für eine saubere Ressourcenverwaltung. | + +## Fazit + +Wir haben gerade **wie man ein Arbeitsbuch in C# speichert** von Anfang bis Ende behandelt und die gesamte Pipeline demonstriert: **wie man Excel lädt**, **wie man ein Blatt erstellt** (implizit über SmartMarker), **wie man ein Blatt wiederverwendet** und **wie man einen Bericht generiert**. Der Code kann in jedes .NET‑Projekt übernommen werden, und die Erklärungen sollten Ihnen genügend Kontext geben, um ihn an komplexere Szenarien anzupassen – wie Mehrblatt‑Berichte, bedingte Formatierung oder den Export nach PDF. + +Bereit für die nächste Herausforderung? Versuchen Sie, ein Diagramm hinzuzufügen, das die Bestellmengen visualisiert, oder wechseln Sie das Ausgabeformat zu CSV für die nachgelagerte Verarbeitung. Die gleichen Prinzipien – Laden, Verarbeiten und Speichern – gelten weiterhin, sodass Sie dieses Muster bei vielen Berichtaufgaben wiederverwenden werden. + +Wenn Sie auf ein Problem stoßen oder Ideen für Erweiterungen haben, hinterlassen Sie gerne einen Kommentar. Viel Spaß beim Programmieren und genießen Sie das reibungslose Erlebnis, endlich **ein Arbeitsbuch speichern** zu können, genau so, wie Sie es benötigen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/smart-markers-dynamic-data/_index.md b/cells/german/net/smart-markers-dynamic-data/_index.md index 5039b53392..aece44df5c 100644 --- a/cells/german/net/smart-markers-dynamic-data/_index.md +++ b/cells/german/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Entfesseln Sie die Leistungsfähigkeit von Aspose.Cells mit diesem Schritt-für- Schöpfen Sie das Potenzial der Excel-Berichterstellung mit Aspose.Cells aus, indem Sie verschachtelte Objekte mithilfe von Smart Markers in einer Schritt-für-Schritt-Anleitung mühelos handhaben. ### [Implementieren Sie ein Variablenarray mit intelligenten Markierungen Aspose.Cells](./variable-array-smart-markers/) Entfesseln Sie die Leistungsfähigkeit von Aspose.Cells. Erfahren Sie Schritt für Schritt, wie Sie variable Arrays mit Smart Markers für die nahtlose Erstellung von Excel-Berichten implementieren. +### [Wie man einen Excel-Bericht in C# erstellt – Vollständige Anleitung mit SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Erfahren Sie, wie Sie mit Aspose.Cells und SmartMarker in C# komplette Excel-Berichte automatisch generieren. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/german/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..f9da246c79 --- /dev/null +++ b/cells/german/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Wie man einen Excel‑Bericht in C# mit einer Master‑Detail‑Vorlage erstellt. + Lernen Sie, Excel‑Vorlagen in C# schnell zu befüllen, indem Sie SmartMarker für + wiederholbare Tabellenblätter verwenden. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: de +og_description: Wie man in C# einen Excel‑Bericht mit einer wiederverwendbaren Vorlage + erstellt. Diese Schritt‑für‑Schritt‑Anleitung zeigt, wie man eine Excel‑Vorlage + in C# mit Master‑Detail‑Daten füllt. +og_title: Wie man einen Excel-Bericht in C# generiert – Komplettes SmartMarker‑Tutorial +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Wie man einen Excel‑Bericht in C# generiert – Vollständige Anleitung mit SmartMarker +url: /de/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Excel‑Berichte in C# erstellt – Vollständige Anleitung mit SmartMarker + +Haben Sie sich jemals gefragt, **wie man Excel‑Berichte** in C# erzeugt, ohne endlosen Zell‑für‑Zell‑Code zu schreiben? Sie sind nicht allein. Die meisten Entwickler stoßen an ihre Grenzen, wenn sie einen professionellen, mehrseitigen Bericht benötigen, der Master‑Detail‑Beziehungen abbildet – denken Sie an Aufträge und Positionen – und dabei nicht jedes Mal das Rad neu erfinden wollen. + +Die gute Nachricht? Mit einer fertigen Excel‑Vorlage und dem **SmartMarker**‑Engine von Aspose.Cells können Sie **populate Excel template C#** mit nur wenigen Zeilen Code befüllen. In diesem Tutorial führen wir Sie durch ein praxisnahes Szenario, erklären, warum jeder Schritt wichtig ist, und geben Ihnen ein vollständiges, ausführbares Beispiel, das Sie noch heute copy‑pasten können. + +> **Was Sie erhalten:** Einen Master‑Detail‑Excel‑Bericht, bei dem jeder Auftrag ein eigenes Arbeitsblatt erzeugt, alles gesteuert durch einfache C#‑Objekte. Kein manuelles Durchlaufen von Zellen, keine fragilen Formeln – nur sauberer, wartbarer Code. + +--- + +## Voraussetzungen + +Bevor wir starten, stellen Sie sicher, dass Sie folgendes haben: + +- **.NET 6.0** (oder höher) installiert – der Code zielt auf .NET 6 ab, funktioniert aber auch mit .NET Framework 4.7+. +- **Aspose.Cells for .NET** NuGet‑Paket (`Install-Package Aspose.Cells`) – stellt die Klassen `Workbook`, `SmartMarkerProcessor` und weitere bereit. +- Eine Excel‑Datei namens **MasterDetailTemplate.xlsx** im Verzeichnis `YOUR_DIRECTORY`. Sie sollte einen SmartMarker‑Block wie `{{Orders.OrderId}}` im ersten Blatt und einen verschachtelten Block `{{Orders.Items.Prod}}` für die Positionen enthalten. +- Grundlegendes Verständnis von anonymen C#‑Typen – wir verwenden sie, um Aufträge und Positionen zu modellieren. + +Falls Ihnen etwas davon unbekannt ist, keine Sorge. Wir erwähnen später Alternativen (z. B. EPPlus), aber das Kernkonzept bleibt gleich. + +--- + +## Schritt 1: Laden der Excel‑Vorlage, die SmartMarker‑Blöcke enthält + +Als erstes öffnen wir die Vorlagendatei. Betrachten Sie die Vorlage als Skelett; SmartMarker füllt sie später mit echten Daten. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Warum das wichtig ist:** Durch die Trennung von Layout (der Vorlage) und Daten (den C#‑Objekten) bleiben sowohl Designer als auch Entwickler glücklich. Designer können Schriftarten, Farben oder Formeln anpassen, ohne Code zu berühren. + +--- + +## Schritt 2: Aufbau der Master‑Detail‑Datenquelle + +Als Nächstes erstellen wir die Daten, die die Vorlage befüllen. Für einen typischen Auftragsbericht haben Sie eine Sammlung von Aufträgen, wobei jeder Auftrag seine eigene Sammlung von Positionen besitzt. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro‑Tipp:** Verwenden Sie stark typisierte Klassen anstelle von anonymen Typen, wenn Sie die Daten in mehreren Berichten wiederverwenden müssen. Der anonyme Ansatz hält das Beispiel kompakt. + +**Warum das wichtig ist:** SmartMarker arbeitet, indem es Eigenschaftsnamen (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) mit den Platzhaltern in der Vorlage abgleicht. Die Hierarchie muss exakt übereinstimmen, sonst überspringt die Engine diese Abschnitte. + +--- + +## Schritt 3: SmartMarker anweisen, für jeden Master‑Datensatz ein neues Blatt zu erstellen + +Standardmäßig schreibt SmartMarker alle Zeilen in ein einziges Blatt. Wir möchten, dass jeder Auftrag ein eigenes Arbeitsblatt erhält – ideal für den späteren Druck oder das Versenden von PDFs pro Auftrag. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Warum das wichtig ist:** `EnableRepeatingSheet` eliminiert die Notwendigkeit, Blätter manuell zu duplizieren. Die Engine kopiert das Originalblatt, fügt die Auftragsdaten ein und benennt das Blatt automatisch (in der Regel anhand des Werts der ersten Spalte). + +--- + +## Schritt 4: Verarbeitung der Vorlage mit Ihren Daten + +Jetzt verbinden wir alles. Der `SmartMarkerProcessor` durchläuft die Arbeitsmappe, ersetzt die Tags und erstellt neue Blätter gemäß den Anweisungen. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Warum das wichtig ist:** Diese eine Zeile übernimmt die schwere Arbeit – das Parsen der Vorlage, das Iterieren über Sammlungen und das Verarbeiten verschachtelter Tabellen. Sie ist das Herzstück von **populate Excel template C#** ohne manuelle Schleifen. + +--- + +## Schritt 5: Speichern des fertigen Berichts + +Abschließend schreiben wir die befüllte Arbeitsmappe auf die Festplatte. Sie können sie auch direkt als HTTP‑Antwort für Web‑Apps streamen. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Warum das wichtig ist:** Das Speichern in einer Datei liefert ein greifbares Artefakt, das Sie in Excel öffnen, mit Stakeholdern teilen oder in nachgelagerte Prozesse wie die PDF‑Konvertierung einspeisen können. + +--- + +## Vollständiges, lauffähiges Beispiel (Copy‑Paste‑bereit) + +Unten finden Sie das komplette Programm, inklusive `using`‑Direktiven und einer `Main`‑Methode. Kopieren Sie es in ein Konsolen‑Projekt, passen Sie die Dateipfade an und führen Sie es aus. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Erwartete Ausgabe + +Wenn Sie `MasterDetailResult.xlsx` öffnen, sehen Sie: + +- **Blatt „Order_1“** – enthält die Kopfzeile von Auftrag 1 und zwei Zeilen für die Produkte A und B. +- **Blatt „Order_2“** – enthält die Kopfzeile von Auftrag 2 und eine Zeile für das Produkt C. +- Alle Formeln, Formatierungen und Diagramme aus der Originalvorlage bleiben erhalten. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Häufige Fragen & Sonderfälle + +### Was, wenn ich ein statisches Blatt (z. B. eine Zusammenfassung) neben den wiederholenden Blättern benötige? + +Setzen Sie `EnableRepeatingSheet = true` **nur** auf dem Arbeitsblatt, das den Master‑Block enthält. Andere Blätter bleiben unverändert, sodass Sie eine Zusammenfassungsseite in der Originalvorlage behalten können. + +### Kann ich anstelle von anonymen Objekten ein DataTable verwenden? + +Absolut. SmartMarker funktioniert mit jedem Objekt, das `IEnumerable` implementiert. Ersetzen Sie einfach den anonymen Typ durch ein `DataTable` und stellen Sie sicher, dass die Spaltennamen den Tags entsprechen. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Wie ändere ich die Namenskonvention der erzeugten Blätter? + +Implementieren Sie das Interface `ISmartMarkerSheetNaming` (oder manipulieren Sie `workbook.Worksheets` nach der Verarbeitung). Die meisten Entwickler benennen Blätter einfach anhand eines Zellwertes um: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Was, wenn meine Vorlage eine andere Platzhaltersyntax verwendet? + +SmartMarker erlaubt benutzerdefinierte Trennzeichen über `SmartMarkerOptions`. Beispiel: Verwenden Sie `<< >>` anstelle von `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tipps für die Skalierung dieses Ansatzes + +- **Cache die Vorlage** im Speicher, wenn Sie viele Berichte pro Anfrage erzeugen; das Laden von der Festplatte erhöht die Latenz. +- **Kombinieren Sie mit PDF‑Konvertierung** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) für e‑mail‑freundliche Ausgaben. +- **Parametrisieren Sie Dateipfade** über Konfigurationsdateien oder Umgebungsvariablen, um die Lösung portabel für Entwicklung, Test und Produktion zu machen. +- **Unit‑Testen Sie die Datenschicht** separat; SmartMarker ist deterministisch, Sie müssen nur prüfen, ob die übergebenen Daten dem erwarteten Schema entsprechen. + +--- + +## Fazit + +Wir haben gezeigt, **wie man Excel‑Berichte** in C# von Anfang bis Ende erstellt – vom Laden einer SmartMarker‑aktivierten Vorlage bis zum Speichern einer mehrseitigen Arbeitsmappe, die Master‑Detail‑Beziehungen abbildet. Durch **populate Excel template C#** mit nur wenigen Codezeilen vermeiden Sie fragilen Zell‑für‑Zell‑Logik und geben Designern die Freiheit, das Endergebnis zu gestalten. + +Als Nächstes könnten Sie: + +- **populate Excel template C#** mit Diagrammen verwenden, die pro Blatt automatisch aktualisiert werden. +- **excel smartmarker c#** in ASP.NET Core integrieren, um Berichte direkt an Browser zu streamen. +- **c# excel automation** Pipelines automatisieren, die Daten aus APIs oder Datenbanken ziehen. + +Probieren Sie es aus, passen Sie die Vorlage an und sehen Sie, wie schnell Sie rohe Daten in einen professionellen Excel‑Bericht verwandeln können. Fragen oder ein cooles Anwendungsbeispiel? Hinterlassen Sie einen Kommentar unten – happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/german/net/tables-and-lists/_index.md b/cells/german/net/tables-and-lists/_index.md index bc0b61e826..1c0cd8c969 100644 --- a/cells/german/net/tables-and-lists/_index.md +++ b/cells/german/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Konvertieren Sie Tabellen in Excel ganz einfach in Bereiche mit Aspose.Cells fü Entfesseln Sie die Leistungsfähigkeit von Aspose.Cells für .NET. Lernen Sie in dieser detaillierten Schritt-für-Schritt-Anleitung, Tabellen mit Abfragedatenquellen zu lesen und zu schreiben. ### [Kommentar einer Tabelle oder Liste in Excel festlegen](./setting-comment-of-table-or-list/) Erfahren Sie mit unserer einfachen Schritt-für-Schritt-Anleitung, wie Sie mit Aspose.Cells für .NET Kommentare für Tabellen in Excel festlegen. +### [Excel-Tabelle in C# erstellen – Schritt‑für‑Schritt‑Anleitung](./create-excel-table-in-c-step-by-step-guide/) +Erfahren Sie, wie Sie mit Aspose.Cells für .NET in C# eine Excel‑Tabelle von Grund auf erstellen – einfach erklärt. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/german/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/german/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..3c45fa015b --- /dev/null +++ b/cells/german/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Erstelle schnell eine Excel‑Tabelle in C#. Erfahre, wie man eine Tabelle + hinzufügt, den Tabellenbereich definiert, die Tabellenüberschrift ausblendet und + den Tabellenfilter deaktiviert – mit einem vollständigen Codebeispiel. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: de +og_description: Erstelle eine Excel‑Tabelle in C# mit einem klaren Beispiel. Erfahre, + wie man eine Tabelle hinzufügt, den Tabellenbereich definiert, die Tabellenüberschrift + ausblendet und den Filter deaktiviert – alles in nur wenigen Zeilen. +og_title: Excel‑Tabelle in C# erstellen – Vollständiger Programmierleitfaden +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Excel‑Tabelle in C# erstellen – Schritt‑für‑Schritt‑Anleitung +url: /de/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel‑Tabelle in C# erstellen – Schritt‑für‑Schritt‑Anleitung + +Haben Sie jemals **Excel‑Tabelle erstellen** programmatisch mit C# benötigt? Eine Excel‑Tabelle zu erstellen kann ein Kinderspiel sein, wenn Sie die richtigen Schritte kennen. In diesem Tutorial gehen wir ein vollständiges, ausführbares Beispiel durch, das zeigt, **wie man eine Tabelle hinzufügt**, **Tabellenbereich definiert**, **Tabellenkopf ausblendet** und sogar **Tabellenfilter deaktiviert** – alles ohne Ihre IDE zu verlassen. + +Wenn Sie jemals Probleme damit hatten, dass die AutoFilter‑Benutzeroberfläche erscheint, wenn Sie sie nicht wollen, sind Sie hier genau richtig. Am Ende dieses Leitfadens haben Sie ein sofort ausführbares Snippet, das eine saubere Arbeitsmappe namens *TableNoFilter.xlsx* erzeugt, und Sie verstehen, warum jede Zeile wichtig ist. + +## Was Sie lernen werden + +- Wie man **Excel‑Tabelle erstellen** von Grund auf mit Aspose.Cells. +- Die genaue Syntax, um **Tabellenbereich zu definieren** (A1:D5 in unserem Fall). +- Wie man die Kopfzeile aktiviert, sodass die integrierte Filter‑UI erscheint. +- Der Trick, **Tabellenkopf auszublenden** und **Tabellenfilter zu deaktivieren**, wenn Sie sie nicht mehr benötigen. +- Ein komplettes, copy‑paste‑fertiges C#‑Programm, das Sie noch heute ausführen können. + +### Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.7+). +- Aspose.Cells für .NET, installiert über NuGet (`Install-Package Aspose.Cells`). +- Grundlegende Kenntnisse in C# und Visual Studio (oder einer anderen IDE Ihrer Wahl). + +--- + +## Schritt 1: Projekt einrichten und Namespaces importieren + +Bevor Sie **Excel‑Tabelle erstellen** können, benötigen Sie ein Konsolenprojekt, das Aspose.Cells referenziert. Öffnen Sie ein Terminal und führen Sie aus: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Öffnen Sie nun *Program.cs* und fügen Sie die erforderlichen `using`‑Anweisungen hinzu: + +```csharp +using System; +using Aspose.Cells; +``` + +Diese Importe geben Ihnen Zugriff auf die Klassen `Workbook`, `Worksheet`, `CellArea` und `ListObject`, die den Rest des Tutorials antreiben. + +## Schritt 2: Neues Workbook initialisieren und das erste Arbeitsblatt holen + +Ein neues Workbook zu erstellen ist der erste logische Schritt. Betrachten Sie das Workbook als Container der Excel‑Datei und das Arbeitsblatt als das einzelne Blatt, auf dem wir unsere Tabelle platzieren werden. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Warum das wichtig ist:** Ein brandneues `Workbook` startet mit einem einzigen leeren Blatt. Durch das Abrufen von `Worksheets[0]` stellen wir sicher, dass wir auf dem Standardblatt arbeiten, ohne eines manuell erstellen zu müssen. + +## Schritt 3: Tabellenbereich definieren (A1:D5) + +In der Excel‑Terminologie befindet sich eine *Tabelle* innerhalb eines rechteckigen Zellblocks. Die Struktur `CellArea` ermöglicht es uns, diesen Block zu bestimmen. Hier behandeln wir das **Definieren des Tabellenbereichs** für die Zellen A1 bis D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tipp:** Wenn Sie jemals einen dynamischen Bereich benötigen, können Sie `endRow` und `endColumn` basierend auf der Datenlänge berechnen. Die nullbasierte Indizierung ist eine häufige Ursache für Off‑by‑One‑Fehler, also überprüfen Sie Ihre Zahlen doppelt. + +## Schritt 4: Tabelle hinzufügen und Kopfzeile aktivieren + +Jetzt kommt das Herzstück des Tutorials: **wie man eine Tabelle** zum Arbeitsblatt hinzufügt. Die Sammlung `ListObjects` verwaltet Tabellen, und das Setzen von `ShowHeaders = true` fügt automatisch die AutoFilter‑UI ein. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Erklärung:** +> - `Add(tableRange, true)` erstellt ein neues `ListObject` (d.h. eine Excel‑Tabelle) innerhalb des angegebenen Bereichs. +> - Das `true`‑Flag teilt Aspose.Cells mit, dass die erste Zeile des Bereichs als Kopfzeile behandelt werden soll. +> - Das Setzen von `ShowHeaders` auf `true` macht die Kopfzeile sichtbar und löst die integrierte Filter‑UI aus. + +An diesem Punkt, wenn Sie das erzeugte Workbook öffnen, sehen Sie eine schön formatierte Tabelle mit Filterpfeilen in jeder Spaltenkopfzeile. + +## Schritt 5: Kopfzeile ausblenden und AutoFilter deaktivieren + +Manchmal möchten Sie die Daten ohne das UI‑Durcheinander. Vielleicht exportieren Sie einen sauberen Bericht, bei dem Filter nicht benötigt werden. Hier ist die Technik zum **Ausblenden des Tabellenkopfes** und **Deaktivieren des Tabellenfilters**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Warum Sie das tun:** +> - `ShowHeaders = false` entfernt die sichtbare Kopfzeile und verwandelt die Tabelle in einen einfachen Datenblock. +> - Das Setzen von `AutoFilter = null` löscht das versteckte Filterobjekt und stellt sicher, dass keine Restfilterlogik verbleibt. Das ist, was wir mit **Tabellenfilter deaktivieren** meinen. + +## Schritt 6: Workbook auf Festplatte speichern + +Abschließend schreiben wir die Datei an einen Ort Ihrer Wahl. Ersetzen Sie `"YOUR_DIRECTORY"` durch einen tatsächlichen Pfad auf Ihrem Rechner. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Wenn Sie das Programm ausführen, sollten Sie sehen: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Das Öffnen der Datei zeigt ein Blatt mit dem Datenblock (keine Kopfzeile, keine Filterpfeile). Das ist der komplette Zyklus – von **Excel‑Tabelle erstellen** bis **Tabellenfilter deaktivieren**. + +--- + +## Vollständiges funktionierendes Beispiel (Copy‑Paste‑bereit) + +Unten finden Sie das gesamte Programm, bereit zum Kompilieren. Ersetzen Sie einfach das Platzhalter‑Verzeichnis durch einen gültigen Pfad. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Erwartetes Ergebnis:** Eine Datei namens *TableNoFilter.xlsx* mit einem einfachen Datenbereich A1:D5 ohne sichtbare Kopfzeile und ohne Filter‑Dropdowns. + +--- + +## Häufig gestellte Fragen & Sonderfälle + +### Was, wenn ich mehrere Tabellen im selben Arbeitsblatt benötige? + +Wiederholen Sie einfach **Schritt 3** mit einem neuen `CellArea` und einem frischen `ListObject`. Jede Tabelle behält ihre eigenen Kopf‑ und Filtereinstellungen, sodass Sie eine ausblenden und eine andere sichtbar lassen können. + +### Kann ich die Tabelle (gestreifte Zeilen, Farben) formatieren, bevor ich die Kopfzeile ausblende? + +Absolut. Das `ListObject` stellt eine `TableStyleType`‑Eigenschaft bereit. Zum Beispiel: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Sie können den Stil **vor** dem Ausblenden der Kopfzeile anwenden; die visuelle Formatierung bleibt erhalten. + +### Was, wenn ich die Kopfzeile behalten, aber nur die Filterpfeile ausblenden möchte? + +Setzen Sie `ShowHeaders = true` (die Zeile behalten) und löschen Sie dann den Filter: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Damit wird die Anforderung **Tabellenfilter deaktivieren** erfüllt, ohne die Spaltenbeschriftungen zu verlieren. + +### Funktioniert das nur mit .xlsx‑Dateien? + +Aspose.Cells erkennt das Format automatisch anhand der Dateierweiterung, die Sie `Save` übergeben. Sie könnten auch in `.xls`, `.csv` oder sogar `.pdf` mit einer anderen Erweiterung ausgeben. + +--- + +## Fazit + +Wir haben gerade alles behandelt, was Sie benötigen, um **Excel‑Tabelle erstellen** in C# mit Aspose.Cells zu erledigen, von **Tabellenbereich definieren** bis **Tabellenkopf ausblenden** und **Tabellenfilter deaktivieren**. Der Code ist kurz, klar und bereit für den Produktionseinsatz. + +Als Nächstes könnten Sie **wie man eine Tabelle hinzufügt** mit dynamischen Daten erkunden, benutzerdefinierte Stile anwenden oder dieselbe Arbeitsmappe nach PDF exportieren. Jeder dieser Punkte baut auf dem Fundament auf, das Sie gerade gemeistert haben, also experimentieren Sie gern und passen Sie das Snippet an Ihre eigenen Projekte an. + +Haben Sie eine eigene Variante, die Sie teilen möchten? Hinterlassen Sie unten einen Kommentar und happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/converting-excel-files-to-other-formats/_index.md b/cells/greek/net/converting-excel-files-to-other-formats/_index.md index 2682537f00..ae350ced0c 100644 --- a/cells/greek/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/greek/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Μάθετε πώς να μετατρέψετε JSON σε CSV μέσω προγραμματισμού σε .NET χρησιμοποιώντας το Aspose.Cells. Ακολουθήστε τον αναλυτικό οδηγό μας για να διασφαλίσετε τον απρόσκοπτο μετασχηματισμό δεδομένων. ### [Μετατροπή αρχείου Excel σε PPTX μέσω προγραμματισμού σε .NET](./converting-excel-file-to-pptx/) Μάθετε πώς να μετατρέψετε ένα αρχείο Excel σε παρουσίαση PowerPoint (PPTX) μέσω προγραμματισμού χρησιμοποιώντας το Aspose.Cells για .NET με αυτόν τον οδηγό βήμα προς βήμα. +### [Εξαγωγή Excel σε PowerPoint – Πλήρης Οδηγός C#](./export-excel-to-powerpoint-complete-c-guide/) +Μάθετε πώς να εξάγετε φύλλα Excel σε παρουσιάσεις PowerPoint με C# και Aspose.Cells σε αναλυτικό βήμα‑βήμα οδηγό. ### [Καθορισμός HTML CrossType σε HTML εξόδου μέσω προγραμματισμού στο .NET](./specifying-html-crosstype-in-output-html/) Μάθετε πώς να καθορίζετε HTML CrossType στο Aspose.Cells για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας για να μετατρέψετε αρχεία Excel σε HTML με ακρίβεια. ### [Ανάγνωση υπολογιστικού φύλλου αριθμών μέσω προγραμματισμού σε .NET](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ περιγραφή: Μάθετε πώς να παρακολουθείτε την πρόοδο μετατροπής εγγράφων μέσω προγραμματισμού χρησιμοποιώντας το Aspose.Cells για .NET σε αυτό το λεπτομερές σεμινάριο. ### [Παρακολούθηση της προόδου μετατροπής εγγράφων για TIFF μέσω προγραμματισμού σε .NET](./tracking-document-conversion-progress-for-tiff/) Μάθετε να παρακολουθείτε την πρόοδο της μετατροπής TIFF μέσω προγραμματισμού χρησιμοποιώντας το Aspose.Cells για .NET με τον αναλυτικό οδηγό μας. Βελτιώστε τις δεξιότητές σας στη διαχείριση εγγράφων. +### [Ορισμός περιοχής εκτύπωσης στο Excel και εξαγωγή σε PowerPoint – Οδηγός βήμα προς βήμα](./set-print-area-in-excel-and-export-to-powerpoint-step-ste/) +Μάθετε πώς να ορίσετε περιοχή εκτύπωσης στο Excel και να εξάγετε το φύλλο σε παρουσίαση PowerPoint με βήμα‑βήμα οδηγίες. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/greek/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..16c8df1e70 --- /dev/null +++ b/cells/greek/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Μάθετε πώς να εξάγετε το Excel στο PowerPoint, να ορίσετε την περιοχή + εκτύπωσης στο Excel και να αποθηκεύσετε το Excel ως PPTX με επεξεργάσιμα διαγράμματα + και αντικείμενα OLE σε λίγα μόνο βήματα. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: el +og_description: Εξαγωγή Excel σε PowerPoint γρήγορα. Αυτό το σεμινάριο δείχνει πώς + να ορίσετε την περιοχή εκτύπωσης στο Excel και να αποθηκεύσετε το Excel ως PPTX + με επεξεργάσιμα διαγράμματα και αντικείμενα OLE. +og_title: Εξαγωγή Excel σε PowerPoint – Πλήρης Οδηγός C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Εξαγωγή Excel σε PowerPoint – Πλήρης Οδηγός C# +url: /el/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εξαγωγή Excel σε PowerPoint – Πλήρης Οδηγός C# + +Χρειάζεστε **export Excel to PowerPoint**; Βρίσκεστε στο σωστό μέρος. Είτε δημιουργείτε μια εβδομαδιαία παρουσίαση πωλήσεων είτε αυτοματοποιείτε μια διαδικασία αναφοράς, η μετατροπή ενός φύλλου εργασίας Excel σε μια παρουσίαση PowerPoint μπορεί να σας εξοικονομήσει ώρες εργασίας αντιγραφής‑και‑επικόλλησης. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα ένα πρακτικό παράδειγμα που όχι μόνο **export excel to powerpoint**, αλλά επίσης δείχνει πώς να **set print area Excel** και **save excel as pptx**, ώστε οι παραγόμενες διαφάνειες να διατηρούν τα γραφήματα και τα αντικείμενα OLE πλήρως επεξεργάσιμα. Στο τέλος θα έχετε ένα έτοιμο προς εκτέλεση πρόγραμμα C# που παράγει ένα επαγγελματικό αρχείο `.pptx` χωρίς καμία χειροκίνητη παρέμβαση. + +## Τι Θα Χρειαστείτε + +- **.NET 6+** (οποιοδήποτε πρόσφατο .NET runtime λειτουργεί· ο κώδικας χρησιμοποιεί σύνταξη C# 10) +- **Aspose.Cells for .NET** – η βιβλιοθήκη που τροφοδοτεί την εξαγωγή. Μπορείτε να την αποκτήσετε από το NuGet (`Install-Package Aspose.Cells`). +- Ένα βιβλίο εργασίας Excel που περιέχει τουλάχιστον ένα γράφημα και/ή ένα αντικείμενο OLE (το δείγμα αρχείου `ChartAndOle.xlsx` χρησιμοποιείται στον κώδικα). +- Ένα αγαπημένο IDE (Visual Studio, Rider ή VS Code – ό,τι προτιμάτε). + +Αυτό είναι όλο. Δεν απαιτείται COM interop, ούτε εγκατάσταση Office. + +> **Γιατί να χρησιμοποιήσουμε μια βιβλιοθήκη;** +> Το ενσωματωμένο Office Interop είναι ευαίσθητο, απαιτεί Office στον διακομιστή, και συχνά παράγει ραστερισμένες εικόνες όταν πραγματικά θέλετε σχήματα βασισμένα σε διανύσματα, επεξεργάσιμα. Το Aspose.Cells αναλαμβάνει το βαρέως φορτίου και διατηρεί όλα επεξεργάσιμα στο PowerPoint. + +--- + +## Βήμα 1: Φόρτωση του Βιβλίου Εργασίας Excel + +Αρχικά φέρνουμε το αρχείο προέλευσης στη μνήμη. Η κλάση `Workbook` αφαιρεί την αφηρημένη αναπαράσταση ολόκληρου του αρχείου Excel, δίνοντάς μας πρόσβαση σε φύλλα εργασίας, γραφήματα και αντικείμενα OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του βιβλίου εργασίας είναι η βάση. Εάν η διαδρομή είναι λανθασμένη ή το αρχείο είναι κατεστραμμένο, το υπόλοιπο της αλυσίδας δεν εκτελείται ποτέ. Το μπλοκ `try…catch` σας παρέχει ένα φιλικό σφάλμα αντί για κατάρρευση. + +--- + +## Βήμα 2: Ορισμός Περιοχής Εκτύπωσης στο Excel + +Πριν από την εξαγωγή, συνήθως θέλετε να περιορίσετε την έξοδο σε ένα συγκεκριμένο εύρος. Εδώ έρχεται σε παιχνίδι το **set print area excel**. Ορίζοντας μια περιοχή εκτύπωσης, λέτε στο Aspose.Cells ακριβώς ποιες κυψέλες (και τα συναφή αντικείμενα) πρέπει να εμφανιστούν στη διαφάνεια. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Συμβουλή:** Εάν έχετε πολλά φύλλα εργασίας, επαναλάβετε την ανάθεση `PrintArea` για κάθε ένα που σκοπεύετε να εξάγετε. Η μη ορισμένη περιοχή εκτύπωσης θα εξάγει ολόκληρο το φύλλο, κάτι που μπορεί να φουσκώσει το αρχείο PowerPoint. + +--- + +## Βήμα 3: Διαμόρφωση Επιλογών Εξαγωγής – Διατήρηση Γραφημάτων & OLE Επεξεργάσιμα + +Το Aspose.Cells προσφέρει ένα πλούσιο αντικείμενο `ImageOrPrintOptions`. Με την ενεργοποίηση των `ExportChartObjects` και `ExportOleObjects` διατηρούμε τη διανυσματική φύση των γραφημάτων και τη ζωντανή επεξεργασιμότητα των αντικειμένων OLE (όπως ενσωματωμένα έγγραφα Word ή PDF). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Τι συμβαίνει στο παρασκήνιο;** +Όταν το `ExportChartObjects` είναι `true`, το Aspose μετατρέπει το γράφημα σε ένα εγγενές σχήμα γραφήματος PowerPoint, διατηρώντας τις σειρές, τους άξονες και τη μορφοποίηση. Με ενεργοποιημένο το `ExportOleObjects`, τα ενσωματωμένα αντικείμενα εισάγονται ως πλαίσια OLE, ώστε ένα διπλό κλικ στο PowerPoint να ανοίγει την αρχική εφαρμογή (Word, Excel κ.λπ.) για επεξεργασία. + +--- + +## Βήμα 4: Αποθήκευση του Φύλλου Εργασίας ως Επεξεργάσιμο Αρχείο PowerPoint + +Τώρα ενώνουμε όλα. Η μέθοδος `Save` γράφει το αρχείο `.pptx` χρησιμοποιώντας τις επιλογές που διαμορφώσαμε. Το αποτέλεσμα είναι μια παρουσίαση όπου κάθε φύλλο εργασίας γίνεται μια διαφάνεια (ή σειρά διαφανειών εάν η περιοχή εκτύπωσης καλύπτει πολλές σελίδες). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Αναμενόμενο Αποτέλεσμα + +- **Τοποθεσία αρχείου:** `C:\MyProjects\EditableChartOle.pptx` +- **Περιεχόμενο:** + - Μια διαφάνεια που εμφανίζει το εύρος `A1:H30` ακριβώς όπως εμφανίζεται στο Excel. + - Όλα τα γραφήματα είναι αντικείμενα γραφήματος PowerPoint—κάντε κλικ σε μια μπάρα και επεξεργαστείτε τα δεδομένα. + - Τα αντικείμενα OLE (π.χ., ένα ενσωματωμένο έγγραφο Word) μπορούν να ανοιχτούν και να επεξεργαστούν απευθείας από τη διαφάνεια. + +Αν ανοίξετε το PPTX στο PowerPoint, θα δείτε μια καθαρή διαφάνεια με πλήρως επεξεργάσιμα στοιχεία—χωρίς ραστερισμένες στιγμιότυπες. + +--- + +## Περιπτώσεις Άκρων & Παραλλαγές + +### Πολλαπλά Φύλλα Εργασίας → Πολλαπλές Διαφάνειες +Εάν θέλετε κάθε φύλλο εργασίας να γίνεται η δική του διαφάνεια, απλώς κάντε βρόχο μέσω του `workbook.Worksheets` και καλέστε το `Save` με ένα `SheetToImageOptions` που στοχεύει σε συγκεκριμένο δείκτη φύλλου. Το Aspose θα δημιουργήσει αυτόματα μια νέα διαφάνεια για κάθε επανάληψη. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Μεγάλα Εύρη & Απόδοση +Η εξαγωγή μιας τεράστιας περιοχής εκτύπωσης (π.χ., `A1:Z1000`) μπορεί να αυξήσει τη χρήση μνήμης. Για να το μετριάσετε, σκεφτείτε: +- Διαχωρισμό του εύρους σε μικρότερα τμήματα και εξαγωγή τους ως ξεχωριστές διαφάνειες. +- Χρήση του `WorkbookSettings` για αύξηση του `MemorySetting` εάν αντιμετωπίσετε `OutOfMemoryException`. + +### Προβλήματα Συμβατότητας +Το παραγόμενο PPTX λειτουργεί με PowerPoint 2016 και νεότερες εκδόσεις. Παλαιότερες εκδόσεις μπορεί ακόμη να ανοίξουν το αρχείο αλλά να χάσουν κάποιες προηγμένες λειτουργίες γραφημάτων. Πάντα δοκιμάζετε στην επιθυμητή έκδοση του Office εάν διανέμετε την παρουσίαση ευρέως. + +--- + +## Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑Επικόλληση) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Συμβουλή:** Αντικαταστήστε τις σκληρά κωδικοποιημένες διαδρομές με τιμές ρυθμίσεων ή επιχειρήματα γραμμής εντολών για ένα πιο ευέλικτο εργαλείο. + +--- + +## Συχνές Ερωτήσεις + +**Q: Μπορώ να εξάγω μόνο ένα γράφημα χωρίς τα γύρω κελιά;** +A: Ναι. Χρησιμοποιήστε μόνο το `ExportChartObjects` και ορίστε την περιοχή εκτύπωσης στο περιβάλλον του γραφήματος. Το γράφημα θα εμφανιστεί κεντραρισμένο στη διαφάνεια. + +**Q: Τι γίνεται αν το βιβλίο εργασίας μου περιέχει μακροεντολές;** +A: Το Aspose.Cells αγνοεί τις μακροεντολές VBA κατά την εξαγωγή. Εάν χρειάζεστε λειτουργικότητα μακροεντολών στο PowerPoint, θα πρέπει να την αναδημιουργήσετε χρησιμοποιώντας PowerPoint VBA ή πρόσθετα. + +**Q: Λειτουργεί αυτό σε Linux/macOS;** +A: Απόλυτα. Το Aspose.Cells είναι μια καθαρή βιβλιοθήκη .NET· εφόσον έχετε το .NET runtime, ο κώδικας εκτελείται δια‑πλατφόρμα. + +--- + +## Συμπέρασμα + +Μόλις μάθατε πώς να **export Excel to PowerPoint** ενώ ορίζετε ακριβώς **set print area excel** και **save excel as pptx** με πλήρως επεξεργάσιμα γραφήματα και αντικείμενα OLE. Τα βασικά βήματα είναι η φόρτωση του βιβλίου εργασίας, ο ορισμός της περιοχής εκτύπωσης, η διαμόρφωση του `ImageOrPrintOptions` και τέλος η αποθήκευση του PPTX. + +Από εδώ μπορείτε να εξερευνήσετε: +- Εξαγωγή πολλαπλών φύλλων εργασίας σε μία παρουσίαση. +- Προσθήκη προσαρμοσμένων τίτλων διαφανειών ή σημειώσεων προγραμματιστικά. +- Μετατροπή του PPTX σε PDF για διανομή (χρησιμοποιήστε `SaveFormat.Pdf`). + +Δοκιμάστε τον κώδικα, προσαρμόστε την περιοχή εκτύπωσης και παρακολουθήστε τα δεδομένα Excel να εμφανίζονται μαγικά στο PowerPoint—χωρίς χειροκίνητη αντιγραφή‑επικόλληση. Εάν αντιμετωπίσετε προβλήματα, ελέγξτε την τεκμηρίωση του Aspose.Cells ή αφήστε ένα σχόλιο παρακάτω. Καλή προγραμματιστική! + +![Διάγραμμα που δείχνει τη ροή εξαγωγής excel σε powerpoint](/images/export-excel-to-powerpoint.png "ροή εξαγωγής excel σε powerpoint") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/greek/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..0e8e94e353 --- /dev/null +++ b/cells/greek/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Ορίστε την περιοχή εκτύπωσης στο Excel και μετατρέψτε το Excel σε PowerPoint + με επεξεργάσιμα σχήματα. Μάθετε πώς να επαναλαμβάνετε τη γραμμή τίτλου, να δημιουργείτε + PowerPoint από το Excel και να εξάγετε το Excel σε αρχείο pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: el +og_description: Ορίστε την περιοχή εκτύπωσης στο Excel και μετατρέψτε την σε διαφάνεια + PowerPoint με επεξεργάσιμα σχήματα. Ακολουθήστε αυτόν τον πλήρη οδηγό για την επανάληψη + της γραμμής τίτλου και την εξαγωγή του Excel σε pptx. +og_title: Ορισμός περιοχής εκτύπωσης στο Excel – Εκμάθηση εξαγωγής σε PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Ορισμός περιοχής εκτύπωσης στο Excel και εξαγωγή στο PowerPoint – Οδηγός βήμα‑προς‑βήμα +url: /el/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ορισμός Περιοχής Εκτύπωσης στο Excel και Εξαγωγή σε PowerPoint – Πλήρη Προγραμματιστική Εκπαίδευση + +Κάποτε χρειάστηκε να **ορίσετε περιοχή εκτύπωσης** σε ένα φύλλο εργασίας του Excel και μετά να μετατρέψετε αυτό το τμήμα σε διαφάνεια PowerPoint; Δεν είστε οι μόνοι. Σε πολλές αλυσίδες αναφορών τα ίδια δεδομένα που εκτυπώνονται ωραία πρέπει επίσης να εμφανίζονται σε παρουσίαση, συχνά με την πρώτη σειρά να επαναλαμβάνεται ως τίτλος. Τα καλά νέα; Με λίγες γραμμές C# μπορείτε να **μετατρέψετε excel σε powerpoint**, να διατηρήσετε όλα τα πλαίσια κειμένου επεξεργάσιμα και ακόμη να **επαναλάβετε τη σειρά τίτλου** αυτόματα. + +Σε αυτόν τον οδηγό θα περάσουμε από όλα όσα χρειάζεται να ξέρετε: από τη ρύθμιση της περιοχής εκτύπωσης μέχρι τη δημιουργία ενός αρχείου PPTX που μπορείτε να επεξεργαστείτε απευθείας στο PowerPoint. Στο τέλος θα μπορείτε να **δημιουργήσετε powerpoint από excel**, να εξάγετε το αποτέλεσμα ως **export excel to pptx**, και να επαναχρησιμοποιήσετε τον ίδιο κώδικα σε οποιοδήποτε έργο .NET. Χωρίς μαγεία, μόνο σαφή βήματα και ένα πλήρες, εκτελέσιμο παράδειγμα. + +## Τι Θα Χρειαστείτε + +Πριν βουτήξουμε, βεβαιωθείτε ότι έχετε: + +- **.NET 6.0** ή νεότερο (το API λειτουργεί και με .NET Framework) +- **Aspose.Cells for .NET** (η βιβλιοθήκη που παρέχει `Workbook`, `ImageOrPrintOptions`, κ.λπ.) +- Ένα βασικό IDE C# (Visual Studio, Rider ή VS Code με την επέκταση C#) +- Ένα αρχείο Excel (`input.xlsx`) που περιέχει τα δεδομένα που θέλετε να εξάγετε + +Αυτό είναι όλο—δεν χρειάζονται επιπλέον πακέτα NuGet εκτός από το Aspose.Cells. Αν δεν έχετε προσθέσει ακόμη τη βιβλιοθήκη, τρέξτε: + +```bash +dotnet add package Aspose.Cells +``` + +Τώρα είμαστε έτοιμοι να ξεκινήσουμε. + +## Βήμα 1: Φόρτωση του Workbook – Το Σημείο Εκκίνησης για την Εξαγωγή + +Το πρώτο που πρέπει να κάνετε είναι να φορτώσετε το workbook που περιέχει το φύλλο που θέλετε να μετατρέψετε σε διαφάνεια. Σκεφτείτε το workbook ως το πηγαίο έγγραφο· χωρίς αυτό, τίποτα δεν έχει νόημα. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του workbook σας δίνει πρόσβαση στη συλλογή των worksheets, στις επιλογές σελίδας και στη μηχανή εξαγωγής. Αν παραλείψετε αυτό το βήμα, δεν θα μπορείτε να ορίσετε την **περιοχή εκτύπωσης** ή να επαναλάβετε σειρές. + +> **Pro tip:** Χρησιμοποιήστε απόλυτη διαδρομή κατά τη δοκιμή, μετά αλλάξτε σε σχετική ή σε διαδρομή βασισμένη σε ρυθμίσεις για παραγωγή. + +## Βήμα 2: Ρύθμιση Επιλογών Εξαγωγής – Διατήρηση Επεξεργάσιμων Πλαισίων Κειμένου και Σχημάτων + +Όταν εξάγετε σε PowerPoint πιθανότατα θέλετε η διαφάνεια που προκύπτει να είναι επεξεργάσιμη. Το Aspose.Cells σας επιτρέπει να ελέγξετε αυτό με το `ImageOrPrintOptions`. Ορίζοντας `ExportTextBoxes` και `ExportShapeObjects` σε `true` λέτε στη βιβλιοθήκη να διατηρήσει αυτά τα αντικείμενα ως εγγενή στοιχεία PowerPoint αντί να τα μετατρέψει σε εικόνα. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Γιατί είναι σημαντικό:** Αν ποτέ χρειαστεί να **μετατρέψετε excel σε powerpoint** και μετά να ρυθμίσετε τη διαφάνεια χειροκίνητα, αυτή η ρύθμιση σας σώζει από το να δημιουργήσετε ξανά τα πλαίσια κειμένου από την αρχή. Επίσης εξασφαλίζει ότι τυχόν σχήματα (όπως βέλη ή γραφήματα) παραμένουν ως διανυσματικά αντικείμενα που μπορείτε να αλλάξετε το μέγεθός τους. + +## Βήμα 3: Ορισμός Περιοχής Εκτύπωσης και Επανάληψη της Σειράς Τίτλου + +Τώρα φτάνουμε στην καρδιά του tutorial: **ορίστε περιοχή εκτύπωσης** και κάντε την πρώτη σειρά να επαναλαμβάνεται σε κάθε σελίδα εκτύπωσης (ή, στην περίπτωσή μας, σε κάθε εξαγόμενη διαφάνεια). Η περιοχή εκτύπωσης λέει στο Excel ποιες κελιά να θεωρήσει για εκτύπωση—ή εξαγωγή στο σενάριό μας. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Γιατί είναι σημαντικό:** Περιορίζοντας την εξαγωγή στο `A1:G20` αποφεύγετε την εισαγωγή τεράστιων κενών περιοχών, κάτι που επιταχύνει τη μετατροπή και διατηρεί τη διαφάνεια καθαρή. Η γραμμή `PrintTitleRows` κάνει την πρώτη σειρά να λειτουργεί ως κεφαλίδα—ακριβώς αυτό που θέλετε όταν **επαναλάβετε τη σειρά τίτλου** σε μια παρουσίαση. + +> **Edge case:** Αν τα δεδομένα σας ξεκινούν στη σειρά 2, προσαρμόστε την περιοχή ανάλογα (π.χ., `PrintTitleRows = "$2:$2"`). + +## Βήμα 4: Αποθήκευση του Worksheet ως Αρχείο PowerPoint + +Τέλος, γράφουμε τη διαφάνεια στο δίσκο. Η μέθοδος `Save` δέχεται το όνομα αρχείου προορισμού και τις επιλογές που διαμορφώσαμε νωρίτερα. Το αποτέλεσμα είναι ένα αρχείο PPTX με επεξεργάσιμα πλαίσια κειμένου και σχήματα, έτοιμο να ανοιχθεί στο PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Τι θα δείτε:** Ανοίξτε το `SheetWithEditableShapes.pptx` στο PowerPoint. Η πρώτη σειρά εμφανίζεται ως τίτλος, όλα τα κελιά από `A1:G20` αποδίδονται, και τυχόν σχήματα που προσθέσατε στο Excel παραμένουν μετακινήσιμα και επεξεργάσιμα. Χωρίς ραστεροποιημένες εικόνες—μόνο εγγενή αντικείμενα PowerPoint. + +## Πλήρες Παράδειγμα Εργασίας – Όλα τα Βήματα Συνδυασμένα + +Παρακάτω είναι το πλήρες, έτοιμο για αντιγραφή‑επικόλληση πρόγραμμα. Εκτελέστε το ως εφαρμογή κονσόλας ή ενσωματώστε το σε οποιαδήποτε μεγαλύτερη λύση. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** Μετά την εκτέλεση του προγράμματος, η κονσόλα εκτυπώνει το μήνυμα επιτυχίας και το αρχείο PPTX εμφανίζεται στην καθορισμένη θέση. Ανοίγοντας το αρχείο θα δείτε μια μοναδική διαφάνεια με την επιλεγμένη περιοχή, επεξεργάσιμα πλαίσια κειμένου και τυχόν αρχικά σχήματα. + +## Συχνές Ερωτήσεις & Παγίδες + +| Ερώτηση | Απάντηση | +|----------|--------| +| **Λειτουργεί αυτό με πολλαπλά worksheets;** | Ναι. Κάντε βρόχο στο `workbook.Worksheets` και επαναλάβετε τα ίδια βήματα για κάθε φύλλο, αλλάζοντας το όνομα αρχείου εξόδου κάθε φορά. | +| **Τι γίνεται αν χρειαστεί να εξάγω περισσότερες από μία διαφάνειες;** | Καλέστε `workbook.Save` πολλές φορές με διαφορετικά αντικείμενα `ImageOrPrintOptions`, το καθένα διαμορφωμένο με διαφορετικό `PageSetup` αν χρειάζεται. | +| **Μπορώ να αλλάξω το μέγεθος της διαφάνειας;** | Χρησιμοποιήστε `exportOptions.ImageFormat` για να ορίσετε DPI, ή προσαρμόστε το `sheet.PageSetup.PaperSize` πριν την αποθήκευση. | +| **Το Aspose.Cells είναι δωρεάν;** | Προσφέρει δωρεάν αξιολόγηση με υδατογραφήματα. Για παραγωγική χρήση απαιτείται άδεια. | +| **Τι γίνεται με τους τύπους του Excel;** | Οι εξαγόμενες τιμές είναι τα **υπολογισμένα αποτελέσματα** τη στιγμή της εξαγωγής. Αν χρειάζεστε ζωντανούς τύπους στο PowerPoint, θα χρειαστεί διαφορετική προσέγγιση. | + +## Συμβουλές για Απρόσκοπτη Ροή Εργασίας + +- **Pro tip:** Ορίστε `Workbook.Settings.CalcMode = CalculationModeType.Automatic` πριν την εξαγωγή για να διασφαλίσετε ότι όλοι οι τύποι είναι ενημερωμένοι. +- **Προσοχή:** Πολύ μεγάλες περιοχές μπορούν να προκαλέσουν πίεση μνήμης. Περιορίστε την περιοχή εκτύπωσης στην ελάχιστη απαραίτητη. +- **Συμβουλή απόδοσης:** Επαναχρησιμοποιήστε ένα μόνο αντικείμενο `ImageOrPrintOptions` αν εξάγετε πολλά φύλλα· η δημιουργία νέου αντικειμένου κάθε φορά προσθέτει κόστος. +- **Σημείωση έκδοσης:** Ο παραπάνω κώδικας στοχεύει στο Aspose.Cells 23.10 (κυκλοφόρησε τον Νοέμβριο 2023). Μελλοντικές εκδόσεις διατηρούν το ίδιο API, αλλά ελέγξτε πάντα τις σημειώσεις έκδοσης για πιθανές αλλαγές. + +## Συμπέρασμα + +Καλύψαμε πώς να **ορίσετε περιοχή εκτύπωσης** σε ένα φύλλο εργασίας Excel, να επαναλάβετε την πρώτη σειρά ως τίτλο, και στη συνέχεια να **εξάγετε excel σε pptx** διατηρώντας επεξεργάσιμα πλαίσια κειμένου και σχήματα. Συνοπτικά, τώρα γνωρίζετε έναν αξιόπιστο τρόπο να **μετατρέψετε excel σε powerpoint**, να **επαναλάβετε τη σειρά τίτλου**, και να **δημιουργήσετε powerpoint από excel** με λίγες μόνο γραμμές C#. + +Έτοιμοι για το επόμενο βήμα; Δοκιμάστε την αυτοματοποίηση μαζικής μετατροπής δεκάδων αναφορών, ή προσθέστε προσαρμοσμένες διατάξεις διαφάνειας χρησιμοποιώντας το PowerPoint SDK μετά την εξαγωγή. Οι δυνατότητες είναι απεριόριστες—πειραματιστείτε, σπάστε πράγματα, και απολαύστε τη δύναμη της προγραμματιστικής δημιουργίας εγγράφων. + +Αν βρήκατε αυτό το tutorial χρήσιμο, μοιραστείτε το, αφήστε ένα σχόλιο με τις δικές σας προσαρμογές, ή εξερευνήστε τις άλλες οδηγίες μας για **export excel to pptx** και συναφή θέματα αυτοματοποίησης. Καλή προγραμματιστική! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/csv-file-handling/_index.md b/cells/greek/net/csv-file-handling/_index.md index 3b43a332d9..410624419c 100644 --- a/cells/greek/net/csv-file-handling/_index.md +++ b/cells/greek/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Μάθετε πώς να ανοίγετε αρχεία CSV χρησιμοποιώντας το Aspose.Cells για .NET με τον ολοκληρωμένο, βήμα προς βήμα οδηγό μας. Χειρισμός κύριων δεδομένων. ### [Άνοιγμα αρχείων CSV με τον προτιμώμενο αναλυτή](./csv-file-opening-csv-files-with-preferred-parser/) Μάθετε πώς να ανοίγετε και να αναλύετε αρχεία CSV με προσαρμοσμένους αναλυτές στο Aspose.Cells για .NET. Χειριστείτε κείμενο και ημερομηνίες χωρίς κόπο. Ιδανικό για προγραμματιστές. +### [Αποθήκευση βιβλίου εργασίας ως CSV σε C# – Εξαγωγή Excel σε CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Μάθετε πώς να αποθηκεύετε ένα βιβλίο εργασίας ως αρχείο CSV χρησιμοποιώντας C# και το Aspose.Cells για .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/greek/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..2c11e504e4 --- /dev/null +++ b/cells/greek/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Αποθήκευση βιβλίου εργασίας ως CSV σε C# γρήγορα. Μάθετε πώς να εξάγετε + το Excel σε CSV, να ορίσετε την ακρίβεια και να μετατρέψετε xlsx σε CSV με το Aspose.Cells + σε λίγες μόνο γραμμές. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: el +og_description: Αποθηκεύστε το βιβλίο εργασίας ως CSV σε C# γρήγορα. Αυτός ο οδηγός + δείχνει πώς να εξάγετε το Excel σε CSV, να ορίσετε την ακρίβεια και να μετατρέψετε + xlsx σε CSV χρησιμοποιώντας το Aspose.Cells. +og_title: Αποθήκευση βιβλίου εργασίας ως CSV σε C# – Εξαγωγή Excel σε CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Αποθήκευση βιβλίου εργασίας ως CSV σε C# – Εξαγωγή Excel σε CSV +url: /el/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση βιβλίου εργασίας ως CSV σε C# – Εξαγωγή Excel σε CSV + +Έχετε ποτέ χρειαστεί να **save workbook as CSV** αλλά δεν ήσασταν σίγουροι πώς να διατηρήσετε τους αριθμούς τακτικούς; Δεν είστε μόνοι. Σε πολλές περιπτώσεις data‑pipeline πρέπει να **export Excel to CSV** διατηρώντας έναν συγκεκριμένο αριθμό σημαντικών ψηφίων, και η βιβλιοθήκη Aspose.Cells το κάνει παιχνιδάκι. + +Σε αυτό το tutorial θα δείτε ένα πλήρες, έτοιμο‑για‑εκτέλεση παράδειγμα που **saves a workbook as CSV**, δείχνει *how to set precision* και εξηγεί ακόμη *how to convert xlsx to CSV* για πραγματικά έργα. Χωρίς ασαφείς αναφορές—μόνο κώδικας που μπορείτε να αντιγράψετε, επικολλήσετε και εκτελέσετε σήμερα. + +## Τι θα μάθετε + +- Τα ακριβή βήματα για **save workbook as CSV** με προσαρμοσμένη ρύθμιση ακρίβειας. +- Πώς να **export Excel to CSV** χρησιμοποιώντας `CsvSaveOptions` και γιατί η ιδιότητα `SignificantDigits` είναι σημαντική. +- Παραλλαγές για διαφορετικές ανάγκες ακρίβειας και κοινά προβλήματα όταν εργάζεστε με μεγάλα νούμερα. +- Μια γρήγορη ματιά στη μετατροπή ενός αρχείου `.xlsx` σε `.csv` χωρίς απώλεια ακεραιότητας δεδομένων. + +### Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.6+). +- Το πακέτο NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Βασική κατανόηση του C# και του file I/O. + +Αν τα έχετε, ας βουτήξουμε. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Αποθήκευση βιβλίου εργασίας ως CSV – Οδηγός βήμα‑βήμα + +Παρακάτω είναι το πλήρες πρόγραμμα. Κάθε γραμμή είναι σχολιασμένη ώστε να βλέπετε *γιατί* υπάρχει κάθε τμήμα, όχι μόνο *τι* κάνει. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Γιατί να χρησιμοποιήσετε `CsvSaveOptions.SignificantDigits`? + +Όταν **how to set precision** για εξαγωγή CSV, στην πραγματικότητα αποφασίζετε πόσα ψηφία ενός αριθμού κινητής υποδιαστολής θα διατηρηθούν μετά τη μετατροπή. Το Excel αποθηκεύει αριθμούς με ακρίβεια έως 15 ψηφία, αλλά τα περισσότερα downstream συστήματα (βάσεις δεδομένων, pipelines analytics) χρειάζονται μόνο λίγα. Ορίζοντας `SignificantDigits = 4`, η βιβλιοθήκη στρογγυλοποιεί το `123.456789` σε `123.5`, διατηρώντας το αρχείο συμπαγές και ευανάγνωστο. + +> **Pro tip:** Αν χρειάζεστε *ακριβείς* τιμές (π.χ., για οικονομικά δεδομένα), ορίστε `SignificantDigits` σε υψηλότερο αριθμό ή παραλείψτε το εντελώς. Η προεπιλογή είναι 15, που αντικατοπτρίζει την εσωτερική ακρίβεια του Excel. + +## Export Excel to CSV – Συνηθισμένες Παραλλαγές + +### Αλλαγή του διαχωριστικού + +Ορισμένα συστήματα αναμένουν άνω τελεία (`;`) αντί για κόμμα. Μπορείτε να το προσαρμόσετε ως εξής: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Εξαγωγή συγκεκριμένου φύλλου εργασίας + +Αν θέλετε να εξάγετε μόνο το δεύτερο φύλλο, αντικαταστήστε το προαιρετικό μπλοκ με: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Στη συνέχεια καλέστε `workbook.Save` όπως πριν. Αυτή η τεχνική είναι χρήσιμη όταν **convert xlsx to csv** αλλά σας ενδιαφέρει μόνο μια συγκεκριμένη καρτέλα. + +### Διαχείριση μεγάλων συνόλων δεδομένων + +Όταν διαχειρίζεστε εκατομμύρια γραμμές, σκεφτείτε τη ροή του CSV αντί να φορτώνετε ολόκληρο το βιβλίο εργασίας στη μνήμη. Η Aspose.Cells προσφέρει την ιδιότητα `CsvSaveOptions` `ExportDataOnly` που παραλείπει τις πληροφορίες στυλ, μειώνοντας το φορτίο μνήμης: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Πώς να εξάγετε CSV – Επαλήθευση του αποτελέσματος + +Μετά την εκτέλεση του προγράμματος, ανοίξτε το `Numbers_4sd.csv` σε έναν επεξεργαστή απλού κειμένου. Θα πρέπει να δείτε κάτι όπως: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Παρατηρήστε πώς οι αριθμοί περιορίζονται σε τέσσερα σημαντικά ψηφία, ακριβώς όπως ζητήσαμε. Αν ανοίξετε το αρχείο στο Excel, οι τιμές θα εμφανιστούν ταυτόσες επειδή το Excel σέβεται το στρογγυλοποίηση που εφαρμόστηκε κατά την εξαγωγή. + +## Περιπτώσεις Άκρων & Επίλυση Προβλημάτων + +| Κατάσταση | Τι να ελέγξετε | Διόρθωση | +|-----------|---------------|----------| +| **Αρχείο δεν βρέθηκε** | Επαληθεύστε ότι το `sourcePath` δείχνει σε ένα πραγματικό αρχείο `.xlsx`. | Χρησιμοποιήστε `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Λανθασμένη στρογγυλοποίηση** | Βεβαιωθείτε ότι το `SignificantDigits` έχει οριστεί πριν καλέσετε το `Save`. | Μετακινήστε την ανάθεση του `CsvSaveOptions` νωρίτερα ή ελέγξτε ξανά την τιμή. | +| **Ειδικοί χαρακτήρες εμφανίζονται ως �** | Η κωδικοποίηση CSV προεπιλέγεται ως UTF‑8 χωρίς BOM. | Ορίστε `csvOptions.Encoding = System.Text.Encoding.UTF8` ή `Encoding.Unicode`. | +| **Επιπλέον κενές στήλες** | Ορισμένα φύλλα εργασίας έχουν περιττή μορφοποίηση πέρα από την χρησιμοποιούμενη περιοχή. | Καλέστε `worksheet.Cells.MaxDisplayRange` για να περικόψετε τις αχρησιμοποίητες στήλες πριν την εξαγωγή. | + +## Πώς να ορίσετε την ακρίβεια δυναμικά + +Μερικές φορές η απαιτούμενη ακρίβεια δεν είναι γνωστή κατά τη μεταγλώττιση. Μπορείτε να την διαβάσετε από αρχείο ρυθμίσεων ή από όρισμα γραμμής εντολών: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Τώρα μπορείτε να εκτελέσετε: + +``` +dotnet run -- 6 +``` + +και να λάβετε ένα CSV με έξι σημαντικά ψηφία. Αυτή η μικρή τροποποίηση κάνει τη λύση ευέλικτη για **how to export csv** σε διαφορετικά περιβάλλοντα. + +## Συνοπτικό Παράδειγμα Πλήρους Λειτουργίας + +Συνδυάζοντας όλα, το πλήρες πρόγραμμα (συμπεριλαμβανομένων των προαιρετικών ρυθμίσεων) φαίνεται ως εξής: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Εκτελέστε το πρόγραμμα, ανοίξτε το παραγόμενο CSV, και θα δείτε την ακρίβεια που ζητήσατε, επιβεβαιώνοντας ότι έχετε αποθηκεύσει επιτυχώς **saved workbook as CSV**. + +## Συμπέρασμα + +Τώρα έχετε μια σταθερή, έτοιμη για παραγωγή συνταγή για **saving a workbook as CSV** σε C#. Ο οδηγός κάλυψε *how to export Excel to CSV*, έδειξε *how to set precision* μέσω `CsvSaveOptions.SignificantDigits`, και παρουσίασε διάφορες παραλλαγές για σενάρια **convert xlsx to csv**. Με το πλήρες απόσπασμα κώδικα, μπορείτε να το ενσωματώσετε σε οποιοδήποτε έργο .NET και να αρχίσετε άμεσα την εξαγωγή δεδομένων. + +**What’s next?** + +- Δοκιμάστε διαφορετικούς διαχωριστές (`;`, `\t`) για εξαγωγές TSV. +- Συνδυάστε αυτή την προσέγγιση με έναν file‑watcher για να αυτοματοποιήσετε τη δημιουργία CSV όποτε ένα αρχείο Excel αλλάζει. +- Εξερευνήστε το `CsvLoadOptions` της Aspose.Cells αν χρειαστεί ποτέ να διαβάσετε CSV πίσω σε ένα βιβλίο εργασίας. + +Νιώστε ελεύθεροι να προσαρμόσετε την ακρίβεια, να προσθέσετε προσαρμοσμένες κεφαλίδες ή να συνδέσετε τον εξαγωγέα + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/document-properties/_index.md b/cells/greek/net/document-properties/_index.md index b3ac6256f7..6f6ab95dbb 100644 --- a/cells/greek/net/document-properties/_index.md +++ b/cells/greek/net/document-properties/_index.md @@ -35,6 +35,8 @@ Μάθετε πώς να αποκτάτε πρόσβαση στις ιδιότητες εγγράφων στο Excel χρησιμοποιώντας το Aspose.Cells για .NET με τον αναλυτικό μας οδηγό. Διαχειριστείτε τα υπολογιστικά σας φύλλα αποτελεσματικά. ### [Προσθήκη ιδιοτήτων εγγράφου στο .NET](./adding-document-properties/) Μάθετε πώς να προσθέτετε ιδιότητες εγγράφου στο Excel χρησιμοποιώντας το Aspose.Cells για .NET με αυτόν τον λεπτομερή οδηγό βήμα προς βήμα. +### [Δημιουργία βιβλίου εργασίας Excel – Προσθήκη προσαρμοσμένων ιδιοτήτων και αποθήκευση ως XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Μάθετε πώς να δημιουργήσετε ένα βιβλίο εργασίας Excel, να προσθέσετε προσαρμοσμένες ιδιότητες και να το αποθηκεύσετε σε μορφή XLSB. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/greek/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..4ce1da264b --- /dev/null +++ b/cells/greek/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-03-22 +description: Δημιουργήστε βιβλίο εργασίας Excel, προσθέστε προσαρμοσμένες ιδιότητες, + ορίστε το όνομα του φύλλου εργασίας και αποθηκεύστε το ως δυαδικό αρχείο XLSB χρησιμοποιώντας + C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: el +og_description: Δημιουργήστε βιβλίο εργασίας Excel, προσθέστε προσαρμοσμένες ιδιότητες, + ορίστε το όνομα του φύλλου εργασίας και αποθηκεύστε το ως δυαδικό αρχείο XLSB χρησιμοποιώντας + C#. +og_title: Δημιουργία βιβλίου εργασίας Excel – Προσθήκη προσαρμοσμένων ιδιοτήτων και + αποθήκευση ως XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Δημιουργία βιβλίου εργασίας Excel – Προσθήκη προσαρμοσμένων ιδιοτήτων και αποθήκευση + ως XLSB +url: /el/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία βιβλίου εργασίας Excel – Προσθήκη προσαρμοσμένων ιδιοτήτων και αποθήκευση ως XLSB + +Έχετε ποτέ χρειαστεί να **δημιουργήσετε βιβλίο εργασίας Excel** προγραμματιστικά αλλά και να διατηρήσετε κάποια μεταδεδομένα συνημμένα; Ίσως να χτίζετε μια μηχανή αναφορών που επισημαίνει κάθε αρχείο με ένα αναγνωριστικό αναφοράς, όνομα συγγραφέα ή αριθμό έκδοσης. Σε αυτήν την περίπτωση, η εκμάθηση του πώς να **προσθέσετε προσαρμοσμένες ιδιότητες** ενώ **ορίζετε το όνομα του φύλλου εργασίας** και τελικά **αποθηκεύετε ως XLSB** θα σας εξοικονομήσει πολύ χειροκίνητη επεξεργασία. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από ένα πλήρες, εκτελέσιμο παράδειγμα που δείχνει ακριβώς πώς να **γράψετε δυαδικό αρχείο Excel** χρησιμοποιώντας C#. Θα δείτε γιατί η μορφή XLSB είναι η σωστή επιλογή για τη μεταφορά προσαρμοσμένων ιδιοτήτων, πώς να αποφύγετε τα πιο κοινά λάθη, και τι να κάνετε αν χρειαστεί να υποστηρίξετε παλαιότερες εκδόσεις του Excel. + +--- + +## Τι θα χρειαστείτε + +- **.NET 6+** (ή .NET Framework 4.6+). Ο κώδικας λειτουργεί σε οποιοδήποτε πρόσφατο runtime. +- **Aspose.Cells for .NET** (δωρεάν δοκιμή ή με άδεια). Παρέχει τις κλάσεις `Workbook`, `Worksheet` και `CustomProperties` που χρησιμοποιούνται παρακάτω. +- Ένα IDE που προτιμάτε – Visual Studio, Rider ή ακόμη και VS Code αρκεί. +- Πρόσβαση εγγραφής σε φάκελο όπου θα αποθηκευτεί το παραγόμενο αρχείο. + +Δεν απαιτούνται άλλες βιβλιοθήκες τρίτων. + +--- + +## Βήμα 1: Εγκατάσταση Aspose.Cells + +Για να ξεκινήσετε, προσθέστε το πακέτο NuGet Aspose.Cells στο έργο σας: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** Αν εργάζεστε σε διακομιστή CI, αποθηκεύστε το κλειδί άδειας σε μια μεταβλητή περιβάλλοντος και φορτώστε το κατά την εκτέλεση – αυτό αποτρέπει το υδατογράφημα “evaluation” να εμφανιστεί στο αποτέλεσμα. + +--- + +## Βήμα 2: Δημιουργία βιβλίου εργασίας Excel – Επισκόπηση + +Η πρώτη πραγματική ενέργεια είναι να **δημιουργήσετε βιβλίο εργασίας Excel**. Αυτό το αντικείμενο αντιπροσωπεύει ολόκληρο το αρχείο στη μνήμη και σας δίνει πρόσβαση σε φύλλα, στυλ και προσαρμοσμένες ιδιότητες. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Γιατί να δημιουργήσετε ένα νέο `Workbook` αντί να φορτώσετε ένα πρότυπο; Ένα κενό βιβλίο εργασίας εγγυάται ότι δεν υπάρχουν κρυφά στυλ ή υπόλοιπες προσαρμοσμένες ιδιότητες, κάτι που είναι ιδιαίτερα σημαντικό όταν σκοπεύετε να **γράψετε δυαδικό αρχείο excel** για συστήματα downstream που αναμένουν καθαρό περιβάλλον. + +--- + +## Βήμα 3: Ορισμός ονόματος φύλλου εργασίας (και γιατί έχει σημασία) + +Τα φύλλα του Excel προεπιλογή είναι “Sheet1”, “Sheet2”, κ.λπ. Η ανάθεση σε ένα φύλλο ενός περιγραφικού ονόματος κάνει την επεξεργασία downstream—όπως Power Query ή μακροεντολές VBA—πολύ πιο ευανάγνωστη. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Αν προσπαθήσετε να ορίσετε ένα διπλό όνομα, το Aspose.Cells θα ρίξει ένα `ArgumentException`. Για να είστε ασφαλείς, μπορείτε να ελέγξετε `Worksheets.Exists("Data")` πριν το μετονομάσετε. + +--- + +## Βήμα 4: Προσθήκη προσαρμοσμένων ιδιοτήτων + +Οι προσαρμοσμένες ιδιότητες αποθηκεύονται στο εσωτερικό XML του βιβλίου εργασίας και ταξιδεύουν με το αρχείο ανεξάρτητα από τη μορφή. Είναι ιδανικές για την ενσωμάτωση στοιχείων όπως `ReportId` ή `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Γιατί να χρησιμοποιήσετε προσαρμοσμένες ιδιότητες;** +> • Είναι προσβάσιμες μέσω του πίνακα “File → Info → Properties” του Excel. +> • Ο κώδικας που καταναλώνει το βιβλίο εργασίας μπορεί να τις διαβάσει χωρίς να σαρώσει το περιεχόμενο των κελιών. +> • Επιβιώνουν τις μετατροπές μορφής (XLSX ↔ XLSB) επειδή αποτελούν μέρος των μεταδεδομένων του αρχείου. + +Μπορείτε επίσης να αποθηκεύσετε ημερομηνίες, boolean ή ακόμη και δυαδικά blob, αλλά κρατήστε το φορτίο μικρό—το Excel δεν είναι βάση δεδομένων. + +--- + +## Βήμα 5: Αποθήκευση ως XLSB (Γραφή δυαδικού αρχείου Excel) + +Η μορφή XLSB αποθηκεύει τα δεδομένα σε δυαδική δομή, κάτι που κάνει το αρχείο μικρότερο και πιο γρήγορο στο άνοιγμα. Πιο σημαντικό για αυτό το tutorial, **οι προσαρμοσμένες ιδιότητες ενσωματώνονται στο δυαδικό ρεύμα**, εξασφαλίζοντας ότι ταξιδεύουν μαζί με το αρχείο. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Αναμενόμενο αποτέλεσμα + +Μετά την εκτέλεση του προγράμματος, θα βρείτε το `WithCustomProps.xlsb` στην επιφάνεια εργασίας σας. Ανοίξτε το στο Excel, μεταβείτε σε **File → Info → Properties**, και θα δείτε τα `ReportId` και `GeneratedBy` να εμφανίζονται κάτω από *Custom*. + +--- + +## Βήμα 6: Ακραίες περιπτώσεις & Συχνές ερωτήσεις + +### Τι γίνεται αν ο φάκελος προορισμού είναι μόνο για ανάγνωση; + +Τυλίξτε την κλήση `Save` σε ένα `try/catch` block και επιστρέψτε σε μια τοποθεσία εγγραφής από τον χρήστη, όπως `%TEMP%`. Αυτό αποτρέπει την κατάρρευση της εφαρμογής λόγω σφαλμάτων δικαιωμάτων. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Μπορώ να **αποθηκεύσω ως XLSX** και να διατηρήσω τις προσαρμοσμένες ιδιότητες; + +Ναι—απλώς αλλάξτε το `SaveFormat.Xlsb` σε `SaveFormat.Xlsx`. Οι ιδιότητες αποθηκεύονται στο ίδιο τμήμα XML, οπότε επιβιώνουν την αλλαγή μορφής. Ωστόσο, τα αρχεία XLSX είναι μεγαλύτερα επειδή είναι συμπιεσμένο XML, ενώ το XLSB προσφέρει καλύτερη απόδοση για μεγάλα σύνολα δεδομένων. + +### Πώς μπορώ να διαβάσω τις προσαρμοσμένες ιδιότητες αργότερα; + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Αυτό το απόσπασμα κώδικα εκτυπώνει κάθε προσαρμοσμένη ιδιότητα, κάνοντας εύκολο για τις υπηρεσίες downstream να επαληθεύσουν την προέλευση του αρχείου. + +--- + +## Παράδειγμα πλήρους λειτουργικού κώδικα + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε ένα νέο έργο κονσόλας. Δεν λείπουν κομμάτια—όλα, από τις δηλώσεις `using` μέχρι το τελικό `Console.WriteLine`, περιλαμβάνονται. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Εκτελέστε το πρόγραμμα, ανοίξτε το παραγόμενο αρχείο και επαληθεύστε τις προσαρμοσμένες ιδιότητες. Αυτή είναι η ολόκληρη διαδικασία **create excel workbook**, **add custom properties**, **set worksheet name**, και **save as xlsb** σε μια καθαρή ροή. + +--- + +## Συμπέρασμα + +Τώρα ξέρετε ακριβώς πώς να **create Excel workbook**, να δώσετε στο φύλλο του ένα σαφές **set worksheet name**, να ενσωματώσετε χρήσιμα μεταδεδομένα με **add custom properties**, και τελικά να **save as XLSB** για να παραγάγετε ένα συμπαγές, δυαδικό αρχείο Excel. Αυτή η ροή εργασίας είναι αξιόπιστη, λειτουργεί σε διάφορες εκδόσεις .NET και κλιμακώνεται άψογα είτε δημιουργείτε μία αναφορά είτε χίλιες. + +Τι ακολουθεί; Δοκιμάστε να προσθέσετε έναν πίνακα δεδομένων στο φύλλο “Data”, πειραματιστείτε με διαφορετικούς τύπους ιδιοτήτων (ημερομηνίες, boolean), ή αλλάξτε την έξοδο σε **save as xlsb** για τεράστια σύνολα δεδομένων. Μπορείτε επίσης να εξερευνήσετε την προστασία του βιβλίου εργασίας με κωδικό πρόσβασης—το Aspose.Cells το κάνει με μία μόνο γραμμή κώδικα. + +Μη διστάσετε να αφήσετε ένα σχόλιο αν συναντήσετε δυσκολίες, ή να μοιραστείτε πώς έχετε επεκτείνει αυτό το μοτίβο στα δικά σας έργα. Καλή προγραμματιστική! + +--- + +![Create Excel workbook screenshot](image.png){alt="Δημιουργία βιβλίου εργασίας Excel με προσαρμοσμένες ιδιότητες"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/excel-advanced-named-ranges/_index.md b/cells/greek/net/excel-advanced-named-ranges/_index.md index 7769a16828..09cf92e3fa 100644 --- a/cells/greek/net/excel-advanced-named-ranges/_index.md +++ b/cells/greek/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Προσδιορίστε εύκολα κελιά σε μια ονομασμένη περιοχή στο Excel χρησιμοποιώντας το Aspose.Cells για .NET με αυτό το ολοκληρωμένο βήμα προς βήμα σεμινάριο. ### [Συγχώνευση κελιών σε ονομασμένη περιοχή στο Excel](./merge-cells-in-named-range/) Μάθετε πώς να συγχωνεύετε κελιά σε μια ονομασμένη περιοχή χρησιμοποιώντας το Aspose.Cells για .NET σε αυτό το βήμα προς βήμα εκπαιδευτικό βίντεο. Ανακαλύψτε πώς να μορφοποιείτε, να διαμορφώνετε και να αυτοματοποιείτε αναφορές Excel. +### [Δημιουργία βιβλίου εργασίας Excel – Οδηγός βήμα προς βήμα για την προσθήκη πινάκων και κανόνων ονοματοδοσίας](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Μάθετε πώς να δημιουργήσετε ένα βιβλίο εργασίας Excel, προσθέτοντας πίνακες και ορίζοντας κανόνες ονοματοδοσίας, βήμα προς βήμα. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/greek/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..1ba9c46f1a --- /dev/null +++ b/cells/greek/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Δημιουργήστε βιβλίο εργασίας Excel με έναν πίνακα, μάθετε τους κανόνες + ονοματοδοσίας πινάκων του Excel, αποφύγετε το σφάλμα ονομασμένου εύρους και ορίστε + σωστά το όνομα του πίνακα Excel σε C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: el +og_description: Δημιουργήστε βιβλίο εργασίας Excel σε C# και κατακτήστε τους κανόνες + ονοματοδοσίας πινάκων Excel. Μάθετε πώς να προσθέτετε φύλλο εργασίας πίνακα, να + ορίζετε το όνομα του πίνακα Excel και να διορθώνετε σφάλματα ονομασμένων περιοχών. +og_title: Δημιουργία βιβλίου εργασίας Excel – Πλήρης οδηγός πινάκων C# και ονοματοδοσίας +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Δημιουργία βιβλίου εργασίας Excel – Οδηγός βήμα‑βήμα για την προσθήκη πινάκων + και τους κανόνες ονοματοδοσίας +url: /el/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Excel Workbook – Πλήρης Οδηγός C# για Πίνακες και Ονοματοδοσία + +Έχετε χρειαστεί ποτέ να **create excel workbook** προγραμματιστικά και να αναρωτηθείτε γιατί το όνομα του πίνακά σας συγκρούεται ξαφνικά με ένα named range; Δεν είστε μόνοι. Σε πολλά έργα αυτοματοποίησης, τη στιγμή που προσπαθείτε να δώσετε σε έναν πίνακα ένα φιλικό αναγνωριστικό, το Excel ρίχνει ένα *named range error* που σταματά όλη τη διαδικασία. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από ένα πλήρως εκτελέσιμο παράδειγμα που **creates an Excel workbook**, **adds a table to a worksheet**, και εξηγεί τους **excel table naming rules** που σας εμποδίζουν να «σκοτώνετε» τον εαυτό σας. Στο τέλος θα ξέρετε ακριβώς πώς να **add table worksheet**, **set excel table name**, και να διαχειριστείτε με χάρη τις σπάνιες συγκρούσεις ονομάτων. + +> **Pro tip:** Η μεγαλύτερη σύγχυση προέρχεται από το γεγονός ότι το Excel αντιμετωπίζει τα ονόματα πινάκων και τα named ranges σε επίπεδο workbook ως ένα ενιαίο namespace. Η κατανόηση αυτού του κανόνα νωρίς εξοικονομεί ώρες debugging. + +## What You’ll Need + +- **Aspose.Cells for .NET** (ή οποιαδήποτε βιβλιοθήκη που εκθέτει τις κλάσεις `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ ή .NET Framework 4.8 – ο κώδικας λειτουργεί και στα δύο. +- Βασική κατανόηση της σύνταξης C# – δεν απαιτούνται προχωρημένα κόλπα. + +Αν έχετε όλα αυτά, ας βουτήξουμε. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Step 1: Create Excel Workbook and Access the First Worksheet + +Το πρώτο που κάνετε όταν **create excel workbook** είναι να δημιουργήσετε ένα αντικείμενο της κλάσης `Workbook` και να πάρετε μια αναφορά στο φύλλο στο οποίο θα εργαστείτε. Στο Aspose.Cells το workbook ξεκινά με ένα προεπιλεγμένο φύλλο με όνομα “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Γιατί είναι κρίσιμο αυτό το βήμα; Χωρίς ένα αντικείμενο workbook δεν έχετε που να συνδέσετε έναν πίνακα, και η αναφορά `Worksheet` σας δίνει έναν καμβά όπου θα γίνει η λειτουργία **add table worksheet**. + +## Step 2: Add Table (ListObject) Covering a Specific Range + +Στη συνέχεια **add table worksheet**‑level δεδομένα. Η μέθοδος `ListObjects.Add` περιμένει μια συμβολοσειρά περιοχής και ένα boolean που υποδεικνύει αν η πρώτη σειρά περιέχει κεφαλίδες. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Παρατηρήστε την εντολή `salesTable.Name = "SalesData"`. Εδώ ενεργοποιούνται οι **excel table naming rules**: το όνομα πρέπει να είναι μοναδικό σε όλο το workbook, όχι μόνο στο φύλλο. Επίσης δεν μπορεί να περιέχει κενά ή ειδικούς χαρακτήρες και πρέπει να αρχίζει με γράμμα ή underscore. + +## Step 3: Attempt to Create a Workbook‑Level Named Range with the Same Identifier + +Τώρα προκαλούμε σκόπιμα το **named range error** για να δούμε τι συμβαίνει όταν υπάρχει σύγκρουση ονόματος. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Αν ξεσχολιάσετε τη γραμμή, το Aspose.Cells ρίχνει ένα `ArgumentException` που δηλώνει ότι το όνομα υπάρχει ήδη. Το μήνυμα σφάλματος είναι: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Αυτό το μήνυμα είναι το **named range error** που προειδοποιήσαμε νωρίτερα. Σας λέει ότι οι **excel table naming rules** αντιμετωπίζουν τα ονόματα πινάκων και τα named ranges ως ένα ενιαίο namespace. + +## Step 4: Handling the Naming Conflict Gracefully + +Σε κώδικα πραγματικού κόσμου θα θέλετε να πιάσετε αυτήν την εξαίρεση και είτε να μετονομάσετε τον πίνακα είτε να επιλέξετε διαφορετικό όνομα range. Εδώ είναι ένας καθαρός τρόπος: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Με το `try/catch` αποφεύγετε το σκληρό crash και δίνετε στον χρήστη (ή στον κώδικα που καλεί) μια σαφή εξήγηση — ακριβώς το είδος της **excel table naming rules** γνώσης που αποτρέπει μελλοντικά bugs. + +## Step 5: Save the Workbook and Verify the Result + +Τέλος, αποθηκεύστε το αρχείο στο δίσκο και ανοίξτε το στο Excel για να επιβεβαιώσετε ότι ο πίνακας και τυχόν named ranges υπάρχουν. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Όταν ανοίξετε το *SalesReport.xlsx* θα δείτε: + +- Έναν πίνακα που εκτείνεται από **A1:C5** με όνομα **SalesData**. +- Αν κρατήσατε το εναλλακτικό range, ένα workbook‑level named range **SalesData_Range** που δείχνει στο **D1**. + +Καμία κατάρρευση κατά το runtime, και η σύγκρουση ονομάτων έχει λυθεί. + +## Understanding Excel Table Naming Rules in Depth + +Ας αναλύσουμε γιατί υπάρχουν οι κανόνες: + +| Rule | What It Means | Example | +|------|----------------|---------| +| **Unique across workbook** | No two tables or named ranges can share the same identifier. | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | Names cannot begin with a number. | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | Use CamelCase or underscores. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | Practically always satisfied. | N/A | + +Τηρώντας αυτούς τους κανόνες ενώ **set excel table name** αποφεύγετε το τρομακτικό *named range error*. + +## Common Variations and Edge Cases + +1. **Adding multiple tables** – Κάθε πίνακας πρέπει να έχει μοναδικό όνομα. +2. **Renaming an existing table** – Χρησιμοποιήστε `salesTable.Name = "NewName"` πριν δημιουργήσετε τυχόν συγκρουόμενα named ranges. +3. **Using dynamic ranges** – Αν χρειάζεστε ένα range που επεκτείνεται, χρησιμοποιήστε μια δομημένη αναφορά όπως `=SalesData[Amount]` αντί για στατική διεύθυνση. +4. **Cross‑sheet named ranges** – Παραμένουν μέρος του ίδιου namespace, οπότε ένας πίνακας στο Sheet1 εμποδίζει ένα range με το ίδιο όνομα στο Sheet2. + +## Pro Tips for Smooth Excel Automation + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: Προσθέστε ένα GUID ή αυξανόμενο μετρητή (`SalesData_{Guid.NewGuid()}`) όταν δεν είστε σίγουροι. +- **Use `ListObject.ShowHeaders = true`** για να κάνετε τους πίνακές σας αυτο‑τεκμηριωτικούς. +- **Validate after saving**: Ανοίξτε το αρχείο με μια ελαφριά βιβλιοθήκη (π.χ., EPPlus) για να βεβαιωθείτε ότι ο πίνακας δημιουργήθηκε σωστά. + +## Recap: What We Covered + +- Πώς να **create excel workbook** από το μηδέν χρησιμοποιώντας Aspose.Cells. +- Οι ακριβείς **excel table naming rules** που διέπουν τα αναγνωριστικά πινάκων και named ranges. +- Γιατί εμφανίζεται ένα **named range error** όταν επαναχρησιμοποιείτε ένα όνομα. +- Ο σωστός τρόπος να **add table worksheet** και **set excel table name** χωρίς συγκρούσεις. +- Ένα ανθεκτικό pattern για τη διαχείριση naming conflicts με χάρη. + +## What’s Next? + +Τώρα που έχετε κατακτήσει τα βασικά, σκεφτείτε να εξερευνήσετε: + +- **Dynamic table growth** χρησιμοποιώντας `ListObject.Resize`. +- **Applying styles** σε πίνακες (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** διατηρώντας τις δομές των πινάκων. +- **Integrating with Office Open XML** για ακόμη πιο στενό έλεγχο των εσωτερικών του workbook. + +Πειραματιστείτε ελεύθερα—αλλάξτε το range, προσθέστε περισσότερους πίνακες, ή δοκιμάστε διαφορετικά σχήματα ονοματοδοσίας. Όσο περισσότερο «παίζετε», τόσο πιο βαθιά γίνεται η κατανόησή σας για τους **excel table naming rules**. + +--- + +*Happy coding, and may your workbooks never clash again!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/excel-custom-number-date-formatting/_index.md b/cells/greek/net/excel-custom-number-date-formatting/_index.md index 67c63daf64..0325a1c820 100644 --- a/cells/greek/net/excel-custom-number-date-formatting/_index.md +++ b/cells/greek/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Μάθετε πώς να ελέγχετε τις τιμές κελιών του Excel σε σχέση με τις προσαρμοσμένες μορφές αριθμών χρησιμοποιώντας το Aspose.Cells για .NET με αυτό το βήμα προς βήμα σεμινάριο. ### [Καθορισμός πεδίων τύπου κατά την εισαγωγή δεδομένων σε φύλλο Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Μάθετε πώς να εισάγετε δεδομένα σε φύλλα Excel με καθορισμένα πεδία τύπων χρησιμοποιώντας το Aspose.Cells για .NET σε αυτό το λεπτομερές σεμινάριο. +### [Πλήρης οδηγός προσαρμοσμένης μορφής αριθμού Excel σε C#](./custom-number-format-excel-in-c-complete-guide/) +Μάθετε πώς να δημιουργείτε και να εφαρμόζετε προσαρμοσμένες μορφές αριθμών στο Excel χρησιμοποιώντας C# με το Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/greek/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..aa7b204aba --- /dev/null +++ b/cells/greek/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Προσαρμοσμένη μορφή αριθμού στο Excel – σεμινάριο που δείχνει πώς να + εισάγετε datatable στο Excel, να ορίσετε χρώμα φόντου στήλης, να μορφοποιήσετε τη + στήλη ως νόμισμα και να αποθηκεύσετε το βιβλίο εργασίας ως xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: el +og_description: Προσαρμοσμένο μάθημα Excel για μορφοποίηση αριθμών που σας καθοδηγεί + στη εισαγωγή ενός DataTable, στον ορισμό χρώματος φόντου στήλης, στη μορφοποίηση + στήλης ως νόμισμα και στην αποθήκευση του βιβλίου εργασίας ως xlsx. +og_title: Προσαρμοσμένη μορφή αριθμού στο Excel με C# – Οδηγός βήμα‑προς‑βήμα +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Προσαρμοσμένη μορφή αριθμού στο Excel με C# – Πλήρης οδηγός +url: /el/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Προσαρμοσμένη Μορφή Αριθμών Excel – Full‑Stack C# Tutorial + +Έχετε αναρωτηθεί ποτέ πώς να εφαρμόσετε ένα **custom number format excel** στυλ απευθείας από C#; Ίσως έχετε προσπαθήσει να αποβάλετε ένα DataTable σε ένα υπολογιστικό φύλλο μόνο για να δείτε απλούς αριθμούς, χωρίς χρώματα και χωρίς μορφοποίηση νομίσματος. Αυτό είναι ένα κοινό πρόβλημα—ιδιαίτερα όταν χρειάζεστε μια επαγγελματική αναφορά για τα ενδιαφερόμενα μέρη. + +Σε αυτόν τον οδηγό θα λύσουμε αυτό το πρόβλημα μαζί: θα μάθετε πώς να **import datatable to excel**, **set column background color**, **format column as currency**, και τέλος **save workbook as xlsx** με μια προσαρμοσμένη μορφή αριθμού που κάνει τα νούμερά σας να ξεχωρίζουν. Καμία ασαφής αναφορά, μόνο μια πλήρης, εκτελέσιμη λύση που μπορείτε να αντιγράψετε‑επικολλήσετε στο έργο σας. + +--- + +## Τι Θα Δημιουργήσετε + +Στο τέλος αυτού του tutorial θα έχετε μια αυτόνομη εφαρμογή C# console που: + +1. Ανακτά ένα `DataTable` (μπορείτε να αντικαταστήσετε το stub με το δικό σας ερώτημα). +2. Δημιουργεί ένα νέο Excel workbook χρησιμοποιώντας το Aspose.Cells (ή οποιαδήποτε συμβατή βιβλιοθήκη). +3. Εφαρμόζει μια μπλε, έντονη γραμματοσειρά στην πρώτη στήλη, ένα ανοιχτό‑κίτρινο φόντο στη δεύτερη, και μια μορφή νομίσματος (`$#,##0.00`) στην τρίτη. +4. Αποθηκεύει το αρχείο ως `DataTableWithStyleArray.xlsx` σε έναν φάκελο της επιλογής σας. + +Θα δείτε ακριβώς πώς κάθε γραμμή συμβάλλει στο τελικό αρχείο Excel, και θα συζητήσουμε γιατί αυτές οι επιλογές έχουν σημασία για τη συντηρησιμότητα και την απόδοση. + +--- + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.7+). +- Aspose.Cells για .NET (δωρεάν δοκιμή ή έκδοση με άδεια). Εγκατάσταση μέσω NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Βασική εξοικείωση με `DataTable` και εφαρμογές C# console. + +--- + +## Βήμα 1: Ανάκτηση των Πηγαίων Δεδομένων ως DataTable + +Πρώτα, χρειαζόμαστε κάποια δεδομένα για εξαγωγή. Σε ένα πραγματικό σενάριο πιθανότατα θα καλέσετε ένα repository ή θα εκτελέσετε ένα ερώτημα SQL. Για παραδείγματα θα δημιουργήσουμε έναν απλό πίνακα στη μνήμη. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Γιατί είναι σημαντικό:** Η χρήση ενός `DataTable` σας παρέχει μια πινάκωση, σχήμα‑συνειδητή πηγή που αντιστοιχεί καθαρά σε σειρές και στήλες του Excel. Σας επιτρέπει επίσης να επαναχρησιμοποιήσετε την ίδια λογική εξαγωγής για οποιοδήποτε σύνολο δεδομένων χωρίς να ξαναγράψετε κώδικα. + +--- + +## Βήμα 2: Δημιουργία Νέου Workbook και Λήψη του Πρώτου Worksheet + +Τώρα δημιουργούμε ένα Excel workbook. Η κλάση `Workbook` αντιπροσωπεύει ολόκληρο το αρχείο· το `Worksheets[0]` είναι το προεπιλεγμένο φύλλο όπου θα τοποθετήσουμε τα δεδομένα μας. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Συμβουλή:** Αν χρειάζεστε πολλαπλά φύλλα, απλώς καλέστε `workbook.Worksheets.Add("SheetName")` και επαναλάβετε τα βήματα στυλ για το καθένα. + +--- + +## Βήμα 3: Ορισμός Στυλ Στηλών – Γραμματοσειρά, Φόντο και Μορφή Αριθμού + +Το στυλ στο Aspose.Cells γίνεται μέσω αντικειμένων `Style`. Θα δημιουργήσουμε έναν πίνακα όπου κάθε στοιχείο αντιστοιχεί σε μια στήλη του DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Γιατί ένας πίνακας στυλ;** Η μεταβίβαση ενός πίνακα στο `ImportDataTable` σας επιτρέπει να εφαρμόσετε διαφορετικό στυλ σε κάθε στήλη με μία κλήση, κάτι που είναι τόσο σύντομο όσο και αποδοτικό. Επίσης εγγυάται ότι η μορφοποίηση παραμένει συγχρονισμένη με τη σειρά των δεδομένων. + +--- + +## Βήμα 4: Εισαγωγή του DataTable Κατά την Εφαρμογή των Στυλ + +Αυτή είναι η καρδιά της λειτουργίας: τροφοδοτούμε το `DataTable` στο worksheet, λέμε στο Aspose να συμπεριλάβει τη γραμμή κεφαλίδας, και παραδίδουμε τον πίνακα `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Τι συμβαίνει στο παρασκήνιο;** Το Aspose διασχίζει κάθε στήλη, γράφει την κεφαλίδα, μετά γράφει κάθε τιμή γραμμής. Κατά τη διάρκεια εφαρμόζει το αντίστοιχο `Style` από τον πίνακα, έτσι καταλήγετε με μια μπλε κεφαλίδα για το “Product”, μια κίτρινη σκίαση για το “Quantity”, και μια ωραία μορφοποιημένη στήλη “Revenue”. + +--- + +## Βήμα 5: Αποθήκευση του Workbook ως Αρχείο XLSX + +Τέλος, αποθηκεύουμε το workbook στο δίσκο. Η μέθοδος `Save` επιλέγει αυτόματα τη μορφή XLSX βάσει της επέκτασης του αρχείου. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Συμβουλή:** Αν χρειάζεστε να μεταφέρετε το αρχείο (π.χ., για web API), χρησιμοποιήστε `workbook.Save(stream, SaveFormat.Xlsx)` αντί για διαδρομή αρχείου. + +--- + +## Πλήρες Παράδειγμα Εργασίας + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να επικολλήσετε σε ένα νέο έργο console. Συγκεντρώνεται και εκτελείται ακριβώς όπως είναι, παράγοντας ένα μορφοποιημένο αρχείο Excel. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Αναμενόμενο Αποτέλεσμα + +Όταν ανοίξετε το `DataTableWithStyleArray.xlsx` θα δείτε: + +| **Product** (μπλε, έντονο) | **Quantity** (ανοιχτό‑κίτρινο) | **Revenue** (νόμισμα) | +|----------------------------|--------------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Η **custom number format excel** που καθορίσατε (`$#,##0.00`) εξασφαλίζει ότι κάθε κελί εσόδων εμφανίζει το σύμβολο δολαρίου, το διαχωριστικό χιλιάδων και δύο δεκαδικά ψηφία—ακριβώς αυτό που αναμένουν οι οικονομικές ομάδες. + +--- + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Μπορώ να το χρησιμοποιήσω με διαφορετική βιβλιοθήκη Excel; + +Απόλυτα. Η έννοια—δημιουργία στυλ ανά στήλη και εφαρμογή του κατά την εισαγωγή—μεταφράζεται σε EPPlus, ClosedXML ή NPOI. Οι κλήσεις API διαφέρουν, αλλά το μοτίβο παραμένει το ίδιο. + +### Τι γίνεται αν το DataTable μου έχει περισσότερες στήλες από τα στυλ; + +Το Aspose θα εφαρμόσει το προεπιλεγμένο στυλ σε οποιαδήποτε στήλη δεν έχει αντίστοιχο στοιχείο στον πίνακα `columnStyles`. Για να αποφύγετε εκπλήξεις, είτε ορίστε το μέγεθος του πίνακα σε `dataTable.Columns.Count` είτε δημιουργήστε στυλ δυναμικά σε έναν βρόχο. + +### Πώς ορίζω προσαρμοσμένη μορφή αριθμού για ημερομηνίες; + +Απλώς ορίστε `style.Custom = "dd‑mm‑yyyy"` (ή οποιοδήποτε έγκυρο Excel format string). Η ίδια προσέγγιση με πίνακα λειτουργεί για ημερομηνίες, ποσοστά ή επιστημονική σημειογραφία. + +### Υπάρχει τρόπος αυτόματης προσαρμογής του πλάτους των στηλών μετά την εισαγωγή; + +Ναι—καλέστε `worksheet.AutoFitColumns();` μετά την εισαγωγή. Εκτελεί έναν γρήγορο υπολογισμό πλάτους βάσει του περιεχομένου των κελιών. + +### Τι γίνεται με μεγάλα σύνολα δεδομένων (100k+ γραμμές); + +Το `ImportDataTable` είναι βελτιστοποιημένο για μαζικές λειτουργίες, αλλά μπορεί να φτάσετε τα όρια μνήμης. Σε αυτήν την περίπτωση, σκεφτείτε τη ροή των γραμμών χειροκίνητα με `Cells[i, j].PutValue(...)` και την επαναχρησιμοποίηση ενός μόνο αντικειμένου `Style` για μείωση του φόρτου. + +--- + +## Επαγγελματικές Συμβουλές & Συνηθισμένα Πάγια + +- **Αποφύγετε την σκληρή κωδικοποίηση διαδρομών** σε κώδικα παραγωγής· χρησιμοποιήστε `Environment.GetFolderPath` ή ρυθμίσεις παραμετροποίησης. +- **Αποδεσμεύστε το workbook** αν βρίσκεστε σε υπηρεσία μακράς διάρκειας—τυλίξτε το σε μπλοκ `using` για να ελευθερώσετε τους εγγενείς πόρους. +- **Προσέξτε τους διαχωριστές ανάλογα με τον πολιτισμό**. Η προσαρμοσμένη μορφή `$#,##0.00` επιβάλλει τελεία ως διαχωριστικό δεκαδικών ανεξάρτητα από την τοπική ρύθμιση του OS, κάτι που συνήθως θέλετε για οικονομικές αναφορές. +- **Θυμηθείτε να αναφέρετε το System.Drawing** (ή `System.Drawing.Common` σε .NET Core) για τις δομές χρώματος που χρησιμοποιούνται στο στυλ. +- **Δοκιμάστε το αποτέλεσμα σε διαφορετικές εκδόσεις του Excel**· οι παλαιότερες εκδόσεις μπορεί να ερμηνεύσουν κάποιες προσαρμοσμένες μορφές ελαφρώς διαφορετικά. + +--- + +## Συμπέρασμα + +Καλύψαμε όλα όσα χρειάζεστε για να **custom number format excel** αρχεία από C#: την ανάκτηση δεδομένων από ένα `DataTable`, **import datatable to excel**, την εφαρμογή **set column background color**, τη χρήση **format column as currency**, και τέλος **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/excel-workbook/_index.md b/cells/greek/net/excel-workbook/_index.md index 8112e41e53..ef51a63e93 100644 --- a/cells/greek/net/excel-workbook/_index.md +++ b/cells/greek/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ | [Προεπισκόπηση εκτύπωσης βιβλίου εργασίας](./workbook-print-preview/) | Μάθετε πώς να δημιουργείτε προεπισκοπήσεις εκτύπωσης για αρχεία Excel χρησιμοποιώντας το Aspose.Cells για .NET. Μάθετε τα βήματα κωδικοποίησης σε ένα λεπτομερές και εύχρηστο σεμινάριο. | | [Εργασία με ιδιότητες τύπου περιεχομένου](./working-with-content-type-properties/) | Μάθετε πώς να χρησιμοποιείτε το Aspose.Cells για .NET για να εργάζεστε με ιδιότητες τύπου περιεχομένου για βελτιωμένη διαχείριση μεταδεδομένων Excel. Ακολουθήστε αυτόν τον απλό οδηγό βήμα προς βήμα. | | [Υποστήριξη υπογραφής Xades](./xades-signature-support/) | Μάθετε πώς να προσθέτετε υπογραφές Xades σε αρχεία Excel χρησιμοποιώντας το Aspose.Cells για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ασφαλίστε τα έγγραφά σας. | +| [Δημιουργία νέου βιβλίου εργασίας C# – Οδηγός βήμα‑βήμα με διασκορπισμένες συναρτήσεις](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Μάθετε πώς να δημιουργήσετε νέο βιβλίο εργασίας C# με υποστήριξη διασκορπισμένων τύπων, ακολουθώντας τον αναλυτικό μας οδηγό βήμα‑βήμα. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/greek/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..11294f9567 --- /dev/null +++ b/cells/greek/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Δημιουργήστε γρήγορα νέο βιβλίο εργασίας C# με το Aspose.Cells. Μάθετε + πώς να προσθέσετε έναν τύπο SEQUENCE που εκχυλίζει, να επαναϋπολογίζεται αυτόματα + και να διαχειρίζεστε τα εξαρτημένα κελιά. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: el +og_description: Δημιουργία νέου βιβλίου εργασίας C# με το Aspose.Cells. Αυτό το σεμινάριο + δείχνει πώς να προσθέσετε έναν τύπο SEQUENCE που δημιουργεί διαρροή, να επαναϋπολογίσετε + το βιβλίο εργασίας και να διαχειριστείτε τα εξαρτημένα κελιά. +og_title: Δημιουργήστε νέο βιβλίο εργασίας C# – Πλήρης Οδηγός +tags: +- C# +- Excel automation +- Aspose.Cells +title: Δημιουργία νέου βιβλίου εργασίας C# – Οδηγός βήμα‑βήμα με τύπους που εκχυλίζονται +url: /el/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία νέου βιβλίου εργασίας C# – Πλήρης Οδηγός Προγραμματισμού + +Έχετε αναρωτηθεί ποτέ πώς να **create new workbook C#** χωρίς να παλεύετε με το COM interop; Δεν είστε μόνοι. Σε πολλά έργα χρειάζεται να δημιουργήσετε ένα αρχείο Excel άμεσα, να προσθέσετε έναν δυναμικό τύπο πίνακα και να έχετε όλα να ανανεώνονται αυτόματα. + +Σε αυτόν τον οδηγό θα σας δείξουμε ακριβώς αυτό—χρησιμοποιώντας τη σύγχρονη βιβλιοθήκη **Aspose.Cells**, προσθέτοντας έναν τύπο `SEQUENCE` που διαχέεται, τροποποιώντας ένα εξαρτημένο κελί και εξαναγκάζοντας μια επανυπολογισμό ώστε τα αποτελέσματα να παραμένουν φρέσκα. Στο τέλος θα έχετε ένα αυτόνομο, εκτελέσιμο παράδειγμα που μπορείτε να αντιγράψετε‑επικολλήσετε σε οποιαδήποτε εφαρμογή .NET. + +## Τι Θα Μάθετε + +- Πώς να **create new workbook C#** προγραμματιστικά. +- Η λειτουργία πίσω από έναν **spilled array formula** και γιατί είναι χρήσιμος. +- Χρήση της **Excel SEQUENCE function** από κώδικα C#. +- Ενεργοποίηση του **C# workbook calculation** ώστε τα εξαρτημένα κελιά να ενημερώνονται άμεσα. +- Συνηθισμένα προβλήματα (π.χ., η παράλειψη κλήσης του `Calculate`) και γρήγορες λύσεις. + +Δεν απαιτούνται εξωτερικά έγγραφα—όλα όσα χρειάζεστε είναι εδώ. + +## Προαπαιτούμενα + +- .NET 6+ (ή .NET Framework 4.7.2+) εγκατεστημένο. +- Visual Studio 2022 ή οποιοδήποτε IDE προτιμάτε. +- Το πακέτο NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Βασική εξοικείωση με τη σύνταξη C# (αν είστε εντελώς νέοι, ο κώδικας είναι έντονα σχολιασμένος). + +--- + +## Βήμα 1: Δημιουργία νέου βιβλίου εργασίας σε C# + +Αυτή η επικεφαλίδα H2 περιέχει τη **primary keyword** ακριβώς όπου απαιτεί το SEO checklist. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Γιατί είναι σημαντικό:** +> Η δημιουργία ενός αντικειμένου `Workbook` σας δίνει μια αναπαράσταση του αρχείου Excel στη μνήμη. Χωρίς COM, χωρίς interop, μόνο καθαρά αντικείμενα .NET που μπορείτε να χειριστείτε με ασφάλεια. + +--- + +## Βήμα 2: Προσθήκη τύπου SEQUENCE που διαχέεται + +Ένας **spilled array formula** επεκτείνεται αυτόματα σε γειτονικά κελιά, κάτι που είναι ιδανικό για τη δημιουργία δυναμικών λιστών. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Πώς λειτουργεί:** +> Η λειτουργία `SEQUENCE` (που εισήχθη στο Excel 365) δημιουργεί έναν κάθετο πίνακα αριθμών. Επειδή χρησιμοποιούμε έναν τύπο *spilling*, το Excel (και το Aspose.Cells) θα γεμίσει αυτόματα την περιοχή κάτω από το `A1` χωρίς να χρειάζεται να γράψουμε βρόχο. + +--- + +## Βήμα 3: Αλλαγή ενός εξαρτημένου κελιού για να δείτε την αυτόματη ανανέωση + +Ας τροποποιήσουμε το `B1` ώστε να παρατηρήσουμε πώς το βιβλίο εργασίας επανυπολογίζει τον διαχυμένο πίνακα. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Συμβουλή:** +> Αν αργότερα αναφέρετε την διαχυμένη περιοχή σε άλλους τύπους, η αλλαγή οποιουδήποτε κελιού μέσα στη διαχέση θα κάνει αυτούς τους τύπους να ενημερωθούν μετά την κλήση του `Calculate`. + +--- + +## Βήμα 4: Εξαναγκασμός υπολογισμού βιβλίου εργασίας C# + +Χωρίς ρητή κλήση, το Aspose.Cells δεν θα επαναϋπολογίσει αυτόματα τους τύπους. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Τι κάνει το `Calculate`:** +> Διασχίζει κάθε κελί τύπου, το αξιολογεί και γράφει τα αποτελέσματα πίσω στο φύλλο. Αυτό είναι ο πυρήνας του **C# workbook calculation** και εξασφαλίζει ότι ο διαχυμένος πίνακας παραμένει συγχρονισμένος με τυχόν εξαρτημένα δεδομένα. + +### Αναμενόμενο Αποτέλεσμα + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Ανοίξτε το `SpilledSequenceDemo.xlsx` και θα δείτε τους αριθμούς 1‑5 να γεμίζουν το `A1:A5`, ενώ το `B1` περιέχει την τιμή `10`. Αλλάξτε οποιοδήποτε κελί μέσα στη διαχέση, εκτελέστε ξανά το `Calculate`, και οι νέες τιμές θα εμφανιστούν άμεσα. + +--- + +## Κατανόηση της λειτουργίας Excel SEQUENCE σε C# + +Αν αναρωτιέστε γιατί το `SEQUENCE` προτιμάται έναντι ενός χειροκίνητου βρόχου, εξετάστε τα παρακάτω σημεία: + +1. **Performance** – Η μηχανή αξιολογεί ολόκληρο τον πίνακα σε μία διεργασία. +2. **Readability** – Μία γραμμή κώδικα αντικαθιστά δεκάδες κλήσεις `PutValue`. +3. **Dynamic sizing** – Μπορείτε να αντικαταστήσετε το στατικό `5` με μια αναφορά σε άλλο κελί, καθιστώντας το μήκος ρυθμιζόμενο κατά την εκτέλεση. + +Αυτό είναι ένα κλασικό παράδειγμα **spilled array formula** που απλοποιεί τις εργασίες δημιουργίας δεδομένων. + +--- + +## Συνηθισμένα Πιθανά Σφάλματα & Επαγγελματικές Συμβουλές + +| Πιθανό Σφάλμα | Διόρθωση | +|---------------|----------| +| Ξεχάσιμο `workbook.Calculate()` | Πάντα να το καλείτε μετά την τροποποίηση των τύπων· διαφορετικά το φύλλο εμφανίζει παλιά αποθηκευμένα δεδομένα. | +| Χρήση παλαιότερης έκδοσης Aspose.Cells | Αναβαθμίστε στην πιο πρόσφατη έκδοση του πακέτου NuGet για να εξασφαλίσετε υποστήριξη των δυναμικών συναρτήσεων πίνακα όπως το `SEQUENCE`. | +| Αποθήκευση πριν τον υπολογισμό | Αποθηκεύστε **μετά** το `Calculate` ώστε το αρχείο να περιέχει τα πιο πρόσφατα αποτελέσματα. | +| Υπόθεση ότι η διαχέση θα αντικαταστήσει υπάρχοντα δεδομένα | Το Aspose.Cells σέβεται τα υπάρχοντα δεδομένα εκτός της περιοχής διαχέσης· καθαρίστε την περιοχή πρώτα αν χρειάζεστε καθαρό χώρο. | + +**Συμβουλή:** Αν χρειάζεστε το μήκος της ακολουθίας να είναι ρυθμιζόμενο, αποθηκεύστε τον αριθμό σε ένα κελί (π.χ., `C1`) και χρησιμοποιήστε `=SEQUENCE(C1)`—η μηχανή υπολογισμού θα διαβάσει την τιμή κατά την εκτέλεση. + +--- + +## Επέκταση του Παραδείγματος + +Τώρα που ξέρετε πώς να **create new workbook C#**, μπορείτε να: + +- Προσθέσετε πιο σύνθετους τύπους που αναφέρονται στην διαχυμένη περιοχή (`=SUM(A1#)` όπου το `#` δηλώνει τη διαχέση). +- Εξάγετε σε PDF με `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Εισάγετε γραφήματα που προσαρμόζονται αυτόματα στο μέγεθος του δυναμικού πίνακα. + +Όλα αυτά βασίζονται στην ίδια βάση **C# workbook calculation** που μόλις καλύψαμε. + +--- + +## Συμπέρασμα + +Διασχίσαμε όλη τη διαδικασία του **create new workbook C#**, από τη δημιουργία του αντικειμένου `Workbook` μέχρι την εισαγωγή ενός τύπου `SEQUENCE` που διαχέεται, την τροποποίηση ενός εξαρτημένου κελιού και τελικά τον εξαναγκασμό επανυπολογισμού ώστε όλα να παραμένουν ενημερωμένα. Το πλήρες απόσπασμα κώδικα παραπάνω είναι έτοιμο για εκτέλεση—απλώς το ενσωματώστε σε μια εφαρμογή console, προσθέστε το πακέτο NuGet Aspose.Cells, και θα έχετε ένα λειτουργικό αρχείο Excel σε δευτερόλεπτα. + +Έτοιμοι για το επόμενο βήμα; Δοκιμάστε να αντικαταστήσετε το στατικό `5` με μια αναφορά κελιού, πειραματιστείτε με άλλες δυναμικές συναρτήσεις πίνακα όπως `FILTER` ή `UNIQUE`, και εξερευνήστε πώς το **Aspose.Cells C#** μπορεί να τροφοδοτήσει πλήρη μηχανές αναφορών. Καλή προγραμματιστική! + +--- + +*Image placeholder:* + +![Στιγμιότυπο οθόνης που δείχνει ένα νεοδημιουργημένο βιβλίο εργασίας με τύπο SEQUENCE που διαχέεται – παράδειγμα create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*Αν βρήκατε αυτόν τον οδηγό χρήσιμο, σκεφτείτε να δώσετε αστέρι στο αποθετήριο, να το μοιραστείτε με συναδέλφους, ή να αφήσετε ένα σχόλιο παρακάτω. Η ανατροφοδότησή σας τροφοδοτεί μελλοντικούς οδηγούς!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/formulas-functions/_index.md b/cells/greek/net/formulas-functions/_index.md index 48cb61ab7e..e7dfa6e3cf 100644 --- a/cells/greek/net/formulas-functions/_index.md +++ b/cells/greek/net/formulas-functions/_index.md @@ -40,126 +40,48 @@ ## Εκπαιδευτικά σεμινάρια για τύπους και συναρτήσεις ### [Εξαγωγή κειμένου τύπου σε βιβλία εργασίας .NET χρησιμοποιώντας το Aspose.Cells](./aspose-cells-formula-text-net) -Μάθετε πώς να εξάγετε μέσω προγραμματισμού κείμενο τύπων από αρχεία Excel χρησιμοποιώντας το Aspose.Cells σε .NET. Ιδανικό για τον έλεγχο και την τεκμηρίωση της λογικής τύπων που είναι ενσωματωμένη σε υπολογιστικά φύλλα. ### [Αυτοματοποιήστε εργασίες Excel χρησιμοποιώντας το Aspose.Cells .NET: Ορίστε τύπους σε εύρη](./aspose-cells-net-set-formulas-ranges) -Μάθετε πώς να αυτοματοποιείτε τον ορισμό τύπων σε εύρη με το Aspose.Cells για .NET. Βελτιστοποιήστε τις ροές εργασίας του Excel αποτελεσματικά χρησιμοποιώντας C# εφαρμόζοντας τον ίδιο τύπο σε πολλά κελιά ταυτόχρονα. ### [Αποτελεσματικές εισαγωγές CSV με τύπους χρησιμοποιώντας τον οδηγό Aspose.Cells .NET](./csv-imports-formulas-aspose-cells-net-guide) -Μάθετε πώς να εισάγετε αρχεία CSV που περιέχουν σύνθετους τύπους στο Excel χρησιμοποιώντας το Aspose.Cells για .NET χωρίς να χάσετε λειτουργικότητα. Εξασκηθείτε στη διατήρηση της λογικής των τύπων κατά την εισαγωγή δεδομένων. ### [Προσαρμογή τύπων κελιών στο Aspose.Cells .NET: Οδηγός ρυθμίσεων παγκοσμιοποίησης](./custom-aspose-cells-net-globalization-settings) -Μάθετε πώς να προσαρμόζετε τύπους κελιών με το Aspose.Cells .NET, εστιάζοντας στις ρυθμίσεις παγκοσμιοποίησης για πολύγλωσσες εφαρμογές. Ένας ολοκληρωμένος οδηγός για προγραμματιστές που εργάζονται με διεθνείς μορφές τύπων. ### [Εμφάνιση τύπων στο Excel χρησιμοποιώντας το Aspose.Cells .NET: Ένας ολοκληρωμένος οδηγός για αποτελεσματική διαχείριση βιβλίων εργασίας](./display-excel-formulas-aspose-cells-net) -Μάθετε πώς να χρησιμοποιείτε το Aspose.Cells .NET για την αποτελεσματική εμφάνιση τύπων σε βιβλία εργασίας του Excel. Αυτός ο οδηγός καλύπτει την εγκατάσταση, τον χειρισμό βιβλίων εργασίας και πρακτικές εφαρμογές για τον έλεγχο και την τεκμηρίωση τύπων. ### [Υλοποίηση δυναμικών τύπων και συνδυαστικών πλαισίων Excel με το Aspose.Cells για .NET](./dynamic-excel-formulas-combobox-aspose-cells-net) -Μάθετε πώς να αυτοματοποιείτε δυναμικές αναφορές Excel χρησιμοποιώντας το Aspose.Cells για .NET. Δημιουργήστε ονομασμένες περιοχές, προσθέστε στοιχεία ελέγχου ComboBox και δημιουργήστε προσαρμόσιμους τύπους που ενημερώνονται με βάση τις επιλογές του χρήστη. ### [Αυτοματοποίηση Excel: Aspose.Cells .NET για Τύπους](./excel-automation-aspose-cells-net-formulas) -Εξοικειωθείτε με την αυτοματοποίηση τύπων στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Αυτό το σεμινάριο καλύπτει τη δημιουργία, τον υπολογισμό και τη βελτιστοποίηση τύπων μέσω προγραμματισμού για αποτελεσματικές λειτουργίες υπολογιστικών φύλλων. ### [Αυτοματοποίηση Excel με Aspose.Cells .NET: Εξοικείωση με το βιβλίο εργασίας και τους υπολογισμούς τύπων](./excel-automation-aspose-cells-net-workbook-formulas) -Μάθετε πώς να αυτοματοποιείτε εργασίες Excel χρησιμοποιώντας το Aspose.Cells για .NET. Δημιουργήστε βιβλία εργασίας, εφαρμόστε τύπους όπως IFNA και VLOOKUP και βελτιστοποιήστε αποτελεσματικά τις διαδικασίες δεδομένων σας χωρίς να απαιτείται εγκατάσταση του Excel. ### [Τύποι άμεσου υπολογισμού στο Excel χρησιμοποιώντας Aspose.Cells για .NET: Ένας πλήρης οδηγός](./excel-direct-calculation-aspose-cells-dotnet) -Μάθετε πώς να εκτελείτε αποτελεσματικά άμεσους υπολογισμούς στο Excel με το Aspose.Cells για .NET. Αυτοματοποιήστε την επεξεργασία τύπων και βελτιώστε τη διαχείριση δεδομένων με δυνατότητες υπολογισμού κατ' απαίτηση. ### [Αναζήτηση τύπων Excel με Aspose.Cells για .NET](./excel-formula-search-aspose-cells-net) -Μάθετε πώς να αναζητάτε συγκεκριμένους τύπους σε βιβλία εργασίας του Excel χρησιμοποιώντας το Aspose.Cells για .NET. Αυτό το σεμινάριο καλύπτει την αντιστοίχιση μοτίβων, την τοποθεσία τύπων και τις τεχνικές εξαγωγής για την εύρεση τύπων σε φύλλα εργασίας. ### [Χειρισμός προειδοποιήσεων Excel σε .NET χρησιμοποιώντας Aspose.Cells Callbacks: Ένας πλήρης οδηγός](./excel-warning-handling-net-aspose-cells-callbacks) -Μάθετε πώς να διαχειρίζεστε τις προειδοποιήσεις του Excel με το Aspose.Cells για .NET. Υλοποιήστε το IWarningCallback και βελτιώστε τον χειρισμό σφαλμάτων της εφαρμογής σας για προβλήματα υπολογισμού τύπων και άλλα σενάρια προειδοποιήσεων. ### [Επέκταση του Excel με το Aspose.Cells: Καταχώρηση και κλήση συναρτήσεων που ορίζονται από τον χρήστη (UDF) στο .NET](./extend-excel-aspose-cells-register-call-udfs) -Μάθετε πώς να βελτιώνετε τα βιβλία εργασίας του Excel καταχωρώντας και καλώντας UDF χρησιμοποιώντας το Aspose.Cells για .NET. Κατακτήστε τις προσαρμοσμένες συναρτήσεις και ενισχύστε την αποτελεσματικότητα της επεξεργασίας δεδομένων σας με τις δικές σας ρουτίνες υπολογισμών. ### [Εύρεση και διαχείριση κελιών τύπων στο Excel χρησιμοποιώντας το Aspose.Cells για .NET](./find-formula-cells-in-excel-using-aspose-cells-net) -Μάθετε πώς να χρησιμοποιείτε το Aspose.Cells για .NET για να βρίσκετε αποτελεσματικά κελιά τύπων σε βιβλία εργασίας του Excel. Αυτός ο οδηγός καλύπτει τη ρύθμιση, τη χρήση και τη βελτιστοποίηση απόδοσης για τον εντοπισμό και τη διαχείριση κελιών που περιέχουν τύπους. ### [Υλοποίηση Προσαρμοσμένων Υπολογισμών στο Aspose.Cells για .NET: Ένας Πλήρης Οδηγός](./guide-implement-custom-calculations-aspose-cells-dotnet) -Μάθετε πώς να βελτιώσετε τους υπολογισμούς σας τύπου Excel με προσαρμοσμένη λογική χρησιμοποιώντας το Aspose.Cells για .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, την υλοποίηση και πρακτικές εφαρμογές για την επέκταση των δυνατοτήτων των τύπων. ### [Πώς να εφαρμόσετε προσαρμοσμένες συναρτήσεις στο Aspose.Cells για .NET: Ένας οδηγός βήμα προς βήμα](./implement-custom-functions-aspose-cells-net) -Μάθετε πώς να δημιουργείτε και να υλοποιείτε προσαρμοσμένες συναρτήσεις στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Βελτιώστε τα υπολογιστικά σας φύλλα με προσαρμοσμένους υπολογισμούς που επεκτείνονται πέρα από τις ενσωματωμένες συναρτήσεις του Excel. ### [Πώς να εφαρμόσετε τύπους ονομασμένης περιοχής σε .NET χρησιμοποιώντας το Aspose.Cells για αυτοματοποίηση Excel](./implement-named-range-formulas-net-aspose-cells) -Μάθετε πώς να αυτοματοποιείτε τύπους με ονομασμένες περιοχές σε μεταφρασμένες λύσεις Excel με το Aspose.Cells για .NET. Βελτιστοποιήστε τις ροές εργασίας σας και βελτιώστε την παραγωγικότητα με αναφορές τύπων χρησιμοποιώντας ονομασμένες περιοχές. ### [Παρακολούθηση Εξάρτησης Κελιών Master Excel Χρησιμοποιώντας Aspose.Cells .NET για Ακριβή Ανάλυση Δεδομένων](./master-cell-dependency-tracking-aspose-cells-net) -Μάθετε πώς να παρακολουθείτε και να διαχειρίζεστε τις εξαρτήσεις κελιών στο Excel με το Aspose.Cells .NET. Αυτός ο οδηγός παρέχει μια βήμα προς βήμα προσέγγιση για τη βελτίωση της ακρίβειας και της αποτελεσματικότητας των δεδομένων κατανοώντας τις σχέσεις μεταξύ τύπων. ### [Κύριος κοινόχρηστος τύπος στο Excel χρησιμοποιώντας το Aspose.Cells για .NET: Ένας πλήρης οδηγός](./master-shared-formulas-excel-aspose-cells-net) -Μάθετε πώς να υλοποιείτε κοινόχρηστους τύπους στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Αυτός ο οδηγός προσφέρει οδηγίες βήμα προς βήμα και επισημαίνει τα οφέλη της αυτοματοποίησης εργασιών του Excel με εφαρμογή τύπων βελτιστοποιημένης απόδοσης. ### [Κατανόηση τύπων πινάκων σε .NET με το Aspose.Cells: Ένας ολοκληρωμένος οδηγός](./mastering-aspose-cells-net-array-formulas) -Μάθετε πώς να εξοικειώνεστε με τους τύπους πινάκων χρησιμοποιώντας το Aspose.Cells για .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, την υλοποίηση και τις εφαρμογές στον πραγματικό κόσμο ισχυρών υπολογισμών πολλαπλών κελιών. ### [Πώς να ορίσετε γλώσσα σε αρχεία Excel χρησιμοποιώντας το Aspose.Cells .NET για πολυγλωσσική υποστήριξη](./specify-language-excel-aspose-cells-net) -Μάθετε πώς να καθορίζετε τη γλώσσα των αρχείων Excel χρησιμοποιώντας το Aspose.Cells .NET. Βελτιώστε την προσβασιμότητα και τη συμμόρφωση των εγγράφων με αυτόν τον αναλυτικό οδηγό για τη διεθνοποίηση των ρυθμίσεων τύπων. ### [Ενημέρωση τύπων Power Query του Excel με Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) -Μάθετε πώς να ενημερώνετε μέσω προγραμματισμού τύπους Power Query σε βιβλία εργασίας του Excel χρησιμοποιώντας το Aspose.Cells για .NET. Διαχείριση κύριας προέλευσης δεδομένων για δυναμικές αναφορές. -## Κατανόηση των τύπων τύπων του Excel - -Οι τύποι του Excel διατίθενται σε διάφορες μορφές, καθεμία από τις οποίες έχει μοναδικά χαρακτηριστικά που μπορεί να διαχειριστεί το Aspose.Cells: - -### Τυπικοί τύποι κυττάρων - -Αυτοί είναι οι πιο συνηθισμένοι τύποι που λειτουργούν σε μεμονωμένα κελιά: - -- **Αριθμητικοί Τύποι**Βασικοί υπολογισμοί όπως `=A1+B1` -- **Τύποι που βασίζονται σε συναρτήσεις**: Χρήση ενσωματωμένων συναρτήσεων όπως `=SUM(A1:A10)` -- **Λογικοί Τύποι**: Λογική υπό όρους με συναρτήσεις όπως `=IF(A1>10,"High","Low")` -- **Τύποι κειμένου**Χειρισμός κειμένου με συναρτήσεις όπως `=CONCATENATE(A1," ",B1)` - -### Τύποι που βασίζονται σε εύρος τιμών - -Αυτοί οι τύποι λειτουργούν με περιοχές κελιών: - -- **Τύποι Συνάθροισης**: Λειτουργίες όπως `=AVERAGE(A1:A100)` που επεξεργάζονται πολλαπλά κύτταρα -- **Τύποι αναζήτησης**Συναρτήσεις αναφοράς όπως `=VLOOKUP(E1,A1:B20,2,FALSE)` για ανάκτηση δεδομένων -- **Τύποι βάσεων δεδομένων**Εξειδικευμένες λειτουργίες όπως `=DSUM(A1:F100,"Amount",G1:H2)` για φιλτράρισμα και υπολογισμό - -### Τύποι πινάκων - -Οι τύποι πίνακα εκτελούν υπολογισμούς σε πολλαπλές τιμές ταυτόχρονα: - -- **Φόρμουλα συστοιχίας μονών κυψελών**: Επιστρέφει ένα αποτέλεσμα αλλά επεξεργάζεται πίνακες εσωτερικά -- **Φόρμουλα πολλαπλών κυψελών**: Συμπληρώνει πολλά κελιά με σχετικά αποτελέσματα -- **Δυναμικοί πίνακες**Σύγχρονοι τύποι του Excel που μεταδίδουν αυτόματα τα αποτελέσματα σε γειτονικά κελιά - -### Ονομασμένοι τύποι - -Αυτοί οι τύποι χρησιμοποιούν ονομασμένα εύρη ή καθορισμένα ονόματα: - -- **Αναφορές ονομασμένης περιοχής**: Χρήση καθορισμένων ονομάτων όπως `=SUM(SalesData)` -- **Δομημένες Αναφορές**: Αναφορές σε πίνακες όπως `=SUM(Table1[Amount])` -- **Δυναμικά ονομασμένα εύρη**: Τύποι που προσαρμόζονται αυτόματα με το μέγεθος των δεδομένων - -## Βέλτιστες πρακτικές για τη διαχείριση τύπων - -### Βελτιστοποίηση απόδοσης - -Για να διασφαλίσετε την αποτελεσματική διαχείριση του τύπου: - -1. **Ρύθμιση τύπου παρτίδας**: Εφαρμογή τύπων σε εύρη αντί για κελί προς κελί -2. **Υπολογισμός Επιλεκτικά**Χρησιμοποιήστε στοχευμένο υπολογισμό όταν είναι δυνατόν αντί για πλήρη επανυπολογισμό -3. **Ελαχιστοποίηση Πτητικών Συναρτήσεων**Περιορισμός χρήσης συναρτήσεων όπως NOW() ή RAND() που ενεργοποιούν επανυπολογισμό -4. **Χρήση κοινόχρηστων τύπων**Αξιοποιήστε τις δυνατότητες κοινόχρηστων τύπων για αποτελεσματικότητα στη μνήμη - -### Αξιοπιστία τύπου - -Για ισχυρή εφαρμογή τύπου: - -1. **Χειρισμός σφαλμάτων**: Υλοποίηση χειρισμού σφαλμάτων τύπου με IFERROR ή παρόμοιες συναρτήσεις -2. **Ανάλυση Εξάρτησης Κυττάρων**Κατανοήστε τις εξαρτήσεις τύπων για να αποφύγετε τις κυκλικές αναφορές -3. **Έλεγχος τύπων**: Επαλήθευση λογικής τύπου πριν από την ανάπτυξη -4. **Απόδειξη με έγγραφα**Διατήρηση σαφούς τεκμηρίωσης σύνθετων δομών τύπων - -Κατακτώντας αυτές τις δυνατότητες τύπων με το Aspose.Cells για .NET, μπορείτε να δημιουργήσετε εξελιγμένες μηχανές υπολογισμών στα υπολογιστικά σας φύλλα που παρέχουν ακριβή, δυναμικά αποτελέσματα χωρίς να απαιτείται εγκατάσταση του Excel. +### [Πώς να χρησιμοποιήσετε Lambda σε C# με τύπους Excel – Πλήρης οδηγός](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/greek/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..a38f469cb4 --- /dev/null +++ b/cells/greek/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Πώς να χρησιμοποιήσετε λήμμα (lambda) στο C# για εργασία με τύπους του + Excel. Μάθετε να γράφετε τύπο σε κελί, να μετατρέπετε περιοχή σε πίνακα, να εμφανίζετε + τον πίνακα στην κονσόλα και να υπολογίζετε τη συνεφαπτομένη στο Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: el +og_description: Πώς να χρησιμοποιήσετε το lambda σε C# για να χειριστείτε τύπους Excel, + να μετατρέψετε περιοχή σε πίνακα, να γράψετε τύπο σε κελί, να εμφανίσετε τον πίνακα + στην κονσόλα και να υπολογίσετε τη συνεφαπτομένη στο Excel. +og_title: Πώς να χρησιμοποιήσετε το Lambda σε C# με τύπους Excel – Βήμα προς βήμα +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Πώς να χρησιμοποιήσετε το Lambda στη C# με τύπους Excel – Πλήρης οδηγός +url: /el/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Χρησιμοποιήσετε Lambda σε C# με Τύπους Excel – Πλήρης Οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να χρησιμοποιήσετε lambda** όταν αυτοματοποιείτε το Excel από C#; Δεν είστε μόνοι. Πολλοί προγραμματιστές συναντούν δυσκολίες όταν πρέπει να συνδυάσουν τη δύναμη των νέων δυναμικών συναρτήσεων πίνακα του Excel με τη δυνατότητα `LAMBDA` του C#. Τα καλά νέα; Είναι στην πραγματικότητα αρκετά απλό μόλις δείτε πώς ταιριάζουν τα κομμάτια. + +Σε αυτό το tutorial θα περάσουμε από **γραφή τύπου σε κελί**, **μετατροπή περιοχής σε πίνακα**, **εμφάνιση του πίνακα στην κονσόλα**, και ακόμη **υπολογισμό της συνεφαπτομένης στο Excel**—όλα ενώ σας δείχνουμε **πώς να χρησιμοποιήσετε lambda** μέσα σε κλήση `REDUCE`. Στο τέλος θα έχετε ένα εκτελέσιμο απόσπασμα που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο .NET που αναφέρεται στο Aspose.Cells (ή σε παρόμοια βιβλιοθήκη). + +--- + +## Τι Θα Μάθετε + +- Πώς να **γράψετε τύπο σε κελί** χρησιμοποιώντας C#. +- Πώς να **μετατρέψετε περιοχή σε πίνακα** με τη συνάρτηση `EXPAND`. +- Πώς να **εμφανίσετε τον πίνακα στην κονσόλα** μετά τον υπολογισμό. +- Πώς να **υπολογίσετε τη συνεφαπτομένη στο Excel** χρησιμοποιώντας `COT` και `COTH`. +- Η ακριβής σύνταξη για **πώς να χρησιμοποιήσετε lambda** μέσα στη συνάρτηση `REDUCE` του Excel από C#. + +> **Προαπαιτούμενο:** Χρειάζεστε μια πρόσφατη έκδοση του .NET (Core 6+ ή .NET Framework 4.7+) και τη βιβλιοθήκη Aspose.Cells for .NET εγκατεστημένη μέσω NuGet. + +--- + +## Βήμα 1: Δημιουργία του Workbook και Γραφή Τύπου σε Κελί + +Το πρώτο που κάνουμε είναι να δημιουργήσουμε ένα νέο workbook και να πάρουμε το πρώτο φύλλο εργασίας. Στη συνέχεια **γράφουμε έναν τύπο σε κελί** – σε αυτήν την περίπτωση το `A1` θα κρατήσει το αποτέλεσμα μιας κλήσης `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Γιατί είναι σημαντικό:** Η γραφή του τύπου απευθείας από τον κώδικα σημαίνει ότι μπορείτε να δημιουργήσετε σύνθετα υπολογιστικά φύλλα εν κινήσει χωρίς να ανοίξετε ποτέ το Excel. Επίσης προετοιμάζει το επόμενο βήμα, όπου **μετατρέπουμε την περιοχή σε πίνακα**. + +--- + +## Βήμα 2: Μετατροπή Περιοχής σε Πίνακα με EXPAND + +Η `EXPAND` είναι ο τρόπος του Excel να μετατρέπει μια μικρή περιοχή σε μεγαλύτερο πίνακα. Τοποθετώντας τον τύπο στο `A1`, το Excel θα «χύσει» ένα μπλοκ 4 × 5 ξεκινώντας από αυτό το κελί. Από το C# δεν χρειάζεται να αντιγράψουμε τις τιμές χειροκίνητα – η βιβλιοθήκη θα κάνει τη βαριά δουλειά όταν καλέσουμε `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Πώς να χρησιμοποιήσετε lambda:** Δεν έχουμε φτάσει ακόμη, αλλά μείνετε συντονισμένοι. Πρώτα χρειάζεται τα δεδομένα στο φύλλο, μετά θα τα μειώσουμε με μια lambda. + +--- + +## Βήμα 3: Χρήση LAMBDA Μέσα στο REDUCE – Ο Πυρήνας του “Πώς να Χρησιμοποιήσετε Lambda” + +Το Excel 365 εισήγαγε τη `REDUCE`, η οποία δέχεται μια **αρχική τιμή**, μια **περιοχή**, και ένα **LAMBDA** που καθορίζει πώς θα συνδυάσει κάθε στοιχείο. Από το C# απλώς ορίζουμε το string του τύπου· η lambda ζει μέσα στον τύπο του Excel, όχι στον κώδικα C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Εξήγηση:** +- `0` είναι ο αρχικός συσσωρευτής (`acc`). +- `A1:D4` είναι η περιοχή που θέλουμε να επεξεργαστούμε (οι πρώτες τέσσερις στήλες του «spill»). +- `LAMBDA(acc, x, acc + x)` λέει στο Excel να προσθέσει κάθε κελί (`x`) στον συσσωρευτή. + +Αυτή είναι η ουσία του **πώς να χρησιμοποιήσετε lambda** για συγκέντρωση σε ένα υπολογιστικό φύλλο. + +--- + +## Βήμα 4: Υπολογισμός Συνεφαπτομένης στο Excel – Από Μοίρες σε Υπερβολικές + +Αν χρειάζεστε τριγωνομετρικά αποτελέσματα, οι συναρτήσεις `COT` και `COTH` του Excel είναι πολύ εύχρηστες. Θα τις τοποθετήσουμε στα `G1` και `G2` αντίστοιχα. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Γιατί είναι χρήσιμο:** Η γνώση του **υπολογισμού της συνεφαπτομένης στο Excel** μπορεί να σας εξοικονομήσει χρόνο από το να γράψετε προσαρμοσμένο μαθηματικό κώδικα, ειδικά όταν το βιβλίο εργασίας θα μοιραστεί με μη‑προγραμματιστές. + +--- + +## Βήμα 5: Εξαναγκασμός Υπολογισμού και Ανάκτηση του Επεκταμένου Πίνακα + +Τώρα λέμε στο workbook να αξιολογήσει κάθε τύπο, μετά εξάγουμε τον «spill» πίνακα από το `A1`. Εδώ είναι που **εμφανίζουμε τον πίνακα στην κονσόλα**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Τι θα δείτε:** +- Ένα ωραία μορφοποιημένο πίνακα 4 × 5 εκτυπωμένο γραμμή‑γραμμή. +- Το άθροισμα που υπολογίστηκε από τη lambda του `REDUCE`. +- Τις δύο τιμές της συνεφαπτομένης. + +Αυτό ολοκληρώνει τη ροή από **γραφή τύπου σε κελί** μέχρι **εμφάνιση του πίνακα στην κονσόλα**. + +--- + +## Πλήρες Παράδειγμα (Έτοιμο για Αντιγραφή‑Επικόλληση) + +Παρακάτω είναι ολόκληρο το πρόγραμμα που μπορείτε να ενσωματώσετε σε μια εφαρμογή console. Θυμηθείτε να προσθέσετε πρώτα το πακέτο NuGet `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Αναμενόμενη έξοδος στην κονσόλα (τιμές ενδέχεται να διαφέρουν ανάλογα με το προεπιλεγμένο περιεχόμενο των B1:C2, που είναι 0 εξ ορισμού):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Μη διστάσετε να γεμίσετε τα `B1:C2` με τους δικούς σας αριθμούς πριν τρέξετε – ο πίνακας θα αντικατοπτρίζει αυτές τις τιμές. + +--- + +## Pro Συμβουλές & Συνηθισμένα Πιθανά Σφάλματα + +- **Pro tip:** Αν θέλετε η «spill» περιοχή να ξεκινά αλλού, απλώς αλλάξτε το κελί-στόχο (`A1`). Η συνάρτηση `EXPAND` σέβεται το άγκυρο. +- **Προσοχή σε:** Κενά κελιά στην πηγή γίνονται `0` στον «spill» πίνακα, κάτι που μπορεί να επηρεάσει το άθροισμα του `REDUCE`. +- **Edge case:** Όταν το workbook περιέχει τύπους που εξαρτώνται από εθελοντικές συναρτήσεις (π.χ., `NOW()`), καλέστε `workbook.Calculate()` μετά τον ορισμό όλων των τύπων για να διασφαλίσετε ότι όλα είναι ενημερωμένα. +- **Performance note:** Για τεράστιες «spills», σκεφτείτε να περιορίσετε το μέγεθος στην κλήση `EXPAND`; διαφορετικά μπορεί να δεσμευτεί περισσότερη μνήμη από ό,τι χρειάζεται. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/number-and-display-formats-in-excel/_index.md b/cells/greek/net/number-and-display-formats-in-excel/_index.md index a5273a3335..6ec1c12398 100644 --- a/cells/greek/net/number-and-display-formats-in-excel/_index.md +++ b/cells/greek/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Αυτοματοποιήστε τη μορφοποίηση αριθμών στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Μάθετε πώς να εφαρμόζετε μορφές ημερομηνίας, ποσοστού και νομίσματος μέσω προγραμματισμού. ### [Προσαρμογή μορφών εμφάνισης με αριθμούς που ορίζονται από τον χρήστη](./customizing-display-formats-with-user-defined-numbers/) Μάθετε πώς να προσαρμόζετε τις μορφές εμφάνισης με το Aspose.Cells για .NET. Μορφοποιήστε ημερομηνίες, ποσοστά και νομίσματα χρησιμοποιώντας αυτόν τον αναλυτικό οδηγό. +### [Πώς να εξάγετε το Excel με μορφοποίηση – Διατήρηση μορφής αριθμού](./how-to-export-excel-with-formatting-preserve-number-format/) +Μάθετε πώς να εξάγετε αρχεία Excel διατηρώντας τις μορφές αριθμών και τη μορφοποίηση με το Aspose.Cells για .NET. +### [Μορφοποίηση ημερομηνίας/ώρας σε ISO σε C# – Πλήρης Οδηγός](./format-datetime-to-iso-in-c-complete-guide/) +Μάθετε πώς να μετατρέψετε ημερομηνίες σε μορφή ISO χρησιμοποιώντας C# με Aspose.Cells για .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/greek/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..d536196656 --- /dev/null +++ b/cells/greek/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Μάθετε πώς να μορφοποιήσετε την ημερομηνία/ώρα σε ISO, εξάγοντας την + ημερομηνία από το Excel και εμφανίζοντας την ημερομηνία ISO χρησιμοποιώντας το Aspose.Cells + σε C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: el +og_description: Η μορφοποίηση ημερομηνίας/ώρας σε ISO έγινε εύκολη. Αυτός ο οδηγός + δείχνει πώς να εξάγετε την ημερομηνία από το Excel και να εμφανίσετε την ημερομηνία + ISO με το Aspose.Cells. +og_title: Μορφοποίηση datetime σε ISO σε C# – Βήμα‑βήμα Εκπαιδευτικό Σεμινάριο +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Μορφοποίηση datetime σε ISO σε C# – Πλήρης Οδηγός +url: /el/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Μορφοποίηση datetime σε iso σε C# – Πλήρης Οδηγός + +Έχετε χρειαστεί ποτέ να **format datetime to iso** αλλά η πηγή βρίσκεται μέσα σε ένα βιβλίο εργασίας Excel; Ίσως το κελί περιέχει μια ιαπωνική εποχή όπως “令和3年5月1日” και αναρωτιέστε πώς να το μετατρέψετε σε μια καθαρή συμβολοσειρά `2021‑05‑01`. Δεν είστε μόνοι. Σε αυτόν τον οδηγό θα **extract date from excel**, θα αναλύσουμε την ιαπωνική εποχή, και στη συνέχεια θα **display iso date** στην κονσόλα—όλα με μερικές γραμμές C# και Aspose.Cells. + +Θα περάσουμε από όλα όσα χρειάζεστε: το απαιτούμενο πακέτο NuGet, τον ακριβή κώδικα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε, γιατί κάθε γραμμή είναι σημαντική, και μια σειρά συμβουλών για σενάρια άκρων. Στο τέλος θα έχετε ένα επαναχρησιμοποιήσιμο απόσπασμα που μορφοποιεί datetime σε iso, ανεξάρτητα από το πόσο ιδιόρρυθμη φαίνεται η αρχική τιμή στο Excel. + +## Τι Θα Χρειαστείτε + +- .NET 6.0 ή νεότερο (ο κώδικας μεταγλωττίζεται επίσης σε .NET Framework 4.6+) +- Visual Studio 2022 (ή οποιονδήποτε επεξεργαστή προτιμάτε) +- **Aspose.Cells for .NET** πακέτο NuGet – `Install-Package Aspose.Cells` +- Ένα αρχείο Excel (ή ένα νέο βιβλίο εργασίας) που περιέχει μια ημερομηνία σε μορφή ιαπωνικής εποχής + +Αυτό είναι όλο. Χωρίς επιπλέον βιβλιοθήκες, χωρίς COM interop, μόνο μια ενιαία, καλά τεκμηριωμένη μέθοδος. + +## Βήμα 1: Δημιουργία Workbook και Εισαγωγή Ημερομηνίας σε Ιαπωνική Εποχή + +Πρώτα, χρειαζόμαστε ένα workbook για να δουλέψουμε. Αν έχετε ήδη ένα αρχείο Excel, μπορείτε να το φορτώσετε με `new Workbook("path")`. Για αυτό το παράδειγμα θα δημιουργήσουμε ένα νέο workbook στη μνήμη και θα τοποθετήσουμε μια συμβολοσειρά ιαπωνικής εποχής στο κελί **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Γιατί το κάνουμε:** Το Aspose.Cells αντιμετωπίζει τις τιμές των κελιών ως συμβολοσειρές από προεπιλογή. Εισάγοντας το ακατέργαστο κείμενο της εποχής προσομοιώνουμε ένα πραγματικό σενάριο όπου ένας Ιάπωνας πελάτης έχει εισάγει ημερομηνίες στο δικό του ημερολόγιο. + +## Βήμα 2: Ενεργοποίηση Ανάλυσης Ιαπωνικής Εποχής και Εξαγωγή Ημερομηνίας + +Το Aspose.Cells μπορεί αυτόματα να μεταφράσει συμβολοσειρές ιαπωνικής εποχής σε αντικείμενα .NET `DateTime`—αρκεί να του το υποδείξετε. Η σημαία `DateTimeParseOptions.EnableJapaneseEra` κάνει το σκληρό έργο. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Συμβουλή:** Αν ξεχάσετε την επιλογή `EnableJapaneseEra`, η βιβλιοθήκη θα επιστρέψει την αρχική συμβολοσειρά και η επόμενη μετατροπή σας θα αποτύχει. Πάντα ελέγχετε το `parsed.Type` αν διαχειρίζεστε μεικτό περιεχόμενο. + +## Βήμα 3: Μετατροπή του Αναλυμένου DateTime σε ISO 8601 + +Τώρα που έχουμε ένα έγκυρο `DateTime`, η μετατροπή του σε συμβολοσειρά μορφοποιημένη σε ISO είναι παιχνιδάκι. Το μοτίβο `"yyyy-MM-dd"` συμμορφώνεται με το τμήμα ημερομηνίας του ISO 8601, το οποίο είναι αυτό που απαιτούν τα περισσότερα APIs. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Τρέχοντας το πρόγραμμα εμφανίζει: + +``` +ISO date: 2021-05-01 +``` + +Αυτή είναι η **display iso date** που ζητούσατε. + +## Πλήρες, Εκτελέσιμο Παράδειγμα + +Παρακάτω είναι το πλήρες μπλοκ κώδικα που μπορείτε να αντιγράψετε απευθείας σε ένα έργο κονσόλας. Χωρίς κρυφές εξαρτήσεις, χωρίς επιπλέον ρυθμίσεις. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Αναμενόμενη έξοδος:** `ISO date: 2021-05-01` + +## Ανάλυση Βήμα‑βήμα (Γιατί Κάθε Τμήμα Είναι Σημαντικό) + +| Βήμα | Τι Συμβαίνει | Γιατί Είναι Σημαντικό | +|------|--------------|--------------------| +| **Create workbook** | Αρχικοποιεί ένα Excel container στη μνήμη. | Σας παρέχει ένα sandbox για δοκιμές χωρίς να αγγίξετε το σύστημα αρχείων. | +| **PutValue** | Αποθηκεύει τη ακατέργαστη συμβολοσειρά ιαπωνικής εποχής στο **A1**. | Μιμείται πραγματική εισαγωγή δεδομένων· εξασφαλίζει ότι ο αναλυτής βλέπει το ακριβές κείμενο. | +| **GetValue with `EnableJapaneseEra`** | Μετατρέπει τη συμβολοσειρά της εποχής σε .NET `DateTime`. | Διαχειρίζεται αυτόματα τη μετατροπή ημερολογίου—χωρίς ανάγκη χειροκίνητων πινάκων αναζήτησης. | +| **`ToString("yyyy-MM-dd")`** | Μορφοποιεί το `DateTime` σε ISO 8601. | Εγγυάται μια πολιτισμικά ανεξάρτητη, ταξινομήσιμη συμβολοσειρά ημερομηνίας που δέχεται από REST APIs, βάσεις δεδομένων κ.λπ. | +| **Console.WriteLine** | Εμφανίζει την τελική ISO ημερομηνία. | Επιβεβαιώνει ότι ολόκληρη η αλυσίδα λειτουργεί από άκρη σε άκρη. | + +## Διαχείριση Συνηθισμένων Παραλλαγών + +### 1. Διαφορετικές Θέσεις Κελιών + +Αν η ημερομηνία σας βρίσκεται σε **B2** ή σε μια ονομαστική περιοχή, απλώς αντικαταστήστε το `"A1"` με τη σωστή διεύθυνση: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Πολλαπλές Ημερομηνίες σε Στήλη + +Όταν χρειάζεται να **extract date from excel** για πολλές γραμμές, κάντε βρόχο μέσω του χρησιμοποιημένου εύρους: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Εναλλακτική για Μη‑Εποχικές Ημερομηνίες + +Αν ένα κελί περιέχει ήδη μια τυπική συμβολοσειρά ημερομηνίας, ο αναλυτής λειτουργεί ακόμη, αλλά ίσως θέλετε ένα δίχτυ ασφαλείας: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Η σημαία `TryParse` αποτρέπει εξαιρέσεις και επιστρέφει την αρχική τιμή αν η μετατροπή αποτύχει. + +### 4. Στοιχείο Ώρας + +Αν χρειάζεστε επίσης το μέρος της ώρας, χρησιμοποιήστε `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Αυτό δίνει ένα πλήρες χρονικό σήμα ISO 8601 (`2021-05-01T00:00:00`). + +## Οπτική Βοήθεια + +![παράδειγμα format datetime to iso](image.png "Παράδειγμα μορφοποίησης datetime σε iso σε C#") + +*Alt text:* *παράδειγμα format datetime to iso που δείχνει την έξοδο της κονσόλας* + +## Συχνές Ερωτήσεις + +- **Μπορώ να το χρησιμοποιήσω με αρχεία .xls;** + Ναι. Το Aspose.Cells υποστηρίζει `.xls`, `.xlsx`, `.csv` και πολλές άλλες μορφές αμέσως. + +- **Τι γίνεται αν το workbook είναι προστατευμένο με κωδικό;** + Φορτώστε το με `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Είναι η μορφή ISO εξαρτημένη από την τοπική ρύθμιση;** + Όχι. Το μοτίβο `"yyyy-MM-dd"` είναι ανεξάρτητο από την κουλτούρα, εγγυώμενο το ίδιο αποτέλεσμα σε οποιονδήποτε υπολογιστή. + +- **Λειτουργεί αυτό σε .NET Core;** + Απόλυτα—το Aspose.Cells είναι συμβατό με .NET Standard 2.0. + +## Συμπέρασμα + +Συζητήσαμε πώς να **format datetime to iso** με **extracting date from excel**, αναλύοντας συμβολοσειρές ιαπωνικής εποχής, και τελικά **displaying iso date** στην κονσόλα. Τα βασικά βήματα—δημιουργία workbook, εγγραφή ή φόρτωση του κειμένου της εποχής, ενεργοποίηση ανάλυσης ιαπωνικής εποχής, και μορφοποίηση με `ToString("yyyy-MM-dd")`—είναι όλα όσα χρειάζεστε για τις περισσότερες περιπτώσεις. + +Επόμενα, ίσως θελήσετε να: + +- Εγγραφή των ISO ημερομηνιών πίσω σε άλλη στήλη για επεξεργασία downstream. +- Εξαγωγή του μετασχηματισμένου workbook σε CSV για μαζική εισαγωγή. +- Συνδυασμός αυτής της λογικής με ένα web API που δέχεται μεταφορτώσεις Excel και επιστρέφει ISO ημερομηνίες κωδικοποιημένες σε JSON. + +Μη διστάσετε να πειραματιστείτε με διαφορετικές μορφές ημερομηνίας, ζώνες ώρας, ή ακόμη και προσαρμοσμένα ημερολόγια. Η ευελιξία του Aspose.Cells σημαίνει ότι σπάνια θα συναντήσετε εμπόδια. + +Καλό προγραμματισμό, και εύχομαι όλες οι ημερομηνίες σας να είναι τέλεια συμβατές με ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/greek/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..6ddbc5d8f7 --- /dev/null +++ b/cells/greek/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-22 +description: Πώς να εξάγετε το Excel με μορφοποίηση και να διατηρήσετε τη μορφή αριθμών. + Μάθετε να μετατρέπετε το εύρος του Excel, να λαμβάνετε το αποτέλεσμα του τύπου και + να εξάγετε το Excel με μορφοποίηση χρησιμοποιώντας το Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: el +og_description: Πώς να εξάγετε το Excel με μορφοποίηση και να διατηρήσετε τη μορφή + αριθμών. Οδηγός βήμα‑βήμα για τη μετατροπή περιοχής Excel, την απόκτηση του αποτελέσματος + του τύπου και την εξαγωγή του Excel με μορφοποίηση σε C#. +og_title: Πώς να εξάγετε το Excel με μορφοποίηση – Διατηρήστε τη μορφή αριθμών +tags: +- C# +- Aspose.Cells +- Excel automation +title: Πώς να εξάγετε το Excel με μορφοποίηση – Διατηρήστε τη μορφή αριθμών +url: /el/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Εξάγετε το Excel με Μορφοποίηση – Διατήρηση Μορφής Αριθμού + +Έχετε αναρωτηθεί ποτέ **πώς να εξάγετε δεδομένα Excel** διατηρώντας την εμφάνιση κάθε κελιού ακριβώς όπως τη βλέπετε στο βιβλίο εργασίας; Ίσως χρειάζεται να στείλετε μια αναφορά σε πελάτη, να τροφοδοτήσετε έναν έλεγχο πλέγματος, ή απλώς να αποθηκεύσετε τις τιμές σε μια βάση δεδομένων. Το πρόβλημα συνήθως είναι η απώλεια μορφοποίησης αριθμών ή οι τύποι που μετατρέπονται σε ακατέργαστες συμβολοσειρές. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα ένα πλήρες, έτοιμο προς εκτέλεση παράδειγμα C# που **διατηρεί τη μορφή αριθμού**, **μετατρέπει μια περιοχή Excel** σε `DataTable`, **παίρνει το αποτέλεσμα του τύπου**, και τελικά **εξάγει το Excel με μορφοποίηση** χρησιμοποιώντας το Aspose.Cells. Στο τέλος θα έχετε μια μοναδική μέθοδο που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο και να καλέσετε με μια αναφορά φύλλου εργασίας. + +> **Γρήγορη προεπισκόπηση:** ο κώδικας δημιουργεί ένα βιβλίο εργασίας, γράφει μια τιμή και έναν τύπο, λέει στο Aspose.Cells να εξάγει τα κελιά ως μορφοποιημένες συμβολοσειρές, και εκτυπώνει `123.456 | 246.912` – ακριβώς ό,τι θα περιμένατε να δείτε στο Excel. + +--- + +## Τι Θα Χρειαστείτε + +- **Aspose.Cells for .NET** (η δωρεάν δοκιμαστική έκδοση λειτουργεί καλά για μάθηση) +- .NET 6.0 ή νεότερο (το API είναι το ίδιο στο .NET Framework) +- Ένα βασικό περιβάλλον ανάπτυξης C# (Visual Studio, VS Code, Rider… όπως προτιμάτε) + +Δεν απαιτούνται επιπλέον πακέτα NuGet εκτός από το Aspose.Cells. Αν δεν το έχετε εγκαταστήσει ακόμη, εκτελέστε: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Βήμα 1 – Δημιουργία Βιβλίου Εργασίας και Εγγραφή Τιμών (συμπεριλαμβανομένου τύπου) + +Αρχικά δημιουργούμε ένα νέο βιβλίο εργασίας και τοποθετούμε μια αριθμητική τιμή στο **A1**. Στη συνέχεια προσθέτουμε έναν απλό τύπο στο **B1** που πολλαπλασιάζει το πρώτο κελί με το δύο. Αυτό θέτει το σκηνικό για την επίδειξη του **get formula result** αργότερα. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Γιατί είναι σημαντικό:** +- `PutValue` αποθηκεύει τον ακατέργαστο αριθμό, ενώ `PutFormula` αποθηκεύει τον υπολογισμό. +- Το Aspose.Cells διατηρεί τον τύπο **ζωντανό**, έτσι όταν αργότερα ζητήσουμε την τιμή του κελιού θα πάρουμε πραγματικά `246.912`, όχι τη συμβολοσειρά `"=A1*2"`. + +--- + +## Βήμα 2 – Εντολή στο Aspose.Cells να Εξάγει Τιμές ως Μορφοποιημένες Συμβολοσειρές + +Αν απλώς καλέσετε το `ExportDataTable` με τις προεπιλεγμένες ρυθμίσεις, τα αριθμητικά κελιά θα επιστραφούν ως οι υποκείμενες τιμές `double`. Αυτό αφαιρεί τυχόν διαχωριστικά χιλιάδων, σύμβολα νομίσματος ή προσαρμοσμένα δεκαδικά που έχετε ορίσει. Η κλάση `ExportTableOptions` μας επιτρέπει να **διατηρήσουμε τη μορφή αριθμού** και να **εξάγουμε ως συμβολοσειρά**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Κύριο σημείο:** `ExportNumberFormat = true` είναι η σημαία που κάνει τη **διατήρηση μορφής αριθμού** λειτουργική. Χωρίς αυτήν θα δείτε `"123.456"` και `"246.912"` ως ακατέργαστους αριθμούς, κάτι που μπορεί να φαίνεται εντάξει στον κώδικα αλλά όχι όταν επικολλάτε τα δεδομένα σε UI που αναμένει την ίδια μορφοποίηση όπως το Excel. + +--- + +## Βήμα 3 – Εκτύπωση των Εξαγόμενων Δεδομένων (Επαλήθευση) + +Τώρα που έχουμε ένα `DataTable` γεμάτο μορφοποιημένες συμβολοσειρές, ας εκτυπώσουμε το περιεχόμενό του στην κονσόλα. Αυτό επίσης δείχνει ότι καταφέραμε να **get formula result** χωρίς να αξιολογήσουμε τον τύπο εμείς. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Παρατηρήστε πώς η δεύτερη στήλη εμφανίζει το **αποτέλεσμα του τύπου**, όχι το κείμενο του τύπου. Αυτό είναι ακριβώς ό,τι χρειάζεστε όταν **εξάγετε Excel με μορφοποίηση** για επεξεργασία σε επόμενα στάδια. + +--- + +## Βήμα 4 – Μετατροπή Μεγαλύτερων Περιοχών Excel (Προαιρετικό) + +Το παραπάνω παράδειγμα διαχειρίζεται ένα μικρό τμήμα `A1:B1`, αλλά σε πραγματικές συνθήκες συχνά χρειάζεται η εξαγωγή ολόκληρων πινάκων. Η ίδια μέθοδος λειτουργεί για οποιοδήποτε ορθογώνιο μπλοκ – απλώς προσαρμόστε τις παραμέτρους `firstRow`, `firstColumn`, `totalRows` και `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Συμβουλή:** Αν το φύλλο σας έχει ήδη μια γραμμή κεφαλίδας, ορίστε `includeColumnNames` σε `true`. Το Aspose.Cells θα χρησιμοποιήσει την πρώτη γραμμή της περιοχής ως ονόματα στηλών, κάτι που είναι χρήσιμο όταν αργότερα συνδέσετε το `DataTable` με ένα UI grid. + +--- + +## Βήμα 5 – Συνηθισμένα Πιθανά Σφάλματα & Πώς να τα Αποφύγετε + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Οι αριθμοί χάνουν κόμματα ή σύμβολα νομίσματος** | `ExportAsString` είναι `false` ή λείπει το `ExportNumberFormat` | Ορίστε και τα δύο `ExportAsString = true` **και** `ExportNumberFormat = true`. | +| **Τα κελιά τύπου επιστρέφουν το κείμενο του τύπου** | Δεν κάλεσατε το `CalculateFormula` πριν την εξαγωγή (απαιτείται μόνο αν το βιβλίο εργασίας δεν είναι σε auto‑calculate) | Ενεργοποιήστε το auto‑calculate (`workbook.CalculateFormula()`) ή βασιστείτε στο `ExportAsString` που αναγκάζει την αξιολόγηση. | +| **Οι κεφαλίδες εμφανίζονται ως γραμμές δεδομένων** | `includeColumnNames` είναι `false` ενώ η περιοχή σας περιλαμβάνει γραμμή κεφαλίδας | Ορίστε `includeColumnNames = true` για να θεωρήσετε την πρώτη γραμμή ως ονόματα στηλών. | +| **Οι μεγάλες περιοχές προκαλούν πίεση μνήμης** | Η εξαγωγή ολόκληρου του φύλλου ταυτόχρονα φορτώνει όλα στη μνήμη | Εξάγετε σε τμήματα (π.χ., 500 γραμμές τη φορά) και συγχωνεύστε τα `DataTable` αν χρειαστεί. | + +--- + +## Βήμα 6 – Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑Επικόλληση) + +Παρακάτω βρίσκεται ολόκληρο το πρόγραμμα, από τις δηλώσεις `using` μέχρι τη `Main`. Επικολλήστε το σε μια εφαρμογή console και πατήστε **F5** – θα δείτε αμέσως την μορφοποιημένη έξοδο. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Αναμενόμενη έξοδος** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Αυτή είναι ολόκληρη η ροή εργασίας **πώς να εξάγετε excel**, με τη μορφοποίηση αμετάβλητη, τα αποτελέσματα των τύπων αξιολογημένα, και ένα καθαρό `DataTable` έτοιμο για οποιονδήποτε καταναλωτή .NET. + +## Συμπέρασμα + +Καλύψαμε όλα όσα χρειάζεται να γνωρίζετε σχετικά με το **πώς να εξάγετε δεδομένα Excel** ενώ **διατηρείτε τη μορφή αριθμού**, **μετατρέπετε μια περιοχή Excel** σε `DataTable`, και **παίρνετε τα αποτελέσματα των τύπων** χωρίς πρόσθετη ανάλυση. Το κλειδί είναι η διαμόρφωση `ExportTableOptions` – μόλις ορίσετε `ExportAsString` και `ExportNumberFormat` σε `true`, το Aspose.Cells κάνει τη σκληρή δουλειά για εσάς. + +Από εδώ μπορείτε: + +- Συνδέστε το `DataTable` σε ένα WPF `DataGrid` ή σε μια προβολή ASP.NET MVC. +- Γράψτε τον πίνακα σε αρχείο CSV διατηρώντας την ακριβή οπτική αναπαράσταση. +- Επεκτείνετε την προσέγγιση σε πολλαπλά φύλλα ή δυναμικές περιοχές. + +Μη διστάσετε να πειραματιστείτε με διαφορετικές μορφές (νόμισμα, ποσοστά) και μεγαλύτερα τμήματα δεδομένων. Αν αντιμετωπίσετε οποιοδήποτε πρόβλημα, επιστρέψτε στον πίνακα **συνηθισμένων παγίδων** – καλύπτει τα πιο συχνά εμπόδια όταν **εξάγετε excel με μορφοποίηση**. + +Καλή προγραμματιστική δουλειά, και εύχομαι τα εξαγόμενα φύλλα σας να είναι πάντα τόσο καλοσχεδιασμένα όσο τα πρωτότυπα! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/greek/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..e39890e4f1 --- /dev/null +++ b/cells/greek/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-22 +description: Μάθετε πώς να αντιγράψετε έναν πίνακα Pivot σε C# χρησιμοποιώντας το + Aspose.Cells. Αυτός ο οδηγός δείχνει επίσης πώς να αντιγράψετε γραμμές και να φορτώσετε + ένα βιβλίο εργασίας Excel σε C# για αδιάλειπτη αυτοματοποίηση του Excel με αντιγραφή + γραμμών. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: el +og_description: Πώς να αντιγράψετε έναν Pivot στο C#; Ακολουθήστε αυτόν τον σύντομο + οδηγό για να φορτώσετε ένα βιβλίο εργασίας Excel σε C#, να αντιγράψετε γραμμές και + να κυριαρχήσετε στην αυτοματοποίηση του Excel με αντιγραφή γραμμών. +og_title: Πώς να αντιγράψετε το Pivot σε C# – Πλήρης οδηγός +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Πώς να δημιουργήσετε αντίγραφο του Pivot σε C# – Πλήρης οδηγός βήμα‑βήμα +url: /el/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Αντιγράψετε ένα Pivot σε C# – Πλήρης Οδηγός Βήμα‑Βήμα + +Έχετε αναρωτηθεί ποτέ **πώς να αντιγράψετε pivot** πίνακες προγραμματιστικά χωρίς να τους σύρετε χειροκίνητα στο Excel; Δεν είστε ο μόνος. Σε πολλές αλυσίδες αναφορών απαιτείται η ίδια διάταξη pivot σε ένα νέο σύνολο γραμμών, και η χειροκίνητη εκτέλεση είναι σπατάλη χρόνου. + +Τα καλά νέα; Με λίγες γραμμές C# μπορείτε να φορτώσετε ένα βιβλίο εργασίας Excel, να ορίσετε την περιοχή που περιέχει το pivot, και **πώς να αντιγράψετε γραμμές** ώστε το pivot να εμφανιστεί σε νέα θέση—όλα σε μία αυτοματοποιημένη εκτέλεση. Σε αυτό το tutorial θα καλύψουμε επίσης τα βασικά του **load excel workbook c#** και θα σας δώσουμε μια σταθερή βάση για εργασίες **excel automation copy rows**. + +> **Τι θα αποκομίσετε** +> • Ένα πλήρες, εκτελέσιμο παράδειγμα που αντιγράφει έναν πίνακα pivot. +> • Μια εξήγηση του γιατί κάθε γραμμή είναι σημαντική. +> • Συμβουλές για τη διαχείριση ειδικών περιπτώσεων όπως κρυφά φύλλα εργασίας ή πολλαπλά pivots. + +--- + +## Προαπαιτούμενα + +- **.NET 6.0** (ή οποιαδήποτε πρόσφατη έκδοση .NET) εγκατεστημένη. +- **Aspose.Cells for .NET** – η βιβλιοθήκη που θα χρησιμοποιήσουμε για την επεξεργασία αρχείων Excel. Μπορείτε να την αποκτήσετε μέσω NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Ένα βιβλίο εργασίας προέλευσης (`Source.xlsx`) που ήδη περιέχει έναν πίνακα pivot στην περιοχή **A1:J20** (η περιοχή που θα αντιγράψουμε). +- Βασική εξοικείωση με τη σύνταξη C# – τίποτα περίπλοκο, μόνο τις συνηθισμένες δηλώσεις `using` και τη μέθοδο `Main`. + +Αν κάτι από αυτά σας φαίνεται άγνωστο, κάντε ένα διάλειμμα και εγκαταστήστε το πακέτο· το υπόλοιπο του οδηγού υποθέτει ότι η βιβλιοθήκη είναι έτοιμη. + +![Εικονογράφηση του πώς να αντιγράψετε pivot σε C# χρησιμοποιώντας Aspose.Cells](https://example.com/duplicate-pivot.png "πώς να αντιγράψετε pivot σε C# εικονογράφηση") + +*Κείμενο εναλλακτικής εικόνας: "παράδειγμα του πώς να αντιγράψετε pivot σε C# που δείχνει τις γραμμές προέλευσης και τις αντιγραμμένες γραμμές pivot".* + +--- + +## Βήμα 1: Φόρτωση Βιβλίου Εργασίας Excel C# – Άνοιγμα του Αρχείου + +Το πρώτο πράγμα που πρέπει να κάνετε όταν θέλετε να **load excel workbook c#** είναι να δημιουργήσετε μια παρουσία `Workbook` που δείχνει στο αρχείο σας. Αυτό το αντικείμενο σας δίνει πρόσβαση σε κάθε φύλλο εργασίας, κελί και pivot μέσα στο αρχείο. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Γιατί είναι σημαντικό:** +`Workbook` αφαιρεί την πλήρη δομή του αρχείου Excel σε ένα μοντέλο στη μνήμη. Χωρίς να το φορτώσετε πρώτα, δεν μπορείτε να ελέγξετε τη θέση του pivot ή να αντιγράψετε γραμμές. Επίσης, ο κατασκευαστής ανιχνεύει αυτόματα τη μορφή του αρχείου (XLS, XLSX, CSV κ.λπ.), έτσι δεν χρειάζεται επιπλέον κώδικας για την ανίχνευση μορφής. + +--- + +## Βήμα 2: Πώς να Αντιγράψετε Γραμμές – Ορισμός της Περιοχής Pivot + +Τώρα που το βιβλίο εργασίας βρίσκεται στη μνήμη, πρέπει να πούμε στο Aspose.Cells ποιες γραμμές περιέχουν το pivot. Στο παράδειγμά μας το pivot βρίσκεται στην περιοχή **A1:J20**, που αντιστοιχεί σε γραμμές **0‑19** (αρίθμηση από το μηδέν). Θα το τυλίξουμε σε μια δομή `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Γιατί χρησιμοποιούμε το `CellArea`:** +Είναι ένας ελαφρύς τρόπος για να περιγράψετε ένα ορθογώνιο μπλοκ. Όταν αργότερα καλέσετε το `CopyRows`, η μέθοδος διαβάζει αυτό το αντικείμενο για να ξέρει ακριβώς ποιες γραμμές να αντιγράψει. Αν χρειαστεί ποτέ να προσαρμόσετε την περιοχή (π.χ. το pivot μεγαλώσει στη στήλη K), αλλάζετε μόνο την τιμή `endColumn`. + +--- + +## Βήμα 3: Πρόσβαση στο Στόχο Φύλλο Εργασίας + +Τα περισσότερα βιβλία εργασίας έχουν ένα μόνο φύλλο, αλλά το API λειτουργεί το ίδιο για πολλαπλά φύλλα. Πάρτε το πρώτο φύλλο εργασίας (δείκτης 0) – εκεί βρίσκεται το αρχικό pivot. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Συμβουλή:** +Αν έχετε ονομασμένα φύλλα, μπορείτε επίσης να τα ανακτήσετε με το όνομα: `workbook.Worksheets["Sheet1"]`. Αυτό βοηθά να αποφύγετε την σκληρή κωδικοποίηση δεικτών όταν η δομή του βιβλίου εργασίας αλλάζει. + +--- + +## Βήμα 4: Πώς να Αντιγράψετε Γραμμές – Αντιγραφή του Πίνακα Pivot + +Αυτή είναι η ουσία του **how to duplicate pivot**: αντιγράφουμε τις γραμμές που περιέχουν το pivot σε μια νέα θέση. Στην περίπτωση μας ξεκινάμε στη γραμμή 31 (δείκτης μηδενικής βάσης 30). Η μέθοδος `CopyRows` αντιγράφει *και* τα δεδομένα και την υποκείμενη κρυφή μνήμη pivot, έτσι οι νέες γραμμές συμπεριφέρονται ακριβώς όπως οι αρχικές. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Τι συμβαίνει στο παρασκήνιο;** +`CopyRows` κλωνοποιεί κάθε γραμμή, διατηρώντας τύπους, στυλ και ορισμούς pivot. Επειδή η κρυφή μνήμη του pivot βρίσκεται σε επίπεδο βιβλίου εργασίας, το αντιγραμμένο pivot αναφέρεται αυτόματα στην ίδια πηγή δεδομένων – χωρίς επιπλέον ρυθμίσεις. + +**Περιπτωση ειδική – κρυφές γραμμές:** +Αν κάποια από τις γραμμές στην περιοχή προέλευσης είναι κρυμμένες, παραμένουν κρυμμένες μετά την αντιγραφή. Αν θέλετε να τις εμφανίσετε, καλέστε `worksheet.Rows[destRow].IsHidden = false` μετά την αντιγραφή. + +--- + +## Βήμα 5: Αποθήκευση του Βιβλίου Εργασίας – Επαλήθευση του Αντιγράφου + +Τέλος, γράψτε τις αλλαγές πίσω στο δίσκο. Μπορείτε να αντικαταστήσετε το αρχικό αρχείο ή, πιο ασφαλώς, να αποθηκεύσετε με νέο όνομα ώστε να συγκρίνετε πριν/μετά. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Αποτέλεσμα που θα δείτε:** +Ανοίξτε το `CopyWithPivot.xlsx`. Θα βρείτε το αρχικό pivot στην περιοχή **A1:J20** και ένα πανομοιότυπο αντίγραφο που ξεκινά στην **A31:J50**. Και τα δύο pivots μπορούν να ανανεωθούν ανεξάρτητα, και τυχόν slicers που είναι συνδεδεμένα με το αρχικό θα λειτουργούν και για το αντίγραφο επειδή μοιράζονται την ίδια κρυφή μνήμη. + +--- + +## Συχνές Ερωτήσεις & Παραλλαγές + +### Μπορώ να αντιγράψω πολλαπλά pivots ταυτόχρονα; + +Απόλυτα. Κάντε βρόχο σε όλους τους πίνακες pivot (`worksheet.PivotTables`) και αντιγράψτε την περιοχή του καθενός σε διαφορετικό προορισμό. Απλώς βεβαιωθείτε ότι οι περιοχές προορισμού δεν επικαλύπτονται. + +### Τι γίνεται αν το βιβλίο εργασίας προέλευσης είναι προστατευμένο με κωδικό; + +Το Aspose.Cells σας επιτρέπει να ανοίξετε ένα προστατευμένο αρχείο περνώντας τον κωδικό στον κατασκευαστή `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Πώς να αντιγράψετε γραμμές χωρίς να επηρεάσετε τους τύπους; + +Αν χρειάζεστε μόνο τις *τιμές* (χωρίς τύπους), χρησιμοποιήστε το `CopyRows` με τη σημαία `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Υπάρχει τρόπος να αντιγράψετε γραμμές σε ένα *διαφορετικό* βιβλίο εργασίας; + +Ναι. Μετά την αντιγραφή των γραμμών στο φύλλο προέλευσης, μπορείτε να κλωνοποιήσετε το φύλλο σε ένα άλλο αντικείμενο `Workbook` μέσω του `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Συμβουλές για Αξιόπιστη Αυτοματοποίηση Excel Copy Rows + +- **Επικυρώστε την περιοχή** πριν την αντιγραφή. Ένας γρήγορος έλεγχος `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` αποτρέπει σφάλματα εκτός περιοχής. +- **Απενεργοποιήστε τον υπολογισμό** κατά την αντιγραφή μεγάλων περιοχών: `workbook.Settings.CalcMode = CalcMode.Manual;` – αυτό επιταχύνει δραματικά τη λειτουργία. +- **Αποδεσμεύστε αντικείμενα** (`workbook.Dispose()`) αν επεξεργάζεστε πολλά αρχεία σε βρόχο για να ελευθερώσετε εγγενείς πόρους. +- **Καταγράψτε τη λειτουργία** – ειδικά σε παραγωγικές γραμμές – ώστε να μπορείτε να εντοπίσετε ποια αρχεία επεξεργάστηκαν και να εντοπίσετε αποτυχίες νωρίς. + +## Συμπέρασμα + +Τώρα γνωρίζετε **πώς να αντιγράψετε pivot** πίνακες σε C# χρησιμοποιώντας Aspose.Cells, και έχετε δει τη πλήρη ροή εργασίας από το **load excel workbook c#** έως το **excel automation copy rows** και τελικά την αποθήκευση του αποτελέσματος. Το παράδειγμα είναι αυτόνομο, εκτελείται αμέσως, και μπορεί να επεκταθεί για να διαχειριστεί πολλαπλά pivots, προστατευμένα αρχεία ή αντιγραφή μεταξύ βιβλίων εργασίας. + +Επόμενα βήματα; Δοκιμάστε να προσαρμόσετε το script για: + +- Ανανεώστε το αντιγραμμένο pivot προγραμματιστικά (`pivotTable.RefreshData();`). +- Εξαγωγή της αντιγραμμένης περιοχής σε CSV για επεξεργασία downstream. +- Ενσωματώστε τον κώδικα σε ένα ASP.NET Core API ώστε οι χρήστες να μπορούν να ανεβάσουν ένα αρχείο και να λάβουν αμέσως μια έκδοση με αντιγραμμένο pivot. + +Καλό κώδικα, και εύχομαι η αυτοματοποίηση του Excel σας να είναι πάντα ομαλή! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/row-and-column-management/_index.md b/cells/greek/net/row-and-column-management/_index.md index a67cb196c3..abc7aa2809 100644 --- a/cells/greek/net/row-and-column-management/_index.md +++ b/cells/greek/net/row-and-column-management/_index.md @@ -76,6 +76,8 @@ Μάθετε να εισάγετε μια γραμμή με μορφοποίηση στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας για εύκολη εφαρμογή. ### [Εισαγωγή πολλαπλών γραμμών στο Aspose.Cells .NET](./insert-multiple-rows-aspose-cells/) Μάθετε να εισάγετε πολλές γραμμές στο Excel χρησιμοποιώντας το Aspose.Cells για .NET. Ακολουθήστε το λεπτομερές εκπαιδευτικό μας βοήθημα για απρόσκοπτη διαχείριση δεδομένων. +### [Aspose.Cells Διαγραφή Γραμμών – Προστασία Γραμμής Κεφαλίδας στο Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Μάθετε πώς να διαγράψετε γραμμές ενώ προστατεύετε τη γραμμή κεφαλίδας στο Excel με Aspose.Cells για .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/greek/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..ce7bcdab37 --- /dev/null +++ b/cells/greek/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells διαγραφή γραμμών διατηρώντας τη γραμμή κεφαλίδας. Μάθετε + πώς να ανακτήσετε τον πρώτο πίνακα και να διαγράψετε με ασφάλεια τις γραμμές του + πίνακα Excel σε C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: el +og_description: Aspose Cells διαγράφει γραμμές ενώ προστατεύει τη γραμμή κεφαλίδας. + Μάθετε πώς να ανακτήσετε τον πρώτο πίνακα και να διαγράψετε με ασφάλεια τις γραμμές + του πίνακα Excel σε C#. +og_title: Aspose Cells Διαγραφή Γραμμών – Προστασία Γραμμής Κεφαλίδας στο Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Διαγραφή Γραμμών – Προστασία της Γραμμής Κεφαλίδας στο Excel +url: /el/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Προστασία Γραμμής Κεφαλίδας στο Excel + +Έχετε προσπαθήσει ποτέ να **aspose cells delete rows** από έναν πίνακα και να διαπιστώσετε ότι η κεφαλίδα έσβησε; Αυτό είναι ένα κοινό λάθος όταν χειρίζεστε φύλλα Excel προγραμματιστικά. Σε αυτόν τον οδηγό θα περάσουμε βήμα‑βήμα από μια πλήρη, εκτελέσιμη λύση που **προστατεύει τη γραμμή κεφαλίδας**, δείχνει πώς να **retrieve first table**, και διαγράφει με ασφάλεια **Excel table rows** χωρίς να σπάσει η δομή. + +Θα καλύψουμε τα πάντα, από τη φόρτωση του workbook μέχρι τη διαχείριση της εξαίρεσης που ρίχνει η Aspose όταν προσπαθείτε να απομονώσετε την κεφαλίδα. Στο τέλος θα έχετε ένα στιβαρό μοτίβο που μπορείτε να ενσωματώσετε σε οποιοδήποτε .NET project που χρησιμοποιεί Aspose.Cells. + +--- + +## Τι Θα Χρειαστείτε + +- **Aspose.Cells for .NET** (v23.12 ή νεότερη) – η βιβλιοθήκη που σας επιτρέπει να δουλεύετε με αρχεία Excel χωρίς εγκατεστημένο Office. +- Ένα βασικό περιβάλλον ανάπτυξης C# (Visual Studio, Rider ή το `dotnet` CLI). +- Ένα αρχείο Excel (`TableWithHeader.xlsx`) που περιέχει τουλάχιστον ένα **ListObject** (πίνακα Excel) με γραμμή κεφαλίδας στην πρώτη σειρά. + +Δεν απαιτούνται πρόσθετα πακέτα NuGet εκτός από το Aspose.Cells. + +--- + +## Βήμα 1: Φόρτωση του Workbook και Ανάκτηση του Πρώτου Πίνακα + +Το πρώτο που πρέπει να κάνετε είναι να ανοίξετε το workbook και να πάρετε τον πίνακα που θέλετε να τροποποιήσετε. Εδώ μπαίνει σε παιχνίδι η δευτερεύουσα λέξη‑κλειδί **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Γιατί είναι σημαντικό:** +- `Workbook` διαβάζει το αρχείο χωρίς να χρειάζεται εγκατεστημένο Excel. +- `worksheet.ListObjects[0]` είναι ο πιο απλός τρόπος για **retrieve first table**· αν έχετε πολλούς πίνακες μπορείτε να κάνετε επανάληψη ή να χρησιμοποιήσετε το όνομα του πίνακα. + +> **Συμβουλή:** Αν δεν είστε σίγουροι αν ένα φύλλο περιέχει πίνακα, ελέγξτε πρώτα το `worksheet.ListObjects.Count` για να αποφύγετε `IndexOutOfRangeException`. + +--- + +## Βήμα 2: Προστασία της Γραμμής Κεφαλίδας Κατά τη Διαγραφή Γραμμών + +Τώρα έρχεται η ουσία: **aspose cells delete rows** χωρίς να σβήνει η κεφαλίδα. Η μέθοδος `DeleteRows` της Aspose δέχεται έναν μηδενικό‑βάση δείκτη έναρξης και έναν αριθμό. Η προσπάθεια διαγραφής της κεφαλίδας (γραμμή 0) προκαλεί εξαίρεση, κάτι που θέλουμε να αποφύγουμε. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Εξήγηση της λογικής:** + +| Βήμα | Αιτία | +|------|-------| +| `table.DeleteRows(1, 2);` | Ο δείκτης 1 δείχνει τη **δεύτερη** γραμμή (την πρώτη γραμμή δεδομένων). Η διαγραφή δύο γραμμών αφαιρεί τις γραμμές 2‑3 στο Excel, αφήνοντας την κεφαλίδα (γραμμή 1) ανέπαφη. | +| `catch (Exception ex)` | Η Aspose ρίχνει εξαίρεση **μόνο** όταν η ενέργεια θα απομονώσει την κεφαλίδα. Το catch σας επιτρέπει να καταγράψετε ένα φιλικό μήνυμα αντί να καταρρεύσει η εφαρμογή. | +| `Save` | Η αποθήκευση των αλλαγών σας επιτρέπει να ανοίξετε το `Result.xlsx` και να δείτε ότι η κεφαλίδα παραμένει. | + +> **Τι γίνεται αν χρειάζεται πραγματικά να διαγράψετε την κεφαλίδα;** +> Χρησιμοποιήστε `table.ShowHeaders = false;` πριν τη διαγραφή, ή διαγράψτε ολόκληρο τον πίνακα και δημιουργήστε τον ξανά. Στις περισσότερες επιχειρηματικές περιπτώσεις θέλετε να **protect header row**. + +--- + +## Βήμα 3: Επαλήθευση του Αποτελέσματος – Αναμενόμενο Output + +Αφού τρέξετε το πρόγραμμα, ανοίξτε το `Result.xlsx`. Θα πρέπει να δείτε: + +- Η πρώτη γραμμή εξακολουθεί να περιέχει τους αρχικούς τίτλους των στηλών. +- Οι γραμμές 2‑3 (αυτές που στοχεύσαμε) έχουν αφαιρεθεί και τα υπόλοιπα δεδομένα έχουν μετακινηθεί προς τα πάνω. + +Η κονσόλα θα εμφανίσει: + +``` +Rows deleted successfully. +``` + +Αν κατά λάθος προσπαθήσατε να διαγράψετε την κεφαλίδα (π.χ. `table.DeleteRows(0, 1);`), το output θα ήταν: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Αυτό το μήνυμα επιβεβαιώνει ότι η ενσωματωμένη προστασία της Aspose λειτουργεί όπως πρέπει. + +--- + +## Βήμα 4: Εναλλακτικοί Τρόποι για **Delete Excel Table Rows** + +Μερικές φορές χρειάζεται μεγαλύτερος έλεγχος — π.χ. διαγραφή γραμμών βάσει συνθήκης ή αφαίρεση μη συνεχόμενων γραμμών. Εδώ είναι δύο γρήγορα μοτίβα που διατηρούν την κεφαλίδα ασφαλή. + +### 4.1 Διαγραφή Γραμμών με Φίλτρο Δεδομένων + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Μαζική Διαγραφή Χρησιμοποιώντας Περιοχή + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Και τα δύο αποσπάσματα σέβονται τον κανόνα **protect header row**, επειδή ο δείκτης έναρξης δεν πέφτει ποτέ κάτω από 1. + +--- + +## Βήμα 5: Συνηθισμένα Πίπα & Πώς να τα Αποφύγετε + +| Πίπα | Γιατί Συμβαίνει | Διόρθωση | +|------|------------------|----------| +| Κατά λάθος διαγραφή της κεφαλίδας | Χρήση `0` ως δείκτη έναρξης | Ξεκινάτε πάντα από `1` για τις γραμμές δεδομένων, ή ελέγχετε πρώτα το `table.ShowHeaders`. | +| `IndexOutOfRangeException` όταν το φύλλο δεν έχει πίνακες | Υπόθεση ότι υπάρχει πίνακας | Επαληθεύετε `worksheet.ListObjects.Count > 0` πριν προσπελάσετε το `[0]`. | +| Αλλαγές που δεν αποθηκεύονται | Λάθος να καλέσετε `Save` | Καλέστε `workbook.Save` μετά τις τροποποιήσεις. | +| Η διαγραφή γραμμών στη μέση μετατοπίζει δείκτες, προκαλώντας παραλείψεις | Επανάληψη προς τα εμπρός ενώ διαγράφετε | Επανάληψη **προς τα πίσω** ή συλλογή των γραμμών προς διαγραφή πρώτα. | + +--- + +## Βήμα 6: Όλα Μαζί – Πλήρες Παράδειγμα Λειτουργίας + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Τρέξτε αυτό το πρόγραμμα, ανοίξτε το `Result.xlsx` και θα δείτε την κεφαλίδα αμετάβλητη ενώ οι επιλεγμένες γραμμές έχουν αφαιρεθεί. Αυτή είναι η **πλήρης, αυτόνομη λύση** για **aspose cells delete rows** χωρίς να θυσιάζεται η κεφαλίδα. + +--- + +## Συμπέρασμα + +Δείξαμε πώς να **aspose cells delete rows** ενώ **protect header row**, πώς να **retrieve first table**, και διάφορους τρόπους για να **delete excel table rows** με ασφάλεια. Τα βασικά σημεία είναι: + +- Ξεκινάτε πάντα τις διαγραφές από το δείκτη 1 για να κρατήσετε την κεφαλίδα ζωντανή. +- Χρησιμοποιείτε `try/catch` για να διαχειριστείτε την ενσωματωμένη εξαίρεση προστασίας της Aspose. +- Επαληθεύετε την ύπαρξη του πίνακα πριν δράσετε, και επαναλαμβάνετε προς τα πίσω όταν αφαιρείτε γραμμές υπό συνθήκη. + +Έτοιμοι για επόμενα βήματα; Δοκιμάστε να συνδυάσετε αυτήν την προσέγγιση με τα API στυλ του **Aspose Cells** για να επισημάνετε τις γραμμές που θα διαγραφούν πριν την αφαίρεση, ή αυτοματοποιήστε τη διαδικασία σε πολλά φύλλα. Οι δυνατότητες είναι ατελείωτες, και τώρα έχετε ένα αξιόπιστο μοτίβο για να χτίσετε πάνω του. + +Αν βρήκατε αυτόν τον οδηγό χρήσιμο, δώστε του ένα thumbs‑up, μοιραστείτε τον με συναδέλφους, ή αφήστε ένα σχόλιο με τις δικές σας λύσεις για edge‑case. Καλή προγραμματιστική δουλειά! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/greek/net/saving-and-exporting-excel-files-with-options/_index.md index b84e00cc84..0a18badd73 100644 --- a/cells/greek/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/greek/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Μάθετε πώς να καθορίζετε ιδιότητες εγγράφου όπως έκδοση, συντάκτη και τίτλο σε ένα αρχείο Excel μέσω προγραμματισμού χρησιμοποιώντας το Aspose.Cells για .NET με οδηγίες βήμα προς βήμα. ### [Περικοπή κορυφαίων κενών γραμμών και στηλών κατά την εξαγωγή](./trimming-leading-blank-rows-and-columns/) Βελτιστοποιήστε τις εξαγωγές CSV σας περικόπτοντας τις πρώτες κενές γραμμές και στήλες με το Aspose.Cells για .NET. Τα καθαρά δεδομένα απέχουν μόλις λίγα βήματα. +### [Πώς να αποθηκεύσετε βιβλίο εργασίας σε C# – Ολοκληρωμένος οδηγός αυτοματοποίησης Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Μάθετε πώς να αποθηκεύσετε ένα βιβλίο εργασίας σε C# χρησιμοποιώντας το Aspose.Cells, ακολουθώντας βήμα-βήμα οδηγίες για πλήρη αυτοματοποίηση Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/greek/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..ce71935f29 --- /dev/null +++ b/cells/greek/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-22 +description: Πώς να αποθηκεύσετε το βιβλίο εργασίας σε C# χρησιμοποιώντας το Aspose.Cells—βήμα-βήμα + οδηγός που καλύπτει πώς να φορτώσετε το Excel, να δημιουργήσετε φύλλο, να επαναχρησιμοποιήσετε + το φύλλο και να δημιουργήσετε αναφορά. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: el +og_description: Πώς να αποθηκεύσετε ένα βιβλίο εργασίας σε C# με το Aspose.Cells. + Μάθετε πώς να φορτώνετε Excel, να δημιουργείτε φύλλο, να επαναχρησιμοποιείτε το + φύλλο και να δημιουργείτε αναφορά σε έναν ενιαίο οδηγό. +og_title: Πώς να αποθηκεύσετε το βιβλίο εργασίας σε C# – Πλήρης οδηγός αυτοματοποίησης + Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Πώς να αποθηκεύσετε το βιβλίο εργασίας σε C# – Πλήρης οδηγός αυτοματοποίησης + Excel +url: /el/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Αποθηκεύσετε το Workbook σε C# – Ολοκληρωμένος Οδηγός Αυτοματοποίησης Excel + +Έχετε αναρωτηθεί ποτέ **πώς να αποθηκεύσετε το workbook** σε C# μετά από επεξεργασία δεδομένων; Δεν είστε μόνοι. Οι περισσότεροι προγραμματιστές συναντούν πρόβλημα όταν η αναφορά φαίνεται τέλεια στην οθόνη αλλά αρνείται να γραφτεί ξανά στο δίσκο. Σε αυτό το tutorial θα περάσουμε από ένα πλήρες παράδειγμα που όχι μόνο δείχνει **πώς να αποθηκεύσετε το workbook**, αλλά καλύπτει επίσης **πώς να φορτώσετε το Excel**, **πώς να δημιουργήσετε φύλλο**, **πώς να επαναχρησιμοποιήσετε φύλλο**, και **πώς να δημιουργήσετε αναφορά**—όλα με το Aspose.Cells. + +Σκεφτείτε το σαν μια συζήτηση κατά τη διάρκεια του καφέ, όπου βγάζω κώδικα από το laptop μου και εξηγώ κάθε γραμμή. Στο τέλος θα έχετε ένα εκτελέσιμο πρόγραμμα που φορτώνει ένα πρότυπο, ενσωματώνει δεδομένα μέσω SmartMarker, επαναχρησιμοποιεί το όνομα ενός υπάρχοντος φύλλου λεπτομερειών, και τέλος γράφει το αρχείο στον φάκελό σας. Χωρίς μυστήρια, μόνο σαφή βήματα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε. + +## Τι Θα Χρειαστεί + +- **Aspose.Cells for .NET** (τελευταία έκδοση έως 2026). Μπορείτε να το αποκτήσετε από το NuGet με `Install-Package Aspose.Cells`. +- Ένα περιβάλλον ανάπτυξης .NET (Visual Studio, Rider ή VS Code με την επέκταση C# λειτουργούν άψογα). +- Ένα βασικό αρχείο προτύπου Excel με όνομα `MasterTemplate.xlsx` τοποθετημένο σε φάκελο που ελέγχετε. +- Ελάχιστη γνώση C#—αν έχετε γράψει ένα `Console.WriteLine` πριν, είστε έτοιμοι. + +> **Pro tip:** Κρατήστε το πρότυπό σας σε ξεχωριστό φάκελο *Resources* και ορίστε το ως “Copy if newer” ώστε η διαδρομή να παραμένει συνεπής σε όλες τις κατασκευές. + +Τώρα, ας βουτήξουμε στον κώδικα. + +## Βήμα 1: Πώς να Φορτώσετε το Excel – Άνοιγμα του Βιβλίου Προτύπου + +Το πρώτο που πρέπει να κάνετε είναι να φορτώσετε το workbook στη μνήμη. Το Aspose.Cells το κάνει με μία γραμμή κώδικα, αλλά η κατανόηση του «γιατί» βοηθά όταν χρειαστεί να εντοπίσετε προβλήματα αργότερα. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Γιατί είναι σημαντικό:** Η φόρτωση του workbook σας δίνει πρόσβαση σε κάθε φύλλο εργασίας, στυλ και ονομαστική περιοχή μέσα στο πρότυπο. Αν το αρχείο δεν βρεθεί, το Aspose ρίχνει `FileNotFoundException`, οπότε ελέγξτε τη διαδρομή. +- **Ακρόαση:** Αν το πρότυπο είναι προστατευμένο με κωδικό, περάστε τον κωδικό στον κατασκευαστή `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Βήμα 2: Πώς να Επαναχρησιμοποιήσετε Φύλλο – Διαμόρφωση SmartMarker Options + +Το SmartMarker μπορεί αυτόματα να δημιουργήσει ένα νέο φύλλο λεπτομερειών, αλλά μπορεί ήδη να υπάρχει φύλλο με όνομα **Detail**. Για να αποφύγουμε σύγκρουση, λέμε στον επεξεργαστή να επαναχρησιμοποιήσει αυτό το όνομα. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Γιατί είναι σημαντικό:** Χωρίς αυτήν την επιλογή, το Aspose θα προσθέσει αριθμητικό επίθημα (π.χ., “Detail1”) που μπορεί να σπάσει μακροεντολές ή τύπους που αναμένουν σταθερό όνομα φύλλου. +- **Τι γίνεται αν το φύλλο δεν υπάρχει;** Το Aspose θα το δημιουργήσει για εσάς—οπότε ο ίδιος κώδικας λειτουργεί είτε το φύλλο υπάρχει είτε όχι. + +## Βήμα 3: Πώς να Δημιουργήσετε Φύλλο – Προετοιμασία Πηγής Δεδομένων + +Αν και δεν προσθέτουμε χειροκίνητα φύλλο εδώ, τα δεδομένα που τροφοδοτείτε στο SmartMarker καθορίζουν αν θα δημιουργηθεί νέο φύλλο. Ας δημιουργήσουμε ένα απλό ανώνυμο αντικείμενο που μιμείται μια λίστα παραγγελιών. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Γιατί είναι σημαντικό:** Το SmartMarker σαρώει το πρότυπο για δείκτες όπως `&=Header` και `&=Items.Id`. Η δομή του `orderData` πρέπει να ταιριάζει ακριβώς με αυτούς τους δείκτες, αλλιώς ο επεξεργαστής θα τους παραλείψει σιωπηλά. +- **Παραλλαγή:** Αν παίρνετε δεδομένα από βάση, αντικαταστήστε τον ανώνυμο τύπο με λίστα DTO ή `DataTable`. Ο επεξεργαστής υποστηρίζει και τα δύο. + +## Βήμα 4: Πώς να Δημιουργήσετε Αναφορά – Επεξεργασία SmartMarker + +Τώρα δεσμεύουμε τα δεδομένα στο πρότυπο. Ο επεξεργαστής διασχίζει το πρώτο φύλλο εργασίας, αντικαθιστά τους δείκτες και δημιουργεί το φύλλο λεπτομερειών. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Γιατί είναι σημαντικό:** Αυτή η μοναδική γραμμή κάνει το «βαρύ» έργο—συμπληρώνει την κεφαλίδα, επαναλαμβάνει τα `Items`, και σέβεται το `DetailSheetNewName` που ορίσαμε νωρίτερα. +- **Συχνή ερώτηση:** *Τι γίνεται αν έχω πολλά φύλλα εργασίας με δείκτες;* Περάστε από κάθε φύλλο και καλέστε `SmartMarkerProcessor.Process` ξεχωριστά. + +## Βήμα 5: Πώς να Αποθηκεύσετε το Workbook – Εγγραφή του Αποτελέσματος + +Τέλος, γράφουμε το τροποποιημένο workbook πίσω στο δίσκο. Αυτή είναι η στιγμή που **πώς να αποθηκεύσετε το workbook** γίνεται πραγματικότητα. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Γιατί είναι σημαντικό:** Η μέθοδος `Save` υποστηρίζει πολλές μορφές (`.xlsx`, `.xls`, `.csv`, `.pdf`, κ.λπ.). Από προεπιλογή γράφει αρχείο Excel, αλλά μπορείτε να περάσετε αντικείμενο `SaveOptions` για αλλαγή εξόδου. +- **Ακρόαση:** Αν το αρχείο προορισμού είναι ανοιχτό στο Excel, η `Save` ρίχνει `IOException`. Κλείστε τυχόν ανοιχτές παρουσίες ή χρησιμοποιήστε μοναδικό όνομα αρχείου σε κάθε εκτέλεση. + +![Παράδειγμα Πώς να Αποθηκεύσετε το Workbook σε C#](/images/how-to-save-workbook-csharp.png "Πώς να Αποθηκεύσετε το Workbook σε C# – οπτική επισκόπηση της διαδικασίας") + +### Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας τα παραπάνω, εδώ είναι μια αυτόνομη εφαρμογή console που μπορείτε να μεταγλωττίσετε και να τρέξετε: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** Μετά την εκτέλεση, θα βρείτε το `SmartMarkerWithDupDetail.xlsx` στο `YOUR_DIRECTORY`. Ανοίξτε το και θα δείτε: + +- Την αρχική κεφαλίδα γεμάτη με “Orders”. +- Ένα νέο (ή επαναχρησιμοποιημένο) φύλλο με όνομα **Detail** που περιέχει δύο γραμμές: `Id=1, Qty=5` και `Id=2, Qty=3`. + +Αν το φύλλο **Detail** υπήρχε ήδη, το περιεχόμενό του θα αντικατασταθεί με τα νέα δεδομένα—χωρίς επιπλέον φύλλα να «σπαταλούν» το αρχείο σας. + +## Συχνές Ερωτήσεις (FAQ) + +| Ερώτηση | Απάντηση | +|----------|----------| +| *Μπορώ να αποθηκεύσω σε PDF αντί για XLSX;* | Ναι. Αντικαταστήστε `workbook.Save("file.xlsx")` με `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Τι γίνεται αν το πρότυπό μου έχει πολλαπλές ενότητες SmartMarker;* | Καλέστε `SmartMarkerProcessor.Process` σε κάθε φύλλο που περιέχει δείκτες, ή περάστε μια συλλογή αντικειμένων δεδομένων που ταιριάζει σε κάθε ενότητα. | +| *Υπάρχει τρόπος να προσαρτήσω δεδομένα αντί να τα αντικαταστήσω στο φύλλο Detail;* | Χρησιμοποιήστε `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (διαθέσιμο σε νεότερες εκδόσεις Aspose). | +| *Πρέπει να απελευθερώσω το Workbook;* | Η κλάση `Workbook` υλοποιεί `IDisposable`. Τυλίξτε την σε `using` για καθαρή διαχείριση πόρων. | + +## Συμπέρασμα + +Καλύψαμε πώς **να αποθηκεύσετε το workbook** σε C# από την αρχή μέχρι το τέλος, παρουσιάζοντας ολόκληρη τη ροή: **πώς να φορτώσετε το Excel**, **πώς να δημιουργήσετε φύλλο** (έμμεσα μέσω SmartMarker), **πώς να επαναχρησιμοποιήσετε φύλλο**, και **πώς να δημιουργήσετε αναφορά**. Ο κώδικας είναι έτοιμος να ενσωματωθεί σε οποιοδήποτε έργο .NET, και οι εξηγήσεις παρέχουν το απαραίτητο πλαίσιο για προσαρμογή σε πιο σύνθετα σενάρια—όπως αναφορές πολλαπλών φύλλων, υπό όρους μορφοποίηση, ή εξαγωγή σε PDF. + +Έτοιμοι για την επόμενη πρόκληση; Δοκιμάστε να προσθέσετε ένα γράφημα που οπτικοποιεί τις ποσότητες παραγγελιών, ή αλλάξτε τη μορφή εξόδου σε CSV για επεξεργασία downstream. Οι ίδιες αρχές—φόρτωση, επεξεργασία, αποθήκευση—παραμένουν, ώστε να επαναχρησιμοποιείτε αυτό το μοτίβο σε πολλές εργασίες αναφοράς. + +Αν συναντήσετε δυσκολία ή έχετε ιδέες για επεκτάσεις, αφήστε ένα σχόλιο. Καλή προγραμματιστική, και απολαύστε την ομαλή εμπειρία του να **αποθηκεύετε το workbook** ακριβώς όπως χρειάζεστε! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/smart-markers-dynamic-data/_index.md b/cells/greek/net/smart-markers-dynamic-data/_index.md index 93f6dca111..bd78716277 100644 --- a/cells/greek/net/smart-markers-dynamic-data/_index.md +++ b/cells/greek/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Master Aspose.Cells για .NET με Γενικές Λίστες και Έξυπ Ξεκλειδώστε τις δυνατότητες των αναφορών του Excel με το Aspose.Cells χειριζόμενοι τα ένθετα αντικείμενα χωρίς κόπο χρησιμοποιώντας τους Έξυπνους Δείκτες σε έναν οδηγό βήμα προς βήμα. ### [Υλοποίηση μεταβλητού πίνακα με έξυπνους δείκτες Aspose.Cells](./variable-array-smart-markers/) Ξεκλειδώστε τη δύναμη του Aspose.Cells. Μάθετε πώς να υλοποιείτε μεταβλητούς πίνακες με το Smart Markers βήμα προς βήμα για απρόσκοπτη δημιουργία αναφορών Excel. +### [Πώς να δημιουργήσετε αναφορά Excel σε C# – Πλήρης οδηγός χρησιμοποιώντας SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/greek/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..4b327712b2 --- /dev/null +++ b/cells/greek/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Πώς να δημιουργήσετε αναφορά Excel σε C# με πρότυπο master‑detail. Μάθετε + πώς να γεμίζετε γρήγορα πρότυπο Excel σε C#, χρησιμοποιώντας το SmartMarker για + επαναλαμβανόμενα φύλλα. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: el +og_description: Πώς να δημιουργήσετε αναφορά Excel σε C# χρησιμοποιώντας ένα επαναχρησιμοποιήσιμο + πρότυπο. Αυτός ο οδηγός βήμα‑βήμα σας δείχνει πώς να γεμίσετε το πρότυπο Excel σε + C# με δεδομένα master‑detail. +og_title: Πώς να δημιουργήσετε αναφορά Excel σε C# – Πλήρες σεμινάριο SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Πώς να δημιουργήσετε αναφορά Excel σε C# – Πλήρης οδηγός με χρήση SmartMarker +url: /el/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Δημιουργήσετε Αναφορά Excel σε C# – Πλήρης Οδηγός με SmartMarker + +Έχετε αναρωτηθεί ποτέ **πώς να δημιουργήσετε αναφορά Excel** σε C# χωρίς να γράφετε ατέλειωτο κώδικα κελί‑με‑κελί; Δεν είστε ο μόνος. Οι περισσότεροι προγραμματιστές συναντούν δυσκολία όταν χρειάζονται μια επαγγελματική, πολυ‑φύλλων αναφορά που αντικατοπτρίζει σχέσεις master‑detail — σκεφτείτε παραγγελίες και στοιχεία γραμμής — αλλά δεν θέλουν να επαναπροσδιορίζουν τη ροπή κάθε φορά. + +Τα καλά νέα; Με ένα έτοιμο πρότυπο Excel και τη μηχανή **SmartMarker** του Aspose.Cells, μπορείτε να **populate Excel template C#** με λίγες μόνο γραμμές κώδικα. Σε αυτό το tutorial θα περάσουμε από ένα πραγματικό σενάριο, θα εξηγήσουμε γιατί κάθε βήμα είναι σημαντικό και θα σας δώσουμε ένα πλήρες, εκτελέσιμο παράδειγμα που μπορείτε να αντιγράψετε‑επικολλήσετε σήμερα. + +> **Τι θα πάρετε:** μια master‑detail αναφορά Excel όπου κάθε παραγγελία δημιουργεί το δικό της φύλλο εργασίας, όλα τροφοδοτούνται από απλά αντικείμενα C#. Χωρίς χειροκίνητο βρόχο πάνω στα κελιά, χωρίς εύθραυστες τύπους — μόνο καθαρός, συντηρήσιμος κώδικας. + +--- + +## Prerequisites + +Πριν προχωρήσουμε, βεβαιωθείτε ότι έχετε: + +- **.NET 6.0** (ή νεότερο) εγκατεστημένο – ο κώδικας στοχεύει .NET 6 αλλά λειτουργεί και σε .NET Framework 4.7+. +- **Aspose.Cells for .NET** πακέτο NuGet (`Install-Package Aspose.Cells`) – παρέχει τις κλάσεις `Workbook`, `SmartMarkerProcessor` και σχετικές. +- Ένα αρχείο Excel με όνομα **MasterDetailTemplate.xlsx** τοποθετημένο στο `YOUR_DIRECTORY`. Θα πρέπει να περιέχει ένα SmartMarker block όπως `{{Orders.OrderId}}` στο πρώτο φύλλο και ένα ένθετο block `{{Orders.Items.Prod}}` για τα στοιχεία γραμμής. +- Βασική κατανόηση των ανώνυμων τύπων C# – θα τους χρησιμοποιήσουμε για την μοντελοποίηση παραγγελιών και στοιχείων. + +Αν κάτι από αυτά σας φαίνεται άγνωστο, μην ανησυχείτε. Θα αναφέρουμε εναλλακτικές (π.χ., χρήση EPPlus) αργότερα, αλλά η βασική ιδέα παραμένει η ίδια. + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +Το πρώτο που κάνουμε είναι να ανοίξουμε το αρχείο προτύπου. Σκεφτείτε το πρότυπο ως ένα σκελετό· το SmartMarker θα το γεμίσει αργότερα με πραγματικά δεδομένα. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Γιατί είναι σημαντικό:** Διαχωρίζοντας τη διάταξη (το πρότυπο) από τα δεδομένα (τα αντικείμενα C#), κρατάτε ευχαριστημένους τόσο τους σχεδιαστές όσο και τους προγραμματιστές. Οι σχεδιαστές μπορούν να τροποποιούν γραμματοσειρές, χρώματα ή τύπους χωρίς να αγγίζουν κώδικα. + +--- + +## Step 2: Build the Master‑Detail Data Source + +Στη συνέχεια, δημιουργούμε τα δεδομένα που θα γεμίσουν το πρότυπο. Για μια τυπική αναφορά παραγγελιών, έχετε μια συλλογή παραγγελιών, καθεμία με τη δική της συλλογή στοιχείων. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Χρησιμοποιήστε κλάσεις με ισχυρούς τύπους αντί για ανώνυμους τύπους αν χρειάζεστε επαναχρησιμοποίηση σε πολλαπλές αναφορές. Η ανώνυμη προσέγγιση κρατά το παράδειγμα σύντομο. + +**Γιατί είναι σημαντικό:** Το SmartMarker λειτουργεί ταιριάζοντας τα ονόματα ιδιοτήτων (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) με τα placeholders στο πρότυπο. Η ιεραρχία πρέπει να ταιριάζει ακριβώς, αλλιώς η μηχανή θα παραλείψει εκείνα τα τμήματα. + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +Από προεπιλογή το SmartMarker γράφει όλες τις γραμμές σε ένα μόνο φύλλο. Θέλουμε κάθε παραγγελία σε ξεχωριστό φύλλο εργασίας, κάτι τέλειο για εκτύπωση ή αποστολή PDF ανά παραγγελία αργότερα. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Γιατί είναι σημαντικό:** `EnableRepeatingSheet` εξαλείφει την ανάγκη για χειροκίνητη κλωνοποίηση φύλλων. Η μηχανή αντιγράφει το αρχικό φύλλο, ενσωματώνει τα δεδομένα της παραγγελίας και μετονομάζει αυτόματα το φύλλο (συνήθως χρησιμοποιώντας την τιμή της πρώτης στήλης). + +--- + +## Step 4: Process the Template with Your Data + +Τώρα συνδέουμε τα πάντα. Ο `SmartMarkerProcessor` διασχίζει το workbook, αντικαθιστά τις ετικέτες και δημιουργεί νέα φύλλα όπως έχει δοθεί. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Γιατί είναι σημαντικό:** Αυτή η μοναδική γραμμή κάνει το βαριά δουλειά — αναλύει το πρότυπο, επαναλαμβάνει τις συλλογές και χειρίζεται ενσωματωμένους πίνακες. Είναι η καρδιά του **populate Excel template C#** χωρίς κανέναν χειροκίνητο βρόχο. + +--- + +## Step 5: Save the Finished Report + +Τέλος, γράφουμε το γεμάτο workbook στο δίσκο. Μπορείτε επίσης να το στείλετε απευθείας ως ροή σε HTTP response για web εφαρμογές. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Γιατί είναι σημαντικό:** Η αποθήκευση σε αρχείο σας δίνει ένα απτό αποτέλεσμα που μπορείτε να ανοίξετε στο Excel, να μοιραστείτε με ενδιαφερόμενους ή να το περάσετε σε επόμενες διαδικασίες όπως η μετατροπή σε PDF. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Παρακάτω είναι το πλήρες πρόγραμμα, συμπεριλαμβανομένων των `using` δηλώσεων και της μεθόδου `Main`. Τοποθετήστε το σε μια console app, προσαρμόστε τις διαδρομές αρχείων και τρέξτε. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +Όταν ανοίξετε το `MasterDetailResult.xlsx` θα δείτε: + +- **Φύλλο “Order_1”** – περιέχει την κεφαλίδα της Παραγγελίας 1 και δύο γραμμές για τα προϊόντα A και B. +- **Φύλλο “Order_2”** – περιέχει την κεφαλίδα της Παραγγελίας 2 και μία γραμμή για το προϊόν C. +- Όλοι οι τύποι, η μορφοποίηση και τα διαγράμματα από το αρχικό πρότυπο διατηρούνται. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +Ορίστε `EnableRepeatingSheet = true` **μόνο** στο φύλλο που περιέχει το master block. Τα άλλα φύλλα θα παραμείνουν άθικτα, ώστε μπορείτε να διατηρήσετε μια σελίδα σύνοψης στο αρχικό πρότυπο. + +### Can I use a DataTable instead of anonymous objects? + +Απόλυτα. Το SmartMarker λειτουργεί με οποιοδήποτε αντικείμενο υλοποιεί `IEnumerable`. Απλώς αντικαταστήστε τον ανώνυμο τύπο με ένα `DataTable` και βεβαιωθείτε ότι τα ονόματα των στηλών ταιριάζουν με τις ετικέτες. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +Υλοποιήστε μια προσαρμοσμένη διεπαφή `ISmartMarkerSheetNaming` (ή τροποποιήστε το `workbook.Worksheets` μετά την επεξεργασία). Οι περισσότεροι προγραμματιστές απλώς μετονομάζουν τα φύλλα βάσει μιας τιμής κελιού: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +Το SmartMarker επιτρέπει προσαρμοστικούς οριοθέτες μέσω `SmartMarkerOptions`. Για παράδειγμα, για χρήση `<< >>` αντί για `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache το πρότυπο** στη μνήμη αν δημιουργείτε πολλές αναφορές ανά αίτηση· η φόρτωση από δίσκο κάθε φορά προσθέτει καθυστέρηση. +- **Συνδυάστε με μετατροπή PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) για εξαγωγές φιλικές προς email. +- **Παραμετροποιήστε τις διαδρομές αρχείων** χρησιμοποιώντας αρχεία ρυθμίσεων ή μεταβλητές περιβάλλοντος ώστε η λύση να είναι φορητή μεταξύ dev, test και prod. +- **Δοκιμάστε μονάδες** το επίπεδο δεδομένων ξεχωριστά· το SmartMarker είναι deterministic, οπότε χρειάζεται μόνο να επαληθεύσετε ότι τα δεδομένα που τροφοδοτείτε ταιριάζουν με το αναμενόμενο σχήμα. + +--- + +## Conclusion + +Καλύψαμε **πώς να δημιουργήσετε αναφορά Excel** σε C# από την αρχή έως το τέλος, από τη φόρτωση ενός προτύπου με SmartMarker μέχρι την αποθήκευση ενός πολυ‑φύλλων workbook που αντικατοπτρίζει σχέσεις master‑detail. Με το **populate Excel template C#** σε λίγες γραμμές κώδικα, αποφεύγετε αδύναμη λογική κελί‑με‑κελί και δίνετε στους σχεδιαστές την ελευθερία να διαμορφώσουν το τελικό αποτέλεσμα. + +Επόμενα βήματα, μπορείτε να εξερευνήσετε: + +- Χρήση **populate Excel template C#** με διαγράμματα που ενημερώνονται αυτόματα ανά φύλλο. +- Ενσωμάτωση **excel smartmarker c#** με ASP.NET Core για άμεση ροή αναφορών στα προγράμματα περιήγησης. +- Αυτοματοποίηση **c# excel automation** pipelines που αντλούν δεδομένα από APIs ή βάσεις δεδομένων. + +Δοκιμάστε, προσαρμόστε το πρότυπο, και δείτε πόσο γρήγορα μπορείτε να μετατρέψετε ακατέργαστα δεδομένα σε μια επαγγελματική αναφορά Excel. Έχετε ερωτήσεις ή ένα ενδιαφέρον use‑case; Αφήστε ένα σχόλιο παρακάτω — χαρούμενο προγραμματισμό! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/greek/net/tables-and-lists/_index.md b/cells/greek/net/tables-and-lists/_index.md index 4d7b4480e4..49cdcb08b5 100644 --- a/cells/greek/net/tables-and-lists/_index.md +++ b/cells/greek/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Ξεκλειδώστε τη δύναμη του Aspose.Cells για .NET. Μάθετε να διαβάζετε και να γράφετε πίνακες με προελεύσεις δεδομένων ερωτημάτων σε αυτόν τον λεπτομερή οδηγό βήμα προς βήμα. ### [Ορισμός σχολίου για πίνακα ή λίστα στο Excel](./setting-comment-of-table-or-list/) Μάθετε πώς να ορίζετε σχόλια για πίνακες στο Excel χρησιμοποιώντας το Aspose.Cells για .NET με τον εύκολο οδηγό μας βήμα προς βήμα. +### [Δημιουργία πίνακα Excel σε C# – Οδηγός βήμα‑βήμα](./create-excel-table-in-c-step-by-step-guide/) +Μάθετε πώς να δημιουργήσετε πίνακα Excel σε C# με οδηγίες βήμα‑βήμα. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/greek/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/greek/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..53f18c1690 --- /dev/null +++ b/cells/greek/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Δημιουργήστε γρήγορα πίνακα Excel σε C#. Μάθετε πώς να προσθέσετε πίνακα, + να ορίσετε την περιοχή του πίνακα, να κρύψετε την κεφαλίδα του πίνακα και να απενεργοποιήσετε + το φίλτρο του πίνακα με ένα πλήρες παράδειγμα κώδικα. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: el +og_description: Δημιουργήστε πίνακα Excel σε C# με σαφή παράδειγμα. Μάθετε πώς να + προσθέσετε πίνακα, να ορίσετε την περιοχή του πίνακα, να κρύψετε την κεφαλίδα του + πίνακα και να απενεργοποιήσετε το φίλτρο σε λίγες μόνο γραμμές. +og_title: Δημιουργία πίνακα Excel σε C# – Πλήρης οδηγός προγραμματισμού +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Δημιουργία πίνακα Excel σε C# – Οδηγός βήμα‑βήμα +url: /el/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Πίνακα Excel σε C# – Οδηγός Βήμα‑Βήμα + +Έχετε ποτέ χρειαστεί να **δημιουργήσετε πίνακα Excel** προγραμματιστικά χρησιμοποιώντας C#; Η δημιουργία ενός πίνακα Excel μπορεί να είναι παιχνιδάκι όταν γνωρίζετε τα σωστά βήματα. Σε αυτό το tutorial θα περάσουμε από ένα πλήρες, εκτελέσιμο παράδειγμα που δείχνει **πώς να προσθέσετε πίνακα**, **να ορίσετε το εύρος του πίνακα**, **να κρύψετε την κεφαλίδα του πίνακα**, και ακόμη **να απενεργοποιήσετε το φίλτρο του πίνακα** – όλα χωρίς να αφήσετε το IDE σας. + +Αν έχετε ποτέ δυσκολευτεί με το UI του AutoFilter που εμφανίζεται όταν δεν το θέλετε, βρίσκεστε στο σωστό μέρος. Στο τέλος αυτού του οδηγού θα έχετε ένα έτοιμο‑για‑εκτέλεση snippet που παράγει ένα καθαρό workbook με όνομα *TableNoFilter.xlsx* και θα καταλάβετε γιατί κάθε γραμμή είναι σημαντική. + +## Τι Θα Μάθετε + +- Πώς να **δημιουργήσετε πίνακα Excel** από το μηδέν με Aspose.Cells. +- Την ακριβή σύνταξη για **ορισμό εύρους πίνακα** (A1:D5 στην περίπτωσή μας). +- Πώς να ενεργοποιήσετε τη γραμμή κεφαλίδας ώστε να εμφανίζεται το ενσωματωμένο UI φίλτρου. +- Το κόλπο για **απόκρυψη κεφαλίδας πίνακα** και **απενεργοποίηση φίλτρου πίνακα** όταν δεν τα χρειάζεστε πλέον. +- Ένα πλήρες, έτοιμο‑για‑αντιγραφή‑και‑επικόλληση πρόγραμμα C# που μπορείτε να τρέξετε σήμερα. + +### Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.7+). +- Aspose.Cells for .NET εγκατεστημένο μέσω NuGet (`Install-Package Aspose.Cells`). +- Βασική εξοικείωση με C# και Visual Studio (ή οποιοδήποτε IDE προτιμάτε). + +--- + +## Βήμα 1: Ρύθμιση του Έργου και Εισαγωγή των Namespaces + +Πριν μπορέσετε να **δημιουργήσετε πίνακα Excel**, χρειάζεστε ένα console project που να αναφέρεται στο Aspose.Cells. Ανοίξτε ένα τερματικό και τρέξτε: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Τώρα ανοίξτε το *Program.cs* και προσθέστε τις απαιτούμενες δηλώσεις `using`: + +```csharp +using System; +using Aspose.Cells; +``` + +Αυτές οι εισαγωγές σας δίνουν πρόσβαση στις κλάσεις `Workbook`, `Worksheet`, `CellArea` και `ListObject` που τροφοδοτούν το υπόλοιπο του tutorial. + +## Βήμα 2: Αρχικοποίηση Νέου Workbook και Λήψη του Πρώτου Worksheet + +Η δημιουργία ενός φρέσκου workbook είναι το πρώτο λογικό βήμα. Σκεφτείτε το workbook ως το κοντέινερ του αρχείου Excel, και το worksheet ως το μεμονωμένο φύλλο όπου θα τοποθετήσουμε τον πίνακά μας. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Γιατί είναι σημαντικό:** Ένα ολοκαίνουργιο `Workbook` ξεκινά με ένα μόνο κενό φύλλο. Με το `Worksheets[0]` εξασφαλίζουμε ότι δουλεύουμε στο προεπιλεγμένο φύλλο χωρίς να χρειάζεται να δημιουργήσουμε κάποιο χειροκίνητα. + +## Βήμα 3: Ορισμός του Εύρους Πίνακα (A1:D5) + +Στην ορολογία του Excel, ένας *πίνακας* ζει μέσα σε ένα ορθογώνιο μπλοκ κελιών. Η δομή `CellArea` μας επιτρέπει να εντοπίσουμε αυτό το μπλοκ. Εδώ θα καλύψουμε **ορισμό εύρους πίνακα** για τα κελιά A1 έως D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Συμβουλή:** Αν χρειαστεί ποτέ δυναμικό εύρος, μπορείτε να υπολογίσετε το `endRow` και το `endColumn` βάσει του μήκους των δεδομένων. Η αρίθμηση με μηδενική βάση είναι κοινή πηγή σφαλμάτων off‑by‑one, οπότε ελέγξτε ξανά τους αριθμούς σας. + +## Βήμα 4: Προσθήκη του Πίνακα και Ενεργοποίηση της Γραμμής Κεφαλίδας + +Τώρα έρχεται η καρδιά του tutorial: **πώς να προσθέσετε πίνακα** στο worksheet. Η συλλογή `ListObjects` διαχειρίζεται τους πίνακες, και η ρύθμιση `ShowHeaders = true` εισάγει αυτόματα το UI του AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Επεξήγηση:** +> - `Add(tableRange, true)` δημιουργεί ένα νέο `ListObject` (δηλαδή, έναν πίνακα Excel) μέσα στο καθορισμένο εύρος. +> - Η σημαία `true` λέει στο Aspose.Cells ότι η πρώτη γραμμή του εύρους πρέπει να θεωρηθεί ως κεφαλίδα. +> - Ορίζοντας `ShowHeaders` σε `true` κάνει την κεφαλίδα ορατή και ενεργοποιεί το ενσωματωμένο UI φίλτρου. + +Σε αυτό το σημείο, αν ανοίξετε το παραγόμενο workbook, θα δείτε έναν ωραία μορφοποιημένο πίνακα με βέλη φίλτρου σε κάθε κεφαλίδα στήλης. + +## Βήμα 5: Απόκρυψη της Γραμμής Κεφαλίδας και Απενεργοποίηση του AutoFilter + +Μερικές φορές θέλετε τα δεδομένα χωρίς το UI που γεμίζει την οθόνη. Ίσως εξάγετε μια καθαρή αναφορά όπου τα φίλτρα δεν χρειάζονται. Εδώ είναι η τεχνική **απόκρυψη κεφαλίδας πίνακα** και **απενεργοποίηση φίλτρου πίνακα**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Γιατί το κάνετε:** +> - `ShowHeaders = false` αφαιρεί την οπτική γραμμή κεφαλίδας, μετατρέποντας τον πίνακα σε απλό μπλοκ δεδομένων. +> - Ορίζοντας `AutoFilter = null` καθαρίζει το κρυφό αντικείμενο φίλτρου, εξασφαλίζοντας ότι δεν παραμένει λογική φίλτρου. Αυτό είναι αυτό που εννοούμε με **απενεργοποίηση φίλτρου πίνακα**. + +## Βήμα 6: Αποθήκευση του Workbook στον Δίσκο + +Τέλος, γράφουμε το αρχείο σε μια τοποθεσία της επιλογής σας. Αντικαταστήστε το `"YOUR_DIRECTORY"` με μια πραγματική διαδρομή στο μηχάνημά σας. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Όταν εκτελέσετε το πρόγραμμα, θα πρέπει να δείτε: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Ανοίγοντας το αρχείο θα δείτε ένα φύλλο με το μπλοκ δεδομένων (χωρίς κεφαλίδα, χωρίς βέλη φίλτρου). Αυτός είναι ο πλήρης κύκλος – από **δημιουργία πίνακα Excel** έως **απενεργοποίηση φίλτρου πίνακα**. + +--- + +## Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑και‑Επικόλληση) + +Παρακάτω βρίσκεται ολόκληρο το πρόγραμμα, έτοιμο για μεταγλώττιση. Απλώς αντικαταστήστε τον φάκελο placeholder με μια έγκυρη διαδρομή. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** Ένα αρχείο με όνομα *TableNoFilter.xlsx* που περιέχει ένα απλό εύρος δεδομένων A1:D5 χωρίς ορατή γραμμή κεφαλίδας και χωρίς dropdown φίλτρων. + +--- + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Τι γίνεται αν χρειαστώ πολλαπλούς πίνακες στο ίδιο worksheet; + +Απλώς επαναλάβετε το **Βήμα 3** με ένα νέο `CellArea` και ένα νέο `ListObject`. Κάθε πίνακας διατηρεί τις δικές του ρυθμίσεις κεφαλίδας και φίλτρου, ώστε μπορείτε να κρύψετε έναν και να κρατήσετε τον άλλο ορατό. + +### Μπορώ να μορφοποιήσω τον πίνακα (γραμμές με λωρίδες, χρώματα) πριν κρύψω την κεφαλίδα; + +Απολύτως. Το `ListObject` εκθέτει μια ιδιότητα `TableStyleType`. Για παράδειγμα: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Μπορείτε να εφαρμόσετε το στυλ **πριν** κρύψετε την κεφαλίδα· η οπτική μορφοποίηση θα παραμείνει αμετάβλητη. + +### Τι γίνεται αν θέλω να κρατήσω την κεφαλίδα αλλά να κρύψω μόνο τα βέλη φίλτρου; + +Ορίστε `ShowHeaders = true` (διατηρήστε τη γραμμή) και στη συνέχεια καθαρίστε το φίλτρο: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Αυτό ικανοποιεί την απαίτηση **απενεργοποίηση φίλτρου πίνακα** χωρίς να χάσετε τις ετικέτες των στηλών. + +### Λειτουργεί αυτό μόνο με αρχεία .xlsx; + +Το Aspose.Cells ανιχνεύει αυτόματα τη μορφή βάσει της επέκτασης του αρχείου που περνάτε στη μέθοδο `Save`. Μπορείτε επίσης να εξάγετε σε `.xls`, `.csv`, ή ακόμη και `.pdf` με διαφορετική επέκταση. + +--- + +## Συμπέρασμα + +Μόλις καλύψαμε όλα όσα χρειάζεστε για να **δημιουργήσετε πίνακα Excel** σε C# χρησιμοποιώντας Aspose.Cells, από **ορισμό εύρους πίνακα** μέχρι **απόκρυψη κεφαλίδας πίνακα** και **απενεργοποίηση φίλτρου πίνακα**. Ο κώδικας είναι σύντομος, σαφής και έτοιμος για παραγωγική χρήση. + +Στη συνέχεια, ίσως θέλετε να εξερευνήσετε **πώς να προσθέσετε πίνακα** με δυναμικά δεδομένα, να εφαρμόσετε προσαρμοσμένα στυλ, ή να εξάγετε το ίδιο workbook σε PDF. Κάθε ένα από αυτά τα θέματα βασίζεται στο θεμέλιο που μόλις κατακτήσατε, οπότε μη διστάσετε να πειραματιστείτε και να προσαρμόσετε το snippet στα δικά σας έργα. + +Έχετε κάποιο κόλπο που θέλετε να μοιραστείτε; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική διασκέδαση! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/converting-excel-files-to-other-formats/_index.md b/cells/hindi/net/converting-excel-files-to-other-formats/_index.md index cfb004f8c0..8495053eae 100644 --- a/cells/hindi/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/hindi/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Aspose.Cells का उपयोग करके .NET में CSV को JSON Aspose.Cells का उपयोग करके .NET में प्रोग्रामेटिक रूप से JSON को CSV में बदलने का तरीका जानें। निर्बाध डेटा रूपांतरण सुनिश्चित करने के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। ### [.NET में प्रोग्रामेटिक रूप से Excel फ़ाइल को PPTX में परिवर्तित करना](./converting-excel-file-to-pptx/) इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.Cells का उपयोग करके प्रोग्रामेटिक रूप से Excel फ़ाइल को PowerPoint प्रस्तुति (PPTX) में परिवर्तित करना सीखें। +### [.NET में प्रिंट एरिया सेट करें और PowerPoint में निर्यात करें – चरण‑दर‑चरण गाइड](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Aspose.Cells for .NET का उपयोग करके Excel में प्रिंट एरिया सेट करें और उसे PowerPoint स्लाइड में निर्यात करने का चरण‑दर‑चरण मार्गदर्शन। +### [Excel को PowerPoint में निर्यात – पूर्ण C# गाइड](./export-excel-to-powerpoint-complete-c-guide/) +Aspose.Cells for .NET का उपयोग करके Excel फ़ाइल को PowerPoint प्रस्तुति में निर्यात करने की पूरी C# गाइड। ### [.NET में आउटपुट HTML में HTML क्रॉसटाइप को प्रोग्रामेटिक रूप से निर्दिष्ट करना](./specifying-html-crosstype-in-output-html/) .NET के लिए Aspose.Cells में HTML CrossType निर्दिष्ट करना सीखें। Excel फ़ाइलों को सटीकता के साथ HTML में बदलने के लिए हमारे चरण-दर-चरण ट्यूटोरियल का पालन करें। ### [.NET में प्रोग्रामेटिक रूप से संख्या स्प्रेडशीट पढ़ना](./reading-numbers-spreadsheet/) diff --git a/cells/hindi/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/hindi/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..f5cda95289 --- /dev/null +++ b/cells/hindi/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: सिर्फ कुछ चरणों में एक्सेल को पावरपॉइंट में निर्यात करना, एक्सेल में + प्रिंट एरिया सेट करना, और एक्सेल को संपादन योग्य चार्ट और OLE ऑब्जेक्ट्स के साथ + PPTX के रूप में सहेजना सीखें। +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: hi +og_description: एक्सेल को जल्दी से पावरपॉइंट में निर्यात करें। यह ट्यूटोरियल दिखाता + है कि एक्सेल में प्रिंट एरिया कैसे सेट करें और एक्सेल को PPTX के रूप में सहेजें + जिसमें संपादन योग्य चार्ट और OLE ऑब्जेक्ट्स हों। +og_title: एक्सेल को पावरपॉइंट में निर्यात – पूर्ण C# गाइड +tags: +- Aspose.Cells +- C# +- Office Automation +title: एक्सेल को पावरपॉइंट में निर्यात – पूर्ण C# गाइड +url: /hi/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel को PowerPoint में निर्यात करें – पूर्ण C# गाइड + +Need to **export Excel to PowerPoint**? You're in the right place. Whether you’re building a weekly sales deck or automating a reporting pipeline, turning an Excel worksheet into a PowerPoint slide deck can save you hours of copy‑and‑paste work. + +In this tutorial we’ll walk through a hands‑on example that not only **export excel to powerpoint**, but also shows you how to **set print area Excel** and **save excel as pptx** so the resulting slides keep charts and OLE objects fully editable. By the end you’ll have a ready‑to‑run C# program that produces a professional‑looking `.pptx` file with zero manual tinkering. + +## What You’ll Need + +- **.NET 6+** (any recent .NET runtime works; the code uses C# 10 syntax) +- **Aspose.Cells for .NET** – the library that powers the export. You can grab it from NuGet (`Install-Package Aspose.Cells`). +- An Excel workbook that contains at least one chart and/or an OLE object (the sample file `ChartAndOle.xlsx` is used in the code). +- A favorite IDE (Visual Studio, Rider, or VS Code – whatever you prefer). + +That’s it. No COM interop, no Office installation required. + +> **Why bother with a library?** +> The built‑in Office Interop is fragile, needs Office on the server, and often produces rasterized images when you really want vector‑based, editable shapes. Aspose.Cells handles the heavy lifting and keeps everything editable in PowerPoint. + +--- + +## Step 1: Load the Excel Workbook + +First we bring the source file into memory. The `Workbook` class abstracts the entire Excel file, giving us access to worksheets, charts, and OLE objects. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Why this matters:** Loading the workbook is the foundation. If the path is wrong or the file is corrupted, the rest of the pipeline never runs. The `try…catch` block gives you a friendly error instead of a crash. + +--- + +## Step 2: Set the Print Area in Excel + +Before exporting, you usually want to limit the output to a specific range. This is where **set print area excel** comes into play. By defining a print area, you tell Aspose.Cells exactly which cells (and associated objects) should appear on the slide. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro tip:** If you have multiple worksheets, repeat the `PrintArea` assignment for each one you plan to export. Leaving the print area unset will export the entire sheet, which can bloat the PowerPoint file. + +--- + +## Step 3: Configure Export Options – Keep Charts & OLE Editable + +Aspose.Cells offers a rich `ImageOrPrintOptions` object. By toggling `ExportChartObjects` and `ExportOleObjects` we preserve the vector nature of charts and the live‑editability of OLE objects (like embedded Word docs or PDFs). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**What happens under the hood?** +When `ExportChartObjects` is `true`, Aspose converts the chart into a native PowerPoint chart shape, preserving series, axes, and formatting. With `ExportOleObjects` enabled, embedded objects are inserted as OLE frames, so a double‑click in PowerPoint opens the original application (Word, Excel, etc.) for editing. + +--- + +## Step 4: Save the Worksheet as an Editable PowerPoint File + +Now we tie everything together. The `Save` method writes the `.pptx` file using the options we configured. The result is a slide deck where each worksheet becomes a slide (or a series of slides if the print area spans multiple pages). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Expected Result + +- **File location:** `C:\MyProjects\EditableChartOle.pptx` +- **Content:** + - A slide showing the range `A1:H30` exactly as it appears in Excel. + - All charts are PowerPoint chart objects—click a bar and edit the data. + - OLE objects (e.g., an embedded Word doc) can be opened and edited directly from the slide. + +If you open the PPTX in PowerPoint, you should see a clean slide with fully editable components—no rasterized screenshots. + +--- + +## Edge Cases & Variations + +### Multiple Worksheets → Multiple Slides +If you want each worksheet to become its own slide, simply loop through `workbook.Worksheets` and call `Save` with a `SheetToImageOptions` that targets a specific sheet index. Aspose will automatically generate a new slide for each iteration. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Large Ranges & Performance +Exporting a massive print area (e.g., `A1:Z1000`) can increase memory usage. To mitigate, consider: +- Splitting the range into smaller chunks and exporting them as separate slides. +- Using `WorkbookSettings` to increase the `MemorySetting` if you hit `OutOfMemoryException`. + +### Compatibility Concerns +The generated PPTX works with PowerPoint 2016 and newer. Older versions may still open the file but could lose some advanced chart features. Always test on the target Office version if you’re distributing the deck widely. + +--- + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Replace the hard‑coded paths with configuration values or command‑line arguments for a more flexible tool. + +--- + +## Frequently Asked Questions + +**Q: Can I export only a chart without the surrounding cells?** +A: Yes. Use `ExportChartObjects` alone and set the print area to the chart’s bounding range. The chart will appear centered on the slide. + +**Q: What if my workbook contains macros?** +A: Aspose.Cells ignores VBA macros during export. If you need macro functionality in PowerPoint, you’ll have to recreate it using PowerPoint VBA or add‑ins. + +**Q: Does this work on Linux/macOS?** +A: Absolutely. Aspose.Cells is a pure .NET library; as long as you have the .NET runtime, the code runs cross‑platform. + +--- + +## Conclusion + +You’ve just learned how to **export Excel to PowerPoint** while precisely **set print area excel** and **save excel as pptx** with fully editable charts and OLE objects. The key steps are loading the workbook, defining the print area, configuring `ImageOrPrintOptions`, and finally saving the PPTX. + +From here you can explore: +- Exporting multiple worksheets into a single deck. +- Adding custom slide titles or notes programmatically. +- Converting the PPTX to PDF for distribution (use `SaveFormat.Pdf`). + +Give the code a spin, tweak the print area, and watch your Excel data magically appear in PowerPoint—no manual copy‑pasting required. If you run into hiccups, check the Aspose.Cells documentation or drop a comment below. Happy coding! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/hindi/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..d885adaf17 --- /dev/null +++ b/cells/hindi/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-03-22 +description: Excel में प्रिंट एरिया सेट करें और Excel को संपादन योग्य आकारों के साथ + PowerPoint में बदलें। जानें कैसे शीर्षक पंक्ति को दोहराएँ, Excel से PowerPoint बनाएँ + और Excel को PPTX में निर्यात करें। +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: hi +og_description: Excel में प्रिंट एरिया सेट करें और इसे संपादन योग्य आकारों के साथ + PowerPoint स्लाइड में बदलें। शीर्षक पंक्ति को दोहराने और Excel को PPTX में निर्यात + करने के लिए इस पूर्ण गाइड का पालन करें। +og_title: एक्सेल में प्रिंट एरिया सेट करें – पावरपॉइंट में निर्यात ट्यूटोरियल +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: एक्सेल में प्रिंट एरिया सेट करें और पावरपॉइंट में निर्यात करें – चरण‑दर‑चरण + गाइड +url: /hi/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel में प्रिंट एरिया सेट करें और PowerPoint में एक्सपोर्ट करें – पूर्ण प्रोग्रामिंग ट्यूटोरियल + +क्या आपको कभी **प्रिंट एरिया सेट** करना पड़ा है Excel वर्कशीट में और फिर उस हिस्से को PowerPoint स्लाइड में बदलना पड़ा है? आप अकेले नहीं हैं। कई रिपोर्टिंग पाइपलाइन में वही डेटा जो प्रिंट में अच्छा दिखता है, उसे प्रेजेंटेशन में भी दिखाना पड़ता है, अक्सर पहली पंक्ति को शीर्षक के रूप में दोहराया जाता है। अच्छी खबर? कुछ ही C# लाइनों से आप **excel को powerpoint में बदल** सकते हैं, सभी टेक्स्ट बॉक्स को एडिटेबल रख सकते हैं, और यहाँ तक कि **शीर्षक पंक्ति दोहराएँ** स्वचालित रूप से। + +इस गाइड में हम सब कुछ कवर करेंगे: प्रिंट एरिया को कॉन्फ़िगर करने से लेकर एक PPTX फ़ाइल बनाने तक जिसे आप सीधे PowerPoint में एडिट कर सकते हैं। अंत तक आप **excel से powerpoint बनाना**, परिणाम को **excel को pptx में एक्सपोर्ट** करना, और उसी कोड को किसी भी .NET प्रोजेक्ट में पुनः उपयोग करना सीख जाएंगे। कोई जादू नहीं, सिर्फ़ स्पष्ट कदम और एक पूर्ण, चलाने योग्य उदाहरण। + +## What You’ll Need + +शुरू करने से पहले सुनिश्चित करें कि आपके पास है: + +- **.NET 6.0** या बाद का संस्करण (API .NET Framework के साथ भी काम करता है) +- **Aspose.Cells for .NET** (लाइब्रेरी जो `Workbook`, `ImageOrPrintOptions` आदि प्रदान करती है) +- एक बेसिक C# IDE (Visual Studio, Rider, या C# एक्सटेंशन वाला VS Code) +- एक Excel फ़ाइल (`input.xlsx`) जिसमें वह डेटा हो जिसे आप एक्सपोर्ट करना चाहते हैं + +बस इतना ही—Aspose.Cells के अलावा कोई अतिरिक्त NuGet पैकेज नहीं चाहिए। यदि आपने अभी तक लाइब्रेरी नहीं जोड़ी है, तो चलाएँ: + +```bash +dotnet add package Aspose.Cells +``` + +अब हम तैयार हैं। + +## Step 1: Load the Workbook – the Starting Point for Export + +सबसे पहले आपको वह वर्कबुक लोड करनी होगी जिसमें वह शीट है जिसे आप स्लाइड में बदलना चाहते हैं। वर्कबुक को स्रोत दस्तावेज़ समझें; इसके बिना बाकी सब बेकार है। + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**क्यों महत्वपूर्ण है:** वर्कबुक लोड करने से आपको वर्कशीट कलेक्शन, पेज‑सेटअप विकल्प, और एक्सपोर्ट इंजन तक पहुँच मिलती है। यदि आप इस कदम को छोड़ देंगे तो आप **प्रिंट एरिया** सेट नहीं कर पाएंगे और न ही कोई पंक्तियों को दोहरा पाएंगे। + +> **Pro tip:** टेस्टिंग के दौरान एब्सोल्यूट पाथ इस्तेमाल करें, फिर प्रोडक्शन के लिए रिलेटिव या कॉन्फ़िगरेशन‑आधारित पाथ पर स्विच करें। + +## Step 2: Configure Export Options – Keep Text Boxes and Shapes Editable + +जब आप PowerPoint में एक्सपोर्ट करते हैं तो आमतौर पर आप चाहते हैं कि परिणामस्वरूप स्लाइड एडिटेबल हो। Aspose.Cells आपको `ImageOrPrintOptions` के साथ यह नियंत्रित करने देता है। `ExportTextBoxes` और `ExportShapeObjects` को `true` सेट करने से लाइब्रेरी उन ऑब्जेक्ट्स को नेेटिव PowerPoint एलिमेंट्स के रूप में रखती है, न कि इमेज में फ्लैटनिंग करके। + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**क्यों महत्वपूर्ण है:** यदि आपको कभी **excel को powerpoint में बदल**ना है और फिर स्लाइड को मैन्युअली ट्यून करना है, तो यह सेटिंग आपको टेक्स्ट बॉक्स को फिर से बनाने से बचाती है। यह यह भी सुनिश्चित करता है कि कोई भी शेप (जैसे एरो या चार्ट) वेक्टर ऑब्जेक्ट के रूप में रहे जिसे आप रिसाइज़ कर सकते हैं। + +## Step 3: Set Print Area and Repeat the Title Row + +अब हम ट्यूटोरियल के मुख्य भाग पर आते हैं: **प्रिंट एरिया सेट** करें और पहली पंक्ति को हर प्रिंट पेज (या हमारे मामले में, एक्सपोर्ट की गई स्लाइड) पर दोहराएँ। प्रिंट एरिया Excel को बताता है कि कौन‑से सेल्स को प्रिंट या हमारे परिदृश्य में एक्सपोर्ट करना है। + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**क्यों महत्वपूर्ण है:** एक्सपोर्ट को `A1:G20` तक सीमित करके आप बड़े खाली रेंज को खींचने से बचते हैं, जिससे रूपांतरण तेज़ होता है और स्लाइड साफ़ रहती है। `PrintTitleRows` लाइन पहली पंक्ति को हेडर की तरह बनाती है—बिल्कुल वही जो आप **शीर्षक पंक्ति दोहराएँ** चाहते हैं प्रेजेंटेशन में। + +> **Edge case:** यदि आपका डेटा पंक्ति 2 से शुरू होता है, तो रेंज को उसी अनुसार बदलें (उदा., `PrintTitleRows = "$2:$2"`). + +## Step 4: Save the Worksheet as a PowerPoint File + +अंत में, हम स्लाइड को डिस्क पर लिखते हैं। `Save` मेथड लक्ष्य फ़ाइलनाम और पहले कॉन्फ़िगर किए गए विकल्प लेता है। परिणाम एक PPTX फ़ाइल है जिसमें एडिटेबल टेक्स्ट बॉक्स और शेप्स होते हैं, जिसे आप सीधे PowerPoint में खोल सकते हैं। + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**आपको क्या दिखेगा:** `SheetWithEditableShapes.pptx` को PowerPoint में खोलें। पहली पंक्ति शीर्षक के रूप में दिखेगी, `A1:G20` की सभी सेल्स रेंडर होंगी, और Excel में जो भी शेप्स जोड़े थे वे अभी भी मूवेबल और एडिटेबल रहेंगे। कोई रास्टराइज़्ड इमेज नहीं—सिर्फ़ नेेटिव PowerPoint ऑब्जेक्ट्स। + +## Full Working Example – All Steps Combined + +नीचे पूरा, कॉपी‑पेस्ट‑तैयार प्रोग्राम दिया गया है। इसे एक कंसोल ऐप के रूप में चलाएँ या किसी बड़े सॉल्यूशन में एम्बेड करें। + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**अपेक्षित आउटपुट:** प्रोग्राम चलाने के बाद कंसोल में सफलता संदेश प्रिंट होगा, और निर्दिष्ट स्थान पर PPTX फ़ाइल बन जाएगी। फ़ाइल खोलने पर एक ही स्लाइड दिखेगी जिसमें चयनित रेंज, एडिटेबल टेक्स्ट बॉक्स, और मूल शेप्स होंगी। + +## Common Questions & Gotchas + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | हाँ। `workbook.Worksheets` पर लूप करें और प्रत्येक शीट के लिए वही कदम दोहराएँ, प्रत्येक बार आउटपुट फ़ाइलनाम बदलें। | +| **What if I need to export more than one slide?** | `workbook.Save` को कई बार अलग‑अलग `ImageOrPrintOptions` ऑब्जेक्ट्स के साथ कॉल करें, आवश्यकतानुसार अलग `PageSetup` कॉन्फ़िगर करें। | +| **Can I change the slide size?** | स्लाइड DPI सेट करने के लिए `exportOptions.ImageFormat` उपयोग करें, या सेव करने से पहले `sheet.PageSetup.PaperSize` समायोजित करें। | +| **Is Aspose.Cells free?** | यह वॉटरमार्क के साथ एक फ्री इवैल्यूएशन देता है। प्रोडक्शन के लिए लाइसेंस आवश्यक है। | +| **What about Excel formulas?** | एक्सपोर्ट किए गए मान **एक्सपोर्ट के समय के गणना परिणाम** होते हैं। यदि आपको PowerPoint में लाइव फ़ॉर्मूले चाहिए, तो आपको अलग तरीका अपनाना पड़ेगा। | + +## Tips for a Smooth Workflow + +- **Pro tip:** एक्सपोर्ट से पहले `Workbook.Settings.CalcMode = CalculationModeType.Automatic` सेट करें ताकि सभी फ़ॉर्मूले अपडेटेड हों। +- **Watch out for:** बहुत बड़े रेंज मेमोरी प्रेशर पैदा कर सकते हैं। प्रिंट एरिया को आवश्यक न्यूनतम रेंज तक सीमित रखें। +- **Performance tip:** यदि आप कई शीट्स एक्सपोर्ट कर रहे हैं तो एक ही `ImageOrPrintOptions` इंस्टेंस को पुनः उपयोग करें; हर बार नया बनाना ओवरहेड बढ़ाता है। +- **Version note:** ऊपर दिया गया कोड Aspose.Cells 23.10 (नवंबर 2023) को टारगेट करता है। बाद के संस्करण समान API रखते हैं, लेकिन हमेशा रिलीज़ नोट्स में ब्रेकिंग चेंजेज़ की जाँच करें। + +## Conclusion + +हमने बताया कि कैसे **Excel वर्कशीट में प्रिंट एरिया सेट** करें, पहली पंक्ति को शीर्षक के रूप में दोहराएँ, और फिर **excel को pptx में एक्सपोर्ट** करें जबकि एडिटेबल टेक्स्ट बॉक्स और शेप्स को बरकरार रखें। संक्षेप में, अब आप भरोसेमंद तरीके से **excel को powerpoint में बदल**, **शीर्षक पंक्ति दोहराएँ**, और **excel से powerpoint बनाएँ** सिर्फ़ कुछ C# लाइनों से कर सकते हैं। + +अगला कदम तैयार है? दर्जनों रिपोर्टों की बैच कन्वर्ज़न को ऑटोमेट करें, या एक्सपोर्ट के बाद PowerPoint SDK का उपयोग करके कस्टम स्लाइड लेआउट जोड़ें। संभावनाएँ अनंत हैं—प्रयोग करें, नई चीज़ें आज़माएँ, और प्रोग्रामेटिक डॉक्यूमेंट जेनरेशन की शक्ति का आनंद लें। + +यदि यह ट्यूटोरियल आपके काम आया, तो इसे शेयर करें, अपने खुद के ट्वीक के साथ कमेंट डालें, या हमारे अन्य गाइड्स पर नज़र डालें **excel को pptx में एक्सपोर्ट** और संबंधित ऑटोमेशन टॉपिक्स पर। Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/csv-file-handling/_index.md b/cells/hindi/net/csv-file-handling/_index.md index c150164d37..7d1a296be4 100644 --- a/cells/hindi/net/csv-file-handling/_index.md +++ b/cells/hindi/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ हमारे विस्तृत, चरण-दर-चरण गाइड के साथ .NET के लिए Aspose.Cells का उपयोग करके CSV फ़ाइलों को खोलना सीखें। मास्टर डेटा हेरफेर। ### [पसंदीदा पार्सर के साथ CSV फ़ाइलें खोलना](./csv-file-opening-csv-files-with-preferred-parser/) Aspose.Cells for .NET में कस्टम पार्सर के साथ CSV फ़ाइलों को खोलना और पार्स करना सीखें। टेक्स्ट और तारीखों को आसानी से हैंडल करें। डेवलपर्स के लिए बिल्कुल सही। +### [C# में वर्कबुक को CSV के रूप में सहेजें – Excel को CSV में निर्यात करें](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aspose.Cells for .NET का उपयोग करके Excel वर्कबुक को CSV फ़ाइल में निर्यात करने की प्रक्रिया सीखें। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/hindi/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..c4b431806b --- /dev/null +++ b/cells/hindi/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: C# में वर्कबुक को जल्दी CSV के रूप में सहेजें। सीखें कि Excel को CSV + में कैसे निर्यात करें, सटीकता सेट करें, और Aspose.Cells के साथ कुछ ही लाइनों में + xlsx को CSV में कैसे बदलें। +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: hi +og_description: C# में वर्कबुक को जल्दी CSV के रूप में सहेजें। यह गाइड दिखाता है कि + Excel को CSV में कैसे निर्यात करें, सटीकता सेट करें, और Aspose.Cells का उपयोग करके + xlsx को CSV में कैसे बदलें। +og_title: C# में वर्कबुक को CSV के रूप में सहेजें – Excel को CSV में निर्यात करें +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: C# में वर्कबुक को CSV के रूप में सहेजें – एक्सेल को CSV में निर्यात करें +url: /hi/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में वर्कबुक को CSV के रूप में सहेजें – Excel को CSV में निर्यात करें + +क्या आपको कभी **वर्कबुक को CSV के रूप में सहेजना** पड़ा है लेकिन संख्याओं को व्यवस्थित रखने का तरीका नहीं पता था? आप अकेले नहीं हैं। कई डेटा‑पाइपलाइन परिदृश्यों में हमें **Excel को CSV में निर्यात** करना पड़ता है जबकि विशिष्ट महत्वपूर्ण अंकों की संख्या को बनाए रखना होता है, और Aspose.Cells लाइब्रेरी इसे बहुत आसान बना देती है। + +इस ट्यूटोरियल में आप एक पूर्ण, तुरंत चलने वाला उदाहरण देखेंगे जो **वर्कबुक को CSV के रूप में सहेजता** है, *सटीकता कैसे सेट करें* दिखाता है, और वास्तविक प्रोजेक्ट्स के लिए *xlsx को CSV में कैसे बदलें* भी समझाता है। कोई अस्पष्ट संदर्भ नहीं—सिर्फ वह कोड जिसे आप आज ही कॉपी, पेस्ट और चलाकर उपयोग कर सकते हैं। + +## आप क्या सीखेंगे + +- कस्टम प्रिसीजन सेटिंग के साथ **वर्कबुक को CSV के रूप में सहेजने** के सटीक चरण। +- `CsvSaveOptions` का उपयोग करके **Excel को CSV में निर्यात** कैसे करें और `SignificantDigits` प्रॉपर्टी क्यों महत्वपूर्ण है। +- विभिन्न प्रिसीजन आवश्यकताओं के लिए विविधताएँ और बड़ी संख्याओं के साथ काम करते समय सामान्य समस्याएँ। +- डेटा की अखंडता खोए बिना `.xlsx` फ़ाइल को `.csv` में बदलने का त्वरित परिचय। + +### पूर्वापेक्षाएँ + +- .NET 6.0 या बाद का संस्करण (कोड .NET Framework 4.6+ पर भी काम करता है)। +- **Aspose.Cells for .NET** NuGet पैकेज (`Install-Package Aspose.Cells`)। +- C# और फ़ाइल I/O की बुनियादी समझ। + +यदि आपके पास ये हैं, तो चलिए शुरू करते हैं। + +![वर्कबुक को CSV के रूप में सहेजें उदाहरण](image.png "वर्कबुक को CSV के रूप में सहेजें उदाहरण") + +## वर्कबुक को CSV के रूप में सहेजें – चरण‑दर‑चरण गाइड + +नीचे पूरा प्रोग्राम दिया गया है। प्रत्येक पंक्ति में टिप्पणी की गई है ताकि आप देख सकें *क्यों* वह हिस्सा मौजूद है, न कि सिर्फ *क्या* वह करता है। + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### `CsvSaveOptions.SignificantDigits` क्यों उपयोग करें? + +जब आप CSV निर्यात के लिए **सटीकता कैसे सेट करें** तय करते हैं, तो आप वास्तव में यह निर्धारित कर रहे होते हैं कि फ़्लोटिंग‑पॉइंट संख्या के कितने अंक रूपांतरण के बाद बचेंगे। Excel संख्याओं को अधिकतम 15‑अंकों की सटीकता के साथ संग्रहीत करता है, लेकिन अधिकांश डाउनस्ट्रीम सिस्टम (डेटाबेस, एनालिटिक्स पाइपलाइन) को केवल कुछ ही अंकों की आवश्यकता होती है। `SignificantDigits = 4` सेट करने पर, लाइब्रेरी `123.456789` को `123.5` में राउंड कर देती है, जिससे फ़ाइल संक्षिप्त और मानव‑पठनीय रहती है। + +> **प्रो टिप:** यदि आपको *सटीक* मान चाहिए (जैसे वित्तीय डेटा के लिए), तो `SignificantDigits` को अधिक संख्या पर सेट करें या पूरी तरह से छोड़ दें। डिफ़ॉल्ट 15 है, जो Excel की आंतरिक सटीकता को दर्शाता है। + +## Excel को CSV में निर्यात – सामान्य विविधताएँ + +### विभाजक बदलना + +कुछ सिस्टम कॉमा (`;`) के बजाय सेमीकोलन (`;`) की अपेक्षा करते हैं। आप इसे इस प्रकार समायोजित कर सकते हैं: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### विशिष्ट वर्कशीट निर्यात करना + +यदि आप केवल दूसरी शीट निर्यात करना चाहते हैं, तो वैकल्पिक ब्लॉक को इस प्रकार बदलें: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +फिर पहले की तरह `workbook.Save` को कॉल करें। यह तकनीक तब उपयोगी होती है जब आप **xlsx को csv में बदलते** हैं लेकिन केवल किसी विशिष्ट टैब की परवाह करते हैं। + +### बड़े डेटा सेट संभालना + +जब लाखों पंक्तियों से निपटते हैं, तो पूरे वर्कबुक को मेमोरी में लोड करने के बजाय CSV को स्ट्रीम करने पर विचार करें। Aspose.Cells `CsvSaveOptions` की `ExportDataOnly` प्रॉपर्टी प्रदान करता है जो स्टाइल जानकारी को छोड़ देता है, जिससे मेमोरी ओवरहेड कम हो जाता है: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## CSV निर्यात – परिणाम की पुष्टि + +प्रोग्राम चलाने के बाद, `Numbers_4sd.csv` को एक साधारण टेक्स्ट एडिटर में खोलें। आपको कुछ इस तरह दिखना चाहिए: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +ध्यान दें कि संख्याएँ चार महत्वपूर्ण अंकों तक सीमित हैं, ठीक वैसा ही जैसा हमने अनुरोध किया था। यदि आप फ़ाइल को Excel में खोलते हैं, तो मान समान दिखेंगे क्योंकि Excel निर्यात के दौरान लागू राउंडिंग को मानता है। + +## किनारे के मामलों और समस्या निवारण + +| स्थिति | क्या जांचें | समाधान | +|-----------|---------------|-----| +| **फ़ाइल नहीं मिली** | `sourcePath` वास्तविक `.xlsx` फ़ाइल की ओर इशारा करता है, यह सुनिश्चित करें। | `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")` का उपयोग करें। | +| **गलत राउंडिंग** | `Save` कॉल करने से पहले `SignificantDigits` सेट है, यह सुनिश्चित करें। | `CsvSaveOptions` असाइनमेंट को पहले ले जाएँ या मान को दोबारा जांचें। | +| **विशेष अक्षर � के रूप में दिख रहे हैं** | CSV एन्कोडिंग डिफ़ॉल्ट रूप से UTF‑8 बिना BOM के होती है। | `csvOptions.Encoding = System.Text.Encoding.UTF8` या `Encoding.Unicode` सेट करें। | +| **अतिरिक्त खाली कॉलम** | कुछ वर्कशीट्स में उपयोग किए गए रेंज के बाहर अनावश्यक फॉर्मेटिंग होती है। | निर्यात से पहले अनावश्यक कॉलम को ट्रिम करने के लिए `worksheet.Cells.MaxDisplayRange` को कॉल करें। | + +## प्रिसीजन को डायनामिक रूप से सेट करना + +कभी‑कभी आवश्यक प्रिसीजन कंपाइल टाइम पर ज्ञात नहीं होता। आप इसे कॉन्फ़िग फ़ाइल या कमांड‑लाइन आर्ग्यूमेंट से पढ़ सकते हैं: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +अब आप चला सकते हैं: + +``` +dotnet run -- 6 +``` + +और छह महत्वपूर्ण अंकों के साथ CSV प्राप्त करेंगे। यह छोटा बदलाव समाधान को विभिन्न परिवेशों में **CSV निर्यात कैसे करें** के लिए लचीला बनाता है। + +## पूर्ण कार्यशील उदाहरण का सारांश + +सब कुछ मिलाकर, पूर्ण प्रोग्राम (वैकल्पिक बदलावों सहित) इस प्रकार दिखता है: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +प्रोग्राम चलाएँ, उत्पन्न CSV खोलें, और आप वह प्रिसीजन देखेंगे जो आपने माँगा था, यह पुष्टि करते हुए कि आपने सफलतापूर्वक **वर्कबुक को CSV के रूप में सहेजा** है। + +## निष्कर्ष + +अब आपके पास C# में **वर्कबुक को CSV के रूप में सहेजने** के लिए एक ठोस, प्रोडक्शन‑रेडी विधि है। गाइड ने *Excel को CSV में निर्यात कैसे करें* को कवर किया, `CsvSaveOptions.SignificantDigits` के माध्यम से *प्रिसीजन कैसे सेट करें* दिखाया, और **xlsx को csv में बदलने** के कई परिदृश्यों को प्रस्तुत किया। पूर्ण कोड स्निपेट के साथ, आप इसे किसी भी .NET प्रोजेक्ट में जोड़ सकते हैं और तुरंत डेटा निर्यात करना शुरू कर सकते हैं। + +**अगला क्या?** + +- विभिन्न विभाजकों (`;`, `\t`) के साथ प्रयोग करें ताकि TSV निर्यात हो सके। +- इस विधि को फ़ाइल‑वॉचर के साथ मिलाएँ ताकि जब भी Excel फ़ाइल बदलें, CSV स्वचालित रूप से जनरेट हो। +- यदि आपको कभी CSV को फिर से वर्कबुक में पढ़ना हो तो Aspose.Cells के `CsvLoadOptions` का अन्वेषण करें। + +प्रिसीजन को बदलने, कस्टम हेडर जोड़ने, या एक्सपोर्टर को जोड़ने में संकोच न करें + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/document-properties/_index.md b/cells/hindi/net/document-properties/_index.md index 487781c822..130a8b15a8 100644 --- a/cells/hindi/net/document-properties/_index.md +++ b/cells/hindi/net/document-properties/_index.md @@ -35,6 +35,8 @@ Excel में दस्तावेज़ गुण आपकी फ़ाइ हमारे चरण-दर-चरण गाइड के साथ .NET के लिए Aspose.Cells का उपयोग करके Excel में दस्तावेज़ गुणों तक पहुँचने का तरीका जानें। अपनी स्प्रेडशीट को कुशलतापूर्वक प्रबंधित करें। ### [.NET में दस्तावेज़ गुण जोड़ना](./adding-document-properties/) इस विस्तृत चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.Cells का उपयोग करके Excel में दस्तावेज़ गुण जोड़ना सीखें। +### [Excel वर्कबुक बनाएं – कस्टम प्रॉपर्टीज़ जोड़ें और XLSB के रूप में सहेजें](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Excel वर्कबुक बनाएं, कस्टम प्रॉपर्टीज़ जोड़ें और इसे XLSB फ़ॉर्मेट में सहेजें। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/hindi/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..d3a223734e --- /dev/null +++ b/cells/hindi/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: C# का उपयोग करके Excel वर्कबुक बनाएं, कस्टम प्रॉपर्टीज़ जोड़ें, शीट का + नाम सेट करें, और इसे XLSB बाइनरी फ़ाइल के रूप में सहेजें। +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: hi +og_description: Excel वर्कबुक बनाएं, कस्टम प्रॉपर्टीज़ जोड़ें, वर्कशीट का नाम सेट + करें, और C# का उपयोग करके इसे XLSB बाइनरी फ़ाइल के रूप में सहेजें। +og_title: एक्सेल वर्कबुक बनाएं – कस्टम प्रॉपर्टीज़ जोड़ें और XLSB के रूप में सहेजें +tags: +- C# +- Aspose.Cells +- Excel automation +title: एक्सेल वर्कबुक बनाएं – कस्टम प्रॉपर्टीज़ जोड़ें और इसे XLSB के रूप में सहेजें +url: /hi/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel वर्कबुक बनाएं – कस्टम प्रॉपर्टीज़ जोड़ें और XLSB के रूप में सहेजें + +क्या आपको कभी प्रोग्रामेटिकली **Excel वर्कबुक बनाना** पड़ा है लेकिन साथ ही कुछ मेटाडेटा भी संलग्न रखना है? शायद आप एक रिपोर्टिंग इंजन बना रहे हैं जो प्रत्येक फ़ाइल को रिपोर्ट आईडी, लेखक का नाम, या संस्करण संख्या से टैग करता है। ऐसे में, **कस्टम प्रॉपर्टीज़ जोड़ना** सीखना, जबकि आप **वर्कशीट का नाम सेट** करते हैं और अंत में **XLSB के रूप में सहेजते** हैं, आपको बहुत सारा मैनुअल पोस्ट‑प्रोसेसिंग से बचाएगा। + +इस ट्यूटोरियल में हम एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से चलेंगे जो दिखाता है कि C# का उपयोग करके **बाइनरी Excel फ़ाइल लिखना** कैसे किया जाता है। आप देखेंगे कि कस्टम प्रॉपर्टीज़ को ट्रांसपोर्ट करने के लिए XLSB फ़ॉर्मेट सही विकल्प क्यों है, सामान्य समस्याओं से कैसे बचा जाए, और यदि आपको पुराने Excel संस्करणों का समर्थन करना हो तो क्या करना चाहिए। + +--- + +## आपको क्या चाहिए + +- **.NET 6+** (या .NET Framework 4.6+). कोड किसी भी हालिया रनटाइम पर काम करता है। +- **Aspose.Cells for .NET** (फ़्री ट्रायल या लाइसेंस्ड)। यह नीचे उपयोग किए गए `Workbook`, `Worksheet`, और `CustomProperties` क्लासेज़ प्रदान करता है। +- वह IDE जिसमें आप सहज हों – Visual Studio, Rider, या यहाँ तक कि VS Code भी चलेगा। +- उस फ़ोल्डर में लिखने की अनुमति जहाँ जेनरेट की गई फ़ाइल सहेजी जाएगी। + +कोई अन्य थर्ड‑पार्टी लाइब्रेरीज़ आवश्यक नहीं हैं। + +## चरण 1: Aspose.Cells इंस्टॉल करें + +शुरू करने के लिए, अपने प्रोजेक्ट में Aspose.Cells NuGet पैकेज जोड़ें: + +```bash +dotnet add package Aspose.Cells +``` + +> **प्रो टिप:** यदि आप CI सर्वर पर हैं, तो लाइसेंस कुंजी को एक एनवायरनमेंट वैरिएबल में स्टोर करें और रनटाइम पर लोड करें – इससे “evaluation” वाटरमार्क आपके आउटपुट में छिपने से बचता है। + +## चरण 2: Excel वर्कबुक बनाएं – अवलोकन + +पहला वास्तविक कार्य है **Excel वर्कबुक बनाना**। यह ऑब्जेक्ट मेमोरी में पूरी फ़ाइल का प्रतिनिधित्व करता है और आपको वर्कशीट्स, स्टाइल्स, और कस्टम प्रॉपर्टीज़ तक पहुँच देता है। + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +एक नया `Workbook` क्यों बनाएं बजाय टेम्प्लेट लोड करने के? एक खाली वर्कबुक यह सुनिश्चित करती है कि कोई छिपी हुई स्टाइल्स या बचे हुए कस्टम प्रॉपर्टीज़ न हों, जो विशेष रूप से महत्वपूर्ण है जब आप डाउनस्ट्रीम सिस्टम्स के लिए **बाइनरी Excel फ़ाइल लिखना** चाहते हैं जो एक साफ़ स्लेट की अपेक्षा करते हैं। + +## चरण 3: वर्कशीट का नाम सेट करें (और यह क्यों महत्वपूर्ण है) + +Excel शीट्स डिफ़ॉल्ट रूप से “Sheet1”, “Sheet2”, आदि होते हैं। शीट को एक सार्थक नाम देना डाउनस्ट्रीम प्रोसेसिंग—जैसे Power Query या VBA मैक्रोज़—को पढ़ने में बहुत आसान बनाता है। + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +यदि आप डुप्लिकेट नाम असाइन करने की कोशिश करेंगे, तो Aspose.Cells `ArgumentException` फेंकेगा। सुरक्षित रहने के लिए, आप रीनेम करने से पहले `Worksheets.Exists("Data")` की जाँच कर सकते हैं। + +## चरण 4: कस्टम प्रॉपर्टीज़ जोड़ें + +कस्टम प्रॉपर्टीज़ वर्कबुक के आंतरिक XML में संग्रहीत होती हैं और फ़ॉर्मेट की परवाह किए बिना फ़ाइल के साथ यात्रा करती हैं। ये `ReportId` या `GeneratedBy` जैसी चीज़ों को एम्बेड करने के लिए परफेक्ट हैं। + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **कस्टम प्रॉपर्टीज़ क्यों उपयोग करें?** +> • वे Excel के “File → Info → Properties” पैनल से एक्सेस की जा सकती हैं। +> • वर्कबुक को उपभोग करने वाला कोड उन्हें सेल कंटेंट स्कैन किए बिना पढ़ सकता है। +> • वे फ़ॉर्मेट रूपांतरण (XLSX ↔ XLSB) के बाद भी बनी रहती हैं क्योंकि वे फ़ाइल के मेटाडेटा का हिस्सा हैं। + +आप तिथियों, बूलियन, या यहाँ तक कि बाइनरी ब्लॉब्स भी स्टोर कर सकते हैं, लेकिन पेलोड छोटा रखें—Excel डेटाबेस नहीं है। + +## चरण 5: XLSB के रूप में सहेजें (बाइनरी Excel फ़ाइल लिखें) + +XLSB फ़ॉर्मेट डेटा को बाइनरी संरचना में संग्रहीत करता है, जिससे फ़ाइल छोटी और खोलने में तेज़ होती है। इस ट्यूटोरियल के लिए और भी महत्वपूर्ण बात यह है कि **कस्टम प्रॉपर्टीज़ बाइनरी स्ट्रीम में एम्बेड होती हैं**, जिससे यह सुनिश्चित होता है कि वे फ़ाइल के साथ यात्रा करती रहें। + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### अपेक्षित परिणाम + +प्रोग्राम चलाने के बाद, आपको अपने डेस्कटॉप पर `WithCustomProps.xlsb` मिलेगा। इसे Excel में खोलें, **File → Info → Properties** पर जाएँ, और आप *Custom* के तहत `ReportId` और `GeneratedBy` सूचीबद्ध देखेंगे। + +## चरण 6: किनारे के केस और सामान्य प्रश्न + +### यदि लक्ष्य फ़ोल्डर रीड‑ओनली है तो क्या करें? + +`Save` कॉल को `try/catch` ब्लॉक में रैप करें और `%TEMP%` जैसे उपयोगकर्ता‑लिखने योग्य स्थान पर फ़ॉल बैक करें। इससे अनुमति त्रुटियों पर एप्लिकेशन क्रैश होने से बचता है। + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### क्या मैं **XLSX के रूप में सहेज सकता हूँ** और फिर भी कस्टम प्रॉपर्टीज़ रख सकता हूँ? + +हाँ—सिर्फ `SaveFormat.Xlsb` को `SaveFormat.Xlsx` में बदलें। प्रॉपर्टीज़ उसी XML भाग में संग्रहीत होती हैं, इसलिए वे फ़ॉर्मेट स्विच के बाद भी बनी रहती हैं। हालांकि, XLSX फ़ाइलें बड़ी होती हैं क्योंकि वे ज़िप्ड XML होती हैं, जबकि XLSB बड़े डेटा सेट्स के लिए बेहतर प्रदर्शन प्रदान करता है। + +### बाद में कस्टम प्रॉपर्टीज़ कैसे पढ़ूँ? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +यह स्निपेट हर कस्टम प्रॉपर्टी को प्रिंट करता है, जिससे डाउनस्ट्रीम सर्विसेज़ के लिए फ़ाइल की उत्पत्ति सत्यापित करना आसान हो जाता है। + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा प्रोग्राम है जिसे आप एक नए कंसोल प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं। कोई हिस्सा नहीं छूटा है—`using` स्टेटमेंट्स से लेकर अंतिम `Console.WriteLine` तक सब कुछ शामिल है। + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +प्रोग्राम चलाएँ, परिणामी फ़ाइल खोलें, और कस्टम प्रॉपर्टीज़ सत्यापित करें। यही **Excel वर्कबुक बनाना**, **कस्टम प्रॉपर्टीज़ जोड़ना**, **वर्कशीट नाम सेट करना**, और **XLSB के रूप में सहेजना** की पूरी प्रक्रिया है, एक साफ़ प्रवाह में। + +## निष्कर्ष + +अब आप बिल्कुल जानते हैं कि **Excel वर्कबुक कैसे बनाएं**, उसकी शीट को स्पष्ट **वर्कशीट नाम सेट** करें, उपयोगी मेटाडेटा को **कस्टम प्रॉपर्टीज़ जोड़कर** एम्बेड करें, और अंत में **XLSB के रूप में सहेजें** ताकि एक कॉम्पैक्ट, बाइनरी Excel फ़ाइल बन सके। यह वर्कफ़्लो विश्वसनीय है, .NET संस्करणों में काम करता है, और चाहे आप एक रिपोर्ट बना रहे हों या हजार, यह अच्छी तरह स्केल करता है। + +अगला क्या? “Data” शीट में एक डेटा टेबल जोड़ने का प्रयास करें, विभिन्न प्रॉपर्टी प्रकारों (तिथियां, बूलियन) के साथ प्रयोग करें, या बड़े डेटा सेट्स के लिए आउटपुट को **XLSB के रूप में सहेजें** में बदलें। आप वर्कबुक को पासवर्ड से सुरक्षित करने का भी पता लगा सकते हैं—Aspose.Cells इसे भी एक लाइन में कर देता है। + +यदि आपको कोई समस्या आती है तो बेझिझक टिप्पणी छोड़ें, या बताएं कि आपने इस पैटर्न को अपने प्रोजेक्ट्स में कैसे विस्तारित किया है। कोडिंग का आनंद लें! + +--- + +![Create Excel workbook screenshot](image.png){alt="कस्टम प्रॉपर्टीज़ के साथ Excel वर्कबुक बनाएं"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/excel-advanced-named-ranges/_index.md b/cells/hindi/net/excel-advanced-named-ranges/_index.md index 5be53997fb..fd8151c7d8 100644 --- a/cells/hindi/net/excel-advanced-named-ranges/_index.md +++ b/cells/hindi/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ इस व्यापक चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.Cells का उपयोग करके Excel में नामित श्रेणी में कोशिकाओं को आसानी से पहचानें। ### [एक्सेल में नामित श्रेणी में कक्षों को मर्ज करें](./merge-cells-in-named-range/) इस चरण-दर-चरण ट्यूटोरियल में Aspose.Cells for .NET का उपयोग करके नामित श्रेणी में सेल मर्ज करना सीखें। Excel रिपोर्ट को फ़ॉर्मेट, स्टाइल और स्वचालित करने का तरीका जानें। +### [Excel वर्कबुक बनाना – तालिकाएँ जोड़ने और नामकरण नियमों का चरण‑दर‑चरण गाइड](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +इस चरण‑दर‑चरण गाइड में .NET के लिए Aspose.Cells का उपयोग करके वर्कबुक बनाना, तालिकाएँ जोड़ना और नामकरण नियम सेट करना सीखें। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/hindi/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..8c3bcf4314 --- /dev/null +++ b/cells/hindi/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-22 +description: एक तालिका के साथ एक्सेल वर्कबुक बनाएं, एक्सेल तालिका नामकरण नियम सीखें, + नामित रेंज त्रुटि से बचें, और C# में एक्सेल तालिका का नाम सही ढंग से सेट करें। +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: hi +og_description: C# में एक्सेल वर्कबुक बनाएं और एक्सेल टेबल नामकरण नियमों में निपुण + बनें। सीखें कि टेबल वर्कशीट कैसे जोड़ें, एक्सेल टेबल का नाम कैसे सेट करें, और नामित + रेंज त्रुटियों को कैसे ठीक करें। +og_title: एक्सेल वर्कबुक बनाएं – पूर्ण C# टेबल और नामकरण गाइड +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: एक्सेल वर्कबुक बनाएं – तालिकाएँ जोड़ने और नामकरण नियमों के लिए चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel वर्कबुक बनाएं – टेबल्स और नेमिंग पर पूर्ण C# गाइड + +क्या आपको कभी प्रोग्रामेटिकली **create excel workbook** बनाने की ज़रूरत पड़ी है और आश्चर्य हुआ कि आपका टेबल नाम अचानक एक named range से टकरा रहा है? आप अकेले नहीं हैं। कई ऑटोमेशन प्रोजेक्ट्स में जब आप टेबल को एक दोस्ताना पहचानकर्ता देने की कोशिश करते हैं, तो Excel एक *named range error* फेंकता है जो पूरी प्रक्रिया को रोक देता है। + +इस ट्यूटोरियल में हम एक पूरी‑चलाने योग्य उदाहरण के माध्यम से चलेंगे जो **creates an Excel workbook**, **adds a table to a worksheet**, और **excel table naming rules** को समझाता है जो आपको खुद पर ठोकर खाने से बचाते हैं। अंत तक आप बिल्कुल जान पाएँगे कि कैसे **add table worksheet**, **set excel table name**, और कभी‑कभी होने वाले नाम टकराव को सुगमता से संभालें। + +> **Pro tip:** अधिकांश भ्रम इस तथ्य से उत्पन्न होता है कि Excel टेबल नामों और workbook‑level named ranges को एक ही नेमस्पेस के रूप में मानता है। इस नियम को जल्दी समझने से आपको डिबगिंग में घंटों की बचत होती है। + +## आपको क्या चाहिए + +- **Aspose.Cells for .NET** (या कोई भी लाइब्रेरी जो `Workbook`, `Worksheet`, `ListObject` क्लासेज़ को एक्सपोज़ करती है)। +- .NET 6+ या .NET Framework 4.8 – कोड दोनों पर काम करता है। +- C# सिंटैक्स की बुनियादी समझ – कोई उन्नत ट्रिक्स आवश्यक नहीं। + +अगर आपके पास ये हैं, तो चलिए शुरू करते हैं। + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## चरण 1: Excel वर्कबुक बनाएं और पहली वर्कशीट तक पहुँचें + +जब आप **create excel workbook** करते हैं, तो सबसे पहला काम `Workbook` क्लास को इंस्टैंशिएट करना और उस शीट का रेफ़रेंस लेना है जिस पर आप काम करेंगे। Aspose.Cells में वर्कबुक डिफ़ॉल्ट रूप से “Sheet1” नाम की शीट से शुरू होती है। + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +यह चरण क्यों महत्वपूर्ण है? वर्कबुक ऑब्जेक्ट के बिना आपके पास टेबल जोड़ने के लिए कुछ नहीं होता, और `Worksheet` रेफ़रेंस आपको एक कैनवास देता है जहाँ **add table worksheet** ऑपरेशन होगा। + +## चरण 2: विशिष्ट रेंज को कवर करने वाला टेबल (ListObject) जोड़ें + +अब हम **add table worksheet**‑लेवल डेटा जोड़ते हैं। `ListObjects.Add` मेथड एक रेंज स्ट्रिंग और एक बूलियन अपेक्षित करता है जो दर्शाता है कि पहली पंक्ति में हेडर हैं या नहीं। + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +ध्यान दें `salesTable.Name = "SalesData"` कॉल पर। यही वह जगह है जहाँ **excel table naming rules** लागू होते हैं: नाम पूरे वर्कबुक में अद्वितीय होना चाहिए, न कि केवल शीट में। यह स्पेस या विशेष अक्षर नहीं रख सकता, और यह अक्षर या अंडरस्कोर से शुरू होना चाहिए। + +## चरण 3: समान पहचानकर्ता के साथ वर्कबुक‑लेवल Named Range बनाने का प्रयास + +अब हम जानबूझकर **named range error** को उत्पन्न करते हैं यह देखने के लिए कि जब नाम टकराव होता है तो क्या होता है। + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +यदि आप उस लाइन को अनकमेंट करते हैं, तो Aspose.Cells एक `ArgumentException` फेंकता है जिसमें कहा गया है कि नाम पहले से मौजूद है। त्रुटि संदेश इस प्रकार दिखता है: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +वह संदेश वही **named range error** है जिसके बारे में हमने पहले चेतावनी दी थी। यह बताता है कि **excel table naming rules** टेबल नामों और named ranges को एक ही नेमस्पेस के रूप में मानते हैं। + +## चरण 4: नाम टकराव को सुगमता से संभालना + +वास्तविक‑दुनिया के कोड में आप उस एक्सेप्शन को पकड़ना चाहेंगे और या तो टेबल का नाम बदलेंगे या कोई अलग रेंज नाम चुनेंगे। इसे करने का एक साफ़ तरीका यहाँ है: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +`try/catch` में कॉल को रैप करके, आप एक हार्ड क्रैश से बचते हैं और उपयोगकर्ता (या कॉलिंग कोड) को एक स्पष्ट स्पष्टीकरण देते हैं—बिल्कुल वही प्रकार का **excel table naming rules** अंतर्दृष्टि जो भविष्य के बग्स को रोकती है। + +## चरण 5: वर्कबुक को सेव करें और परिणाम की जाँच करें + +अंत में, फ़ाइल को डिस्क पर सहेजें और Excel में खोलें यह पुष्टि करने के लिए कि टेबल और सभी named ranges मौजूद हैं। + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +जब आप *SalesReport.xlsx* खोलेंगे तो आप देखेंगे: + +- एक टेबल जो **A1:C5** को कवर करता है, जिसका नाम **SalesData** है। +- यदि आपने वैकल्पिक रेंज रखी है, तो एक workbook‑level named range **SalesData_Range** जो **D1** की ओर इशारा करता है। + +कोई रनटाइम क्रैश नहीं, और नाम टकराव हल हो गया है। + +## Excel टेबल नेमिंग नियमों को गहराई से समझना + +आइए देखें कि ये नियम क्यों मौजूद हैं: + +| नियम | अर्थ | उदाहरण | +|------|------|---------| +| **Unique across workbook** | कोई दो टेबल या named ranges एक ही पहचानकर्ता साझा नहीं कर सकते। | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | नाम संख्या से शुरू नहीं हो सकते। | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | CamelCase या अंडरस्कोर का उपयोग करें। | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | व्यावहारिक रूप से हमेशा संतुष्ट किया जाता है। | N/A | + +इन नियमों को ध्यान में रखते हुए जब आप **set excel table name** करेंगे तो डरावना *named range error* समाप्त हो जाता है। + +## सामान्य विविधताएँ और किनारे के मामले + +1. **एकाधिक टेबल जोड़ना – प्रत्येक टेबल का अपना अद्वितीय नाम होना चाहिए।** +2. **मौजूदा टेबल का नाम बदलना – किसी भी टकराव वाले named ranges बनाने से पहले `salesTable.Name = "NewName"` उपयोग करें।** +3. **डायनामिक रेंज का उपयोग – यदि आपको एक विस्तारित रेंज चाहिए, तो स्थैतिक एड्रेस के बजाय `=SalesData[Amount]` जैसी स्ट्रक्चर्ड रेफ़रेंस उपयोग करें।** +4. **क्रॉस‑शीट named ranges – वे अभी भी उसी नेमस्पेस का हिस्सा हैं, इसलिए Sheet1 पर टेबल का नाम Sheet2 पर उसी नाम की रेंज को ब्लॉक करता है।** + +## सुगम Excel ऑटोमेशन के लिए प्रो टिप्स + +- **Add करने से पहले मौजूदगी जांचें**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **प्रोग्रामेटिकली सुरक्षित नाम जेनरेट करें**: जब आप अनिश्चित हों तो GUID या इन्क्रीमेंटल काउंटर (`SalesData_{Guid.NewGuid()}`) जोड़ें। +- `ListObject.ShowHeaders = true` **उपयोग करें** ताकि आपके टेबल स्वयं‑डॉक्यूमेंटेड हों। +- **सेव करने के बाद वैलिडेट करें**: फ़ाइल को हल्की लाइब्रेरी (जैसे EPPlus) से खोलें यह सुनिश्चित करने के लिए कि टेबल सही तरीके से बना है। + +## पुनरावलोकन: हमने क्या कवर किया + +- Aspose.Cells का उपयोग करके स्क्रैच से **create excel workbook** कैसे करें। +- सटीक **excel table naming rules** जो टेबल और named range पहचानकर्ताओं को नियंत्रित करते हैं। +- जब आप नाम दोबारा उपयोग करते हैं तो **named range error** क्यों आता है। +- बिना टकराव के **add table worksheet** और **set excel table name** करने का सही तरीका। +- नाम टकराव को सुगमता से संभालने के लिए एक मजबूत पैटर्न। + +## आगे क्या? + +अब जब आप बुनियादी बातों में निपुण हो गए हैं, तो आगे की चीज़ें देखें: + +- `ListObject.Resize` का उपयोग करके **डायनामिक टेबल ग्रोथ**। +- टेबल्स पर **स्टाइल लागू करना** (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`)। +- टेबल संरचनाओं को बनाए रखते हुए **CSV में एक्सपोर्ट** करना। +- वर्कबुक इंटर्नल्स पर और अधिक कड़ी नियंत्रण के लिए **Office Open XML के साथ इंटीग्रेशन**। + +बिना झिझक प्रयोग करें—रेंज बदलें, अधिक टेबल जोड़ें, या विभिन्न नामकरण योजनाओं के साथ खेलें। जितना अधिक आप प्रयोग करेंगे, उतनी ही गहरी आपकी समझ **excel table naming rules** की होगी। + +--- + +*हैप्पी कोडिंग, और आपके वर्कबुक्स फिर कभी टकराव न करें!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/excel-custom-number-date-formatting/_index.md b/cells/hindi/net/excel-custom-number-date-formatting/_index.md index f2f91df8a9..2bb4bf5d13 100644 --- a/cells/hindi/net/excel-custom-number-date-formatting/_index.md +++ b/cells/hindi/net/excel-custom-number-date-formatting/_index.md @@ -33,9 +33,11 @@ ## एक्सेल कस्टम संख्या और दिनांक स्वरूपण ट्यूटोरियल ### [जाँचें कि क्या सेल मान किसी विशिष्ट कस्टम संख्या प्रारूप में है](./check-if-a-cell-value-is-in-a-specific-custom-number-format/) -इस चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.Cells का उपयोग करके कस्टम संख्या प्रारूपों के विरुद्ध Excel सेल मानों की जांच करना सीखें। +इस चरण-दर-स्टेप ट्यूटोरियल के साथ .NET के लिए Aspose.Cells का उपयोग करके कस्टम संख्या प्रारूपों के विरुद्ध Excel सेल मानों की जांच करना सीखें। ### [एक्सेल शीट में डेटा आयात करते समय फ़ॉर्मूला फ़ील्ड निर्दिष्ट करें](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) इस विस्तृत ट्यूटोरियल में जानें कि .NET के लिए Aspose.Cells का उपयोग करके निर्दिष्ट सूत्र फ़ील्ड के साथ Excel शीट में डेटा कैसे आयात करें। +### [C# में Excel कस्टम नंबर फ़ॉर्मेट – पूर्ण गाइड](./custom-number-format-excel-in-c-complete-guide/) +C# के साथ Aspose.Cells का उपयोग करके Excel में कस्टम नंबर फ़ॉर्मेट को लागू करने की पूरी गाइड। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/hindi/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..b5a718576f --- /dev/null +++ b/cells/hindi/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,295 @@ +--- +category: general +date: 2026-03-22 +description: कस्टम नंबर फ़ॉर्मेट एक्सेल ट्यूटोरियल जिसमें दिखाया गया है कि डेटाटेबल + को एक्सेल में कैसे इम्पोर्ट करें, कॉलम की पृष्ठभूमि का रंग सेट करें, कॉलम को मुद्रा + के रूप में फ़ॉर्मेट करें और वर्कबुक को xlsx के रूप में सहेजें। +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: hi +og_description: कस्टम नंबर फ़ॉर्मेट एक्सेल ट्यूटोरियल जो आपको डेटा टेबल आयात करने, + कॉलम की पृष्ठभूमि रंग सेट करने, कॉलम को मुद्रा के रूप में फ़ॉर्मेट करने, और वर्कबुक + को xlsx के रूप में सहेजने के माध्यम से मार्गदर्शन करता है। +og_title: C# में Excel के लिए कस्टम नंबर फ़ॉर्मेट – चरण‑दर‑चरण गाइड +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C# में एक्सेल के कस्टम नंबर फ़ॉर्मेट – पूर्ण गाइड +url: /hi/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# कस्टम नंबर फ़ॉर्मेट एक्सेल – फुल‑स्टैक C# ट्यूटोरियल + +क्या आपने कभी सोचा है कि C# से सीधे **custom number format excel** शैली कैसे लागू करें? शायद आपने DataTable को स्प्रेडशीट में डंप करने की कोशिश की होगी, लेकिन केवल साधारण संख्याएँ, कोई रंग नहीं, और कोई मुद्रा फ़ॉर्मेट नहीं देखी। यह एक सामान्य समस्या है—विशेषकर जब आपको स्टेकहोल्डर्स के लिए एक पॉलिश्ड रिपोर्ट चाहिए। + +इस गाइड में हम मिलकर इस समस्या को हल करेंगे: आप सीखेंगे कि कैसे **import datatable to excel**, **set column background color**, **format column as currency**, और अंत में **save workbook as xlsx** को एक कस्टम नंबर फ़ॉर्मेट के साथ सहेजें जो आपके आंकड़ों को आकर्षक बनाता है। कोई अस्पष्ट संदर्भ नहीं, सिर्फ एक पूर्ण, चलाने योग्य समाधान जिसे आप अपने प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं। + +--- + +## आप क्या बनाएँगे + +1. एक `DataTable` प्राप्त करता है (आप स्टब को अपनी क्वेरी से बदल सकते हैं)। +2. Aspose.Cells (या कोई भी संगत लाइब्रेरी) का उपयोग करके एक नया Excel वर्कबुक बनाता है। +3. पहले कॉलम पर नीला, बोल्ड फ़ॉन्ट, दूसरे कॉलम पर हल्का‑पीला बैकग्राउंड, और तीसरे कॉलम पर मुद्रा फ़ॉर्मेट (`$#,##0.00`) लागू करता है। +4. फ़ाइल को `DataTableWithStyleArray.xlsx` के रूप में उस फ़ोल्डर में सहेजता है जिसे आप चुनते हैं। + +आप देखेंगे कि प्रत्येक पंक्ति अंतिम Excel फ़ाइल में कैसे योगदान देती है, और हम चर्चा करेंगे कि ये विकल्प रखरखाव और प्रदर्शन के लिए क्यों महत्वपूर्ण हैं। + +--- + +## पूर्वापेक्षाएँ + +- .NET 6.0 या बाद का संस्करण (कोड .NET Framework 4.7+ के साथ भी काम करता है)। +- Aspose.Cells for .NET (फ्री ट्रायल या लाइसेंस्ड संस्करण)। NuGet के माध्यम से इंस्टॉल करें: + +```bash +dotnet add package Aspose.Cells +``` + +- `DataTable` और C# कंसोल एप्लिकेशन की बुनियादी परिचितता। + +--- + +## चरण 1: स्रोत डेटा को DataTable के रूप में प्राप्त करें + +सबसे पहले, हमें निर्यात करने के लिए कुछ डेटा चाहिए। वास्तविक दुनिया के परिदृश्य में आप संभवतः एक रिपॉज़िटरी को कॉल करेंगे या SQL क्वेरी चलाएंगे। उदाहरण के लिए हम एक सरल इन‑मेमोरी टेबल बनाएँगे। + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **यह क्यों महत्वपूर्ण है:** `DataTable` का उपयोग करने से आपको एक तालिका‑आधारित, स्कीमा‑जागरूक स्रोत मिलता है जो Excel पंक्तियों और कॉलमों में साफ़-साफ़ मैप होता है। यह आपको किसी भी डेटासेट के लिए वही एक्सपोर्ट लॉजिक पुनः उपयोग करने देता है बिना कोड को फिर से लिखे। + +--- + +## चरण 2: नया वर्कबुक बनाएं और पहली वर्कशीट प्राप्त करें + +अब हम एक Excel वर्कबुक बनाते हैं। `Workbook` क्लास पूरी फ़ाइल का प्रतिनिधित्व करती है; इसका `Worksheets[0]` डिफ़ॉल्ट शीट है जहाँ हम अपना डेटा डालेंगे। + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **प्रो टिप:** यदि आपको कई शीट्स चाहिए, तो बस `workbook.Worksheets.Add("SheetName")` कॉल करें और प्रत्येक के लिए स्टाइलिंग चरण दोहराएँ। + +--- + +## चरण 3: कॉलम शैलियों को परिभाषित करें – फ़ॉन्ट, बैकग्राउंड, और नंबर फ़ॉर्मेट + +Aspose.Cells में स्टाइलिंग `Style` ऑब्जेक्ट्स के माध्यम से की जाती है। हम एक एरे बनाएँगे जहाँ प्रत्येक तत्व DataTable के एक कॉलम से मेल खाता है। + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **स्टाइल एरे क्यों?** `ImportDataTable` को एरे पास करने से आप एक ही कॉल में प्रत्येक कॉलम पर अलग शैली लागू कर सकते हैं, जो संक्षिप्त और प्रदर्शन‑उपयुक्त दोनों है। यह यह भी सुनिश्चित करता है कि फ़ॉर्मेटिंग डेटा क्रम के साथ सिंक में रहे। + +--- + +## चरण 4: शैलियों को लागू करते हुए DataTable आयात करें + +यह ऑपरेशन का मुख्य भाग है: हम `DataTable` को वर्कशीट में फीड करते हैं, Aspose को हेडर रो शामिल करने के लिए कहते हैं, और अपना `columnStyles` एरे सौंपते हैं। + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **आंतरिक रूप से क्या होता है?** Aspose प्रत्येक कॉलम के माध्यम से इटरेट करता है, हेडर लिखता है, फिर प्रत्येक पंक्ति का मान लिखता है। इस दौरान यह एरे से संबंधित `Style` लागू करता है, इसलिए आपको “Product” के लिए नीला हेडर, “Quantity” के लिए पीले‑शेडेड, और “Revenue” कॉलम के लिए सुंदर फ़ॉर्मेटेड मिलता है। + +--- + +## चरण 5: वर्कबुक को XLSX फ़ाइल के रूप में सहेजें + +अंत में, हम वर्कबुक को डिस्क पर सहेजते हैं। `Save` मेथड फ़ाइल एक्सटेंशन के आधार पर स्वचालित रूप से XLSX फ़ॉर्मेट चुनता है। + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **टिप:** यदि आपको फ़ाइल को स्ट्रीम करना है (जैसे वेब API के लिए), तो फ़ाइल पाथ के बजाय `workbook.Save(stream, SaveFormat.Xlsx)` का उपयोग करें। + +--- + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा प्रोग्राम है जिसे आप एक नए कंसोल प्रोजेक्ट में पेस्ट कर सकते हैं। यह जैसा है वैसा ही कंपाइल और रन होता है, और एक स्टाइल्ड Excel फ़ाइल बनाता है। + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### अपेक्षित परिणाम + +`DataTableWithStyleArray.xlsx` खोलने पर आपको दिखेगा: + +| **Product** (नीला, बोल्ड) | **Quantity** (हल्का‑पीला) | **Revenue** (मुद्रा) | +|----------------------------|----------------------------|----------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +आपके द्वारा निर्दिष्ट **custom number format excel** (`$#,##0.00`) सुनिश्चित करता है कि प्रत्येक revenue सेल में डॉलर साइन, हजारों विभाजक, और दो दशमलव स्थान दिखें—बिल्कुल वही जो फाइनेंस टीमें अपेक्षा करती हैं। + +--- + +## अक्सर पूछे जाने वाले प्रश्न और किनारे के मामले + +### क्या मैं इसे किसी अलग Excel लाइब्रेरी के साथ उपयोग कर सकता हूँ? + +बिल्कुल। अवधारणा—प्रति कॉलम एक शैली बनाना और आयात के दौरान लागू करना—EPPlus, ClosedXML, या NPOI में भी लागू होती है। API कॉल्स अलग हो सकते हैं, लेकिन पैटर्न वही रहता है। + +### यदि मेरे DataTable में शैलियों से अधिक कॉलम हैं तो क्या होगा? + +Aspose उन सभी कॉलमों पर डिफ़ॉल्ट शैली लागू करेगा जिनके लिए `columnStyles` एरे में मेल खाने वाला एंट्री नहीं है। आश्चर्य से बचने के लिए, एरे का आकार `dataTable.Columns.Count` के बराबर रखें या लूप में डायनामिक रूप से शैलियाँ जेनरेट करें। + +### तिथियों के लिए कस्टम नंबर फ़ॉर्मेट कैसे सेट करें? + +सिर्फ `style.Custom = "dd‑mm‑yyyy"` सेट करें (या कोई भी वैध Excel फ़ॉर्मेट स्ट्रिंग)। वही एरे‑आधारित तरीका तिथियों, प्रतिशत या वैज्ञानिक नोटेशन के लिए भी काम करता है। + +### आयात के बाद कॉलमों को ऑटो‑साइज़ करने का तरीका है क्या? + +हाँ—आयात के बाद `worksheet.AutoFitColumns();` कॉल करें। यह सेल सामग्री के आधार पर तेज़ चौड़ाई गणना करता है। + +### बड़े डेटा सेट (100k+ पंक्तियाँ) के बारे में क्या? + +`ImportDataTable` बल्क ऑपरेशन्स के लिए ऑप्टिमाइज़्ड है, लेकिन आप मेमोरी लिमिट तक पहुँच सकते हैं। ऐसे में, पंक्तियों को मैन्युअली `Cells[i, j].PutValue(...)` से स्ट्रीम करने और ओवरहेड कम करने के लिए एक ही `Style` ऑब्जेक्ट को पुनः उपयोग करने पर विचार करें। + +--- + +## प्रो टिप्स और सामान्य गलतियाँ + +- **हर्ड‑कोडिंग पाथ्स** से बचें उत्पादन कोड में; `Environment.GetFolderPath` या कॉन्फ़िगरेशन सेटिंग्स का उपयोग करें। +- **वर्कबुक को डिस्पोज़ करें** यदि आप एक लंबी‑चलने वाली सेवा में हैं—नेटीव रिसोर्सेज़ को मुक्त करने के लिए इसे `using` ब्लॉक में रखें। +- **कल्चर‑स्पेसिफिक सेपरेटर** पर ध्यान दें। कस्टम फ़ॉर्मेट `$#,##0.00` OS लोकेल की परवाह किए बिना दशमलव सेपरेटर के रूप में पीरियड लागू करता है, जो आमतौर पर वित्तीय रिपोर्टों के लिए वांछित होता है। +- **System.Drawing** (या .NET Core पर `System.Drawing.Common`) को संदर्भित करना याद रखें, जो स्टाइलिंग में उपयोग किए गए कलर स्ट्रक्ट्स के लिए आवश्यक है। +- **विभिन्न Excel संस्करणों पर आउटपुट का परीक्षण करें**; पुराने संस्करण कुछ कस्टम फ़ॉर्मेट को थोड़ा अलग तरीके से व्याख्या कर सकते हैं। + +--- + +## निष्कर्ष + +हमने वह सब कवर किया है जो आपको C# से **custom number format excel** फ़ाइलें बनाने के लिए चाहिए: `DataTable` से डेटा निकालना, **import datatable to excel**, **set column background color** लागू करना, **format column as currency** का उपयोग करना, और अंत में **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/excel-workbook/_index.md b/cells/hindi/net/excel-workbook/_index.md index f69dc4a8c5..08f7825644 100644 --- a/cells/hindi/net/excel-workbook/_index.md +++ b/cells/hindi/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ | [कार्यपुस्तिका प्रिंट पूर्वावलोकन](./workbook-print-preview/) | .NET के लिए Aspose.Cells का उपयोग करके Excel फ़ाइलों के लिए प्रिंट पूर्वावलोकन बनाना सीखें। विस्तृत, आसान-से-अनुसरण ट्यूटोरियल में कोडिंग चरण सीखें। | | [सामग्री प्रकार गुणों के साथ कार्य करना](./working-with-content-type-properties/) | जानें कि .NET के लिए Aspose.Cells का उपयोग कैसे करें ताकि बेहतर Excel मेटाडेटा प्रबंधन के लिए सामग्री प्रकार गुणों के साथ काम किया जा सके। इस सरल चरण-दर-चरण मार्गदर्शिका का पालन करें। | | [Xades हस्ताक्षर समर्थन](./xades-signature-support/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.Cells का उपयोग करके Excel फ़ाइलों में Xades हस्ताक्षर जोड़ना सीखें। अपने दस्तावेज़ सुरक्षित करें। | +| [नई वर्कबुक बनाएं C# – स्पिल्ड फ़ॉर्मूला के साथ चरण‑दर‑चरण गाइड](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | C# में स्पिल्ड फ़ॉर्मूला के साथ नई वर्कबुक बनाने की चरण-दर-चरण मार्गदर्शिका। | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/hindi/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..377b65546c --- /dev/null +++ b/cells/hindi/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells का उपयोग करके C# में जल्दी नया वर्कबुक बनाएं। सीखें कि SEQUENCE + स्पिलिंग फ़ॉर्मूला कैसे जोड़ें, स्वचालित रूप से पुनः गणना करें, और निर्भर सेल्स + को कैसे संभालें। +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: hi +og_description: Aspose.Cells के साथ C# में नया वर्कबुक बनाएं। यह ट्यूटोरियल दिखाता + है कि कैसे SEQUENCE स्पिलिंग फ़ॉर्मूला जोड़ें, वर्कबुक को पुनः गणना करें, और निर्भर + सेल्स को प्रबंधित करें। +og_title: नया वर्कबुक बनाएं C# – पूर्ण गाइड +tags: +- C# +- Excel automation +- Aspose.Cells +title: C# में नया वर्कबुक बनाएं – स्पिल्ड फ़ॉर्मूलों के साथ चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# नया वर्कबुक C# बनाएं – पूर्ण प्रोग्रामिंग walkthrough + +क्या आपने कभी सोचा है कि **create new workbook C#** को COM interop के साथ झगड़े बिना कैसे बनाया जाए? आप अकेले नहीं हैं। कई प्रोजेक्ट्स में आपको तुरंत एक Excel फ़ाइल बनानी होती है, उसमें एक डायनेमिक एरे फ़ॉर्मूला डालना होता है, और सब कुछ स्वतः रीफ़्रेश होना चाहिए। + +इस गाइड में हम आपको वही दिखाएंगे—आधुनिक **Aspose.Cells** लाइब्रेरी का उपयोग करके, एक spilling `SEQUENCE` फ़ॉर्मूला जोड़कर, एक dependent सेल को बदलकर, और पुनः गणना को मजबूर करके ताकि परिणाम ताज़ा रहें। अंत तक आपके पास एक self‑contained, runnable उदाहरण होगा जिसे आप किसी भी .NET ऐप में copy‑paste कर सकते हैं। + +## आप क्या सीखेंगे + +- प्रोग्रामेटिक रूप से **create new workbook C#** कैसे किया जाता है। +- **spilled array formula** के पीछे की मैकेनिक्स और यह क्यों उपयोगी है। +- C# कोड से **Excel SEQUENCE function** का उपयोग। +- **C# workbook calculation** को ट्रिगर करना ताकि dependent सेल्स तुरंत अपडेट हों। +- सामान्य pitfalls (जैसे `Calculate` को कॉल करना भूल जाना) और त्वरित समाधान। + +कोई बाहरी दस्तावेज़ आवश्यक नहीं—सभी आवश्यक जानकारी यहाँ उपलब्ध है। + +## पूर्वापेक्षाएँ + +- .NET 6+ (या .NET Framework 4.7.2+) स्थापित हो। +- Visual Studio 2022 या आपका पसंदीदा IDE। +- **Aspose.Cells** NuGet पैकेज (`Install-Package Aspose.Cells`)। +- C# सिंटैक्स की बुनियादी समझ (यदि आप बिल्कुल नए हैं, तो कोड में बहुत टिप्पणी है)। + +--- + +## Step 1: Create a new workbook in C# + +This H2 header contains the **primary keyword** exactly where the SEO checklist demands it. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Why this matters:** +> Instantiating `Workbook` gives you an in‑memory representation of an Excel file. No COM, no interop, just pure .NET objects that you can manipulate safely. + +--- + +## Step 2: Add a spilling SEQUENCE formula + +A **spilled array formula** automatically expands into adjacent cells, which is perfect for generating dynamic lists. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **How it works:** +> The `SEQUENCE` function (introduced in Excel 365) creates a vertical array of numbers. Because we’re using a *spilling* formula, Excel (and Aspose.Cells) will automatically fill the range beneath `A1` without us having to write a loop. + +--- + +## Step 3: Change a dependent cell to see auto‑refresh + +Let’s modify `B1` so we can observe how the workbook recalculates the spilled array. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tip:** +> If you later reference the spilled range in other formulas, changing any cell inside the spill will cause those formulas to update after you call `Calculate`. + +--- + +## Step 4: Force C# workbook calculation + +Without an explicit call, Aspose.Cells won’t automatically recompute formulas. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **What `Calculate` does:** +> It walks through every formula cell, evaluates them, and writes the results back into the sheet. This is the core of **C# workbook calculation** and ensures that your spilled array stays in sync with any dependent data. + +### अपेक्षित आउटपुट + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +`SpilledSequenceDemo.xlsx` खोलें और आप देखेंगे कि `A1:A5` में 1‑5 नंबर भर गए हैं, जबकि `B1` में मान `10` है। स्पिल के भीतर कोई भी सेल बदलें, फिर `Calculate` चलाएँ, और नए मान तुरंत दिखेंगे। + +--- + +## Understanding the Excel SEQUENCE function in C# + +If you’re curious why `SEQUENCE` is preferred over a manual loop, consider these points: + +1. **Performance** – The engine evaluates the whole array in one pass. +2. **Readability** – One line of code replaces dozens of `PutValue` calls. +3. **Dynamic sizing** – You can replace the static `5` with a reference to another cell, making the length adjustable at runtime. + +This is a classic example of a **spilled array formula** that simplifies data generation tasks. + +--- + +## Common Pitfalls & Pro Tips + +| Pitfall | Fix | +|---------|-----| +| Forgetting `workbook.Calculate()` | Always call it after modifying formulas; otherwise the sheet shows old cached values. | +| Using an older Aspose.Cells version | Upgrade to the latest NuGet package to ensure support for dynamic array functions like `SEQUENCE`. | +| Saving before calculation | Save **after** `Calculate` so the file contains the latest results. | +| Assuming the spill will overwrite existing data | Aspose.Cells respects existing data beyond the spill range; clear the area first if you need a clean slate. | + +**Pro tip:** If you need the sequence length to be configurable, store the count in a cell (e.g., `C1`) and use `=SEQUENCE(C1)`—the calculation engine will read the value at runtime. + +--- + +## Extending the Example + +Now that you know how to **create new workbook C#**, you can: + +- Add more complex formulas that reference the spilled range (`=SUM(A1#)` where `#` denotes the spill). +- Export to PDF with `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Insert charts that automatically adjust to the dynamic array size. + +All of these build on the same **C# workbook calculation** foundation we just covered. + +--- + +## निष्कर्ष + +हमने **create new workbook C#** की पूरी प्रक्रिया को कवर किया—`Workbook` ऑब्जेक्ट को इंस्टैंशिएट करने से लेकर एक spilling `SEQUENCE` फ़ॉर्मूला डालने, एक dependent सेल को बदलने, और अंत में पुनः गणना को मजबूर करने तक, ताकि सब कुछ अपडेटेड रहे। ऊपर दिया गया पूरा कोड स्निपेट तैयार है—इसे किसी भी console app में डालें, Aspose.Cells NuGet पैकेज जोड़ें, और कुछ सेकंड में एक कार्यशील Excel फ़ाइल प्राप्त करें। + +अगला कदम तैयार है? स्थिर `5` को एक सेल रेफ़रेंस से बदलें, `FILTER` या `UNIQUE` जैसे अन्य dynamic array फ़ंक्शन के साथ प्रयोग करें, और देखें कि **Aspose.Cells C#** कैसे पूर्ण‑स्तरीय रिपोर्टिंग इंजन को शक्ति देता है। Happy coding! + +--- + +*Image placeholder:* + +![Screenshot showing a freshly created workbook with spilled SEQUENCE formula – create new workbook C# example](/images/create-new-workbook-csharp.png) + +--- + +*यदि आपको यह ट्यूटोरियल उपयोगी लगा, तो रिपॉज़िटरी को स्टार दें, टीम के साथ शेयर करें, या नीचे टिप्पणी छोड़ें। आपका फीडबैक भविष्य के गाइड्स को प्रेरित करता है!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/formulas-functions/_index.md b/cells/hindi/net/formulas-functions/_index.md index 8157450c2e..aa53ffc5c4 100644 --- a/cells/hindi/net/formulas-functions/_index.md +++ b/cells/hindi/net/formulas-functions/_index.md @@ -91,16 +91,17 @@ Excel कार्यपुस्तिकाओं में सूत्र Aspose.Cells .NET के साथ Excel में सेल निर्भरता को ट्रैक और प्रबंधित करना सीखें। यह मार्गदर्शिका सूत्र संबंधों को समझकर डेटा सटीकता और दक्षता बढ़ाने के लिए चरण-दर-चरण दृष्टिकोण प्रदान करती है। ### [.NET के लिए Aspose.Cells का उपयोग करके Excel में साझा किए गए फ़ार्मुलों को मास्टर करें: एक व्यापक गाइड](./master-shared-formulas-excel-aspose-cells-net) -.NET के लिए Aspose.Cells का उपयोग करके Excel में साझा किए गए फ़ॉर्मूले को लागू करने का तरीका जानें। यह मार्गदर्शिका चरण-दर-चरण निर्देश प्रदान करती है और प्रदर्शन-अनुकूलित फ़ॉर्मूला एप्लिकेशन के साथ Excel कार्यों को स्वचालित करने के लाभों पर प्रकाश डालती है। +.NET के लिए Aspose.Cells का उपयोग करके Excel में साझा किए गए फ़ॉर्मूले को लागू करने का तरीका जानें। यह मार्गदर्शिका चरण-दर-स्टेप निर्देश प्रदान करती है और प्रदर्शन-अनुकूलित फ़ॉर्मूला एप्लिकेशन के साथ Excel कार्यों को स्वचालित करने के लाभों पर प्रकाश डालती है। ### [Aspose.Cells के साथ .NET में ऐरे फ़ार्मुलों में महारत हासिल करना: एक व्यापक गाइड](./mastering-aspose-cells-net-array-formulas) .NET के लिए Aspose.Cells का उपयोग करके सरणी फ़ार्मुलों में महारत हासिल करना सीखें। यह मार्गदर्शिका शक्तिशाली मल्टी-सेल गणनाओं के सेटअप, कार्यान्वयन और वास्तविक दुनिया के अनुप्रयोगों को कवर करती है। ### [बहुभाषी समर्थन के लिए Aspose.Cells .NET का उपयोग करके Excel फ़ाइलों में भाषा कैसे सेट करें](./specify-language-excel-aspose-cells-net) -Aspose.Cells .NET का उपयोग करके अपनी Excel फ़ाइलों की भाषा निर्दिष्ट करना सीखें। अंतर्राष्ट्रीयकरण सूत्र सेटिंग के लिए इस चरण-दर-चरण मार्गदर्शिका के साथ दस्तावेज़ पहुँच और अनुपालन को बढ़ाएँ। +Aspose.Cells .NET का उपयोग करके अपनी Excel फ़ाइलों की भाषा निर्दिष्ट करना सीखें। अंतर्राष्ट्रीयकरण सूत्र सेटिंग के लिए इस चरण-दर-स्टेप मार्गदर्शिका के साथ दस्तावेज़ पहुँच और अनुपालन को बढ़ाएँ। ### [Aspose.Cells .NET के साथ Excel पावर क्वेरी फ़ॉर्मूला अपडेट करें](./update-power-query-formulas-aspose-cells-net) -.NET के लिए Aspose.Cells का उपयोग करके Excel कार्यपुस्तिकाओं में Power Query फ़ॉर्मूले को प्रोग्रामेटिक रूप से अपडेट करना सीखें। गतिशील रिपोर्टिंग के लिए मास्टर डेटा स्रोत प्रबंधन। + +### [C# में लैम्ब्डा का उपयोग Excel फ़ॉर्मूला के साथ – पूर्ण गाइड](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) ## एक्सेल फॉर्मूला प्रकारों को समझना @@ -146,7 +147,7 @@ Aspose.Cells .NET का उपयोग करके अपनी Excel फ़ कुशल फार्मूला हैंडलिंग सुनिश्चित करने के लिए: 1. **बैच फॉर्मूला सेटिंग**: सेल-दर-सेल के बजाय श्रेणियों पर सूत्र लागू करें -2. **चुनिंदा गणना करें**: जब संभव हो तो पूर्ण पुनर्गणना के बजाय लक्षित गणना का उपयोग करें +2. **चुनिंता गणना करें**: जब संभव हो तो पूर्ण पुनर्गणना के बजाय लक्षित गणना का उपयोग करें 3. **अस्थिर कार्यों को न्यूनतम करें**: NOW() या RAND() जैसे फ़ंक्शनों के उपयोग को सीमित करें जो पुनर्गणना को ट्रिगर करते हैं 4. **साझा फ़ार्मुलों का उपयोग करें**: मेमोरी दक्षता के लिए साझा सूत्र क्षमताओं का लाभ उठाएं diff --git a/cells/hindi/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/hindi/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..e85e6c28ad --- /dev/null +++ b/cells/hindi/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-22 +description: C# में लैम्ब्डा का उपयोग करके Excel फ़ॉर्मूले के साथ काम करना। फ़ॉर्मूला + को सेल में लिखना, रेंज को एरे में बदलना, एरे को कंसोल में दिखाना, और Excel में कोटैन्जेंट + की गणना करना सीखें। +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: hi +og_description: C# में लैम्ब्डा का उपयोग करके Excel फ़ॉर्मूले को नियंत्रित करना, रेंज + को एरे में बदलना, सेल में फ़ॉर्मूला लिखना, कंसोल में एरे प्रदर्शित करना, और Excel + में कोटैन्जेंट की गणना करना। +og_title: C# में लैम्ब्डा को Excel फ़ॉर्मूले के साथ कैसे उपयोग करें – चरण‑दर‑चरण +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: C# में लैम्ब्डा को Excel फ़ॉर्मूले के साथ कैसे उपयोग करें – पूर्ण गाइड +url: /hi/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Lambda का उपयोग Excel फ़ॉर्मूले के साथ – पूर्ण गाइड + +क्या आपने कभी सोचा है **how to use lambda** जब आप C# से Excel को ऑटोमेट कर रहे हैं? आप अकेले नहीं हैं। कई डेवलपर्स को तब रुकावट आती है जब उन्हें Excel के नए डायनामिक एरे फ़ंक्शन की शक्ति को C# के `LAMBDA` क्षमता के साथ मिलाना पड़ता है। अच्छी खबर? यह वास्तव में काफी सरल है जब आप देखेंगे कि भाग कैसे फिट होते हैं। + +इस ट्यूटोरियल में हम **writing a formula to a cell**, **converting a range to an array**, **displaying that array in the console**, और यहाँ तक कि **calculating cotangent in Excel** को कवर करेंगे—साथ ही आपको `REDUCE` कॉल के अंदर **how to use lambda** दिखाएंगे। अंत तक आपके पास एक runnable स्निपेट होगा जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं जो Aspose.Cells (या समान लाइब्रेरी) को रेफ़रेंस करता है। + +--- + +## आप क्या सीखेंगे + +- C# का उपयोग करके **write formula to cell** कैसे करें। +- `EXPAND` फ़ंक्शन के साथ **convert range to array** कैसे करें। +- गणना के बाद **display array in console** कैसे करें। +- `COT` और `COTH` का उपयोग करके **calculate cotangent in Excel** कैसे करें। +- C# से Excel के `REDUCE` फ़ंक्शन के अंदर **how to use lambda** के लिए सटीक सिंटैक्स। + +> **Prerequisite:** आपको .NET (Core 6+ या .NET Framework 4.7+) का नवीनतम संस्करण और Aspose.Cells for .NET लाइब्रेरी की आवश्यकता है, जिसे आप NuGet के माध्यम से इंस्टॉल कर सकते हैं। + +## चरण 1: वर्कबुक सेट अप करें और फ़ॉर्मूला को सेल में लिखें + +सबसे पहले हम एक नई वर्कबुक बनाते हैं और पहली वर्कशीट प्राप्त करते हैं। फिर हम **write a formula to a cell** — इस मामले में `A1` में `EXPAND` कॉल का परिणाम रहेगा। + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Why this matters:** कोड से सीधे फ़ॉर्मूला लिखने से आप बिना Excel खोले जटिल स्प्रेडशीट बना सकते हैं। यह अगले चरण के लिए भी मंच तैयार करता है जहाँ हम **convert range to array** करेंगे। + +## चरण 2: EXPAND के साथ रेंज को एरे में बदलें + +`EXPAND` Excel का वह तरीका है जिससे एक छोटी रेंज को बड़े मैट्रिक्स में बदला जाता है। फ़ॉर्मूला को `A1` में रखने पर Excel उस सेल से शुरू होकर 4 × 5 ब्लॉक को स्पिल करेगा। C# से हमें मानों को मैन्युअली कॉपी करने की जरूरत नहीं है – लाइब्रेरी `Calculate` कॉल करने पर भारी काम खुद कर लेगी। + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**How to use lambda:** अभी नहीं, लेकिन बने रहें। पहले हमें शीट में डेटा चाहिए, फिर हम उसे एक lambda के साथ reduce करेंगे। + +## चरण 3: REDUCE के अंदर LAMBDA का उपयोग – “How to Use Lambda” का मूल + +Excel 365 ने `REDUCE` पेश किया, जो एक **initial value**, एक **range**, और एक **LAMBDA** लेता है जो प्रत्येक तत्व को कैसे जोड़ना है बताता है। C# से हम बस फ़ॉर्मूला स्ट्रिंग असाइन करते हैं; lambda Excel फ़ॉर्मूला के अंदर रहता है, C# कोड में नहीं। + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explanation:** +- `0` प्रारंभिक accumulator (`acc`) है। +- `A1:D4` वह रेंज है जिसे हम प्रोसेस करना चाहते हैं (स्पिल के पहले चार कॉलम)। +- `LAMBDA(acc, x, acc + x)` Excel को बताता है कि प्रत्येक सेल (`x`) को accumulator में जोड़ें। + +यह **how to use lambda** का सार है जो स्प्रेडशीट संदर्भ में एग्रीगेशन के लिए उपयोग होता है। + +## चरण 4: Excel में Cotangent की गणना – डिग्री से हाइपरबोलिक + +यदि आपको त्रिकोणमितीय परिणाम चाहिए, तो Excel के `COT` और `COTH` फ़ंक्शन बहुत आसान हैं। हम उन्हें क्रमशः `G1` और `G2` में रखेंगे। + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Why this is handy:** **calculate cotangent in Excel** जानने से आप कस्टम गणित कोड लिखने से बच सकते हैं, विशेषकर जब वर्कबुक को गैर‑डेवलपर्स के साथ साझा किया जाएगा। + +## चरण 5: गणना को मजबूर करें और विस्तारित एरे प्राप्त करें + +अब हम वर्कबुक को हर फ़ॉर्मूला का मूल्यांकन करने के लिए कहते हैं, फिर `A1` से स्पिल्ड एरे को निकालते हैं। यहीं पर हम **display array in console** करेंगे। + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**What you’ll see:** +- लाइन‑बाय‑लाइन प्रिंट किया गया एक सुंदर 4 × 5 मैट्रिक्स। +- `REDUCE` lambda द्वारा गणना किया गया योग। +- दो cotangent मान। + +यह प्रवाह **write formula to cell** से लेकर **display array in console** तक पूरा करता है। + +## पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट के लिए तैयार) + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉन्सोल ऐप में डाल सकते हैं। याद रखें कि पहले `Aspose.Cells` NuGet पैकेज जोड़ें (`dotnet add package Aspose.Cells`)। + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Expected console output (values will vary based on the default contents of B1:C2, which are 0 by default):** +**अपेक्षित कंसोल आउटपुट (मान B1:C2 की डिफ़ॉल्ट सामग्री के आधार पर बदलेंगे, जो डिफ़ॉल्ट रूप से 0 हैं):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +`B1:C2` को अपने स्वयं के नंबरों से भरने में संकोच न करें—मैट्रिक्स उन मानों को दर्शाएगा। + +## प्रो टिप्स और सामान्य pitfalls + +- **Pro tip:** यदि आपको स्पिल्ड रेंज को कहीं और शुरू करना है, तो केवल टार्गेट सेल (`A1`) बदलें। `EXPAND` फ़ंक्शन एंकर का सम्मान करता है। +- **Watch out for:** स्रोत रेंज में खाली सेल्स स्पिल्ड एरे में `0` बन जाते हैं, जो आपके `REDUCE` योग को प्रभावित कर सकते हैं। +- **Edge case:** जब वर्कबुक में फ़ॉर्मूले होते हैं जो वोलैटाइल फ़ंक्शन (जैसे `NOW()`) पर निर्भर होते हैं, तो सभी फ़ॉर्मूले सेट करने के बाद `workbook.Calculate()` कॉल करें ताकि सब कुछ अपडेटेड रहे। +- **Performance note:** बड़े स्पिल्स के लिए, `EXPAND` कॉल में आकार सीमित करने पर विचार करें; अन्यथा आप आवश्यक से अधिक मेमोरी आवंटित कर सकते हैं। +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/number-and-display-formats-in-excel/_index.md b/cells/hindi/net/number-and-display-formats-in-excel/_index.md index 2fb07af492..11f48b85fe 100644 --- a/cells/hindi/net/number-and-display-formats-in-excel/_index.md +++ b/cells/hindi/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ .NET के लिए Aspose.Cells का उपयोग करके Excel में संख्या स्वरूपण को स्वचालित करें। प्रोग्रामेटिक रूप से दिनांक, प्रतिशत और मुद्रा स्वरूपण लागू करना सीखें। ### [उपयोगकर्ता-परिभाषित संख्याओं के साथ प्रदर्शन प्रारूप को अनुकूलित करना](./customizing-display-formats-with-user-defined-numbers/) .NET के लिए Aspose.Cells के साथ डिस्प्ले फ़ॉर्मेट को कस्टमाइज़ करना सीखें। इस चरण-दर-चरण गाइड का उपयोग करके दिनांक, प्रतिशत और मुद्रा को फ़ॉर्मेट करें। +### [फ़ॉर्मेटिंग के साथ एक्सेल निर्यात कैसे करें – संख्या फ़ॉर्मेट बनाए रखें](./how-to-export-excel-with-formatting-preserve-number-format/) +.NET के लिए Aspose.Cells का उपयोग करके फ़ॉर्मेटिंग के साथ एक्सेल फ़ाइल निर्यात करना और संख्या फ़ॉर्मेट को संरक्षित रखना सीखें। +### [C# में datetime को ISO फ़ॉर्मेट में बदलना – पूर्ण गाइड](./format-datetime-to-iso-in-c-complete-guide/) +C# में Aspose.Cells का उपयोग करके datetime को ISO फ़ॉर्मेट में बदलना सीखें। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/hindi/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..e357bdd4dd --- /dev/null +++ b/cells/hindi/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Excel से तिथि निकालते समय datetime को ISO में फ़ॉर्मेट करना और Aspose.Cells + का उपयोग करके C# में ISO तिथि प्रदर्शित करना सीखें। +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: hi +og_description: datetime को ISO में फ़ॉर्मेट करना आसान बना। यह गाइड दिखाता है कि Excel + से तिथि कैसे निकालें और Aspose.Cells के साथ ISO तिथि प्रदर्शित करें। +og_title: C# में datetime को ISO में फ़ॉर्मेट करें – चरण‑दर‑चरण ट्यूटोरियल +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: C# में datetime को ISO फ़ॉर्मेट में बदलें – पूर्ण गाइड +url: /hi/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime to iso in C# – Complete Guide + +क्या आपको कभी **format datetime to iso** करने की ज़रूरत पड़ी है लेकिन स्रोत एक Excel वर्कबुक के अंदर है? शायद सेल में जापानी युग जैसे “令和3年5月1日” है और आप सोच रहे हैं कि इसे साफ़ `2021‑05‑01` स्ट्रिंग में कैसे बदलें। आप अकेले नहीं हैं। इस ट्यूटोरियल में हम **extract date from excel** करेंगे, जापानी युग को पार्स करेंगे, और फिर **display iso date** को कंसोल पर दिखाएंगे—सिर्फ कुछ ही लाइनों के C# और Aspose.Cells के साथ। + +हम सब कुछ कवर करेंगे: आवश्यक NuGet पैकेज, वह कोड जिसे आप कॉपी‑पेस्ट कर सकते हैं, प्रत्येक लाइन का महत्व, और कुछ एज़‑केस टिप्स। अंत तक आपके पास एक पुन: उपयोग योग्य स्निपेट होगा जो datetime को iso में फ़ॉर्मेट करता है चाहे मूल Excel मान कितना भी अजीब हो। + +## What You’ll Need + +- .NET 6.0 या बाद का (कोड .NET Framework 4.6+ पर भी कंपाइल होता है) +- Visual Studio 2022 (या कोई भी एडिटर जो आप पसंद करते हैं) +- **Aspose.Cells for .NET** NuGet पैकेज – `Install-Package Aspose.Cells` +- एक Excel फ़ाइल (या नया वर्कबुक) जिसमें जापानी युग फ़ॉर्मेट में तिथि हो + +बस इतना ही। कोई अतिरिक्त लाइब्रेरी नहीं, कोई COM इंटरऑप नहीं, सिर्फ एक ही, अच्छी तरह से दस्तावेज़ित मेथड। + +## Step 1: Create a Workbook and Write a Japanese Era Date + +पहले, हमें काम करने के लिए एक वर्कबुक चाहिए। यदि आपके पास पहले से Excel फ़ाइल है, तो आप `new Workbook("path")` से लोड कर सकते हैं। इस उदाहरण के लिए हम मेमोरी में नया वर्कबुक बनाएँगे और सेल **A1** में जापानी युग स्ट्रिंग डालेंगे। + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells डिफ़ॉल्ट रूप से सेल वैल्यू को स्ट्रिंग मानता है। कच्चा युग टेक्स्ट डालकर हम वास्तविक दुनिया की स्थिति का सिमुलेशन करते हैं जहाँ जापानी क्लाइंट अपने मूल कैलेंडर में तिथियाँ दर्ज करता है। + +## Step 2: Enable Japanese Era Parsing and Extract the Date + +Aspose.Cells स्वचालित रूप से जापानी युग स्ट्रिंग को .NET `DateTime` ऑब्जेक्ट में बदल सकता है—बशर्ते आप इसे बताएं। `DateTimeParseOptions.EnableJapaneseEra` फ़्लैग यही काम करता है। + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** यदि आप `EnableJapaneseEra` विकल्प भूल जाते हैं, तो लाइब्रेरी मूल स्ट्रिंग ही लौटाएगी, और आपका बाद का रूपांतरण फेल हो जाएगा। मिश्रित कंटेंट संभालते समय हमेशा `parsed.Type` की जाँच करें। + +## Step 3: Convert the Parsed DateTime to ISO 8601 + +अब जब हमारे पास सही `DateTime` है, इसे ISO‑फ़ॉर्मेटेड स्ट्रिंग में बदलना बहुत आसान है। `"yyyy-MM-dd"` पैटर्न ISO 8601 की डेट भाग के अनुरूप है, जो अधिकांश API की अपेक्षा होती है। + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +प्रोग्राम चलाने पर यह प्रिंट करेगा: + +``` +ISO date: 2021-05-01 +``` + +यही वह **display iso date** है जिसकी आप तलाश में थे। + +## Full, Runnable Example + +नीचे पूरा कोड ब्लॉक है जिसे आप सीधे एक कंसोल प्रोजेक्ट में कॉपी कर सकते हैं। कोई छिपी हुई डिपेंडेंसी नहीं, कोई अतिरिक्त कॉन्फ़िगरेशन नहीं। + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## Step‑by‑Step Breakdown (Why Each Piece Matters) + +| Step | What Happens | Why It’s Important | +|------|--------------|--------------------| +| **Create workbook** | Initializes an in‑memory Excel container. | Gives you a sandbox to test without touching the file system. | +| **PutValue** | Stores the raw Japanese era string in **A1**. | Mimics real data entry; ensures the parser sees the exact text. | +| **GetValue with `EnableJapaneseEra`** | Converts the era string into a .NET `DateTime`. | Handles the calendar conversion automatically—no manual lookup tables needed. | +| **`ToString("yyyy-MM-dd")`** | Formats the `DateTime` to ISO 8601. | Guarantees a culture‑invariant, sortable date string accepted by REST APIs, databases, etc. | +| **Console.WriteLine** | Shows the final ISO date. | Confirms the whole pipeline works end‑to‑end. | + +## Handling Common Variations + +### 1. Different Cell Locations + +यदि आपकी तिथि **B2** या किसी नामित रेंज में है, तो बस `"A1"` को उपयुक्त एड्रेस से बदल दें: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Multiple Dates in a Column + +जब आपको कई पंक्तियों के लिए **extract date from excel** करना हो, तो यूज़्ड रेंज पर लूप लगाएँ: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback for Non‑Era Dates + +यदि किसी सेल में पहले से ही मानक तिथि स्ट्रिंग है, तो भी पार्सर काम करेगा, लेकिन आप एक सुरक्षा जाल जोड़ना चाहेंगे: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` फ़्लैग एक्सेप्शन को रोकता है और यदि रूपांतरण फेल हो जाए तो मूल वैल्यू लौटाता है। + +### 4. Time Component + +यदि आपको समय भाग भी चाहिए, तो `"yyyy-MM-ddTHH:mm:ss"` उपयोग करें: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +यह एक पूर्ण ISO 8601 टाइमस्टैम्प देगा (`2021-05-01T00:00:00`)। + +## Visual Aid + +![format datetime to iso example](image.png "C# में datetime को iso में फ़ॉर्मेट करने का एक उदाहरण") + +*Alt text:* *C# में datetime को iso में फ़ॉर्मेट करने का उदाहरण, कंसोल आउटपुट दिखाते हुए* + +## Frequently Asked Questions + +- **Can I use this with .xls files?** + Yes. Aspose.Cells supports `.xls`, `.xlsx`, `.csv`, and many other formats out of the box. + +- **What if the workbook is password‑protected?** + Load it with `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Is the ISO format locale‑dependent?** + No. The `"yyyy-MM-dd"` pattern is culture‑invariant, guaranteeing the same string on any machine. + +- **Does this work on .NET Core?** + Absolutely—Aspose.Cells is .NET Standard 2.0 compliant. + +## Wrap‑Up + +हमने बताया कि कैसे **format datetime to iso** किया जाए **extract date from excel** करके, जापानी युग स्ट्रिंग को पार्स करके, और अंत में **display iso date** कंसोल पर दिखाकर। मुख्य चरण—वर्कबुक बनाना, युग टेक्स्ट लिखना या लोड करना, जापानी युग पार्सिंग सक्षम करना, और `ToString("yyyy-MM-dd")` से फ़ॉर्मेट करना—ज्यादातर परिदृश्यों के लिए पर्याप्त हैं। + +आगे आप कर सकते हैं: + +- ISO तिथियों को किसी अन्य कॉलम में लिखें ताकि डाउनस्ट्रीम प्रोसेसिंग हो सके। +- ट्रांसफ़ॉर्म्ड वर्कबुक को CSV में एक्सपोर्ट करें बैच इम्पोर्ट के लिए। +- इस लॉजिक को वेब API के साथ जोड़ें जो Excel अपलोड लेता है और JSON‑एन्कोडेड ISO तिथियाँ रिटर्न करता है। + +विभिन्न तिथि फ़ॉर्मेट, टाइमज़ोन, या कस्टम कैलेंडर के साथ प्रयोग करने में संकोच न करें। Aspose.Cells की लचीलापन आपको अक्सर दीवार नहीं टकराएगी। + +Happy coding, and may all your dates be perfectly ISO‑compliant! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/hindi/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..122f2c0bee --- /dev/null +++ b/cells/hindi/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-03-22 +description: फ़ॉर्मेटिंग के साथ Excel निर्यात कैसे करें और संख्या फ़ॉर्मेट को संरक्षित + रखें। Excel रेंज को बदलना, फ़ॉर्मूला परिणाम प्राप्त करना, और Aspose.Cells का उपयोग + करके फ़ॉर्मेटिंग के साथ Excel निर्यात करना सीखें। +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: hi +og_description: फ़ॉर्मेटिंग के साथ Excel को निर्यात कैसे करें और संख्या फ़ॉर्मेट को + संरक्षित रखें। Excel रेंज को बदलने, फ़ॉर्मूला परिणाम प्राप्त करने, और C# में फ़ॉर्मेटिंग + के साथ Excel को निर्यात करने के लिए चरण‑दर‑चरण गाइड। +og_title: फ़ॉर्मेटिंग के साथ Excel निर्यात कैसे करें – संख्या फ़ॉर्मेट को संरक्षित + रखें +tags: +- C# +- Aspose.Cells +- Excel automation +title: फ़ॉर्मेटिंग के साथ Excel निर्यात कैसे करें – संख्या फ़ॉर्मेट को संरक्षित रखें +url: /hi/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel को फ़ॉर्मेटिंग के साथ निर्यात कैसे करें – नंबर फ़ॉर्मेट बनाए रखें + +क्या आपने कभी सोचा है **how to export Excel** डेटा को इस तरह निर्यात करने के बारे में, जबकि प्रत्येक सेल का रूप बिल्कुल वैसा ही रहे जैसा आप वर्कबुक में देखते हैं? शायद आपको क्लाइंट को रिपोर्ट भेजनी है, ग्रिड कंट्रोल को डेटा देना है, या सिर्फ मानों को डेटाबेस में संग्रहीत करना है। आम समस्या नंबर फ़ॉर्मेटिंग के खो जाने या फ़ॉर्मूले के कच्चे स्ट्रिंग में बदल जाने की होती है। + +इस ट्यूटोरियल में हम एक पूर्ण, तैयार‑चलाने योग्य C# उदाहरण के माध्यम से चलेंगे जो **preserves number format**, **converts an Excel range** को `DataTable` में बदलता है, **gets the formula result**, और अंत में Aspose.Cells का उपयोग करके **exports Excel with formatting** करता है। अंत तक आपके पास एक एकल मेथड होगा जिसे आप किसी भी प्रोजेक्ट में डाल सकते हैं और वर्कशीट रेफ़रेंस के साथ कॉल कर सकते हैं। + +> **त्वरित पूर्वावलोकन:** कोड एक वर्कबुक बनाता है, एक मान और एक फ़ॉर्मूला लिखता है, Aspose.Cells को बताता है कि सेल्स को फ़ॉर्मेटेड स्ट्रिंग्स के रूप में निर्यात करे, और `123.456 | 246.912` प्रिंट करता है – बिल्कुल वही जो आप Excel में देखना अपेक्षित करेंगे। + +--- + +## आप क्या चाहिए + +- **Aspose.Cells for .NET** (फ़्री ट्रायल सीखने के लिए पर्याप्त है) +- .NET 6.0 या बाद का (API .NET Framework पर भी समान है) +- एक बेसिक C# डेवलपमेंट एनवायरनमेंट (Visual Studio, VS Code, Rider… आप चुनें) + +Aspose.Cells के अलावा कोई अतिरिक्त NuGet पैकेज आवश्यक नहीं है। यदि आपने अभी तक इसे इंस्टॉल नहीं किया है, तो चलाएँ: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## चरण 1 – एक वर्कबुक बनाएं और मान लिखें (फ़ॉर्मूला सहित) + +सबसे पहले हम एक नया वर्कबुक बनाते हैं और **A1** में एक संख्यात्मक मान डालते हैं। फिर हम **B1** में एक सरल फ़ॉर्मूला जोड़ते हैं जो पहले सेल को दो से गुणा करता है। यह बाद में **get formula result** दर्शाने के लिए मंच तैयार करता है। + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**क्यों यह महत्वपूर्ण है:** +- `PutValue` कच्ची संख्या संग्रहीत करता है, जबकि `PutFormula` गणना संग्रहीत करता है। +- Aspose.Cells फ़ॉर्मूला को **alive** रखता है, इसलिए जब हम बाद में सेल का मान पूछते हैं तो हमें वास्तव में `246.912` मिलेगा, न कि स्ट्रिंग `"=A1*2"`। + +--- + +## चरण 2 – Aspose.Cells को बताएं कि मानों को फ़ॉर्मेटेड स्ट्रिंग्स के रूप में निर्यात करे + +यदि आप केवल `ExportDataTable` को डिफ़ॉल्ट सेटिंग्स के साथ कॉल करते हैं, तो संख्यात्मक सेल्स उनके मूल `double` मानों के रूप में लौटाए जाएंगे। इससे किसी भी हजार विभाजक, मुद्रा प्रतीक, या कस्टम दशमलव स्थान हट जाता है जो आपने सेट किए हों। `ExportTableOptions` क्लास हमें **preserve number format** और **export as string** करने की अनुमति देती है। + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**मुख्य बिंदु:** `ExportNumberFormat = true` वह फ़्लैग है जो **preserve number format** को कार्यशील बनाता है। इसके बिना आप `"123.456"` और `"246.912"` को कच्चे नंबरों के रूप में देखेंगे, जो कोड में ठीक लग सकते हैं लेकिन जब आप डेटा को ऐसे UI में पेस्ट करेंगे जो Excel जैसा फ़ॉर्मेट अपेक्षित करता है, तो सही नहीं रहेगा। + +--- + +## चरण 3 – निर्यातित डेटा को प्रिंट करें (सत्यापन) + +अब जब हमारे पास फ़ॉर्मेटेड स्ट्रिंग्स से भरपूर `DataTable` है, तो चलिए सामग्री को कंसोल में डंप करते हैं। यह यह भी दर्शाता है कि हमने सफलतापूर्वक **get formula result** प्राप्त किया है बिना फ़ॉर्मूला को स्वयं मूल्यांकित किए। + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +ध्यान दें कि दूसरी कॉलम **formula result** दिखा रही है, न कि फ़ॉर्मूला टेक्स्ट। यही वह चीज़ है जिसकी आपको **export Excel with formatting** करते समय डाउनस्ट्रीम प्रोसेसिंग के लिए आवश्यकता होती है। + +--- + +## चरण 4 – बड़े Excel रेंज को बदलना (वैकल्पिक) + +ऊपर दिया गया उदाहरण एक छोटे `A1:B1` स्लाइस को संभालता है, लेकिन वास्तविक दुनिया में अक्सर पूरे टेबल को निर्यात करने की आवश्यकता होती है। वही मेथड किसी भी आयताकार ब्लॉक के लिए काम करता है – बस `firstRow`, `firstColumn`, `totalRows`, और `totalColumns` आर्ग्यूमेंट्स को समायोजित करें। + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**प्रो टिप:** यदि आपकी शीट में पहले से ही हेडर रो है, तो `includeColumnNames` को `true` सेट करें। Aspose.Cells रेंज की पहली पंक्ति को कॉलम नामों के रूप में उपयोग करेगा, जो तब उपयोगी होता है जब आप बाद में `DataTable` को UI ग्रिड से बाइंड करते हैं। + +--- + +## चरण 5 – सामान्य समस्याएँ और उन्हें कैसे टालें + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **संख्याओं से कॉमा या मुद्रा प्रतीक हट जाते हैं** | `ExportAsString` false है या `ExportNumberFormat` छोड़ा गया है | दोनों `ExportAsString = true` **और** `ExportNumberFormat = true` सेट करें। | +| **फ़ॉर्मूला सेल्स फ़ॉर्मूला टेक्स्ट लौटाते हैं** | आपने निर्यात से पहले `CalculateFormula` नहीं बुलाया (सिर्फ तब आवश्यक जब वर्कबुक ऑटो‑कैल्कुलेट पर सेट न हो) | या तो ऑटो‑कैल्कुलेट सक्षम करें (`workbook.CalculateFormula()`) या `ExportAsString` पर भरोसा करें जो मूल्यांकन को मजबूर करता है। | +| **हेडर डेटा रो के रूप में दिखते हैं** | `includeColumnNames` को `false` सेट किया गया है जबकि आपके रेंज में हेडर रो शामिल है | `includeColumnNames = true` सेट करें ताकि पहली पंक्ति को कॉलम नाम माना जाए। | +| **बड़े रेंज मेमोरी पर दबाव डालते हैं** | एक बार में पूरी शीट निर्यात करने से सब कुछ मेमोरी में लोड हो जाता है | डेटा को हिस्सों में निर्यात करें (जैसे, 500 पंक्तियों के समूह) और आवश्यक होने पर `DataTable`s को मर्ज करें। | + +--- + +## चरण 6 – पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट तैयार) + +नीचे पूरा प्रोग्राम है, `using` स्टेटमेंट्स से लेकर `Main` तक। इसे एक कंसोल ऐप में पेस्ट करें और **F5** दबाएँ – आपको फ़ॉर्मेटेड आउटपुट तुरंत दिखेगा। + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +यह पूरी **how to export excel** वर्कफ़्लो है, जिसमें फ़ॉर्मेटिंग बरकरार है, फ़ॉर्मूला परिणाम मूल्यांकित हुए हैं, और एक साफ़ `DataTable` तैयार है किसी भी .NET कंज्यूमर के लिए। + +--- + +## निष्कर्ष + +हमने सब कुछ कवर कर लिया है जो आपको **how to export Excel** डेटा को **preserving number format**, **converting an Excel range** को `DataTable` में बदलने, और **getting formula results** बिना अतिरिक्त पार्सिंग के चाहिए। मुख्य बात `ExportTableOptions` कॉन्फ़िगरेशन है – एक बार जब आप `ExportAsString` और `ExportNumberFormat` को `true` सेट कर देते हैं, तो Aspose.Cells आपके लिए भारी काम कर देता है। + +- `DataTable` को WPF `DataGrid` या ASP.NET MVC व्यू में प्लग करें। +- टेबल को CSV फ़ाइल में लिखें जबकि सटीक विज़ुअल प्रतिनिधित्व बरकरार रखें। +- इस दृष्टिकोण को कई शीट्स या डायनामिक रेंजेज़ तक विस्तारित करें। + +विभिन्न फ़ॉर्मेट्स (मुद्रा, प्रतिशत) और बड़े डेटा ब्लॉक्स के साथ प्रयोग करने में संकोच न करें। यदि आपको कोई अजीब व्यवहार मिलता है, तो **common pitfalls** तालिका को फिर से देखें – यह सबसे सामान्य समस्याओं को कवर करती है जब आप **export excel with formatting** करते हैं। + +कोडिंग का आनंद लें, और आपकी निर्यातित स्प्रेडशीट्स हमेशा मूल जैसा ही पॉलिश्ड दिखें! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/hindi/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..c0ed064f74 --- /dev/null +++ b/cells/hindi/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,207 @@ +--- +category: general +date: 2026-03-22 +description: C# में Aspose.Cells का उपयोग करके पिवट को डुप्लिकेट करना सीखें। यह गाइड + यह भी दिखाता है कि पंक्तियों को कैसे कॉपी करें और Excel वर्कबुक को C# में लोड करके + सहज Excel ऑटोमेशन के लिए पंक्तियों को कॉपी किया जाए। +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: hi +og_description: C# में पिवट को डुप्लिकेट कैसे करें? इस संक्षिप्त ट्यूटोरियल का पालन + करें ताकि Excel वर्कबुक लोड किया जा सके, पंक्तियों को कॉपी किया जा सके, और एक्सेल + ऑटोमेशन में पंक्तियों की कॉपी को मास्टर किया जा सके। +og_title: C# में पिवट को डुप्लिकेट कैसे करें – पूर्ण गाइड +tags: +- C# +- Excel Automation +- Aspose.Cells +title: C# में पिवट को डुप्लिकेट कैसे करें – पूर्ण चरण-दर-चरण गाइड +url: /hi/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में पिवट को डुप्लिकेट कैसे करें – पूर्ण चरण‑दर‑चरण गाइड + +क्या आपने कभी **how to duplicate pivot** तालिकाओं को प्रोग्रामेटिकली बिना Excel में मैन्युअली ड्रैग किए बनाने के बारे में सोचा है? आप अकेले नहीं हैं। कई रिपोर्टिंग पाइपलाइन में एक ही पिवट लेआउट को नई पंक्तियों के सेट पर चाहिए, और इसे हाथ से करना समय की बर्बादी है। + +अच्छी खबर? कुछ ही C# लाइनों के साथ आप एक Excel वर्कबुक लोड कर सकते हैं, पिवट वाले क्षेत्र को परिभाषित कर सकते हैं, और **how to copy rows** करके पिवट को नई जगह पर दिखा सकते हैं—सभी एक स्वचालित रन में। इस ट्यूटोरियल में हम **load excel workbook c#** की बुनियादों को भी कवर करेंगे और आपको **excel automation copy rows** कार्यों के लिए एक ठोस आधार देंगे। + +> **आपको क्या मिलेगा** +> • एक पूर्ण, चलाने योग्य उदाहरण जो पिवट टेबल को डुप्लिकेट करता है। +> • यह समझाना कि प्रत्येक पंक्ति क्यों महत्वपूर्ण है। +> • छिपी हुई वर्कशीट्स या कई पिवट्स जैसे किनारे के मामलों को संभालने के टिप्स। + +--- + +## आवश्यकताएँ + +Before we dive in, make sure you have: + +- **.NET 6.0** (या कोई भी हालिया .NET संस्करण) स्थापित हो। +- **Aspose.Cells for .NET** – वह लाइब्रेरी जिसे हम Excel फ़ाइलों को मैनीपुलेट करने के लिए उपयोग करेंगे। आप इसे NuGet के माध्यम से प्राप्त कर सकते हैं: + +```bash +dotnet add package Aspose.Cells +``` + +- एक स्रोत वर्कबुक (`Source.xlsx`) जिसमें पहले से ही रेंज **A1:J20** में पिवट टेबल मौजूद है (वह रेंज जिसे हम डुप्लिकेट करेंगे)। +- C# सिंटैक्स की बुनियादी परिचितता – कुछ भी जटिल नहीं, बस सामान्य `using` स्टेटमेंट्स और `Main` मेथड। + +यदि इनमें से कोई भी अपरिचित लग रहा है, तो एक क्षण रुकें और पैकेज इंस्टॉल करें; गाइड का बाकी हिस्सा मानता है कि लाइब्रेरी उपयोग के लिए तैयार है। + +![C# में Aspose.Cells का उपयोग करके पिवट को डुप्लिकेट करने का चित्रण](https://example.com/duplicate-pivot.png "C# में पिवट को डुप्लिकेट करने का चित्रण") + +*Image alt text: "C# में पिवट को डुप्लिकेट करने का उदाहरण, स्रोत और डुप्लिकेट पिवट पंक्तियों को दिखाते हुए".* + +--- + +## Step 1: Load Excel Workbook C# – फ़ाइल खोलना + +जब आप **load excel workbook c#** करना चाहते हैं, तो सबसे पहला काम है एक `Workbook` इंस्टेंस बनाना जो आपकी फ़ाइल की ओर इशारा करता हो। यह ऑब्जेक्ट आपको फ़ाइल के भीतर प्रत्येक वर्कशीट, सेल, और पिवट तक पहुंच देता है। + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**यह क्यों महत्वपूर्ण है:** +`Workbook` पूरे Excel फ़ाइल को मेमोरी में मॉडल में सारांशित करता है। इसे पहले लोड किए बिना आप पिवट के स्थान को जांच नहीं सकते या पंक्तियों को कॉपी नहीं कर सकते। साथ ही, कंस्ट्रक्टर स्वचालित रूप से फ़ाइल फ़ॉर्मेट (XLS, XLSX, CSV, आदि) का पता लगाता है, इसलिए फ़ॉर्मेट डिटेक्शन के लिए अतिरिक्त कोड की आवश्यकता नहीं है। + +--- + +## Step 2: How to Copy Rows – पिवट क्षेत्र को परिभाषित करना + +अब जबकि वर्कबुक मेमोरी में है, हमें Aspose.Cells को बताना होगा कि कौन सी पंक्तियों में पिवट है। हमारे उदाहरण में पिवट **A1:J20** में स्थित है, जो पंक्तियों **0‑19** (ज़ीरो‑बेस्ड इंडेक्सिंग) में अनुवादित होता है। हम इसे एक `CellArea` स्ट्रक्चर में लपेटेंगे। + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**हम `CellArea` का उपयोग क्यों करते हैं:** +`CellArea` एक हल्का तरीका है आयताकार ब्लॉक को वर्णित करने का। जब आप बाद में `CopyRows` कॉल करेंगे, तो मेथड इस ऑब्जेक्ट को पढ़कर ठीक कौन सी पंक्तियों को डुप्लिकेट करना है, जानता है। यदि आपको रेंज को समायोजित करना पड़े (जैसे पिवट कॉलम K तक बढ़ जाए), तो आप केवल `endColumn` मान बदलेंगे। + +--- + +## Step 3: लक्ष्य वर्कशीट तक पहुंचें + +अधिकांश वर्कबुक में एक ही शीट होती है, लेकिन API कई शीट्स के लिए भी समान काम करता है। पहली वर्कशीट (इंडेक्स 0) प्राप्त करें – वही जगह है जहाँ मूल पिवट स्थित है। + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**प्रो टिप:** +यदि आपके पास नामित शीट्स हैं, तो आप उन्हें नाम से भी प्राप्त कर सकते हैं: `workbook.Worksheets["Sheet1"]`। यह वर्कबुक संरचना बदलने पर इंडेक्स को हार्ड‑कोड करने से बचाता है। + +--- + +## Step 4: How to Copy Rows – पिवट टेबल को डुप्लिकेट करना + +यहाँ **how to duplicate pivot** का मुख्य भाग है: हम पिवट वाली पंक्तियों को नई जगह पर कॉपी करते हैं। हमारे मामले में हम पंक्ति 31 (ज़ीरो‑बेस्ड इंडेक्स 30) से शुरू करते हैं। `CopyRows` मेथड *डेटा* और अंतर्निहित पिवट कैश दोनों को कॉपी करता है, इसलिए नई पंक्तियां मूल जैसी ही व्यवहार करती हैं। + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**आंतरिक रूप से क्या हो रहा है?** +`CopyRows` प्रत्येक पंक्ति को क्लोन करता है, फ़ॉर्मूले, स्टाइल, और पिवट परिभाषाओं को संरक्षित रखता है। क्योंकि पिवट का कैश वर्कबुक स्तर पर रहता है, डुप्लिकेट पिवट स्वचालित रूप से उसी डेटा स्रोत को संदर्भित करता है – अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं। + +**एज केस – छिपी हुई पंक्तियाँ:** +यदि स्रोत रेंज में कोई पंक्तियाँ छिपी हुई हैं, तो कॉपी करने के बाद भी वे छिपी ही रहेंगी। यदि आप उन्हें अनहाइड करना चाहते हैं, तो कॉपी के बाद `worksheet.Rows[destRow].IsHidden = false` कॉल करें। + +--- + +## Step 5: वर्कबुक सहेजें – डुप्लिकेट की पुष्टि करें + +अंत में, बदलावों को डिस्क पर लिखें। आप मूल फ़ाइल को ओवरराइट कर सकते हैं या, अधिक सुरक्षित, नई फ़ाइल नाम से सहेज सकते हैं ताकि आप पहले/बाद की तुलना कर सकें। + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**आपको जो परिणाम दिखना चाहिए:** +`CopyWithPivot.xlsx` खोलें। आपको मूल पिवट **A1:J20** पर मिलेगा और एक समान कॉपी **A31:J50** से शुरू होगी। दोनों पिवट स्वतंत्र रूप से रीफ़्रेश किए जा सकते हैं, और मूल से जुड़े किसी भी स्लाइसर का काम कॉपी के लिए भी रहेगा क्योंकि वे एक ही कैश साझा करते हैं। + +--- + +## आम प्रश्न और विविधताएँ + +### क्या मैं एक साथ कई पिवट्स को डुप्लिकेट कर सकता हूँ? + +बिल्कुल। सभी पिवट टेबल्स (`worksheet.PivotTables`) पर लूप करें और प्रत्येक की रेंज को अलग लक्ष्य पर कॉपी करें। बस यह सुनिश्चित करें कि लक्ष्य रेंज ओवरलैप न करें। + +### यदि स्रोत वर्कबुक पासवर्ड‑सुरक्षित हो तो क्या करें? + +Aspose.Cells आपको पासवर्ड को `Workbook` कंस्ट्रक्टर में पास करके संरक्षित फ़ाइल खोलने देता है: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### फ़ॉर्मूलों को प्रभावित किए बिना पंक्तियों को कैसे कॉपी करें? + +यदि आपको केवल *वैल्यूज़* (कोई फ़ॉर्मूला नहीं) चाहिए, तो `CopyRows` को `CopyOptions` फ़्लैग के साथ उपयोग करें: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### क्या पंक्तियों को *विभिन्न* वर्कबुक में कॉपी करने का कोई तरीका है? + +हाँ। स्रोत शीट में पंक्तियों को कॉपी करने के बाद, आप `targetWorkbook.Worksheets.AddCopy(worksheet)` के माध्यम से वर्कशीट को दूसरे `Workbook` इंस्टेंस में क्लोन कर सकते हैं। + +--- + +## विश्वसनीय Excel Automation Copy Rows के लिए प्रो टिप्स + +- **रेंज को वैलिडेट करें** कॉपी करने से पहले। एक त्वरित `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` आउट‑ऑफ़‑रेंज त्रुटियों को रोकता है। +- **कैल्कुलेशन बंद करें** बड़े रेंज कॉपी करते समय: `workbook.Settings.CalcMode = CalcMode.Manual;` – यह ऑपरेशन को काफी तेज़ करता है। +- **ऑब्जेक्ट्स को डिस्पोज करें** (`workbook.Dispose()`) यदि आप लूप में कई फ़ाइलें प्रोसेस कर रहे हैं, ताकि नेटिव रिसोर्सेज़ मुक्त हो सकें। +- **ऑपरेशन को लॉग करें** – विशेष रूप से प्रोडक्शन पाइपलाइन में – ताकि आप ट्रेस कर सकें कौन सी फ़ाइलें प्रोसेस हुईं और जल्दी फेल्योर पकड़ सकें। + +--- + +## निष्कर्ष + +अब आप जानते हैं कि Aspose.Cells का उपयोग करके C# में **how to duplicate pivot** टेबल्स कैसे बनाते हैं, और आपने **load excel workbook c#** से **excel automation copy rows** तक का पूरा वर्कफ़्लो देखा और अंत में परिणाम को सहेजना। यह उदाहरण स्वयं‑समाहित है, बॉक्स से बाहर चलाता है, और इसे कई पिवट्स, संरक्षित फ़ाइलों, या क्रॉस‑वर्कबुक कॉपी को संभालने के लिए विस्तारित किया जा सकता है। + +अगले कदम? स्क्रिप्ट को इस प्रकार अनुकूलित करने का प्रयास करें: + +- डुप्लिकेट पिवट को प्रोग्रामेटिकली रीफ़्रेश करें (`pivotTable.RefreshData();`). +- डुप्लिकेट क्षेत्र को डाउनस्ट्रीम प्रोसेसिंग के लिए CSV में एक्सपोर्ट करें। +- कोड को ASP.NET Core API में इंटीग्रेट करें ताकि उपयोगकर्ता फ़ाइल अपलोड कर सकें और तुरंत डुप्लिकेट‑पिवट संस्करण प्राप्त कर सकें। + +कोडिंग का आनंद लें, और आपकी Excel ऑटोमेशन हमेशा सुगम रहे! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/row-and-column-management/_index.md b/cells/hindi/net/row-and-column-management/_index.md index f7e930f6e7..44ea7b6bf4 100644 --- a/cells/hindi/net/row-and-column-management/_index.md +++ b/cells/hindi/net/row-and-column-management/_index.md @@ -76,6 +76,8 @@ .NET के लिए Aspose.Cells का उपयोग करके Excel में फ़ॉर्मेटिंग के साथ पंक्ति सम्मिलित करना सीखें। आसान कार्यान्वयन के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। ### [Aspose.Cells .NET में एकाधिक पंक्तियाँ सम्मिलित करें](./insert-multiple-rows-aspose-cells/) .NET के लिए Aspose.Cells का उपयोग करके Excel में कई पंक्तियाँ सम्मिलित करना सीखें। निर्बाध डेटा हेरफेर के लिए हमारे विस्तृत ट्यूटोरियल का पालन करें। +### [.NET के लिए Aspose.Cells का उपयोग करके पंक्तियों को हटाएँ – Excel में हेडर पंक्ति को सुरक्षित रखें](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Excel में हेडर पंक्ति को सुरक्षित रखते हुए पंक्तियों को हटाने के लिए चरण-दर-चरण मार्गदर्शिका। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/hindi/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..e6ed603a6d --- /dev/null +++ b/cells/hindi/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,267 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells हेडर पंक्ति की सुरक्षा करते हुए पंक्तियों को हटाता है। जानिए + कैसे पहली तालिका प्राप्त करें और C# में Excel तालिका की पंक्तियों को सुरक्षित रूप + से हटाएँ। +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: hi +og_description: Aspose Cells हेडर पंक्ति की सुरक्षा करते हुए पंक्तियों को हटाता है। + जानें कैसे पहली तालिका को प्राप्त करें और C# में Excel तालिका की पंक्तियों को सुरक्षित + रूप से हटाएँ। +og_title: Aspose Cells पंक्तियों को हटाएँ – Excel में हेडर पंक्ति को सुरक्षित रखें +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells पंक्तियों को हटाएँ – Excel में हेडर पंक्ति को सुरक्षित रखें +url: /hi/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Excel में हेडर पंक्ति की सुरक्षा + +क्या आपने कभी तालिका से **aspose cells delete rows** करने की कोशिश की है और पाया कि हेडर गायब हो गया? यह Excel शीट्स को प्रोग्रामेटिकली मैनीपुलेट करते समय एक आम समस्या है। इस गाइड में हम एक पूर्ण, चलाने योग्य समाधान दिखाएंगे जो **हेडर पंक्ति की सुरक्षा** करता है, आपको **retrieve first table** कैसे करें दिखाता है, और संरचना को बिगाड़े बिना **Excel table rows** को सुरक्षित रूप से **delete** करता है। + +हम सभी चीज़ों को कवर करेंगे, वर्कबुक लोड करने से लेकर उस अपवाद को संभालने तक जो Aspose तब फेंकता है जब आप हेडर को अकेला छोड़ने की कोशिश करते हैं। अंत तक आपके पास एक ठोस पैटर्न होगा जिसे आप किसी भी .NET प्रोजेक्ट में उपयोग कर सकते हैं जो Aspose.Cells का उपयोग करता है। + +--- + +## आपको क्या चाहिए + +- **Aspose.Cells for .NET** (v23.12 or later) – वह लाइब्रेरी जो Office स्थापित किए बिना Excel फ़ाइलों के साथ काम करने देती है। +- एक बुनियादी C# विकास पर्यावरण (Visual Studio, Rider, या `dotnet` CLI)। +- `TableWithHeader.xlsx` नामक Excel फ़ाइल जिसमें कम से कम एक **ListObject** (Excel तालिका) हो और पहली पंक्ति में हेडर पंक्ति हो। + +Aspose.Cells के अलावा कोई अतिरिक्त NuGet पैकेज आवश्यक नहीं है। + +## चरण 1: वर्कबुक लोड करें और पहली तालिका प्राप्त करें + +सबसे पहले आपको वर्कबुक खोलनी है और वह तालिका प्राप्त करनी है जिसे आप संशोधित करना चाहते हैं। यहीं पर द्वितीयक कीवर्ड **retrieve first table** काम आता है। + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**यह क्यों महत्वपूर्ण है:** +- `Workbook` फ़ाइल को पढ़ता है बिना Excel स्थापित किए। +- `worksheet.ListObjects[0]` **retrieve first table** करने का सबसे सीधा तरीका है; यदि आपके पास कई तालिकाएँ हैं तो आप इटररेट कर सकते हैं या तालिका का नाम उपयोग कर सकते हैं। + +> **Pro tip:** यदि आप सुनिश्चित नहीं हैं कि कोई वर्कशीट वास्तव में तालिका रखती है या नहीं, तो पहले `worksheet.ListObjects.Count` जाँचें ताकि `IndexOutOfRangeException` से बचा जा सके। + +## चरण 2: पंक्तियों को हटाते समय हेडर पंक्ति की सुरक्षा + +अब बात का मुख्य भाग आता है: **aspose cells delete rows** हेडर को हटाए बिना। Aspose की `DeleteRows` मेथड शून्य‑आधारित प्रारंभिक इंडेक्स और गिनती लेती है। हेडर (पंक्ति 0) को हटाने की कोशिश करने से एक अपवाद उत्पन्न होता है, जिसे हम बिल्कुल बचना चाहते हैं। + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Logic की व्याख्या:** + +| चरण | कारण | +|------|--------| +| `table.DeleteRows(1, 2);` | इंडेक्स 1 **दूसरी** पंक्ति (पहली डेटा पंक्ति) की ओर इशारा करता है। दो पंक्तियों को हटाने से Excel में पंक्तियाँ 2‑3 हट जाती हैं, जबकि हेडर (पंक्ति 1) अपरिवर्तित रहता है। | +| `catch (Exception ex)` | Aspose केवल तभी अपवाद फेंकता है जब ऑपरेशन हेडर को अकेला छोड़ देगा। इसे पकड़ने से आप एप्लिकेशन को क्रैश किए बिना एक मैत्रीपूर्ण संदेश लॉग कर सकते हैं। | +| `Save` | बदलावों को सहेजने से आप `Result.xlsx` खोल सकते हैं और देख सकते हैं कि हेडर अभी भी मौजूद है। | + +> **What if you really need to delete the header?** +> हटाने से पहले `table.ShowHeaders = false;` उपयोग करें, या पूरी तालिका को हटाकर फिर से बनाएं। लेकिन अधिकांश व्यावसायिक परिदृश्यों में आप **protect header row** चाहते हैं। + +## चरण 3: परिणाम सत्यापित करें – अपेक्षित आउटपुट + +प्रोग्राम चलाने के बाद, `Result.xlsx` खोलें। आपको यह दिखना चाहिए: + +- पहली पंक्ति में अभी भी मूल कॉलम शीर्षक हैं। +- पंक्तियाँ 2‑3 (जिन्हें हमने लक्ष्य बनाया था) हट गई हैं, और शेष डेटा ऊपर की ओर शिफ्ट हो गया है। + +कंसोल में यह प्रदर्शित होगा: + +``` +Rows deleted successfully. +``` + +यदि आप गलती से हेडर को हटाने की कोशिश करते हैं (उदा., `table.DeleteRows(0, 1);`), तो आउटपुट इस प्रकार होगा: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +यह संदेश पुष्टि करता है कि Aspose की अंतर्निहित सुरक्षा व्यवस्था अपना काम कर रही है। + +## चरण 4: **Delete Excel Table Rows** के वैकल्पिक तरीके + +कभी-कभी आपको अधिक नियंत्रण चाहिए—जैसे शर्त के आधार पर पंक्तियों को हटाना, या असतत पंक्तियों को हटाना। यहाँ दो त्वरित पैटर्न हैं जो हेडर को सुरक्षित रखते हैं। + +### 4.1 डेटा फ़िल्टर द्वारा पंक्तियों को हटाएँ + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 रेंज का उपयोग करके बल्क डिलीट + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +दोनों स्निपेट **protect header row** नियम का सम्मान करते हैं क्योंकि प्रारंभिक इंडेक्स कभी भी 1 से नीचे नहीं जाता। + +## चरण 5: सामान्य गलतियाँ और उन्हें कैसे टालें + +| गलती | क्यों होता है | समाधान | +|------|--------------|--------| +| हेडर को अनजाने में हटाना | प्रारंभिक इंडेक्स के रूप में `0` का उपयोग करना | डेटा पंक्तियों के लिए हमेशा `1` से शुरू करें, या पहले `table.ShowHeaders` जाँचें। | +| शीट में कोई तालिका न होने पर `IndexOutOfRangeException` | यह मान लेना कि तालिका मौजूद है | `[0]` तक पहुँचने से पहले `worksheet.ListObjects.Count > 0` सत्यापित करें। | +| बदलाव सहेजे नहीं गए | `Save` कॉल करना भूल जाना | संशोधनों के बाद `workbook.Save` कॉल करें। | +| मध्य में पंक्तियों को हटाने से इंडेक्स बदलते हैं, जिससे कुछ पंक्तियाँ छूट जाती हैं | हटाते समय आगे की ओर इटररेशन | **पीछे की ओर** इटररेट करें या पहले हटाने वाली पंक्तियों को एकत्र करें। | + +## चरण 6: सब कुछ एक साथ रखें – पूर्ण कार्यशील उदाहरण + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +इस प्रोग्राम को चलाएँ, `Result.xlsx` खोलें, और आप देखेंगे कि हेडर अपरिवर्तित है जबकि चयनित पंक्तियाँ हट गई हैं। यह **complete, self‑contained solution** है **aspose cells delete rows** के लिए, बिना हेडर को नुकसान पहुँचाए। + +## निष्कर्ष + +हमने अभी दिखाया है कि कैसे **aspose cells delete rows** करते हुए **protecting the header row** किया जाए, कैसे **retrieve first table** किया जाए, और कई तरीकों से **delete excel table rows** सुरक्षित रूप से किया जाए। मुख्य बिंदु हैं: + +- हमें हमेशा डिलीशन को इंडेक्स 1 से शुरू करना चाहिए ताकि हेडर बना रहे। +- `try/catch` का उपयोग करके Aspose की अंतर्निहित सुरक्षा अपवाद को संभालें। +- ऑपरेशन से पहले तालिका की मौजूदगी सत्यापित करें, और शर्तीय पंक्तियों को हटाते समय पीछे की ओर इटररेट करें। + +क्या आप अगले स्तर पर जाना चाहते हैं? इस दृष्टिकोण को **Aspose Cells’** स्टाइलिंग APIs के साथ मिलाकर हटाने से पहले हटाई गई पंक्तियों को हाइलाइट करें, या कई वर्कशीट्स में प्रक्रिया को स्वचालित करें। संभावनाएँ अनंत हैं, और अब आपके पास एक विश्वसनीय पैटर्न है जिस पर आप निर्माण कर सकते हैं। + +यदि आपको यह ट्यूटोरियल उपयोगी लगा, तो इसे थम्ब्स‑अप दें, अपने टीममेट्स के साथ साझा करें, या अपनी स्वयं की एज‑केस समाधान के साथ टिप्पणी छोड़ें। कोडिंग का आनंद लें! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/hindi/net/saving-and-exporting-excel-files-with-options/_index.md index 4d40a11e7f..107923ba67 100644 --- a/cells/hindi/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/hindi/net/saving-and-exporting-excel-files-with-options/_index.md @@ -39,11 +39,13 @@ Aspose.Cells for .NET डेवलपर्स को .NET एप्लीके ### [Excel फ़ाइल को HTML में सहेजते समय टिप्पणियाँ निर्यात करना](./exporting-comments/) जानें कि .NET के लिए Aspose.Cells का उपयोग करके Excel फ़ाइलों को HTML में सहेजते समय आसानी से टिप्पणियाँ कैसे निर्यात करें। एनोटेशन को संरक्षित करने के लिए इस चरण-दर-चरण मार्गदर्शिका का पालन करें। ### [.NET में Excel फ़ाइल लोड करते समय चेतावनियाँ प्राप्त होना](./getting-warnings-while-loading-excel-file/) -हमारे आसान चरण-दर-चरण मार्गदर्शिका के साथ Aspose.Cells का उपयोग करके .NET में Excel फ़ाइलों को लोड करते समय चेतावनियों को संभालने का तरीका जानें। +हमारे आसान चरण-दर-स्टेप मार्गदर्शिका के साथ Aspose.Cells का उपयोग करके .NET में Excel फ़ाइलों को लोड करते समय चेतावनियों को संभालने का तरीका जानें। ### [.NET में प्रोग्रामेटिक रूप से Excel फ़ाइल का दस्तावेज़ संस्करण निर्दिष्ट करना](./specifying-document-version-of-excel-file/) चरण-दर-चरण निर्देशों के साथ .NET के लिए Aspose.Cells का उपयोग करके प्रोग्रामेटिक रूप से Excel फ़ाइल में संस्करण, लेखक और शीर्षक जैसे दस्तावेज़ गुणों को निर्दिष्ट करना सीखें। ### [निर्यात करते समय अग्रणी रिक्त पंक्तियों और स्तंभों को ट्रिम करना](./trimming-leading-blank-rows-and-columns/) .NET के लिए Aspose.Cells के साथ रिक्त पंक्तियों और स्तंभों को ट्रिम करके अपने CSV निर्यात को सुव्यवस्थित करें। साफ़ डेटा बस कुछ ही कदम दूर है। +### [C# में वर्कबुक को कैसे सहेजें – पूर्ण Excel ऑटोमेशन गाइड](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Aspose.Cells for .NET का उपयोग करके C# में वर्कबुक को सहेजने के सभी चरणों को सीखें और पूर्ण Excel ऑटोमेशन प्राप्त करें। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/hindi/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..5d177c5591 --- /dev/null +++ b/cells/hindi/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: 'C# में Aspose.Cells का उपयोग करके वर्कबुक कैसे सहेजें—एक चरण-दर-चरण + गाइड जिसमें Excel लोड करना, शीट बनाना, शीट का पुन: उपयोग करना और रिपोर्ट जनरेट करना + शामिल है।' +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: hi +og_description: C# में Aspose.Cells के साथ वर्कबुक को कैसे सहेजें। एक ही ट्यूटोरियल + में Excel लोड करना, शीट बनाना, शीट को पुनः उपयोग करना और रिपोर्ट जनरेट करना सीखें। +og_title: C# में वर्कबुक कैसे सहेजें – पूर्ण एक्सेल ऑटोमेशन गाइड +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: C# में वर्कबुक को कैसे सहेजें – पूर्ण एक्सेल ऑटोमेशन गाइड +url: /hi/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Workbook कैसे Save करें – पूर्ण Excel ऑटोमेशन गाइड + +क्या आपने कभी सोचा है **how to save workbook** C# में कुछ डेटा प्रोसेस करने के बाद? आप अकेले नहीं हैं। अधिकांश डेवलपर्स को तब समस्या आती है जब रिपोर्ट स्क्रीन पर परफेक्ट दिखती है लेकिन डिस्क पर लिखने से इनकार कर देती है। इस ट्यूटोरियल में हम एक पूर्ण‑फ़ीचर वाला उदाहरण देखेंगे जो न केवल आपको **how to save workbook** दिखाता है, बल्कि **how to load Excel**, **how to create sheet**, **how to reuse sheet**, और **how to generate report** को भी कवर करता है—सभी Aspose.Cells के साथ। + +इसे एक कॉफ़ी‑ब्रेक की बातचीत की तरह समझें जहाँ मैं अपने लैपटॉप से कोड निकाल रहा हूँ और हर लाइन को समझा रहा हूँ। अंत तक आपके पास एक चलने योग्य प्रोग्राम होगा जो टेम्पलेट लोड करता है, SmartMarker के माध्यम से डेटा इन्जेक्ट करता है, मौजूदा Detail शीट नाम को पुनः उपयोग करता है, और अंत में फ़ाइल को आपके फ़ोल्डर में लिखता है। कोई रहस्य नहीं, सिर्फ़ स्पष्ट कदम जो आप कॉपी‑पेस्ट कर सकते हैं। + +## आपको क्या चाहिए + +- **Aspose.Cells for .NET** (2026 तक का नवीनतम संस्करण)। आप इसे NuGet से `Install-Package Aspose.Cells` कमांड से प्राप्त कर सकते हैं। +- .NET डेवलपमेंट एनवायरनमेंट (Visual Studio, Rider, या C# एक्सटेंशन के साथ VS Code) ठीक काम करता है। +- `MasterTemplate.xlsx` नाम की एक बेसिक Excel टेम्पलेट फ़ाइल को उस फ़ोल्डर में रखें जिसे आप नियंत्रित करते हैं। +- बुनियादी C# ज्ञान—यदि आपने पहले `Console.WriteLine` लिखा है, तो आप तैयार हैं। + +> **Pro tip:** अपने टेम्पलेट को एक अलग *Resources* फ़ोल्डर में रखें और इसे “Copy if newer” के रूप में मार्क करें ताकि बिल्ड के दौरान पाथ लगातार बना रहे। + +अब, चलिए कोड में डुबकी लगाते हैं। + +## चरण 1: Excel कैसे लोड करें – टेम्पलेट Workbook खोलें + +सबसे पहले आपको workbook को मेमोरी में लाना होता है। Aspose.Cells इसे एक लाइन में कर देता है, लेकिन कारण को समझना बाद में ट्रबलशूट करने में मदद करता है। + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Why this matters:** Workbook लोड करने से आपको टेम्पलेट के अंदर सभी worksheet, style, और named range तक पहुँच मिलती है। यदि फ़ाइल नहीं मिलती, तो Aspose `FileNotFoundException` फेंकता है, इसलिए पाथ को दोबारा जांचें। +- **Edge case:** यदि टेम्पलेट पासवर्ड‑प्रोटेक्टेड है, तो पासवर्ड को `Workbook` कंस्ट्रक्टर में पास करें: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## चरण 2: शीट को पुनः उपयोग कैसे करें – SmartMarker Options कॉन्फ़िगर करें + +SmartMarker स्वचालित रूप से एक नई detail शीट बना सकता है, लेकिन आपके पास पहले से ही **Detail** नाम की शीट हो सकती है। टकराव से बचने के लिए हम प्रोसेसर को उस नाम को पुनः उपयोग करने के लिए कहते हैं। + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Why this matters:** इस विकल्प के बिना Aspose एक संख्यात्मक उपसर्ग (जैसे “Detail1”) जोड़ देगा, जो डाउनस्ट्रीम मैक्रो या फ़ॉर्मूले को तोड़ सकता है जो एक स्थिर शीट नाम की अपेक्षा करते हैं। +- **What if the sheet doesn’t exist?** Aspose आपके लिए इसे बना देगा—इसलिए वही कोड तब भी काम करेगा जब शीट मौजूद हो या न हो। + +## चरण 3: शीट कैसे बनाएं – डेटा स्रोत तैयार करें + +हालाँकि हम यहाँ मैन्युअली शीट नहीं जोड़ रहे हैं, लेकिन SmartMarker में आप जो डेटा देते हैं, वह तय करता है कि नई शीट बनाई जाए या नहीं। आइए एक सरल anonymous ऑब्जेक्ट बनाते हैं जो एक ऑर्डर लिस्ट की नकल करता है। + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Why this matters:** SmartMarker टेम्पलेट में `&=Header` और `&=Items.Id` जैसे मार्कर्स को स्कैन करता है। `orderData` की संरचना इन मार्कर्स से बिल्कुल मेल खानी चाहिए, अन्यथा प्रोसेसर उन्हें चुपचाप स्किप कर देगा। +- **Variation:** यदि आप डेटा को डेटाबेस से ले रहे हैं, तो anonymous टाइप को DTOs की लिस्ट या `DataTable` से बदलें। प्रोसेसर दोनों को संभालता है। + +## चरण 4: रिपोर्ट कैसे जेनरेट करें – SmartMarker प्रोसेस करें + +अब हम डेटा को टेम्पलेट से बाइंड करते हैं। प्रोसेसर पहले worksheet के माध्यम से चलता है, मार्कर्स को बदलता है, और detail शीट बनाता है। + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Why this matters:** यह एकल लाइन भारी काम करती है—हेडर को पॉप्युलेट करना, `Items` पर इटरिट करना, और पहले सेट किए गए `DetailSheetNewName` का सम्मान करना। +- **Common question:** *What if I have multiple worksheets with markers?* प्रत्येक worksheet पर लूप करें और `SmartMarkerProcessor.Process` को व्यक्तिगत रूप से कॉल करें। + +## चरण 5: Workbook कैसे Save करें – परिणामस्वरूप फ़ाइल को स्थायी बनाएं + +अंत में, हम संशोधित workbook को डिस्क पर वापस लिखते हैं। यह वह क्षण है जहाँ **how to save workbook** ठोस रूप लेता है। + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Why this matters:** `Save` मेथड कई फ़ॉर्मैट्स (`.xlsx`, `.xls`, `.csv`, `.pdf`, आदि) को सपोर्ट करता है। डिफ़ॉल्ट रूप से यह एक Excel फ़ाइल लिखता है, लेकिन आप आउटपुट बदलने के लिए `SaveOptions` ऑब्जेक्ट पास कर सकते हैं। +- **Edge case:** यदि लक्ष्य फ़ाइल Excel में खुली है, तो `Save` `IOException` फेंकेगा। सुनिश्चित करें कि सभी इंस्टेंस बंद हों या प्रत्येक रन पर एक अनोखा फ़ाइलनाम उपयोग करें। + +![C# में Workbook कैसे Save करें का उदाहरण](/images/how-to-save-workbook-csharp.png "C# में Workbook कैसे Save करें – प्रक्रिया का दृश्य अवलोकन") + +### पूर्ण कार्यशील उदाहरण + +सब कुछ मिलाकर, यहाँ एक स्व-निहित console एप्लिकेशन है जिसे आप कंपाइल और रन कर सकते हैं: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Expected output:** रन करने के बाद, आपको `SmartMarkerWithDupDetail.xlsx` `YOUR_DIRECTORY` में मिलेगा। इसे खोलें और आपको यह दिखना चाहिए: + +- मूल हेडर “Orders” से भर दिया गया है। +- एक नई (या पुनः उपयोग की गई) शीट जिसका नाम **Detail** है, जिसमें दो पंक्तियाँ हैं: `Id=1, Qty=5` और `Id=2, Qty=3`। + +यदि **Detail** शीट पहले से मौजूद थी, तो उसकी सामग्री नई डेटा से ओवरराइट हो जाएगी—आपकी फ़ाइल में कोई अतिरिक्त शीट नहीं बिखरेगी। + +## अक्सर पूछे जाने वाले प्रश्न (FAQ) + +| Question | Answer | +|----------|--------| +| *क्या मैं XLSX के बजाय PDF में सेव कर सकता हूँ?* | हाँ। `workbook.Save("file.xlsx")` को `workbook.Save("file.pdf", SaveFormat.Pdf);` से बदलें। | +| *यदि मेरे टेम्पलेट में कई SmartMarker सेक्शन हैं तो क्या होगा?* | `SmartMarkerProcessor.Process` को प्रत्येक worksheet पर कॉल करें जिसमें मार्कर्स हैं, या प्रत्येक सेक्शन से मेल खाने वाले डेटा ऑब्जेक्ट्स का कलेक्शन पास करें। | +| *क्या Detail शीट को ओवरराइट करने के बजाय डेटा जोड़ने का तरीका है?* | `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` का उपयोग करें (नए Aspose संस्करणों में उपलब्ध)। | +| *क्या मुझे Workbook को डिस्पोज़ करना चाहिए?* | `Workbook` क्लास `IDisposable` को इम्प्लीमेंट करती है। साफ़ रिसोर्स मैनेजमेंट के लिए इसे `using` ब्लॉक में रैप करें। | + +## निष्कर्ष + +हमने अभी-अभी **how to save workbook** को C# में शुरू से अंत तक कवर किया है, पूरी पाइपलाइन दिखाते हुए: **how to load Excel**, **how to create sheet** (SmartMarker के माध्यम से अप्रत्यक्ष रूप से), **how to reuse sheet**, और **how to generate report**। कोड किसी भी .NET प्रोजेक्ट में डालने के लिए तैयार है, और व्याख्याएँ आपको अधिक जटिल परिदृश्यों—जैसे मल्टी‑शीट रिपोर्ट, कंडीशनल फॉर्मेटिंग, या PDF में एक्सपोर्ट करने—के लिए अनुकूलित करने के लिए पर्याप्त संदर्भ देंगी। + +अगली चुनौती के लिए तैयार हैं? ऑर्डर मात्रा को विज़ुअलाइज़ करने वाला चार्ट जोड़ने की कोशिश करें, या डाउनस्ट्रीम प्रोसेसिंग के लिए आउटपुट फ़ॉर्मेट को CSV में बदलें। एक ही सिद्धांत—लोडिंग, प्रोसेसिंग, और सेविंग—अब भी लागू होते हैं, इसलिए आप इस पैटर्न को कई रिपोर्टिंग कार्यों में पुनः उपयोग करते पाएँगे। + +यदि आपको कोई समस्या आती है या आपके पास विस्तार के विचार हैं, तो बेझिझक टिप्पणी छोड़ें। कोडिंग का आनंद लें, और अंततः **save workbook** को बिल्कुल उसी तरह करने के सुगम अनुभव का आनंद उठाएँ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/smart-markers-dynamic-data/_index.md b/cells/hindi/net/smart-markers-dynamic-data/_index.md index 58c338a46d..338219a392 100644 --- a/cells/hindi/net/smart-markers-dynamic-data/_index.md +++ b/cells/hindi/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Aspose.Cells स्मार्ट मार्कर अनाम प्रक चरण-दर-चरण मार्गदर्शिका में स्मार्ट मार्कर का उपयोग करके नेस्टेड ऑब्जेक्ट्स को आसानी से प्रबंधित करके Aspose.Cells के साथ एक्सेल रिपोर्टिंग की क्षमता को अनलॉक करें। ### [स्मार्ट मार्करों के साथ चर सरणी को लागू करें Aspose.Cells](./variable-array-smart-markers/) Aspose.Cells की शक्ति को अनलॉक करें। सहज Excel रिपोर्ट निर्माण के लिए स्मार्ट मार्कर के साथ चरण-दर-चरण परिवर्तनीय सरणियों को लागू करना सीखें। +### [C# में एक्सेल रिपोर्ट कैसे जनरेट करें – स्मार्टमार्कर का पूर्ण गाइड](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/hindi/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..ac836298ed --- /dev/null +++ b/cells/hindi/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-22 +description: C# में मास्टर‑डिटेल टेम्पलेट के साथ Excel रिपोर्ट कैसे बनाएं। दोहराने + योग्य शीट्स के लिए SmartMarker का उपयोग करके Excel टेम्पलेट को जल्दी से भरना सीखें। +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: hi +og_description: 'C# में पुन: उपयोग योग्य टेम्पलेट का उपयोग करके Excel रिपोर्ट कैसे + बनाएं। यह चरण-दर-चरण गाइड आपको दिखाता है कि कैसे Excel टेम्पलेट को C# में मास्टर‑डिटेल + डेटा के साथ भरें।' +og_title: C# में एक्सेल रिपोर्ट कैसे जनरेट करें – पूर्ण SmartMarker ट्यूटोरियल +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: C# में Excel रिपोर्ट कैसे जनरेट करें – SmartMarker का उपयोग करके पूर्ण गाइड +url: /hi/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Excel रिपोर्ट कैसे जनरेट करें – SmartMarker का उपयोग करके पूर्ण गाइड + +क्या आपने कभी सोचा है **C# में Excel रिपोर्ट कैसे जनरेट करें** बिना अनगिनत सेल‑बाय‑सेल कोड लिखे? आप अकेले नहीं हैं। अधिकांश डेवलपर्स को तब रुकावट आती है जब उन्हें एक परिष्कृत, मल्टी‑शीट रिपोर्ट चाहिए जो मास्टर‑डिटेल रिलेशनशिप को दर्शाए—जैसे ऑर्डर और लाइन आइटम—और वे हर बार व्हील को फिर से नहीं बनाना चाहते। + +अच्छी खबर? एक तैयार Excel टेम्पलेट और Aspose.Cells की **SmartMarker** इंजन के साथ, आप **populate Excel template C#** केवल कुछ लाइनों में कर सकते हैं। इस ट्यूटोरियल में हम एक वास्तविक परिदृश्य पर चलेंगे, प्रत्येक चरण क्यों महत्वपूर्ण है समझाएँगे, और आपको एक पूर्ण, चलाने योग्य उदाहरण देंगे जिसे आप आज ही कॉपी‑पेस्ट कर सकते हैं। + +> **आपको क्या मिलेगा:** एक मास्टर‑डिटेल Excel रिपोर्ट जहाँ प्रत्येक ऑर्डर अपना स्वयं का वर्कशीट बनाता है, सभी साधारण C# ऑब्जेक्ट्स द्वारा संचालित। कोई मैन्युअल सेल लूपिंग नहीं, कोई नाज़ुक फ़ॉर्मूले नहीं—सिर्फ साफ़, मेंटेन करने योग्य कोड। + +--- + +## आवश्यकताएँ + +- **.NET 6.0** (या बाद का) स्थापित होना चाहिए – कोड .NET 6 को टारगेट करता है लेकिन .NET Framework 4.7+ पर भी काम करता है। +- **Aspose.Cells for .NET** NuGet पैकेज (`Install-Package Aspose.Cells`) – यह `Workbook`, `SmartMarkerProcessor`, और संबंधित क्लासेज़ प्रदान करता है। +- `YOUR_DIRECTORY` में रखी गई **MasterDetailTemplate.xlsx** नामक Excel फ़ाइल। इसमें पहले शीट में `{{Orders.OrderId}}` जैसा SmartMarker ब्लॉक और लाइन आइटम्स के लिए नेस्टेड ब्लॉक `{{Orders.Items.Prod}}` होना चाहिए। +- C# अनाम प्रकारों (anonymous types) की बुनियादी समझ – हम उनका उपयोग ऑर्डर और आइटम्स को मॉडल करने के लिए करेंगे। + +यदि इनमें से कोई भी परिचित नहीं लग रहा है, तो चिंता न करें। हम बाद में विकल्पों (जैसे EPPlus) का उल्लेख करेंगे, लेकिन मूल अवधारणा वही रहती है। + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +पहला काम टेम्पलेट फ़ाइल को खोलना है। टेम्पलेट को एक कंकाल की तरह सोचें; SmartMarker बाद में इसे वास्तविक डेटा से भर देगा। + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Why this matters:** लेआउट (टेम्पलेट) को डेटा (C# ऑब्जेक्ट्स) से अलग करके, आप डिज़ाइनरों और डेवलपर्स दोनों को खुश रख सकते हैं। डिज़ाइनर फ़ॉन्ट, रंग या फ़ॉर्मूले को कोड छुए बिना बदल सकते हैं। + +## Step 2: Build the Master‑Detail Data Source + +अब हम वह डेटा बनाते हैं जो टेम्पलेट को भर देगा। एक सामान्य ऑर्डर रिपोर्ट के लिए, आपके पास ऑर्डर्स का एक संग्रह होता है, प्रत्येक के पास अपने आइटम्स का संग्रह होता है। + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** यदि आपको कई रिपोर्टों में पुन: उपयोग चाहिए तो अनाम प्रकारों के बजाय स्ट्रॉन्गली‑टाइप्ड क्लासेज़ का उपयोग करें। अनाम प्रकार उदाहरण को संक्षिप्त रखता है। + +**Why this matters:** SmartMarker प्रॉपर्टी नामों (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) को टेम्पलेट में प्लेसहोल्डर्स से मिलाकर काम करता है। हायरार्की बिल्कुल मिलनी चाहिए, अन्यथा इंजन उन सेक्शन्स को स्किप कर देगा। + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +डिफ़ॉल्ट रूप से SmartMarker सभी पंक्तियों को एक ही शीट में लिखता है। हम चाहते हैं कि प्रत्येक ऑर्डर अपना स्वयं का वर्कशीट प्राप्त करे, जो बाद में प्रिंटिंग या प्रति‑ऑर्डर PDF ईमेल करने के लिए परफेक्ट है। + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Why this matters:** `EnableRepeatingSheet` मैन्युअल शीट क्लोनिंग की आवश्यकता को समाप्त करता है। इंजन मूल शीट को कॉपी करता है, ऑर्डर डेटा इन्जेक्ट करता है, और शीट का नाम स्वचालित रूप से (आमतौर पर पहले कॉलम के मान से) बदल देता है। + +## Step 4: Process the Template with Your Data + +अब हम सबको एक साथ बाइंड करते हैं। `SmartMarkerProcessor` वर्कबुक के माध्यम से चलता है, टैग्स को बदलता है, और निर्देशानुसार नई शीट्स बनाता है। + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Why this matters:** यह एकल लाइन भारी काम करती है—टेम्पलेट को पार्स करना, कलेक्शन्स पर इटरिट करना, और नेस्टेड टेबल्स को हैंडल करना। यह **populate Excel template C#** का दिल है, बिना किसी मैन्युअल लूप के। + +## Step 5: Save the Finished Report + +अंत में, भरे हुए वर्कबुक को डिस्क पर लिखें। आप इसे वेब ऐप्स के लिए सीधे HTTP रिस्पॉन्स में भी स्ट्रीम कर सकते हैं। + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Why this matters:** फ़ाइल में सेव करने से आपको एक ठोस आर्टिफैक्ट मिलता है जिसे आप Excel में खोल सकते हैं, स्टेकहोल्डर्स के साथ शेयर कर सकते हैं, या PDF कन्वर्ज़न जैसे डाउनस्ट्रीम प्रोसेस में फीड कर सकते हैं। + +## Full Working Example (Copy‑Paste Ready) + +नीचे पूरा प्रोग्राम है, जिसमें `using` डायरेक्टिव्स और `Main` मेथड शामिल है। इसे एक कंसोल ऐप में डालें, फ़ाइल पाथ्स को समायोजित करें, और चलाएँ। + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +जब आप `MasterDetailResult.xlsx` खोलेंगे तो आपको दिखेगा: + +- **Sheet “Order_1”** – Order 1 का हेडर और प्रोडक्ट A व B के दो रो। +- **Sheet “Order_2”** – Order 2 का हेडर और प्रोडक्ट C की एक रो। +- मूल टेम्पलेट से सभी फ़ॉर्मूले, फ़ॉर्मेटिंग, और चार्ट संरक्षित रहते हैं। + +![प्रत्येक ऑर्डर के लिए अलग शीट्स वाला Excel रिपोर्ट – जनरेटेड वर्कबुक का उदाहरण](/images/excel-report-example.png "मास्टर‑डिटेल डेटा के साथ जनरेटेड Excel रिपोर्ट") + +*छवि वैकल्पिक पाठ: प्रत्येक ऑर्डर के लिए अलग शीट्स वाला जनरेटेड Excel रिपोर्ट, दिखाता है कि C# और SmartMarker का उपयोग करके Excel रिपोर्ट कैसे जनरेट करें।* + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +`EnableRepeatingSheet = true` **केवल** उस वर्कशीट पर सेट करें जिसमें मास्टर ब्लॉक हो। अन्य शीट्स अपरिवर्तित रहेंगी, इसलिए आप मूल टेम्पलेट में एक समरी पेज रख सकते हैं। + +### Can I use a DataTable instead of anonymous objects? + +बिल्कुल। SmartMarker किसी भी ऑब्जेक्ट के साथ काम करता है जो `IEnumerable` को इम्प्लीमेंट करता है। बस अनाम प्रकार को `DataTable` से बदलें और कॉलम नाम टैग्स से मेल खाते हों यह सुनिश्चित करें। + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +कस्टम `ISmartMarkerSheetNaming` इंटरफ़ेस इम्प्लीमेंट करें (या प्रोसेसिंग के बाद `workbook.Worksheets` को मैन्युअली बदलें)। अधिकांश डेवलपर्स शीट का नाम सेल वैल्यू के आधार पर बदलते हैं: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker `SmartMarkerOptions` के माध्यम से कस्टम डिलिमिटर की अनुमति देता है। उदाहरण के लिए, `{{ }}` की जगह `<< >>` उपयोग करने के लिए: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## Tips for Scaling This Approach + +- **Cache the template** को मेमोरी में रखें यदि आप प्रति अनुरोध कई रिपोर्ट जनरेट करते हैं; हर बार डिस्क से लोड करने से लेटेंसी बढ़ती है। +- **Combine with PDF conversion** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) ताकि ईमेल‑फ्रेंडली आउटपुट मिल सके। +- **Parameterize the file paths** को कॉन्फ़िगरेशन फ़ाइलों या एनवायरनमेंट वेरिएबल्स के माध्यम से करें ताकि समाधान को डिव, टेस्ट, और प्रोड में पोर्टेबल बनाया जा सके। +- **Unit‑test the data layer** को अलग से टेस्ट करें; SmartMarker स्वयं डिटरमिनिस्टिक है, इसलिए आपको केवल यह वेरिफ़ाई करना है कि आप जो डेटा फीड कर रहे हैं वह अपेक्षित स्कीमा से मेल खाता है। + +## Conclusion + +हमने **C# में Excel रिपोर्ट कैसे जनरेट करें** को एंड‑टू‑एंड कवर किया, एक SmartMarker‑सक्षम टेम्पलेट को लोड करने से लेकर मास्टर‑डिटेल रिलेशनशिप को दर्शाने वाली मल्टी‑शीट वर्कबुक को सेव करने तक। केवल कुछ लाइनों के कोड से **populate Excel template C#** करके आप नाज़ुक सेल‑बाय‑सेल लॉजिक से बचते हैं और डिज़ाइनरों को अंतिम लुक को आकार देने की स्वतंत्रता देते हैं। + +अगला, आप खोज सकते हैं: + +- **populate Excel template C#** को चार्ट्स के साथ उपयोग करना जो प्रत्येक शीट पर ऑटो‑अपडेट होते हैं। +- **excel smartmarker c#** को ASP.NET Core के साथ इंटीग्रेट करना ताकि रिपोर्ट सीधे ब्राउज़र में स्ट्रीम हो सके। +- **c# excel automation** पाइपलाइन को ऑटोमेट करना जो APIs या डेटाबेस से डेटा खींचती है। + +इसे आज़माएँ, टेम्पलेट को ट्यून करें, और देखें कि आप कच्चे डेटा को कितनी जल्दी एक परिष्कृत Excel रिपोर्ट में बदल सकते हैं। सवाल या कोई कूल यूज़‑केस है? नीचे कमेंट करें—हैप्पी कोडिंग! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hindi/net/tables-and-lists/_index.md b/cells/hindi/net/tables-and-lists/_index.md index 0a5b62e2fa..dca5b132bd 100644 --- a/cells/hindi/net/tables-and-lists/_index.md +++ b/cells/hindi/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ .NET के लिए Aspose.Cells की शक्ति अनलॉक करें। इस विस्तृत चरण-दर-चरण मार्गदर्शिका में क्वेरी डेटा स्रोतों के साथ तालिकाओं को पढ़ना और लिखना सीखें। ### [एक्सेल में तालिका या सूची की टिप्पणी सेट करें](./setting-comment-of-table-or-list/) हमारे आसान चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.Cells का उपयोग करके Excel में तालिकाओं के लिए टिप्पणियाँ सेट करना सीखें। +### [C# में Excel तालिका बनाएं – चरण‑दर‑चरण गाइड](./create-excel-table-in-c-step-by-step-guide/) +इस गाइड में .NET के लिए Aspose.Cells का उपयोग करके C# में Excel तालिका बनाने की पूरी प्रक्रिया समझाई गई है। {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hindi/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/hindi/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..1284d3f77c --- /dev/null +++ b/cells/hindi/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: C# में जल्दी से Excel तालिका बनाएं। तालिका जोड़ना, तालिका की सीमा निर्धारित + करना, तालिका हेडर छिपाना और तालिका फ़िल्टर को निष्क्रिय करना सीखें, साथ ही एक पूर्ण + कोड उदाहरण के साथ। +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: hi +og_description: C# में स्पष्ट उदाहरण के साथ Excel तालिका बनाएं। सीखें कि कैसे तालिका + जोड़ें, तालिका की सीमा निर्धारित करें, तालिका हेडर छुपाएँ, और केवल कुछ लाइनों में + फ़िल्टर को निष्क्रिय करें। +og_title: C# में Excel तालिका बनाएं – पूर्ण प्रोग्रामिंग गाइड +tags: +- Aspose.Cells +- C# +- Excel Automation +title: C# में Excel तालिका बनाएं – चरण‑दर‑चरण गाइड +url: /hi/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Excel Table बनाएं – चरण‑दर‑चरण गाइड + +क्या आपको कभी C# का उपयोग करके प्रोग्रामेटिकली **Excel table** बनाने की ज़रूरत पड़ी है? सही चरणों को जानने पर Excel table बनाना बहुत आसान हो जाता है। इस ट्यूटोरियल में हम एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से दिखाएंगे कि **टेबल कैसे जोड़ें**, **टेबल रेंज कैसे परिभाषित करें**, **टेबल हेडर कैसे छुपाएँ**, और यहाँ तक कि **टेबल फ़िल्टर को निष्क्रिय कैसे करें** – वह भी बिना अपने IDE छोड़े। + +यदि आप कभी AutoFilter UI के अनचाहे पॉप‑अप से परेशान हुए हैं, तो आप सही जगह पर हैं। इस गाइड के अंत तक आपके पास एक तैयार‑से‑चलाने वाला स्निपेट होगा जो *TableNoFilter.xlsx* नामक साफ़ वर्कबुक बनाता है और आप समझ पाएँगे कि प्रत्येक पंक्ति क्यों महत्वपूर्ण है। + +## आप क्या सीखेंगे + +- कैसे **Excel table** को शून्य से Aspose.Cells के साथ **create** करें। +- **टेबल रेंज** (हमारे मामले में A1:D5) को परिभाषित करने की सटीक सिंटैक्स। +- हेडर पंक्ति को सक्षम करना ताकि बिल्ट‑इन फ़िल्टर UI दिखाई दे। +- जब हेडर की आवश्यकता न हो तो **टेबल हेडर छुपाने** और **टेबल फ़िल्टर निष्क्रिय करने** का ट्रिक। +- एक पूर्ण, कॉपी‑पेस्ट‑रेडी C# प्रोग्राम जिसे आप आज ही चला सकते हैं। + +### आवश्यकताएँ + +- .NET 6.0 या बाद का (कोड .NET Framework 4.7+ के साथ भी काम करता है)। +- NuGet (`Install-Package Aspose.Cells`) के माध्यम से Aspose.Cells for .NET स्थापित हो। +- C# और Visual Studio (या आपका पसंदीदा कोई भी IDE) की बुनियादी जानकारी। + +--- + +## Step 1: प्रोजेक्ट सेट अप करें और नेमस्पेस इम्पोर्ट करें + +**Excel table** बनाने से पहले आपको एक कंसोल प्रोजेक्ट चाहिए जो Aspose.Cells को रेफ़रेंस करे। टर्मिनल खोलें और चलाएँ: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +अब *Program.cs* खोलें और आवश्यक `using` स्टेटमेंट्स जोड़ें: + +```csharp +using System; +using Aspose.Cells; +``` + +ये इम्पोर्ट्स आपको `Workbook`, `Worksheet`, `CellArea`, और `ListObject` क्लासेज़ तक पहुँच देते हैं, जो ट्यूटोरियल के बाकी हिस्से को शक्ति प्रदान करते हैं। + +## Step 2: नई Workbook इनिशियलाइज़ करें और पहला Worksheet प्राप्त करें + +एक नई workbook बनाना पहला तार्किक कदम है। workbook को Excel फ़ाइल कंटेनर समझें, और worksheet को वह व्यक्तिगत शीट जहाँ हम अपना टेबल रखेंगे। + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Why this matters:** एक बिल्कुल नया `Workbook` एक खाली शीट से शुरू होता है। `Worksheets[0]` को खींचकर हम सुनिश्चित करते हैं कि हम डिफ़ॉल्ट शीट पर काम कर रहे हैं, बिना मैन्युअली कोई शीट बनाए। + +## Step 3: टेबल रेंज परिभाषित करें (A1:D5) + +Excel शब्दावली में, एक *टेबल* कोशिकाओं के आयताकार ब्लॉक के भीतर रहता है। `CellArea` स्ट्रक्ट हमें उस ब्लॉक को सटीक रूप से बताने में मदद करता है। यहाँ हम **टेबल रेंज परिभाषित** करेंगे, अर्थात् A1 से D5 तक की कोशिकाएँ। + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** यदि आपको कभी डायनामिक रेंज चाहिए, तो आप `endRow` और `endColumn` को डेटा की लंबाई के आधार पर गणना कर सकते हैं। शून्य‑आधारित इंडेक्सिंग अक्सर ऑफ‑बाय‑वन बग का कारण बनती है, इसलिए अपने नंबर दोबारा जाँचें। + +## Step 4: टेबल जोड़ें और हेडर पंक्ति सक्षम करें + +अब ट्यूटोरियल का मुख्य भाग आता है: **टेबल कैसे जोड़ें** worksheet में। `ListObjects` कलेक्शन टेबल्स को संभालता है, और `ShowHeaders = true` सेट करने से AutoFilter UI स्वचालित रूप से जुड़ जाता है। + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explanation:** +> - `Add(tableRange, true)` निर्दिष्ट रेंज के भीतर एक नया `ListObject` (अर्थात् Excel टेबल) बनाता है। +> - `true` फ़्लैग Aspose.Cells को बताता है कि रेंज की पहली पंक्ति को हेडर माना जाए। +> - `ShowHeaders` को `true` सेट करने से हेडर दिखाई देता है और बिल्ट‑इन फ़िल्टर UI ट्रिगर होता है। + +इस बिंदु पर, यदि आप जेनरेटेड workbook खोलते हैं, तो आपको प्रत्येक कॉलम हेडर पर फ़िल्टर एरो के साथ एक सुंदर फ़ॉर्मेटेड टेबल दिखेगा। + +## Step 5: हेडर पंक्ति छुपाएँ और AutoFilter निष्क्रिय करें + +कभी‑कभी आप डेटा को UI क्लटर के बिना चाहते हैं। शायद आप एक साफ़ रिपोर्ट एक्सपोर्ट कर रहे हैं जहाँ फ़िल्टर की ज़रूरत नहीं है। यहाँ **टेबल हेडर छुपाने** और **टेबल फ़िल्टर निष्क्रिय करने** की तकनीक है: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Why you’ll do this:** +> - `ShowHeaders = false` दृश्य हेडर पंक्ति को हटा देता है, जिससे टेबल एक साधारण डेटा ब्लॉक बन जाता है। +> - `AutoFilter = null` सेट करने से छिपा हुआ फ़िल्टर ऑब्जेक्ट साफ़ हो जाता है, यह सुनिश्चित करता है कि कोई बचा‑बचा फ़िल्टर लॉजिक न रहे। यही वह बात है जिसे हम **टेबल फ़िल्टर निष्क्रिय** कहते हैं। + +## Step 6: Workbook को डिस्क पर सेव करें + +अंत में, हम फ़ाइल को आपके चुने हुए स्थान पर लिखते हैं। `"YOUR_DIRECTORY"` को अपने मशीन पर वास्तविक पाथ से बदलें। + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +जब आप प्रोग्राम चलाएँगे, आपको यह दिखना चाहिए: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +फ़ाइल खोलने पर एक शीट दिखाई देगी जिसमें डेटा ब्लॉक (कोई हेडर नहीं, कोई फ़िल्टर एरो नहीं) होगा। यही पूरा चक्र है—**Excel table बनाना** से लेकर **टेबल फ़िल्टर निष्क्रिय** करने तक। + +--- + +## Full Working Example (Copy‑Paste Ready) + +नीचे पूरा प्रोग्राम दिया गया है, जिसे आप तुरंत कंपाइल कर सकते हैं। केवल प्लेसहोल्डर डायरेक्टरी को वैध पाथ से बदलें। + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Expected result:** एक फ़ाइल जिसका नाम *TableNoFilter.xlsx* है, जिसमें A1:D5 की साधारण डेटा रेंज होगी, बिना दिखाई देने वाले हेडर पंक्ति और बिना फ़िल्टर ड्रॉपडाउन के। + +--- + +## Frequently Asked Questions & Edge Cases + +### यदि मुझे उसी worksheet में कई टेबल चाहिए तो क्या करें? + +सिर्फ **Step 3** को एक नए `CellArea` और एक नए `ListObject` के साथ दोहराएँ। प्रत्येक टेबल अपना हेडर और फ़िल्टर सेटिंग्स रखता है, इसलिए आप एक को छुपा सकते हैं और दूसरे को दिखा सकते हैं। + +### क्या मैं हेडर छुपाने से पहले टेबल को स्टाइल (बैंडेड रोज़, रंग) दे सकता हूँ? + +बिल्कुल। `ListObject` एक `TableStyleType` प्रॉपर्टी एक्सपोज़ करता है। उदाहरण के लिए: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +आप हेडर छुपाने से **पहले** स्टाइल लागू कर सकते हैं; विज़ुअल फ़ॉर्मेटिंग वही रहेगी। + +### यदि मुझे हेडर रखना है लेकिन फ़िल्टर एरो छुपाने हैं तो क्या करें? + +`ShowHeaders = true` (पंक्ति रखें) सेट करें और फिर फ़िल्टर को क्लियर करें: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +यह **टेबल फ़िल्टर निष्क्रिय** करने की आवश्यकता को पूरा करता है बिना कॉलम लेबल खोए। + +### क्या यह केवल .xlsx फ़ाइलों के साथ काम करता है? + +Aspose.Cells फ़ाइल एक्सटेंशन के आधार पर फ़ॉर्मेट को स्वचालित रूप से पहचानता है जिसे आप `Save` में पास करते हैं। आप `.xls`, `.csv`, या यहाँ तक कि `.pdf` जैसे अलग एक्सटेंशन के साथ भी आउटपुट कर सकते हैं। + +--- + +## निष्कर्ष + +हमने अभी-अभी C# में Aspose.Cells का उपयोग करके **Excel table बनाना**, **टेबल रेंज परिभाषित करना**, **टेबल हेडर छुपाना**, और **टेबल फ़िल्टर निष्क्रिय** करना कवर किया। कोड छोटा, स्पष्ट, और प्रोडक्शन उपयोग के लिए तैयार है। + +आगे आप **टेबल कैसे जोड़ें** को डायनामिक डेटा के साथ एक्सप्लोर कर सकते हैं, कस्टम स्टाइल लागू कर सकते हैं, या वही workbook PDF में एक्सपोर्ट कर सकते हैं। ये सभी विषय उस बुनियाद पर आधारित हैं जो आपने अभी हासिल की है, इसलिए प्रयोग करने और स्निपेट को अपने प्रोजेक्ट्स में अनुकूलित करने में संकोच न करें। + +क्या आपके पास कोई ट्विस्ट है जिसे आप साझा करना चाहते हैं? नीचे कमेंट करें, और हैप्पी कोडिंग! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/converting-excel-files-to-other-formats/_index.md b/cells/hongkong/net/converting-excel-files-to-other-formats/_index.md index fb686812d2..73878755f2 100644 --- a/cells/hongkong/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/hongkong/net/converting-excel-files-to-other-formats/_index.md @@ -66,6 +66,10 @@ Aspose.Cells for .NET 簡化了文件轉換,讓開發人員可以自動化流 描述:在此詳細教學中了解如何使用 Aspose.Cells for .NET 以程式設計方式追蹤文件轉換進度。 ### [在 .NET 中以程式設計方式追蹤 TIFF 文件轉換進度](./tracking-document-conversion-progress-for-tiff/) 透過我們的逐步指南,學習使用 Aspose.Cells for .NET 以程式設計方式追蹤 TIFF 轉換進度。增強您的文件管理技能。 +### [在 Excel 中設定列印區域並匯出至 PowerPoint – 步驟指南](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +了解如何使用 Aspose.Cells 在 .NET 中設定 Excel 列印區域,並將工作表匯出為 PowerPoint 簡報。 +### [在 .NET 中以程式設計方式將 Excel 匯出至 PowerPoint – 完整 C# 指南](./export-excel-to-powerpoint-complete-c-guide/) +了解如何使用 Aspose.Cells for .NET 以 C# 完整步驟將 Excel 匯出至 PowerPoint 簡報。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/hongkong/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..a5ec8e8dd7 --- /dev/null +++ b/cells/hongkong/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-22 +description: 學習如何將 Excel 匯出至 PowerPoint、設定列印範圍,以及將 Excel 儲存為可編輯圖表與 OLE 物件的 PPTX,只需幾個步驟。 +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: zh-hant +og_description: 快速將 Excel 匯出至 PowerPoint。本教學示範如何設定 Excel 的列印區域,並將 Excel 儲存為 PPTX,內含可編輯的圖表與 + OLE 物件。 +og_title: 將 Excel 匯出至 PowerPoint – 完整 C# 指南 +tags: +- Aspose.Cells +- C# +- Office Automation +title: 匯出 Excel 至 PowerPoint – 完整 C# 指南 +url: /zh-hant/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 匯出 Excel 至 PowerPoint – 完整 C# 指南 + +需要 **export Excel to PowerPoint** 嗎?你來對地方了。無論你是在製作每週的銷售簡報,或是自動化報告流程,將 Excel 工作表轉換成 PowerPoint 投影片組合,都能為你節省大量的複製貼上時間。 + +在本教學中,我們將示範一個實作範例,不僅能 **export excel to powerpoint**,還會教你如何 **set print area Excel** 與 **save excel as pptx**,讓產生的投影片保留圖表與 OLE 物件的完整可編輯性。完成後,你將擁有一個可直接執行的 C# 程式,產出外觀專業的 `.pptx` 檔案,且不需任何手動調整。 + +## 需要的條件 + +- **.NET 6+**(任何近期的 .NET 執行環境皆可;程式碼使用 C# 10 語法) +- **Aspose.Cells for .NET** – 提供匯出功能的函式庫。你可以從 NuGet 取得(`Install-Package Aspose.Cells`)。 +- 一個包含至少一個圖表和/或 OLE 物件的 Excel 活頁簿(範例檔案 `ChartAndOle.xlsx` 於程式碼中使用)。 +- 你喜愛的 IDE(Visual Studio、Rider 或 VS Code – 任選其一)。 + +就這樣。無需 COM interop,也不需要安裝 Office。 + +> **為什麼要使用函式庫?** +> 內建的 Office Interop 脆弱、需要在伺服器上安裝 Office,且常會產生點陣圖,而你真正需要的是向量且可編輯的圖形。Aspose.Cells 承擔繁重的工作,並確保所有內容在 PowerPoint 中皆可編輯。 + +## 步驟 1:載入 Excel 活頁簿 + +首先,我們將來源檔案載入記憶體。`Workbook` 類別抽象化整個 Excel 檔案,讓我們能存取工作表、圖表與 OLE 物件。 + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**為什麼這很重要:** 載入活頁簿是基礎。如果路徑錯誤或檔案損毀,後續流程將無法執行。`try…catch` 區塊會提供友善的錯誤訊息,而非直接當機。 + +## 步驟 2:在 Excel 中設定列印區域 + +在匯出之前,你通常會想限制輸出範圍。這時 **set print area excel** 就派上用場。透過定義列印區域,你告訴 Aspose.Cells 哪些儲存格(以及相關物件)應該出現在投影片上。 + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **專業提示:** 若有多個工作表,請為每個欲匯出的工作表重複設定 `PrintArea`。未設定列印區域會匯出整張工作表,可能導致 PowerPoint 檔案過大。 + +## 步驟 3:設定匯出選項 – 保持圖表與 OLE 可編輯 + +Aspose.Cells 提供功能豐富的 `ImageOrPrintOptions` 物件。透過切換 `ExportChartObjects` 與 `ExportOleObjects`,我們可保留圖表的向量特性以及 OLE 物件(如嵌入的 Word 文件或 PDF)的即時可編輯性。 + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**底層發生了什麼?** +當 `ExportChartObjects` 為 `true` 時,Aspose 會將圖表轉換為原生 PowerPoint 圖表形狀,保留系列、座標軸與格式。啟用 `ExportOleObjects` 後,嵌入的物件會以 OLE 框架插入,於 PowerPoint 中雙擊即可開啟原始應用程式(Word、Excel 等)進行編輯。 + +## 步驟 4:將工作表儲存為可編輯的 PowerPoint 檔案 + +現在把所有步驟串起來。`Save` 方法會依照先前設定的選項寫入 `.pptx` 檔案。最終產出的是一套投影片,每張工作表會變成一張投影片(若列印區域跨多頁,則會產生多張投影片)。 + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### 預期結果 + +- **檔案位置:** `C:\MyProjects\EditableChartOle.pptx` +- **內容:** + - 一張投影片顯示範圍 `A1:H30`,與 Excel 中的呈現完全相同。 + - 所有圖表皆為 PowerPoint 圖表物件——點擊柱狀圖即可編輯資料。 + - OLE 物件(例如嵌入的 Word 文件)可直接在投影片上開啟並編輯。 + +若在 PowerPoint 中開啟此 PPTX,應會看到乾淨的投影片,且所有元件皆可完整編輯——不會出現點陣圖截圖。 + +## 邊緣情況與變化 + +### 多個工作表 → 多張投影片 +若希望每個工作表各自成為一張投影片,只需遍歷 `workbook.Worksheets`,並使用針對特定工作表索引的 `SheetToImageOptions` 呼叫 `Save`。Aspose 會自動為每次迭代產生新投影片。 + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### 大範圍與效能 +匯出巨大的列印區域(例如 `A1:Z1000`)可能會增加記憶體使用量。為減輕此問題,可考慮: + +- 將範圍拆分為較小的區塊,分別匯出為獨立投影片。 +- 若遭遇 `OutOfMemoryException`,可使用 `WorkbookSettings` 提升 `MemorySetting`。 + +### 相容性考量 +產生的 PPTX 可在 PowerPoint 2016 及更新版本使用。舊版仍能開啟檔案,但可能失去部分進階圖表功能。若要廣泛發佈投影片,務必在目標 Office 版本上測試。 + +## 完整可執行範例(直接複製貼上) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **提示:** 請將硬編碼的路徑改為設定值或命令列參數,以提升工具彈性。 + +## 常見問答 + +**Q: 我可以只匯出圖表而不包含周圍儲存格嗎?** +A: 可以。僅使用 `ExportChartObjects`,並將列印區域設定為圖表的邊界範圍。圖表會置中顯示於投影片上。 + +**Q: 若我的活頁簿包含巨集怎麼辦?** +A: Aspose.Cells 在匯出時會忽略 VBA 巨集。若需在 PowerPoint 中保有巨集功能,必須使用 PowerPoint VBA 或外掛自行重新實作。 + +**Q: 這在 Linux/macOS 上能運作嗎?** +A: 完全可以。Aspose.Cells 是純 .NET 函式庫,只要安裝 .NET 執行環境,即可跨平台執行程式碼。 + +## 結論 + +你剛剛學會了如何 **export Excel to PowerPoint**,同時精確 **set print area excel** 與 **save excel as pptx**,讓圖表與 OLE 物件保持完整可編輯。關鍵步驟包括載入活頁簿、定義列印區域、設定 `ImageOrPrintOptions`,最後儲存 PPTX。 + +接下來你可以探索: +- 將多個工作表匯出至同一套投影片。 +- 以程式方式加入自訂投影片標題或備註。 +- 將 PPTX 轉換為 PDF 以供發佈(使用 `SaveFormat.Pdf`)。 + +執行程式碼、調整列印區域,便能看到 Excel 資料神奇地出現在 PowerPoint 中——不再需要手動複製貼上。若遇到問題,請參考 Aspose.Cells 文件或在下方留言。祝開發愉快! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/hongkong/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..9c8c5f95d4 --- /dev/null +++ b/cells/hongkong/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-22 +description: 在 Excel 設定列印範圍,並將 Excel 轉換為可編輯形狀的 PowerPoint。學習如何重複標題列、從 Excel 建立 PowerPoint + 以及將 Excel 匯出為 pptx。 +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: zh-hant +og_description: 在 Excel 設定列印區域,並將其轉換為帶有可編輯形狀的 PowerPoint 投影片。按照本完整指南,重複標題列並將 Excel + 匯出為 pptx。 +og_title: 在 Excel 中設定列印區域 – 匯出至 PowerPoint 教學 +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: 在 Excel 中設定列印範圍並匯出至 PowerPoint – 一步一步指南 +url: /zh-hant/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 Excel 中設定列印區域並匯出至 PowerPoint – 完整程式教學 + +有沒有曾經需要在 Excel 工作表中 **設定列印區域**,然後把那一部分轉成 PowerPoint 投影片?你並不是唯一有此需求的人。在許多報表流程中,同樣的資料既要列印得好看,也要出現在簡報裡,通常會把第一列重複作為標題。好消息是,只要幾行 C# 程式碼,你就可以 **convert excel to powerpoint**,保持所有文字方塊可編輯,甚至自動 **repeat title row**。 + +在本指南中,我們將逐步說明你需要了解的所有內容:從設定列印區域到建立可直接在 PowerPoint 中編輯的 PPTX 檔案。完成後,你將能夠 **create powerpoint from excel**,將結果 **export excel to pptx**,並在任何 .NET 專案中重複使用相同程式碼。沒有魔法,只有清晰的步驟與完整、可執行的範例。 + +## 需要的環境 + +- **.NET 6.0** 或更新版本(此 API 亦支援 .NET Framework) +- **Aspose.Cells for .NET**(提供 `Workbook`、`ImageOrPrintOptions` 等類別的函式庫) +- 基本的 C# IDE(Visual Studio、Rider,或安裝 C# 擴充功能的 VS Code) +- 一個 Excel 檔案(`input.xlsx`),內含你想匯出的資料 + +就這樣——除了 Aspose.Cells 之外不需要其他 NuGet 套件。如果尚未加入此函式庫,請執行: + +```bash +dotnet add package Aspose.Cells +``` + +現在我們可以開始了。 + +## 步驟 1:載入活頁簿 – 匯出的起點 + +首先,你必須載入包含欲轉成投影片之工作表的活頁簿。把活頁簿想像成來源文件;沒有它,其他一切都無從談起。 + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**為什麼這很重要:** 載入活頁簿後,你才能存取工作表集合、頁面設定選項,以及匯出引擎。如果跳過此步驟,就無法設定 **print area** 或重複任何列。 + +> **小技巧:** 測試時使用絕對路徑,之後再改為相對路徑或基於設定的路徑以供正式環境使用。 + +## 步驟 2:設定匯出選項 – 保持文字方塊與圖形可編輯 + +匯出至 PowerPoint 時,你可能希望最終的投影片是可編輯的。Aspose.Cells 允許你透過 `ImageOrPrintOptions` 進行控制。將 `ExportTextBoxes` 與 `ExportShapeObjects` 設為 `true`,即告訴函式庫保留這些物件為原生 PowerPoint 元素,而不是將它們平鋪成影像。 + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**為什麼這很重要:** 若你曾需要 **convert excel to powerpoint**,然後手動微調投影片,此設定可免除你重新建立文字方塊的麻煩。它同時確保任何圖形(例如箭頭或圖表)仍以向量物件存在,方便調整大小。 + +## 步驟 3:設定列印區域並重複標題列 + +現在進入本教學的核心:**set print area**,並讓第一列在每一頁列印時(或在我們的情況下,於匯出投影片時)重複。列印區域告訴 Excel 哪些儲存格需要列印——或在此情境下匯出。 + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**為什麼這很重要:** 將匯出範圍限制在 `A1:G20`,可避免拉入大量空白區域,提升轉換速度並保持投影片整潔。`PrintTitleRows` 這行則讓第一列如同標頭——正是你在簡報中 **repeat title row** 時所需要的效果。 + +> **特殊情況:** 若你的資料從第 2 列開始,請相應調整範圍(例如 `PrintTitleRows = "$2:$2"`)。 + +## 步驟 4:將工作表儲存為 PowerPoint 檔案 + +最後,我們將投影片寫入磁碟。`Save` 方法接受目標檔名以及先前設定的選項。產生的結果是一個 PPTX 檔案,內含可編輯的文字方塊與圖形,隨時可在 PowerPoint 中開啟。 + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**你會看到的結果:** 在 PowerPoint 中開啟 `SheetWithEditableShapes.pptx`。第一列會顯示為標題,`A1:G20` 的所有儲存格皆被渲染,且在 Excel 中加入的任何圖形仍可移動與編輯。沒有點陣圖——只有原生 PowerPoint 物件。 + +## 完整範例 – 結合所有步驟 + +以下是完整、可直接複製貼上的程式碼。你可以將它作為主控台應用程式執行,或嵌入任何較大型的解決方案中。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**預期輸出:** 執行程式後,主控台會印出成功訊息,且 PPTX 檔案會出現在指定位置。開啟檔案時會看到一張投影片,顯示選取的範圍、可編輯的文字方塊,以及所有原始圖形。 + +## 常見問題與注意事項 + +| Question | Answer | +|----------|--------| +| **這能同時處理多個工作表嗎?** | 可以。遍歷 `workbook.Worksheets`,對每個工作表重複相同步驟,並每次更改輸出檔名。 | +| **如果需要匯出多於一張投影片該怎麼辦?** | 對不同的 `ImageOrPrintOptions` 物件呼叫 `workbook.Save` 多次,必要時為每個物件設定不同的 `PageSetup`。 | +| **我可以調整投影片尺寸嗎?** | 使用 `exportOptions.ImageFormat` 設定 DPI,或在儲存前調整 `sheet.PageSetup.PaperSize`。 | +| **Aspose.Cells 是免費的嗎?** | 提供帶有浮水印的免費評估版。正式環境需購買授權。 | +| **Excel 公式怎麼處理?** | 匯出的值是匯出時的 **計算結果**。若需要在 PowerPoint 中保留即時公式,則需採用其他方法。 | + +## 工作流程順暢小技巧 + +- **小技巧:** 在匯出前設定 `Workbook.Settings.CalcMode = CalculationModeType.Automatic`,確保所有公式皆為最新計算結果。 +- **注意:** 非常大的範圍可能導致記憶體壓力。請將列印區域裁減至最小必要範圍。 +- **效能小技巧:** 若要匯出多張工作表,請重複使用同一個 `ImageOrPrintOptions` 實例;每次重新建立會增加額外開銷。 +- **版本說明:** 上述程式碼以 Aspose.Cells 23.10(2023 年 11 月發佈)為目標。較新版本仍保留相同 API,但請務必檢查發佈說明以防止破壞性變更。 + +## 結論 + +我們已說明如何在 Excel 工作表中 **set print area**,將第一列重複為標題,並在 **export excel to pptx** 時保留可編輯的文字方塊與圖形。簡而言之,你現在掌握了只需幾行 C# 程式碼即可可靠地 **convert excel to powerpoint**、**repeat title row**,以及 **create powerpoint from excel** 的方法。 + +準備好進一步了嗎?試著自動化批次轉換數十份報表,或在匯出後使用 PowerPoint SDK 加入自訂投影片版面。沒有極限——盡情實驗、挑戰、享受程式化文件產生的威力。 + +如果你覺得本教學有幫助,請分享、留下你自己的調整建議,或探索我們其他關於 **export excel to pptx** 以及相關自動化主題的指南。祝開發愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/csv-file-handling/_index.md b/cells/hongkong/net/csv-file-handling/_index.md index 6e16b8fd50..e13628339a 100644 --- a/cells/hongkong/net/csv-file-handling/_index.md +++ b/cells/hongkong/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ 透過我們全面的逐步指南了解如何使用 Aspose.Cells for .NET 開啟 CSV 檔案。主數據操作。 ### [使用首選解析器開啟 CSV 文件](./csv-file-opening-csv-files-with-preferred-parser/) 了解如何使用 Aspose.Cells for .NET 中的自訂解析器開啟和解析 CSV 檔案。輕鬆處理文字和日期。非常適合開發人員。 +### [在 C# 中將工作簿另存為 CSV – 匯出 Excel 為 CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +了解如何使用 Aspose.Cells for .NET 在 C# 中將 Excel 工作簿匯出為 CSV 檔案,簡單快速。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/hongkong/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..6fc2c8cfac --- /dev/null +++ b/cells/hongkong/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: 快速在 C# 中將工作簿另存為 CSV。了解如何將 Excel 匯出為 CSV、設定精度,並使用 Aspose.Cells 只需幾行程式碼即可將 + xlsx 轉換為 CSV。 +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: zh-hant +og_description: 快速在 C# 中將工作簿儲存為 CSV。本指南說明如何將 Excel 匯出為 CSV、設定精度,以及使用 Aspose.Cells + 將 xlsx 轉換為 CSV。 +og_title: 在 C# 中將工作簿另存為 CSV – 將 Excel 匯出為 CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: 在 C# 中將工作簿另存為 CSV – 匯出 Excel 為 CSV +url: /zh-hant/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中將活頁簿另存為 CSV – 匯出 Excel 為 CSV + +是否曾需要**將活頁簿另存為 CSV**,卻不確定如何保持數字整齊?你並不孤單。在許多資料管線情境中,我們必須**匯出 Excel 為 CSV**,同時保留特定的有效位數,而 Aspose.Cells 函式庫讓這變得輕而易舉。 + +在本教學中,你將看到一個完整、可直接執行的範例,**將活頁簿另存為 CSV**,示範*如何設定精度*,甚至說明*如何將 xlsx 轉換為 CSV*,適用於真實專案。沒有模糊的說明——只有你可以立即複製、貼上並執行的程式碼。 + +## 你將學到什麼 + +- 使用自訂精度設定**將活頁簿另存為 CSV**的完整步驟。 +- 如何使用 `CsvSaveOptions` **匯出 Excel 為 CSV**,以及為何 `SignificantDigits` 屬性很重要。 +- 針對不同精度需求的變化以及處理大數字時的常見陷阱。 +- 快速了解如何在不失去資料完整性的情況下將 `.xlsx` 檔案轉換為 `.csv`。 + +### 前置條件 + +- .NET 6.0 或更新版本(程式碼亦可在 .NET Framework 4.6+ 上執行)。 +- **Aspose.Cells for .NET** NuGet 套件(`Install-Package Aspose.Cells`)。 +- 具備 C# 與檔案 I/O 的基本概念。 + +如果你已具備上述條件,讓我們開始吧。 + +![將活頁簿另存為 csv 範例](image.png "將活頁簿另存為 csv 範例") + +## 將活頁簿另存為 CSV – 步驟指南 + +以下是完整程式碼。每一行都有註解,讓你了解*為什麼*要這樣寫,而不只是*它做了什麼*。 + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### 為何使用 `CsvSaveOptions.SignificantDigits`? + +當你在 CSV 匯出時**設定精度**,實際上是決定浮點數在轉換後保留多少位數。Excel 以最高 15 位的精度儲存數字,但大多數下游系統(資料庫、分析管線)只需要少量位數。將 `SignificantDigits = 4` 設定後,函式庫會將 `123.456789` 四捨五入為 `123.5`,使檔案更緊湊且易於閱讀。 + +> **專業提示:** 若需要*精確*的數值(例如金融資料),請將 `SignificantDigits` 設為較高的數字或完全省略。預設值為 15,與 Excel 的內部精度相同。 + +## 匯出 Excel 為 CSV – 常見變化 + +### 更改分隔符號 + +有些系統期待使用分號(`;`)而非逗號。你可以這樣調整: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### 匯出特定工作表 + +如果只想匯出第二個工作表,請將可選區塊替換為: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +然後如同之前一樣呼叫 `workbook.Save`。當你**將 xlsx 轉換為 csv**但只關心特定分頁時,此技巧非常實用。 + +### 處理大型資料集 + +處理數百萬列時,建議以串流方式輸出 CSV,而非將整個活頁簿載入記憶體。Aspose.Cells 提供 `CsvSaveOptions` 的 `ExportDataOnly` 屬性,可跳過樣式資訊,降低記憶體負擔: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## 如何匯出 CSV – 驗證結果 + +執行程式後,於純文字編輯器開啟 `Numbers_4sd.csv`。你應該會看到類似以下內容: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +請注意,數字已限制為四位有效數字,正如我們所要求的。若在 Excel 中開啟此檔案,數值會顯示相同,因為 Excel 會遵循匯出時的四捨五入結果。 + +## 邊緣情況與故障排除 + +| 情況 | 檢查項目 | 解決方式 | +|-----------|---------------|-----| +| **找不到檔案** | 確認 `sourcePath` 指向真實的 `.xlsx` 檔案。 | 使用 `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`。 | +| **四捨五入不正確** | 確保在呼叫 `Save` 前已設定 `SignificantDigits`。 | 將 `CsvSaveOptions` 的設定提前,或再次檢查其數值。 | +| **特殊字元顯示為 �** | CSV 編碼預設為 UTF‑8(無 BOM)。 | 設定 `csvOptions.Encoding = System.Text.Encoding.UTF8` 或 `Encoding.Unicode`。 | +| **多餘的空欄** | 某些工作表在使用範圍之外仍有遺留格式。 | 在匯出前呼叫 `worksheet.Cells.MaxDisplayRange` 以裁剪未使用的欄位。 | + +## 如何動態設定精度 + +有時所需的精度在編譯時無法確定。你可以從設定檔或命令列參數讀取它: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +現在你可以執行: + +``` +dotnet run -- 6 +``` + +即可取得具有六位有效數字的 CSV。這個小調整讓解決方案在各種環境下的**匯出 csv**更加彈性。 + +## 完整範例回顧 + +將所有部份整合起來,完整程式(含可選調整)如下所示: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +執行程式,開啟產生的 CSV,你會看到符合要求的精度,證明你已成功**將活頁簿另存為 CSV**。 + +## 結論 + +你現在擁有一套穩固、可投入生產環境的**在 C# 中將活頁簿另存為 CSV**方案。本指南涵蓋了*如何匯出 Excel 為 CSV*,示範了透過 `CsvSaveOptions.SignificantDigits` *設定精度*,並展示了多種**將 xlsx 轉換為 csv**的情境變化。只要將完整程式碼片段加入任何 .NET 專案,即可立即開始匯出資料。 + +**接下來做什麼?** + +- 嘗試不同的分隔符號(`;`、`\t`)以匯出 TSV。 +- 將此方法與檔案監視器結合,於 Excel 檔案變更時自動產生 CSV。 +- 若需將 CSV 讀回活頁簿,可探索 Aspose.Cells 的 `CsvLoadOptions`。 + +歡迎自行調整精度、加入自訂標頭,或將匯出器掛接至其他流程 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/document-properties/_index.md b/cells/hongkong/net/document-properties/_index.md index 9a90bbe295..c966bca078 100644 --- a/cells/hongkong/net/document-properties/_index.md +++ b/cells/hongkong/net/document-properties/_index.md @@ -35,6 +35,8 @@ Excel 中的文件屬性就像是關於文件的元資料一樣。想像一下 透過我們的逐步指南了解如何使用 Aspose.Cells for .NET 存取 Excel 中的文件屬性。有效率地管理您的電子表格。 ### [在 .NET 中新增文件屬性](./adding-document-properties/) 透過本詳細的逐步指南了解如何使用 Aspose.Cells for .NET 在 Excel 中新增文件屬性。 +### [建立 Excel 活頁簿 – 新增自訂屬性並儲存為 XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +了解如何使用 Aspose.Cells for .NET 建立工作簿、加入自訂屬性,並將檔案儲存為 XLSB 格式。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/hongkong/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..72687cf055 --- /dev/null +++ b/cells/hongkong/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-22 +description: 使用 C# 建立 Excel 活頁簿、加入自訂屬性、設定工作表名稱,並儲存為 XLSB 二進位檔案。 +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: zh-hant +og_description: 使用 C# 建立 Excel 活頁簿、加入自訂屬性、設定工作表名稱,並儲存為 XLSB 二進位檔案。 +og_title: 建立 Excel 活頁簿 – 新增自訂屬性並另存為 XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: 建立 Excel 活頁簿 – 新增自訂屬性並儲存為 XLSB +url: /zh-hant/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 建立 Excel 工作簿 – 新增自訂屬性並儲存為 XLSB + +在程式中**建立 Excel 工作簿**時,是否也需要保留一些相關的中繼資料?也許你正在開發報表引擎,需要為每個檔案加上報表 ID、作者名稱或版本號。若是如此,學習如何**新增自訂屬性**、**設定工作表名稱**,最後**儲存為 XLSB**,即可省下大量手動後處理的時間。 + +本教學將逐步示範一個完整且可執行的範例,說明如何使用 C# **寫入二進位 Excel 檔案**。你將了解為何 XLSB 格式是傳遞自訂屬性的最佳選擇、如何避免常見的陷阱,以及在需要支援舊版 Excel 時該怎麼處理。 + +--- + +## 需要的環境 + +- **.NET 6+**(或 .NET Framework 4.6+)。此程式碼可在任何近期的執行環境上執行。 +- **Aspose.Cells for .NET**(免費試用或授權版)。它提供以下範例中使用的 `Workbook`、`Worksheet` 以及 `CustomProperties` 類別。 +- 你熟悉的開發環境 – 如 Visual Studio、Rider,甚至 VS Code 都可以。 +- 具備寫入權限的資料夾,以便儲存產生的檔案。 + +不需要其他第三方函式庫。 + +--- + +## 步驟 1:安裝 Aspose.Cells + +首先,將 Aspose.Cells NuGet 套件加入你的專案: + +```bash +dotnet add package Aspose.Cells +``` + +> **專業提示:** 若在 CI 伺服器上執行,請將授權金鑰存放於環境變數,並於執行時載入——可避免「評估」浮水印出現在輸出結果中。 + +--- + +## 步驟 2:建立 Excel 工作簿 – 概觀 + +第一個實際動作是**建立 Excel 工作簿**。此物件在記憶體中代表整個檔案,並讓你存取工作表、樣式與自訂屬性。 + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +為何要建立全新的 `Workbook` 而不是載入範本?空白工作簿可確保沒有隱藏樣式或遺留的自訂屬性,這在你需要為下游系統**寫入二進位 Excel 檔案**且要求乾淨的起點時尤為重要。 + +--- + +## 步驟 3:設定工作表名稱(以及其重要性) + +Excel 工作表預設為 “Sheet1”、 “Sheet2”等。為工作表賦予具意義的名稱,可讓下游處理(例如 Power Query 或 VBA 巨集)更易於閱讀。 + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +若嘗試指定重複的名稱,Aspose.Cells 會拋出 `ArgumentException`。為保險起見,可在重新命名前先檢查 `Worksheets.Exists("Data")`。 + +--- + +## 步驟 4:新增自訂屬性 + +自訂屬性儲存在工作簿的內部 XML 中,無論檔案格式如何,都會隨檔案一起傳遞。它們非常適合嵌入如 `ReportId` 或 `GeneratedBy` 等資訊。 + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **為何使用自訂屬性?** +> • 可透過 Excel 的「檔案 → 資訊 → 屬性」面板存取。 +> • 讀取工作簿的程式碼可直接取得,而不必掃描儲存格內容。 +> • 在格式轉換 (XLSX ↔ XLSB) 時仍會保留,因為它們是檔案中介資料的一部份。 + +亦可儲存日期、布林值,甚至二進位資料,但請保持資料量小——Excel 並非資料庫。 + +--- + +## 步驟 5:儲存為 XLSB(寫入二進位 Excel 檔案) + +XLSB 格式以二進位結構儲存資料,使檔案更小且開啟速度更快。對本教學而言更重要的是,**自訂屬性會被寫入二進位資料流**,確保它們隨檔案一起傳遞。 + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### 預期結果 + +執行程式後,你會在桌面上看到 `WithCustomProps.xlsb`。在 Excel 中開啟,前往 **檔案 → 資訊 → 屬性**,即可在 *自訂* 區段看到 `ReportId` 與 `GeneratedBy`。 + +--- + +## 步驟 6:邊緣情況與常見問題 + +### 若目標資料夾為唯讀該怎麼辦? + +將 `Save` 呼叫包在 `try/catch` 區塊中,並在失敗時改為使用使用者可寫入的位置,例如 `%TEMP%`。可避免因權限錯誤導致程式當機。 + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### 我能**儲存為 XLSX**同時保留自訂屬性嗎? + +可以——只要將 `SaveFormat.Xlsb` 改為 `SaveFormat.Xlsx`。屬性儲存在相同的 XML 部分,因而在格式切換時仍會保留。然而,XLSX 檔案較大,因為它是壓縮的 XML,而 XLSB 在大型資料集上提供更佳效能。 + +### 如何在之後讀取自訂屬性? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +此程式碼會列印所有自訂屬性,讓下游服務輕鬆驗證檔案的來源。 + +--- + +## 完整範例程式 + +以下提供完整程式碼,你可以直接貼到新的 Console 專案中。內容完整——從 `using` 陳述式到最後的 `Console.WriteLine` 都包含在內。 + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +執行程式,開啟產生的檔案,驗證自訂屬性。這就是一次完成 **建立 Excel 工作簿**、**新增自訂屬性**、**設定工作表名稱**,以及**儲存為 XLSB** 的完整流程。 + +--- + +## 結論 + +現在你已清楚了解如何**建立 Excel 工作簿**、為工作表設定清晰的**工作表名稱**、以**新增自訂屬性**嵌入有用的中繼資料,最後**儲存為 XLSB** 以產生緊湊的二進位 Excel 檔案。此工作流程可靠、跨 .NET 版本皆可使用,且無論產生一份報表或千份報表,都能良好擴展。 + +接下來可以做什麼?試著在 “Data” 工作表加入資料表、實驗不同類型的屬性(日期、布林值),或改為**儲存為 xlsb** 以處理大量資料。你也可以探索使用密碼保護工作簿——Aspose.Cells 只需一行程式碼即可完成。 + +如果遇到任何問題,歡迎留言討論,或分享你在專案中如何擴充此模式。祝開發愉快! + +--- + +![建立 Excel 工作簿截圖](image.png){alt="建立 Excel 工作簿並包含自訂屬性"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/excel-advanced-named-ranges/_index.md b/cells/hongkong/net/excel-advanced-named-ranges/_index.md index 1e68230fb4..b89fa7cb5c 100644 --- a/cells/hongkong/net/excel-advanced-named-ranges/_index.md +++ b/cells/hongkong/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ 透過這個全面的逐步教學,使用 Aspose.Cells for .NET 輕鬆識別 Excel 中命名範圍內的儲存格。 ### [在 Excel 中合併命名範圍內的儲存格](./merge-cells-in-named-range/) 在本逐步教學中了解如何使用 Aspose.Cells for .NET 合併命名範圍內的儲存格。了解如何格式化、設定樣式以及自動化 Excel 報表。 +### [建立 Excel 工作簿:新增表格與命名規則的逐步指南](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +本分步指南教您如何在 Excel 工作簿中新增表格並設定命名規則。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/hongkong/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..14a14a5687 --- /dev/null +++ b/cells/hongkong/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: 在 C# 中建立含有資料表的 Excel 活頁簿,學習 Excel 資料表命名規則,避免命名範圍錯誤,並正確設定 Excel 資料表名稱。 +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: zh-hant +og_description: 在 C# 中建立 Excel 工作簿,掌握 Excel 表格命名規則。學習如何新增表格工作表、設定 Excel 表格名稱,以及修復命名範圍錯誤。 +og_title: 建立 Excel 工作簿 – 完整 C# 表格與命名指南 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: 創建 Excel 活頁簿 – 添加表格與命名規則的逐步指南 +url: /zh-hant/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 建立 Excel 活頁簿 – 完整的 C# 表格與命名指南 + +是否曾經需要以程式方式 **create excel workbook**,卻發現表格名稱突然與已命名的範圍衝突?你並不孤單。在許多自動化專案中,當你嘗試為表格設定易讀的識別名稱時,Excel 會拋出 *named range error*,導致整個流程停頓。 + +在本教學中,我們將逐步示範一個完整可執行的範例,該範例 **creates an Excel workbook**、**adds a table to a worksheet**,並說明 **excel table naming rules**,讓你避免自找麻煩。完成後,你將清楚知道如何 **add table worksheet**、**set excel table name**,以及優雅地處理偶發的命名衝突。 + +> **Pro tip:** 大多數的困惑來自於 Excel 將表格名稱與活頁簿層級的已命名範圍視為同一命名空間。提前了解此規則可為你節省數小時的除錯時間。 + +## 需要的條件 + +- **Aspose.Cells for .NET**(或任何提供 `Workbook`、`Worksheet`、`ListObject` 類別的函式庫)。 +- .NET 6+ 或 .NET Framework 4.8 – 程式碼兩者皆可執行。 +- 基本的 C# 語法概念 – 不需要進階技巧。 + +如果你已具備上述條件,讓我們開始吧。 + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## 步驟 1:建立 Excel 活頁簿並存取第一個工作表 + +當你 **create excel workbook** 時,第一件事就是實例化 `Workbook` 類別,並取得要操作的工作表參考。在 Aspose.Cells 中,活頁簿預設會有一個名為 “Sheet1” 的工作表。 + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +為什麼這一步很關鍵?如果沒有 workbook 物件,就無法將表格附加上去,而 `Worksheet` 參考則提供了一個畫布,讓 **add table worksheet** 操作得以執行。 + +## 步驟 2:加入覆蓋特定範圍的表格(ListObject) + +接下來我們 **add table worksheet** 級別的資料。`ListObjects.Add` 方法需要一個範圍字串,並以布林值指示第一列是否為標題。 + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +請注意 `salesTable.Name = "SalesData"` 這行程式碼。這正是 **excel table naming rules** 生效的地方:名稱必須在整個活頁簿中唯一,而非僅在工作表內。名稱亦不能包含空格或特殊字元,且必須以字母或底線開頭。 + +## 步驟 3:嘗試以相同識別名稱建立活頁簿層級的已命名範圍 + +現在我們故意觸發 **named range error**,觀察名稱衝突時會發生什麼情況。 + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +如果取消註解該行,Aspose.Cells 會拋出 `ArgumentException`,指出名稱已存在。錯誤訊息如下: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +此訊息即為我們先前警告的 **named range error**。它說明 **excel table naming rules** 將表格名稱與已命名範圍視為同一命名空間。 + +## 步驟 4:優雅地處理命名衝突 + +在實務程式碼中,你會想捕捉此例外,然後重新命名表格或改用其他範圍名稱。以下是一個簡潔的做法: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +將呼叫包在 `try/catch` 中,可避免程式直接崩潰,並向使用者(或呼叫端)提供清楚的說明——正是 **excel table naming rules** 所提供的洞見,能防止未來的錯誤。 + +## 步驟 5:儲存活頁簿並驗證結果 + +最後,將檔案寫入磁碟,並在 Excel 中開啟以確認表格與已命名範圍均已正確建立。 + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +當你開啟 *SalesReport.xlsx* 時,你會看到: + +- 一個跨越 **A1:C5** 的表格,名稱為 **SalesData**。 +- 如果保留了替代的範圍,則會有一個活頁簿層級的已命名範圍 **SalesData_Range**,指向 **D1**。 + +不會發生執行時崩潰,且命名衝突已解決。 + +## 深入了解 Excel 表格命名規則 + +讓我們解析這些規則存在的原因: + +| Rule | What It Means | Example | +|------|----------------|---------| +| **全活頁簿唯一** | 任何兩個表格或已命名範圍不能使用相同的識別名稱。 | `Table1` vs `Table1` → conflict | +| **以字母或底線開頭** | 名稱不可以數字開頭。 | `_Q1Sales` ✅, `1QSales` ❌ | +| **不含空格或特殊字元** | 請使用 CamelCase 或底線。 | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **長度 ≤ 255 個字元** | 實務上幾乎總是符合此限制。 | N/A | + +在設定 **set excel table name** 時遵守上述規則,即可避免令人頭痛的 *named range error*。 + +## 常見變化與邊緣案例 + +1. **Adding multiple tables** – 每個表格必須擁有唯一的名稱。 +2. **Renaming an existing table** – 在建立任何可能衝突的已命名範圍之前,使用 `salesTable.Name = "NewName"` 重新命名現有表格。 +3. **Using dynamic ranges** – 若需要可自動擴展的範圍,請使用結構化參照,例如 `=SalesData[Amount]`,而非靜態位址。 +4. **Cross‑sheet named ranges** – 它們仍屬於同一命名空間,因此 Sheet1 上的表格會阻止 Sheet2 上使用相同名稱的範圍。 + +## Excel 自動化的進階技巧 + +- **在新增前檢查是否已存在**:`if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **程式化產生安全名稱**:在不確定時可在名稱後加上 GUID 或遞增計數 (`SalesData_{Guid.NewGuid()}`)。 +- **使用 `ListObject.ShowHeaders = true`** 讓表格自動說明欄位。 +- **儲存後驗證**:使用輕量級函式庫(例如 EPPlus)開啟檔案,以確保表格正確建立。 + +## 重點回顧:我們學到了什麼 + +- 如何使用 Aspose.Cells 從頭 **create excel workbook**。 +- 精確的 **excel table naming rules**,規範表格與已命名範圍的識別名稱。 +- 當重複使用名稱時,為何會出現 **named range error**。 +- 正確的 **add table worksheet** 與 **set excel table name** 方法,避免衝突。 +- 一套穩健的模式,可優雅地處理命名衝突。 + +## 接下來該做什麼? + +既然你已掌握基礎,接下來可以探索: + +- **動態表格成長**:使用 `ListObject.Resize`。 +- **套用樣式** 給表格(`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`)。 +- **匯出為 CSV**,同時保留表格結構。 +- **結合 Office Open XML**,以更精細地控制活頁簿內部結構。 + +歡迎自行實驗——變更範圍、加入更多表格,或嘗試不同的命名方式。你越是玩弄,對 **excel table naming rules** 的理解就會越深入。 + +--- + +*祝程式開發愉快,願你的活頁簿永不衝突!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/excel-custom-number-date-formatting/_index.md b/cells/hongkong/net/excel-custom-number-date-formatting/_index.md index e74b889f8b..2e57355d40 100644 --- a/cells/hongkong/net/excel-custom-number-date-formatting/_index.md +++ b/cells/hongkong/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ 透過本逐步教學學習如何使用 Aspose.Cells for .NET 根據自訂數字格式檢查 Excel 儲存格值。 ### [將資料匯入 Excel 工作表時指定公式字段](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) 在本詳細教學中了解如何使用 Aspose.Cells for .NET 將資料匯入具有指定公式欄位的 Excel 工作表。 +### [C# 中的 Excel 自訂數字格式 – 完整指南](./custom-number-format-excel-in-c-complete-guide/) +本完整指南說明如何在 C# 使用 Aspose.Cells 為 Excel 應用自訂數字格式,涵蓋範例與最佳實踐。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/hongkong/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..35fda255bb --- /dev/null +++ b/cells/hongkong/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,293 @@ +--- +category: general +date: 2026-03-22 +description: 自訂數字格式 Excel 教學,示範如何將資料表匯入 Excel、設定欄位背景顏色、將欄位格式化為貨幣,並將工作簿另存為 xlsx。 +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: zh-hant +og_description: 自訂數字格式 Excel 教學,逐步帶您匯入 DataTable、設定欄位背景顏色、將欄位格式化為貨幣,並將工作簿另存為 xlsx。 +og_title: C# 中的 Excel 自訂數字格式 – 步驟教學 +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C# 中的 Excel 自訂數字格式 – 完整指南 +url: /zh-hant/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 自訂數字格式 Excel – 全端 C# 教學 + +你是否曾想過如何直接從 C# 套用 **custom number format excel** 樣式?也許你曾把 DataTable 匯入試算表,結果只看到純數字,沒有顏色,也沒有貨幣格式。這是常見的痛點——尤其在需要為利害關係人提供精緻報告時。 + +在本教學中,我們將一起解決這個問題:你將學會 **import datatable to excel**、**set column background color**、**format column as currency**,以及最終 **save workbook as xlsx**,使用自訂數字格式讓你的數據更醒目。沒有模糊的說明,僅提供完整、可直接複製貼上的可執行範例。 + +--- + +## 你將建立的內容 + +完成本教學後,你將擁有一個自包含的 C# 主控台應用程式,具備以下功能: + +1. 取得一個 `DataTable`(你可以自行替換成自己的查詢)。 +2. 使用 Aspose.Cells(或任何相容的函式庫)建立新的 Excel 活頁簿。 +3. 為第一欄套用藍色粗體字型,為第二欄套用淡黃色背景,為第三欄套用貨幣格式(`$#,##0.00`)。 +4. 將檔案儲存為 `DataTableWithStyleArray.xlsx`,存放於你指定的資料夾。 + +你將清楚看到每一行程式碼如何影響最終的 Excel 檔案,並討論為何這些選擇對可維護性與效能很重要。 + +--- + +## 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦相容 .NET Framework 4.7+)。 +- Aspose.Cells for .NET(免費試用或正式授權版)。透過 NuGet 安裝: + +```bash +dotnet add package Aspose.Cells +``` + +- 具備 `DataTable` 與 C# 主控台應用程式的基本概念。 + +--- + +## Step 1: Retrieve the Source Data as a DataTable + +首先,我們需要一些資料來匯出。實務上你可能會呼叫資料庫或執行 SQL 查詢。此處為說明起見,我們直接在記憶體中建立一個簡易表格。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** 使用 `DataTable` 能提供具結構的表格來源,能直接對應到 Excel 的列與欄。它也讓你可以在任何資料集上重複使用相同的匯出邏輯,而不必重新撰寫程式碼。 + +--- + +## Step 2: Create a New Workbook and Grab the First Worksheet + +現在我們建立一個 Excel 活頁簿。`Workbook` 類別代表整個檔案;`Worksheets[0]` 為預設工作表,我們將資料寫入此工作表。 + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** 若需要多個工作表,只要呼叫 `workbook.Worksheets.Add("SheetName")`,然後對每個工作表重複樣式設定步驟即可。 + +--- + +## Step 3: Define Column Styles – Font, Background, and Number Format + +在 Aspose.Cells 中,樣式是透過 `Style` 物件來設定。我們會建立一個陣列,每個元素對應 DataTable 中的欄位。 + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** 將陣列傳入 `ImportDataTable` 可在一次呼叫中為每一欄套用不同的樣式,既簡潔又具效能。此方式也確保格式與資料順序保持同步。 + +--- + +## Step 4: Import the DataTable While Applying the Styles + +以下是核心操作:將 `DataTable` 匯入工作表,告訴 Aspose 包含標題列,並傳入我們的 `columnStyles` 陣列。 + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose 會逐欄遍歷,先寫入標題,接著寫入每一列的值。寫入過程中會套用陣列中對應的 `Style`,因此最終會得到「Product」欄位的藍色標題、「Quantity」欄位的淡黃色底色,以及「Revenue」欄位的貨幣格式。 + +--- + +## Step 5: Save the Workbook as an XLSX File + +最後,我們將活頁簿寫入磁碟。`Save` 方法會根據檔案副檔名自動選擇 XLSX 格式。 + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** 若需要將檔案以串流方式傳送(例如 Web API),請使用 `workbook.Save(stream, SaveFormat.Xlsx)` 取代檔案路徑。 + +--- + +## Full Working Example + +以下是完整程式碼,你可以直接貼到新的主控台專案中。它可以直接編譯執行,產生具樣式的 Excel 檔案。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Expected Result + +開啟 `DataTableWithStyleArray.xlsx` 後,你會看到: + +| **產品** (藍色、粗體) | **數量** (淡黃色) | **收入** (貨幣) | +|----------------------|-------------------|----------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +你所指定的 **custom number format excel** (`$#,##0.00`) 會讓每個收入欄位顯示美元符號、千位分隔符與兩位小數——正是財務團隊所期待的格式。 + +--- + +## Frequently Asked Questions & Edge Cases + +### 可以改用其他 Excel 函式庫嗎? + +當然可以。建立每欄樣式並在匯入時套用的概念,同樣適用於 EPPlus、ClosedXML 或 NPOI。API 呼叫方式不同,但整體流程保持一致。 + +### 如果我的 DataTable 欄位比樣式陣列多,會怎樣? + +Aspose 會對沒有對應樣式的欄位使用預設樣式。為避免意外,請將陣列長度調整為 `dataTable.Columns.Count`,或在迴圈中動態產生樣式。 + +### 如何為日期設定自訂數字格式? + +只要設定 `style.Custom = "dd‑mm‑yyyy"`(或任何有效的 Excel 格式字串)即可。相同的陣列方式同樣適用於日期、百分比或科學記號。 + +### 匯入後可以自動調整欄寬嗎? + +可以——在匯入完成後呼叫 `worksheet.AutoFitColumns();`,系統會根據儲存格內容自動計算適當寬度。 + +### 大量資料(10 萬筆以上)會有問題嗎? + +`ImportDataTable` 已針對批次操作做過最佳化,但仍可能受記憶體限制。若遇到此情況,可改為手動逐列寫入 `Cells[i, j].PutValue(...)`,並重複使用單一 `Style` 物件以降低開銷。 + +--- + +## Pro Tips & Common Pitfalls + +- **Avoid hard‑coding paths**:在正式環境中請避免硬寫路徑,改用 `Environment.GetFolderPath` 或設定檔取得路徑。 +- **Dispose of the workbook**:若程式長時間執行,請將 workbook 包在 `using` 區塊中,以釋放本機資源。 +- **Watch out for culture‑specific separators**:自訂格式 `$#,##0.00` 會強制使用點號作為小數點,不受作業系統語系影響,這通常是財務報表的需求。 +- **Remember to reference System.Drawing**(或 .NET Core 上的 `System.Drawing.Common`),以取得樣式中使用的顏色結構。 +- **Test the output on different Excel versions**:舊版 Excel 可能會對某些自訂格式的解讀略有差異,請務必測試相容性。 + +--- + +## Conclusion + +We’ve covered everything you need to **custom number format excel** files from C#: pulling data from a `DataTable`, **import datatable to excel**, applying a **set column background color**, using **format column as currency**, and finally **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/excel-workbook/_index.md b/cells/hongkong/net/excel-workbook/_index.md index 305c20961d..3e512d92cf 100644 --- a/cells/hongkong/net/excel-workbook/_index.md +++ b/cells/hongkong/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Excel 工作表中定義的名稱可以是管理資料的便捷方式。它們 | [工作簿列印預覽](./workbook-print-preview/) |了解如何使用 Aspose.Cells for .NET 為 Excel 檔案建立列印預覽。透過詳細、易於遵循的教程學習編碼步驟。 | | [使用內容類型屬性](./working-with-content-type-properties/) |了解如何使用 Aspose.Cells for .NET 處理內容類型屬性以增強 Excel 元資料管理。請按照這個簡單的逐步指南進行操作。 | | [Xades 簽名支持](./xades-signature-support/) |透過本逐步指南了解如何使用 Aspose.Cells for .NET 將 Xades 簽章新增至 Excel 檔案。保護您的文件。 | +| [建立新工作簿 C# – 逐步指南(含溢位公式)](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) |本分步教學示範如何使用 Aspose.Cells for .NET 在 C# 中建立新工作簿,並支援溢位公式。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/hongkong/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..6903f5a3ff --- /dev/null +++ b/cells/hongkong/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: 使用 Aspose.Cells 以 C# 快速建立新工作簿。學習如何加入 SEQUENCE 溢出公式、自動重新計算,以及處理相依儲存格。 +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: zh-hant +og_description: 使用 Aspose.Cells 在 C# 中建立新工作簿。本教學示範如何加入 SEQUENCE 溢出公式、重新計算工作簿,以及管理相依儲存格。 +og_title: 建立新工作簿 C# – 完整指南 +tags: +- C# +- Excel automation +- Aspose.Cells +title: C# 建立新工作簿 – 含溢出公式的逐步指南 +url: /zh-hant/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 建立新工作簿 C# – 完整程式教學 + +有沒有想過如何在不與 COM interop 糾纏的情況下 **create new workbook C#**?你並不孤單。在許多專案中,你需要即時產生 Excel 檔案、插入動態陣列公式,並讓所有內容自動重新整理。 + +在本教學中,我們將會示範上述全部步驟——使用現代的 **Aspose.Cells** 函式庫、加入溢位的 `SEQUENCE` 公式、調整相依儲存格,並強制重新計算,使結果保持最新。完成後,你將得到一個可自行執行、可直接複製貼上到任何 .NET 應用程式的範例。 + +## 你將學會 + +- 如何以程式方式 **create new workbook C#**。 +- **溢位陣列公式** 的運作原理以及它的好處。 +- 從 C# 程式碼呼叫 **Excel SEQUENCE 函式**。 +- 觸發 **C# workbook calculation** 讓相依儲存格即時更新。 +- 常見陷阱(例如忘記呼叫 `Calculate`)與快速解決方式。 + +不需要外部文件——所有資訊都在此處。 + +## 前置條件 + +- 已安裝 .NET 6+(或 .NET Framework 4.7.2+)。 +- Visual Studio 2022 或任意你喜歡的 IDE。 +- **Aspose.Cells** NuGet 套件(`Install-Package Aspose.Cells`)。 +- 基本的 C# 語法概念(如果你是新手,程式碼已加上大量註解)。 + +--- + +## Step 1: Create a new workbook in C# + +此 H2 標題正好包含 **primary keyword**,符合 SEO 檢查清單的要求。 + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **為什麼這很重要:** +> 建立 `Workbook` 會在記憶體中產生 Excel 檔案的表示。沒有 COM、沒有 interop,只有純 .NET 物件,讓你可以安全地操作。 + +--- + +## Step 2: Add a spilling SEQUENCE formula + +**溢位陣列公式** 會自動展開到相鄰儲存格,非常適合產生動態清單。 + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **運作方式:** +> `SEQUENCE` 函式(Excel 365 新增)會建立垂直的數字陣列。因為我們使用的是 *溢位* 公式,Excel(以及 Aspose.Cells)會自動在 `A1` 之下填滿範圍,無需自行寫迴圈。 + +--- + +## Step 3: Change a dependent cell to see auto‑refresh + +讓我們修改 `B1`,觀察工作簿如何重新計算溢位陣列。 + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **小技巧:** +> 若之後在其他公式中參照此溢位範圍,變更溢位內任何儲存格後,只要呼叫 `Calculate`,相關公式就會即時更新。 + +--- + +## Step 4: Force C# workbook calculation + +若未明確呼叫,Aspose.Cells 不會自動重新計算公式。 + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` 的功能:** +> 它會遍歷每一個公式儲存格、評估結果,並將計算後的值寫回工作表。這就是 **C# workbook calculation** 的核心,確保你的溢位陣列與任何相依資料保持同步。 + +### 預期輸出 + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +開啟 `SpilledSequenceDemo.xlsx` 後,你會看到 1‑5 填入 `A1:A5`,而 `B1` 內則是 `10`。變更溢位內任意儲存格、再次執行 `Calculate`,新值會立即顯示。 + +--- + +## Understanding the Excel SEQUENCE function in C# + +如果你想知道為什麼 `SEQUENCE` 比手動迴圈更好,請參考以下觀點: + +1. **效能** – 引擎一次性評估整個陣列。 +2. **可讀性** – 一行程式碼取代數十個 `PutValue` 呼叫。 +3. **動態大小** – 你可以將靜態的 `5` 換成其他儲存格的參照,使長度在執行時可調整。 + +這是一個典型的 **spilled array formula**,能簡化資料產生工作。 + +--- + +## Common Pitfalls & Pro Tips + +| Pitfall | Fix | +|---------|-----| +| 忘記呼叫 `workbook.Calculate()` | 修改公式後務必呼叫;否則工作表會顯示舊的快取值。 | +| 使用較舊的 Aspose.Cells 版本 | 升級至最新的 NuGet 套件,以確保支援 `SEQUENCE` 等動態陣列函式。 | +| 在計算前就儲存檔案 | **先** `Calculate`,**再**儲存,確保檔案內含最新結果。 | +| 以為溢位會覆寫既有資料 | Aspose.Cells 只會寫入溢位範圍內的儲存格;若需清空整個區域,請先自行清除。 | + +**進階小技巧:** 若想讓序列長度可設定,可將數量放在某個儲存格(例如 `C1`),然後使用 `=SEQUENCE(C1)`——計算引擎會在執行時讀取該儲存格的值。 + +--- + +## Extending the Example + +現在你已掌握 **create new workbook C#**,可以進一步: + +- 加入更複雜的公式,參照溢位範圍(例如 `=SUM(A1#)`,`#` 代表溢位)。 +- 使用 `workbook.Save("output.pdf", SaveFormat.Pdf)` 匯出為 PDF。 +- 插入會自動依動態陣列大小調整的圖表。 + +所有這些都建構在相同的 **C# workbook calculation** 基礎上。 + +--- + +## Conclusion + +我們完整示範了 **create new workbook C#** 的全流程,從建立 `Workbook` 物件、插入溢位 `SEQUENCE` 公式、調整相依儲存格,到最後強制重新計算,確保所有資料即時更新。上方的完整程式碼片段已可直接執行——只要把它貼到 Console 應用程式、加入 Aspose.Cells NuGet 套件,即可在數秒內產生功能完整的 Excel 檔案。 + +準備好下一步了嗎?試著把靜態的 `5` 換成儲存格參照,或探索 `FILTER`、`UNIQUE` 等其他動態陣列函式,體驗 **Aspose.Cells C#** 如何為完整的報表引擎提供動力。祝編程愉快! + +--- + +*圖片佔位符:* + +![顯示剛建立的工作簿與溢位 SEQUENCE 公式的螢幕截圖 – create new workbook C# 範例](/images/create-new-workbook-csharp.png) + +--- + +*如果你覺得本教學有幫助,歡迎為儲存庫加星、與同事分享,或在下方留下評論。你的回饋將驅動未來的指南!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/formulas-functions/_index.md b/cells/hongkong/net/formulas-functions/_index.md index a12d0d1190..7c0d2663d2 100644 --- a/cells/hongkong/net/formulas-functions/_index.md +++ b/cells/hongkong/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ ### [使用 Aspose.Cells .NET 更新 Excel Power Query 公式](./update-power-query-formulas-aspose-cells-net) 了解如何使用 Aspose.Cells for .NET 以程式設計方式更新 Excel 工作簿中的 Power Query 公式。主資料來源管理,用於動態報告。 +### [如何在 C# 中使用 Lambda 搭配 Excel 公式 – 完整指南](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +了解如何在 C# 中使用 Lambda 表達式與 Excel 公式結合,實現動態計算與自訂函數。 + ## 了解 Excel 公式類型 Excel 公式有多種形式,每種形式都有 Aspose.Cells 可以管理的獨特特性: diff --git a/cells/hongkong/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/hongkong/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..423c89411b --- /dev/null +++ b/cells/hongkong/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: 如何在 C# 中使用 lambda 來處理 Excel 公式。學習將公式寫入儲存格、將範圍轉換為陣列、在主控台顯示陣列,以及在 Excel + 中計算餘切。 +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: zh-hant +og_description: 如何在 C# 中使用 lambda 操作 Excel 公式、將範圍轉換為陣列、將公式寫入儲存格、在主控台顯示陣列,以及在 Excel + 中計算餘切。 +og_title: 如何在 C# 中使用 Lambda 搭配 Excel 公式 – 步驟說明 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: 如何在 C# 中使用 Lambda 搭配 Excel 公式 – 完整指南 +url: /zh-hant/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中使用 Lambda 搭配 Excel 公式 – 完整指南 + +有沒有想過在 C# 自動化 Excel 時 **如何使用 lambda**?你並不孤單。許多開發者在需要將 Excel 全新的動態陣列函數與 C# 的 `LAMBDA` 功能結合時,常會卡關。好消息是?只要看清楚各個部件如何配合,這其實相當簡單。 + +在本教學中,我們將逐步說明 **將公式寫入儲存格**、**將範圍轉換為陣列**、**在主控台顯示該陣列**,甚至 **在 Excel 中計算餘切**——同時示範 **如何在 `REDUCE` 呼叫中使用 lambda**。完成後,你將得到一段可直接放入任何引用 Aspose.Cells(或類似函式庫)的 .NET 專案的可執行程式碼。 + +--- + +## 你將學會 + +- 如何使用 C# **將公式寫入儲存格**。 +- 如何使用 `EXPAND` 函數 **將範圍轉換為陣列**。 +- 如何在計算完畢後 **在主控台顯示陣列**。 +- 如何使用 `COT` 與 `COTH` **在 Excel 中計算餘切**。 +- 從 C# 呼叫 Excel 的 `REDUCE` 函數時 **如何使用 lambda** 的完整語法。 + +> **先備條件:** 需要安裝 .NET(Core 6+ 或 .NET Framework 4.7+)以及透過 NuGet 安裝 Aspose.Cells for .NET 函式庫。 + +--- + +## 步驟 1:建立活頁簿並將公式寫入儲存格 + +首先,我們會新建一個活頁簿並取得第一張工作表。接著 **將公式寫入儲存格**——此例中 `A1` 會放置 `EXPAND` 的結果。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**為什麼這很重要:** 直接從程式碼寫入公式,讓你能在不開啟 Excel 的情況下即時產生複雜的試算表。這也為下一步 **將範圍轉換為陣列** 打下基礎。 + +--- + +## 步驟 2:使用 EXPAND 將範圍轉換為陣列 + +`EXPAND` 是 Excel 用來把小範圍展開成更大矩陣的功能。將公式放在 `A1` 後,Excel 會自動在該儲存格向下向右溢出成 4 × 5 的區塊。從 C# 端,我們不必手動複製值——在呼叫 `Calculate` 時,函式庫會自動完成這項工作。 + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**如何使用 lambda:** 暫時還沒出現,稍後會說明。先取得工作表中的資料,之後再以 lambda 進行縮減。 + +--- + +## 步驟 3:在 REDUCE 中使用 LAMBDA – 「如何使用 Lambda」的核心 + +Excel 365 引入了 `REDUCE`,它接受 **初始值**、**範圍** 以及一個 **LAMBDA**,用來定義如何合併每個元素。從 C# 只要把公式字串指定給儲存格即可,lambda 會寫在 Excel 公式內,而不是 C# 程式碼中。 + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**說明:** +- `0` 為起始累加器(`acc`)。 +- `A1:D4` 為要處理的範圍(溢出結果的前四欄)。 +- `LAMBDA(acc, x, acc + x)` 告訴 Excel 把每個儲存格 (`x`) 加到累加器上。 + +這就是在試算表環境中 **如何使用 lambda** 進行聚合的精髓。 + +--- + +## 步驟 4:在 Excel 中計算餘切 – 從角度到雙曲 + +若需要三角函數結果,Excel 的 `COT` 與 `COTH` 非常好用。我們會分別把它們放在 `G1` 與 `G2`。 + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**為什麼實用:** 熟悉 **在 Excel 中計算餘切** 能讓你免除自行撰寫數學程式碼,特別是當活頁簿要與非開發人員共享時。 + +--- + +## 步驟 5:強制計算並取得展開的陣列 + +現在讓活頁簿評估所有公式,然後從 `A1` 取回溢出的陣列。這一步會把結果 **顯示在主控台**。 + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**你會看到的內容:** +- 以列為單位印出的整齊 4 × 5 矩陣。 +- 由 `REDUCE` lambda 計算出的總和。 +- 兩個餘切值。 + +至此,從 **將公式寫入儲存格** 到 **在主控台顯示陣列** 的完整流程已完成。 + +--- + +## 完整範例(直接複製貼上) + +以下程式碼可直接放入 Console 應用程式。記得先加入 `Aspose.Cells` NuGet 套件(`dotnet add package Aspose.Cells`)。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**預期的主控台輸出(數值會依 B1:C2 的預設內容而異,預設皆為 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +在執行前可自行在 `B1:C2` 填入數字——矩陣會即時反映這些值。 + +--- + +## 專業小技巧與常見陷阱 + +- **小技巧:** 若想讓溢出範圍從其他位置開始,只需更改目標儲存格(`A1`)。`EXPAND` 會遵循新的錨點。 +- **注意事項:** 來源範圍的空白儲存格會在溢出陣列中變成 `0`,可能會影響 `REDUCE` 的加總結果。 +- **邊緣情況:** 若活頁簿內含依賴易變函數(例如 `NOW()`)的公式,請在設定完所有公式後呼叫 `workbook.Calculate()`,確保計算結果為最新。 +- **效能提醒:** 對於巨大的溢出區域,建議在 `EXPAND` 呼叫中限制大小,否則可能會分配過多記憶體。 +- **相容性:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/number-and-display-formats-in-excel/_index.md b/cells/hongkong/net/number-and-display-formats-in-excel/_index.md index 9d2638ba83..8bc93ae131 100644 --- a/cells/hongkong/net/number-and-display-formats-in-excel/_index.md +++ b/cells/hongkong/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ 使用 Aspose.Cells for .NET 自動執行 Excel 中的數字格式化。了解如何以程式設計方式套用日期、百分比和貨幣格式。 ### [使用使用者定義數字自訂顯示格式](./customizing-display-formats-with-user-defined-numbers/) 了解如何使用 Aspose.Cells for .NET 自訂顯示格式。使用本逐步指南格式化日期、百分比和貨幣。 +### [如何匯出保留格式的 Excel – 保持數字格式](./how-to-export-excel-with-formatting-preserve-number-format/) +使用 Aspose.Cells for .NET 匯出 Excel 時保留原始數字格式,確保資料顯示一致。 +### [在 C# 中將日期時間格式化為 ISO – 完整指南](./format-datetime-to-iso-in-c-complete-guide/) +了解如何在 C# 中使用 Aspose.Cells 將日期時間轉換為 ISO 8601 格式,確保跨平台一致性。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/hongkong/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..f7ceaa8e5f --- /dev/null +++ b/cells/hongkong/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-22 +description: 學習如何在從 Excel 提取日期時將日期時間格式化為 ISO,並使用 Aspose.Cells 在 C# 中顯示 ISO 日期。 +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: zh-hant +og_description: 將日期時間格式化為 ISO 輕鬆搞定。此指南示範如何從 Excel 提取日期,並使用 Aspose.Cells 顯示 ISO 日期。 +og_title: 在 C# 中將日期時間格式化為 ISO – 逐步教學 +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: 在 C# 中將日期時間格式化為 ISO – 完全指南 +url: /zh-hant/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中將 datetime 轉換為 ISO – 完整指南 + +是否曾經需要 **format datetime to iso**,但來源卻在 Excel 活頁簿內?或許儲存格內包含日文元號,例如「令和3年5月1日」,讓你摸不著頭腦,不知道該如何轉成 `2021‑05‑01` 這樣的乾淨字串。你並不孤單。在本教學中,我們將 **extract date from excel**、解析日文元號,然後在主控台上 **display iso date**——全部只需幾行 C# 程式碼與 Aspose.Cells。 + +我們會一步步說明你需要的所有內容:必備的 NuGet 套件、可以直接複製貼上的完整程式碼、每一行程式碼的意義,以及一些常見的邊緣案例技巧。完成後,你將擁有一段可重複使用的程式碼,無論原始 Excel 值多麼古怪,都能正確 **format datetime to iso**。 + +## 你需要的環境 + +- .NET 6.0 或更新版本(程式碼亦可在 .NET Framework 4.6+ 上編譯) +- Visual Studio 2022(或你慣用的任何編輯器) +- **Aspose.Cells for .NET** NuGet 套件 – `Install-Package Aspose.Cells` +- 一個包含日文元號格式日期的 Excel 檔(或一個全新的活頁簿) + +就這些。沒有額外的函式庫、沒有 COM interop,只有一個寫得很清楚的方法。 + +## 步驟 1:建立活頁簿並寫入日文元號日期 + +首先,我們需要一個活頁簿。如果你已經有 Excel 檔,可使用 `new Workbook("path")` 讀取。以下範例會在記憶體中建立新活頁簿,並將日文元號字串寫入 **A1** 儲存格。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **為什麼要這麼做:** Aspose.Cells 預設將儲存格值視為字串。透過插入原始的元號文字,我們模擬了日本客戶以本地曆法輸入日期的真實情境。 + +## 步驟 2:啟用日文元號解析並擷取日期 + +Aspose.Cells 能自動將日文元號字串轉換為 .NET `DateTime` 物件,只要告訴它使用 `DateTimeParseOptions.EnableJapaneseEra` 旗標即可。 + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **小技巧:** 若忘記加入 `EnableJapaneseEra` 選項,函式庫會回傳原始字串,導致後續轉換失敗。處理混合內容時,務必檢查 `parsed.Type`。 + +## 步驟 3:將解析後的 DateTime 轉為 ISO 8601 + +取得正確的 `DateTime` 後,將它轉成 ISO 格式的字串非常簡單。`"yyyy-MM-dd"` 格式符合 ISO 8601 日期部份,這也是大多數 API 所期待的格式。 + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +執行程式後會印出: + +``` +ISO date: 2021-05-01 +``` + +這就是你想要的 **display iso date**。 + +## 完整、可執行的範例 + +以下是可以直接貼到 Console 專案的完整程式碼。沒有隱藏的相依性,也不需要額外設定。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **預期輸出:** `ISO date: 2021-05-01` + +## 步驟說明(每一步的意義) + +| 步驟 | 會發生什麼事 | 為什麼重要 | +|------|--------------|------------| +| **Create workbook** | 初始化一個記憶體中的 Excel 容器。 | 提供一個沙箱,讓你在不觸及檔案系統的情況下測試。 | +| **PutValue** | 將原始的日文元號字串存入 **A1**。 | 模擬真實資料輸入,確保解析器看到完整文字。 | +| **GetValue with `EnableJapaneseEra`** | 將元號字串轉換為 .NET `DateTime`。 | 自動完成曆法轉換,免除手動查表。 | +| **`ToString("yyyy-MM-dd")`** | 把 `DateTime` 格式化為 ISO 8601。 | 保證產生文化不依賴、可排序的日期字串,適用於 REST API、資料庫等。 | +| **Console.WriteLine** | 顯示最終的 ISO 日期。 | 確認整個流程端對端運作正常。 | + +## 常見變化處理 + +### 1. 不同的儲存格位置 + +如果日期位於 **B2** 或命名範圍,只需將 `"A1"` 換成相對的位址: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. 同欄位多筆日期 + +若需要為多列 **extract date from excel**,可遍歷使用範圍: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. 非元號日期的備援 + +若儲存格已是標準日期字串,解析器仍能運作,但你可能想加一層保護: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` 旗標可防止例外,並在轉換失敗時回傳原始值。 + +### 4. 含時間的情況 + +若同時需要時間部分,可使用 `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +即可得到完整的 ISO 8601 時間戳記(`2021-05-01T00:00:00`)。 + +## 視覺說明 + +![format datetime to iso example](image.png "An example of formatting datetime to iso in C#") + +*Alt text:* *format datetime to iso example showing console output* + +## 常見問答 + +- **可以用於 .xls 檔案嗎?** + 可以。Aspose.Cells 內建支援 `.xls`、`.xlsx`、`.csv` 等多種格式。 + +- **如果活頁簿有密碼保護該怎麼辦?** + 使用 `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` 載入。 + +- **ISO 格式會依本地語系而變嗎?** + 不會。`"yyyy-MM-dd"` 格式是文化不依賴的,保證在任何機器上產生相同字串。 + +- **這能在 .NET Core 上執行嗎?** + 完全可以——Aspose.Cells 符合 .NET Standard 2.0。 + +## 結語 + +我們已說明如何透過 **format datetime to iso**,先 **extract date from excel**、解析日文元號,最後在主控台 **display iso date**。核心步驟——建立活頁簿、寫入或載入元號文字、啟用日文元號解析、以 `ToString("yyyy-MM-dd")` 格式化——已足以應付大多數情境。 + +接下來,你可以: + +- 將 ISO 日期寫回另一欄位,以供後續處理。 +- 匯出轉換後的活頁簿為 CSV,進行批次匯入。 +- 結合接受 Excel 上傳並回傳 JSON‑encoded ISO 日期的 Web API。 + +歡迎嘗試不同的日期格式、時區,甚至自訂曆法。Aspose.Cells 的彈性讓你很少會碰到瓶頸。 + +祝程式開發順利,願所有日期皆符合 ISO 標準! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/hongkong/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..e359bcd772 --- /dev/null +++ b/cells/hongkong/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-03-22 +description: 如何匯出帶格式的 Excel 並保留數字格式。學習轉換 Excel 範圍、取得公式結果,以及使用 Aspose.Cells 匯出帶格式的 + Excel。 +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: zh-hant +og_description: 如何匯出帶格式的 Excel 並保留數字格式。逐步指南:轉換 Excel 範圍、取得公式結果,並在 C# 中匯出帶格式的 Excel。 +og_title: 如何匯出帶格式的 Excel – 保留數字格式 +tags: +- C# +- Aspose.Cells +- Excel automation +title: 如何匯出帶格式的 Excel — 保留數字格式 +url: /zh-hant/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何匯出 Excel 並保留格式 – 保持數字格式 + +有沒有想過 **如何匯出 Excel** 資料,同時讓每個儲存格的外觀完全如同在工作簿中看到的樣子?也許你需要把報告寄給客戶、填充資料格控制項,或只是把值存入資料庫。最常見的痛點是數字格式會遺失,或公式會變成純文字。 + +在本教學中,我們將一步步示範完整、可直接執行的 C# 範例,該範例 **保留數字格式**、**將 Excel 範圍轉換為 `DataTable`**、**取得公式結果**,最後使用 Aspose.Cells **匯出 Excel 並保留格式**。完成後,你將擁有一個可直接放入任何專案、以工作表參考呼叫的單一方法。 + +> **快速預覽:** 程式會建立一個活頁簿,寫入數值與公式,指示 Aspose.Cells 以格式化字串匯出儲存格,並印出 `123.456 | 246.912` ─ 正是 Excel 中會看到的結果。 + +--- + +## 需要的環境 + +- **Aspose.Cells for .NET**(免費試用版已足夠學習使用) +- .NET 6.0 或更新版本(在 .NET Framework 上 API 也相同) +- 基本的 C# 開發環境(Visual Studio、VS Code、Rider…自行選擇) + +不需要除 Aspose.Cells 之外的其他 NuGet 套件。若尚未安裝,請執行: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Step 1 – 建立活頁簿並寫入值(含公式) + +首先建立一個全新的活頁簿,並在 **A1** 放入數值。接著在 **B1** 加入一個簡單公式,將第一格的值乘以二。這為稍後示範 **取得公式結果** 做好鋪陳。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**為什麼這很重要:** +- `PutValue` 只儲存原始數字,而 `PutFormula` 則儲存計算式。 +- Aspose.Cells 會讓公式保持 **活躍**,因此稍後取得儲存格值時會得到 `246.912`,而不是字串 `"=A1*2"`。 + +--- + +## Step 2 – 告訴 Aspose.Cells 以格式化字串匯出值 + +如果直接使用預設設定呼叫 `ExportDataTable`,數值儲存格會以底層的 `double` 回傳,千分位、貨幣符號或自訂小數位等格式都會被去除。`ExportTableOptions` 類別讓我們 **保留數字格式** 並 **以字串匯出**。 + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**重點說明:** `ExportNumberFormat = true` 是讓 **保留數字格式** 生效的旗標。若未設定此旗標,會看到 `"123.456"` 與 `"246.912"` 這樣的原始數字,雖然在程式碼中看起來沒問題,但貼到需要與 Excel 相同格式的 UI 時就會出問題。 + +--- + +## Step 3 – 列印匯出的資料(驗證) + +現在我們已取得一個包含格式化字串的 `DataTable`,把內容輸出到主控台。這同時也證明我們成功 **取得公式結果**,而不需要自行計算公式。 + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +執行程式會印出: + +``` +123.456 | 246.912 +``` + +請注意第二欄顯示的是 **公式結果**,而非公式文字。這正是 **匯出 Excel 並保留格式** 時,下游處理所需要的行為。 + +--- + +## Step 4 – 轉換較大範圍的 Excel(可選) + +上述範例只處理 `A1:B1` 這個小區塊,但實務上常需要匯出整張表格。相同的方法適用於任何矩形區域,只要調整 `firstRow`、`firstColumn`、`totalRows` 與 `totalColumns` 參數即可。 + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**小技巧:** 若工作表已經有標題列,請將 `includeColumnNames` 設為 `true`。Aspose.Cells 會把範圍的第一列當作欄位名稱,對於之後將 `DataTable` 綁定至 UI 資料格非常方便。 + +--- + +## Step 5 – 常見陷阱與避免方式 + +| 問題 | 為什麼會發生 | 解決方式 | +|------|--------------|----------| +| **數字失去逗號或貨幣符號** | `ExportAsString` 為 `false` 或未設定 `ExportNumberFormat` | 同時設定 `ExportAsString = true` **以及** `ExportNumberFormat = true`。 | +| **公式儲存格回傳公式文字** | 匯出前未呼叫 `CalculateFormula`(僅在活頁簿未自動計算時需要) | 開啟自動計算 (`workbook.CalculateFormula()`) 或使用 `ExportAsString` 強制評估。 | +| **標題列被當成資料列** | `includeColumnNames` 為 `false`,但範圍內包含標題列 | 設定 `includeColumnNames = true`,將第一列視為欄位名稱。 | +| **大型範圍導致記憶體壓力** | 一次匯出整張工作表會一次載入全部資料到記憶體 | 分批匯出(例如每次 500 列),必要時再合併 `DataTable`。 | + +--- + +## Step 6 – 完整可執行範例(直接複製貼上) + +以下是完整程式碼,從 `using` 陳述式到 `Main` 方法。貼到 Console 應用程式後按 **F5**,即可立即看到格式化的輸出。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**預期輸出** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +以上即為 **如何匯出 Excel** 的完整流程,保留格式、評估公式結果,並產生可供任何 .NET 消費者使用的乾淨 `DataTable`。 + +--- + +## 結論 + +我們已說明如何 **匯出 Excel** 資料,同時 **保留數字格式**、**將 Excel 範圍轉換為 `DataTable`**,以及 **取得公式結果** 而不需額外解析。關鍵在於 `ExportTableOptions` 的設定 ─ 只要把 `ExportAsString` 與 `ExportNumberFormat` 設為 `true`,Aspose.Cells 就會幫你完成繁重的工作。 + +接下來你可以: + +- 把 `DataTable` 接到 WPF `DataGrid` 或 ASP.NET MVC 視圖。 +- 將表格寫入 CSV 檔,同時保留完全相同的視覺呈現。 +- 將此方法延伸至多個工作表或動態範圍。 + +歡迎自行嘗試不同的格式(貨幣、百分比)與更大的資料區塊。若遇到任何異常,請回顧 **常見陷阱** 表格 ─ 它涵蓋了在 **匯出 Excel 並保留格式** 時最常見的問題。 + +祝程式開發順利,願你的匯出試算表永遠保持與原始檔案同樣的精緻度! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/hongkong/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..f7ad21df24 --- /dev/null +++ b/cells/hongkong/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-22 +description: 學習如何在 C# 中使用 Aspose.Cells 複製樞紐分析表。本指南亦示範如何複製列並載入 Excel 活頁簿,以實現無縫的 Excel + 自動化複製列。 +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: zh-hant +og_description: 如何在 C# 中複製樞紐分析表?跟隨這個簡潔教學,學習載入 Excel 工作簿、複製列,並精通 Excel 自動化的列複製。 +og_title: 如何在 C# 中複製 Pivot – 完整指南 +tags: +- C# +- Excel Automation +- Aspose.Cells +title: 如何在 C# 中複製 Pivot – 完整逐步指南 +url: /zh-hant/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中複製樞紐分析表 – 完整逐步指南 + +有沒有想過如何以程式方式**複製樞紐分析表**,而不必在 Excel 中手動拖曳?你並不是唯一有此需求的人。在許多報表流程中,需要在全新的一組列上使用相同的樞紐分析表布局,手動操作既浪費時間。 + +好消息是?只要幾行 C# 程式碼,就能載入 Excel 活頁簿、定義包含樞紐分析表的區域,並**how to copy rows**,使樞紐分析表出現在新位置——全部自動化完成。在本教學中,我們還會介紹**load excel workbook c#** 的基礎,並為**excel automation copy rows** 任務奠定堅實基礎。 + +> **您將學到** +> • 完整、可執行的範例,能複製樞紐分析表。 +> • 解釋每一行程式碼的重要性。 +> • 處理隱藏工作表或多個樞紐分析表等邊緣情況的技巧。 + +--- + +## 前置條件 + +在深入之前,請確保你已具備: + +- **.NET 6.0**(或任何較新的 .NET 版本)已安裝。 +- **Aspose.Cells for .NET** – 我們將使用的操作 Excel 檔案的函式庫。可透過 NuGet 取得: + +```bash +dotnet add package Aspose.Cells +``` + +- 一個來源活頁簿 (`Source.xlsx`),其中已包含位於 **A1:J20** 範圍的樞紐分析表(即我們要複製的範圍)。 +- 基本的 C# 語法熟悉度——不需要高階技巧,只要會使用一般的 `using` 陳述式與 `Main` 方法即可。 + +如果上述任一項您不熟悉,請先暫停一下並安裝套件;本指南的其餘部分假設該函式庫已可使用。 + +![使用 Aspose.Cells 在 C# 中複製樞紐分析表的示意圖](https://example.com/duplicate-pivot.png "在 C# 中複製樞紐分析表的示意圖") + +*圖片說明文字:「在 C# 中複製樞紐分析表的範例,顯示來源與複製後的樞紐分析表列」* + +--- + +## 步驟 1:載入 Excel 活頁簿 C# – 開啟檔案 + +當你想要**load excel workbook c#**時,第一件事就是建立指向檔案的 `Workbook` 實例。此物件讓你能存取檔案內的每個工作表、儲存格與樞紐分析表。 + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**為什麼這很重要:** +`Workbook` 將整個 Excel 檔案抽象為記憶體模型。若未先載入,就無法檢查樞紐分析表的位置或複製列。此外,建構子會自動偵測檔案格式(XLS、XLSX、CSV 等),因此不需要額外的格式偵測程式碼。 + +--- + +## 步驟 2:如何複製列 – 定義樞紐分析表區域 + +現在活頁簿已載入記憶體,我們需要告訴 Aspose.Cells 哪些列包含樞紐分析表。在本例中,樞紐分析表位於 **A1:J20**,對應到第 **0‑19** 列(零基索引)。我們會將其包裝在 `CellArea` 結構中。 + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**為什麼使用 `CellArea`:** +它是一種輕量的方式來描述矩形區塊。稍後呼叫 `CopyRows` 時,該方法會讀取此物件以確定要複製的列。若需調整範圍(例如樞紐分析表擴展到 K 欄),只需更改 `endColumn` 的值即可。 + +--- + +## 步驟 3:取得目標工作表 + +大多數活頁簿只有一張工作表,但 API 在多工作表時的使用方式相同。取得第一張工作表(索引 0)——原始樞紐分析表就位於此。 + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**專業提示:** +如果工作表有命名,也可以透過名稱取得:`workbook.Worksheets["Sheet1"]`。當活頁簿結構變更時,這可避免硬編碼索引。 + +--- + +## 步驟 4:如何複製列 – 複製樞紐分析表 + +這就是**how to duplicate pivot**的核心:我們將包含樞紐分析表的列複製到新位置。在本例中,我們從第 31 列(零基索引 30)開始。`CopyRows` 方法會同時複製資料與底層的樞紐快取,讓新列的行為與原始完全相同。 + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**底層發生了什麼?** +`CopyRows` 會克隆每一列,保留公式、樣式與樞紐定義。由於樞紐快取位於活頁簿層級,複製的樞紐分析表會自動參考相同的資料來源——不需額外設定。 + +**邊緣情況 – 隱藏列:** +如果來源範圍內有列被隱藏,複製後仍會保持隱藏。若想取消隱藏,可在複製後呼叫 `worksheet.Rows[destRow].IsHidden = false`。 + +--- + +## 步驟 5:儲存活頁簿 – 驗證複製結果 + +最後,將變更寫回磁碟。你可以覆寫原始檔案,或為了安全起見,儲存為新檔名,以便比較前後差異。 + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**預期結果:** +開啟 `CopyWithPivot.xlsx`。你會看到原始樞紐分析表位於 **A1:J20**,且在 **A31:J50** 有一個相同的副本。兩個樞紐分析表可獨立重新整理,且任何連結至原始的切片器仍可在副本上運作,因為它們共用相同的快取。 + +--- + +## 常見問題與變化 + +### 我可以一次複製多個樞紐分析表嗎? + +當然可以。遍歷所有樞紐分析表 (`worksheet.PivotTables`),將每個的範圍複製到不同的目的地。只要確保目的範圍不重疊即可。 + +### 如果來源活頁簿受密碼保護怎麼辦? + +Aspose.Cells 讓你在建立 `Workbook` 時傳入密碼,即可開啟受保護的檔案: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### 如何在不影響公式的情況下複製列? + +如果只需要 *值*(不含公式),請使用帶有 `CopyOptions` 旗標的 `CopyRows`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### 有沒有辦法將列複製到*不同*的活頁簿? + +可以。於來源工作表完成列複製後,可透過 `targetWorkbook.Worksheets.AddCopy(worksheet)` 將工作表複製到另一個 `Workbook` 實例中。 + +--- + +## 專業技巧:可靠的 Excel 自動化複製列 + +- **在複製前驗證範圍**。快速檢查 `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` 可防止超出範圍的錯誤。 +- **在複製大量範圍時關閉計算**:`workbook.Settings.CalcMode = CalcMode.Manual;` —— 可顯著提升執行速度。 +- **釋放物件**(`workbook.Dispose()`),若在迴圈中處理大量檔案,以釋放原生資源。 +- **記錄操作**——特別是在生產管線中——以便追蹤處理了哪些檔案,並及早捕捉失敗。 + +--- + +## 結論 + +現在你已了解如何使用 Aspose.Cells 在 C# 中**how to duplicate pivot** 樞紐分析表,並見識了從 **load excel workbook c#** 到 **excel automation copy rows** 的完整工作流程,最後儲存結果。此範例獨立完整、可直接執行,且可延伸以處理多個樞紐分析表、受保護檔案或跨活頁簿的複製。 + +接下來的步驟?試著調整腳本以: + +- 以程式方式重新整理複製的樞紐分析表 (`pivotTable.RefreshData();`)。 +- 將複製的區域匯出為 CSV 供後續處理。 +- 將程式碼整合至 ASP.NET Core API,讓使用者上傳檔案後即時取得複製樞紐分析表的版本。 + +祝程式開發順利,願你的 Excel 自動化永遠順暢! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/row-and-column-management/_index.md b/cells/hongkong/net/row-and-column-management/_index.md index de37bb481b..6616cfe0a6 100644 --- a/cells/hongkong/net/row-and-column-management/_index.md +++ b/cells/hongkong/net/row-and-column-management/_index.md @@ -68,6 +68,8 @@ 了解如何使用 Aspose.Cells for .NET 刪除 Excel 中的一行。本逐步指南涵蓋了先決條件、程式碼匯入以及無縫資料操作的詳細演練。 ### [在 Aspose.Cells .NET 中刪除多行](./delete-multiple-rows-aspose-cells/) 學習使用 Aspose.Cells for .NET 在 Excel 中刪除多行。這個詳細的逐步指南涵蓋了先決條件、編碼範例和開發人員常見問題。 +### [使用 Aspose.Cells for .NET 刪除行 – 在 Excel 中保護標題列](./aspose-cells-delete-rows-protect-header-row-in-excel/) +了解如何使用 Aspose.Cells for .NET 刪除 Excel 中的資料列,同時保留標題列不被刪除的步驟。 ### [在 Aspose.Cells .NET 中插入列](./insert-column-aspose-cells/) 了解如何使用 Aspose.Cells for .NET 在 Excel 中插入列。按照我們簡單的分步指南無縫添加新列。非常適合 .NET 開發人員。 ### [在 Aspose.Cells .NET 中插入一行](./insert-row-aspose-cells/) diff --git a/cells/hongkong/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/hongkong/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..d28cadc9ad --- /dev/null +++ b/cells/hongkong/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells 刪除列,同時保護標題列。了解如何取得第一個表格,並在 C# 中安全地刪除 Excel 表格的列。 +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: zh-hant +og_description: Aspose Cells 刪除列時保護表頭列。了解如何檢索第一個表格並在 C# 中安全刪除 Excel 表格列。 +og_title: Aspose Cells 刪除行 – 保護 Excel 表頭列 +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells 刪除列 – 保護 Excel 中的標題列 +url: /zh-hant/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Protect Header Row in Excel + +有沒有試過 **aspose cells delete rows** 只想刪除表格中的資料列,結果卻把標題列也刪掉了?這是以程式方式操作 Excel 工作表時常見的陷阱。本文將示範一個完整、可直接執行的解決方案,**保護標題列**,教你如何 **retrieve first table**,以及安全地 **delete Excel table rows** 而不破壞結構。 + +我們會從載入活頁簿開始,說明 Aspose 在你嘗試孤立標題列時會拋出的例外。完成後,你將得到一套可以直接套用到任何使用 Aspose.Cells 的 .NET 專案的可靠模式。 + +--- + +## What You’ll Need + +- **Aspose.Cells for .NET**(v23.12 或更新版本)— 讓你在未安裝 Office 的環境下操作 Excel 檔案的函式庫。 +- 基本的 C# 開發環境(Visual Studio、Rider,或 `dotnet` CLI)。 +- 一個 Excel 檔案(`TableWithHeader.xlsx`),內含至少一個 **ListObject**(Excel 表格),且標題列位於第一列。 + +除 Aspose.Cells 之外,無需其他 NuGet 套件。 + +--- + +## Step 1: Load the Workbook and Retrieve the First Table + +首先必須開啟活頁簿並取得要修改的表格,這也是 **retrieve first table** 關鍵所在。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**為什麼這很重要:** +- `Workbook` 能在不安裝 Excel 的情況下讀取檔案。 +- `worksheet.ListObjects[0]` 是最直接的 **retrieve first table** 方式;若工作表有多個表格,可自行迭代或使用表格名稱。 + +> **小技巧:** 若不確定工作表是否真的包含表格,先檢查 `worksheet.ListObjects.Count`,可避免 `IndexOutOfRangeException`。 + +--- + +## Step 2: Protect Header Row While Deleting Rows + +接下來就是核心:**aspose cells delete rows** 同時不刪除標題列。Aspose 的 `DeleteRows` 方法接受零基礎的起始索引與刪除筆數。若嘗試刪除標題列(第 0 列),會拋出例外,這正是我們想避免的情況。 + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**程式邏輯說明:** + +| 步驟 | 原因 | +|------|------| +| `table.DeleteRows(1, 2);` | 索引 1 指向 **第二** 列(第一筆資料列)。刪除兩列即移除 Excel 中的第 2‑3 列,標題列(第 1 列)保持不變。 | +| `catch (Exception ex)` | Aspose 只在操作會使標題孤立時拋出例外。捕捉後可記錄友善訊息,避免程式當機。 | +| `Save` | 儲存變更後即可開啟 `Result.xlsx`,確認標題仍在。 | + +> **如果真的需要刪除標題列該怎麼做?** +> 在刪除前設定 `table.ShowHeaders = false;`,或直接刪除整個表格再重新建立。但在大多數商業情境下,你會想 **protect header row**。 + +--- + +## Step 3: Verify the Result – Expected Output + +執行程式後,開啟 `Result.xlsx`,你會看到: + +- 第一列仍保留原本的欄位標題。 +- 第 2‑3 列(我們目標的列)已消失,剩餘資料向上移動。 + +主控台會顯示: + +``` +Rows deleted successfully. +``` + +若不小心嘗試刪除標題列(例如 `table.DeleteRows(0, 1);`),則會輸出: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +這訊息證明 Aspose 內建的保護機制正如預期運作。 + +--- + +## Step 4: Alternative Ways to **Delete Excel Table Rows** + +有時需要更彈性的操作,例如依條件刪除列或刪除不連續的列。以下提供兩個快速範例,皆能確保標題列安全。 + +### 4.1 Delete Rows by Data Filter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Delete Using a Range + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +兩段程式碼的起始索引皆不會低於 1,因而遵守 **protect header row** 原則。 + +--- + +## Step 5: Common Pitfalls & How to Avoid Them + +| 常見問題 | 為何會發生 | 解決方式 | +|----------|------------|----------| +| 不小心刪除標題列 | 使用 `0` 作為起始索引 | 資料列一定從 `1` 開始,或先檢查 `table.ShowHeaders`。 | +| 工作表沒有表格時拋出 `IndexOutOfRangeException` | 假設表格一定存在 | 在存取 `[0]` 前先確認 `worksheet.ListObjects.Count > 0`。 | +| 變更未儲存 | 忘記呼叫 `Save` | 修改完畢後務必呼叫 `workbook.Save`。 | +| 中間刪除列導致索引移位,造成遺漏 | 正向迭代同時刪除 | **倒序** 迭代或先收集要刪除的列再一次處理。 | + +--- + +## Step 6: Put It All Together – Full Working Example + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +執行此程式,開啟 `Result.xlsx`,即可看到標題列保持不變,而目標列已被移除。這就是 **完整、獨立** 的 **aspose cells delete rows** 解決方案,同時不犧牲標題列。 + +--- + +## Conclusion + +我們示範了如何在 **aspose cells delete rows** 時 **protect header row**,以及如何 **retrieve first table**,並提供多種安全 **delete excel table rows** 的方式。重點整理如下: + +- 刪除時一定從索引 1 開始,以保留標題列。 +- 使用 `try/catch` 處理 Aspose 內建的保護例外。 +- 操作前先確認表格是否存在,條件式刪除時建議倒序迭代。 + +想更進一步嗎?可以結合 **Aspose Cells** 的樣式 API,在刪除前先為即將移除的列加上顏色標記,或將此流程自動化套用到多個工作表。可能性無限,而你現在已擁有可靠的基礎模式。 + +如果本教學對你有幫助,請給個讚、分享給同事,或在下方留言分享你的特殊案例解法。祝開發順利! + +--- + +![Aspose Cells Delete Rows 範例 – 標題列已保護](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/hongkong/net/saving-and-exporting-excel-files-with-options/_index.md index 978ebb520a..4a453459ec 100644 --- a/cells/hongkong/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/hongkong/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells for .NET 為開發人員提供了強大的工具來管理 .NET 應 了解如何使用 Aspose.Cells for .NET 以程式設計方式在 Excel 文件中指定文件屬性(如版本、作者和標題),並提供逐步說明。 ### [匯出時修剪前導空白行和列](./trimming-leading-blank-rows-and-columns/) 使用 Aspose.Cells for .NET 修剪前導空白行和列,簡化您的 CSV 匯出。清潔數據僅需幾步之遙。 +### [如何在 C# 中儲存工作簿 – 完整的 Excel 自動化指南](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +了解如何使用 Aspose.Cells for .NET 在 C# 中完整保存工作簿,實現 Excel 自動化的全流程指南。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/hongkong/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..ec6b30ddfb --- /dev/null +++ b/cells/hongkong/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-22 +description: 如何在 C# 中使用 Aspose.Cells 儲存工作簿——逐步指南,涵蓋如何載入 Excel、建立工作表、重用工作表及產生報告。 +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: zh-hant +og_description: 如何在 C# 中使用 Aspose.Cells 儲存工作簿。學習如何載入 Excel、建立工作表、重用工作表,以及在單一教學中產生報表。 +og_title: 如何在 C# 中儲存工作簿 – 完整 Excel 自動化指南 +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: 如何在 C# 中儲存工作簿 – 完整的 Excel 自動化指南 +url: /zh-hant/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中儲存工作簿 – 完整 Excel 自動化指南 + +有沒有想過 **如何在 C# 中儲存工作簿**,在處理完資料後把檔案寫回磁碟?你並不孤單。大多數開發者都會遇到報表在螢幕上看起來完美,卻無法寫入檔案的窘境。在本教學中,我們將示範一個完整的範例,不僅說明 **如何儲存工作簿**,還涵蓋 **如何載入 Excel**、**如何建立工作表**、**如何重複使用工作表**,以及 **如何產生報表**——全部使用 Aspose.Cells。 + +把它想像成一次咖啡休息的聊天,我會從筆記型電腦中抽出程式碼,逐行說明。完成後,你將擁有一個可執行的程式,能載入範本、透過 SmartMarker 注入資料、重複使用既有的 Detail 工作表名稱,最後將檔案寫入指定資料夾。沒有神祕,只要一步步跟著做即可複製貼上。 + +## 你需要的環境 + +- **Aspose.Cells for .NET**(截至 2026 年的最新版本)。可使用 `Install-Package Aspose.Cells` 從 NuGet 取得。 +- .NET 開發環境(Visual Studio、Rider,或安裝 C# 擴充功能的 VS Code 都可以)。 +- 一個名為 `MasterTemplate.xlsx` 的基本 Excel 範本,放在你可控的資料夾內。 +- 基本的 C# 知識——只要寫過一次 `Console.WriteLine` 就足夠。 + +> **專業小技巧:** 將範本放在獨立的 *Resources* 資料夾,並將其屬性設為「Copy if newer」,如此在不同建置之間路徑都能保持一致。 + +現在,讓我們深入程式碼。 + +## 步驟 1:如何載入 Excel – 開啟範本工作簿 + +首先要把工作簿載入記憶體。Aspose.Cells 只需要一行程式碼,但了解背後原因有助於日後除錯。 + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **為什麼重要:** 載入工作簿後,你才能存取範本內的每個工作表、樣式與命名範圍。若找不到檔案,Aspose 會拋出 `FileNotFoundException`,請務必檢查路徑是否正確。 +- **例外情況:** 若範本有設定密碼,請在 `Workbook` 建構子中傳入密碼:`new Workbook(path, new LoadOptions { Password = "pwd" })`。 + +## 步驟 2:如何重複使用工作表 – 設定 SmartMarker 選項 + +SmartMarker 可以自動建立新的 Detail 工作表,但你可能已經有一個叫 **Detail** 的工作表。為避免衝突,我們要告訴處理器重複使用該名稱。 + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **為什麼重要:** 若不設定此選項,Aspose 會在名稱後加上數字後綴(例如 “Detail1”),這可能會破壞下游的巨集或公式,因為它們預期固定的工作表名稱。 +- **如果工作表不存在呢?** Aspose 會自動為你建立——因此同一段程式碼在有或沒有該工作表時皆可運作。 + +## 步驟 3:如何建立工作表 – 準備資料來源 + +雖然此處我們沒有手動新增工作表,但你提供給 SmartMarker 的資料會決定是否需要建立新工作表。讓我們建立一個簡易的匿名物件,模擬訂單清單。 + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **為什麼重要:** SmartMarker 會掃描範本中的標記,如 `&=Header` 與 `&=Items.Id`。`orderData` 的結構必須與這些標記完全對應,否則處理器會靜默跳過。 +- **變化寫法:** 若資料來源是資料庫,請將匿名型別換成 DTO 清單或 `DataTable`。處理器同樣支援這兩種型別。 + +## 步驟 4:如何產生報表 – 處理 SmartMarker + +現在將資料綁定到範本。處理器會走訪第一個工作表,取代標記,並建立 Detail 工作表。 + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **為什麼重要:** 這一行程式碼完成了大部分工作——填入標頭、遍歷 `Items`,同時遵循先前設定的 `DetailSheetNewName`。 +- **常見問題:** *如果有多個工作表都有標記該怎麼辦?* 只要對每個工作表分別呼叫 `SmartMarkerProcessor.Process` 即可。 + +## 步驟 5:如何儲存工作簿 – 將結果寫回磁碟 + +最後,我們把修改過的工作簿寫回磁碟。這就是 **如何儲存工作簿** 真正發揮作用的時刻。 + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **為什麼重要:** `Save` 方法支援多種格式(`.xlsx`、`.xls`、`.csv`、`.pdf` 等)。預設會寫入 Excel 檔案,但你也可以傳入 `SaveOptions` 物件以變更輸出格式。 +- **例外情況:** 若目標檔案正被 Excel 開啟,`Save` 會拋出 `IOException`。請確保關閉所有開啟的實例,或在每次執行時使用唯一的檔名。 + +![如何在 C# 中儲存工作簿範例](/images/how-to-save-workbook-csharp.png "如何在 C# 中儲存工作簿 – 流程視覺概覽") + +### 完整可執行範例 + +將所有片段組合起來,以下是一個可自行編譯執行的 Console 應用程式: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**預期輸出:** 執行後,你會在 `YOUR_DIRECTORY` 中看到 `SmartMarkerWithDupDetail.xlsx`。打開它,你應該會看到: + +- 原始標頭已被填入「Orders」。 +- 一個新的(或重複使用的)工作表 **Detail**,其中包含兩列資料:`Id=1, Qty=5` 與 `Id=2, Qty=3`。 + +如果 **Detail** 工作表本來就存在,其內容會被新資料覆寫——不會產生多餘的工作表。 + +## 常見問題 (FAQ) + +| 問題 | 解答 | +|----------|--------| +| *我可以改存成 PDF 而不是 XLSX 嗎?* | 可以。將 `workbook.Save("file.xlsx")` 改為 `workbook.Save("file.pdf", SaveFormat.Pdf);`。 | +| *如果我的範本有多個 SmartMarker 區段該怎麼辦?* | 在每個包含標記的工作表上呼叫 `SmartMarkerProcessor.Process`,或傳入一組對應每個區段的資料物件集合。 | +| *有沒有辦法在 Detail 工作表上追加資料而不是覆寫?* | 使用 `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;`(在較新版本的 Aspose 中提供)。 | +| *Workbook 需要手動釋放嗎?* | `Workbook` 類別實作了 `IDisposable`。建議使用 `using` 區塊來確保資源正確釋放。 | + +## 結論 + +我們已完整說明 **如何在 C# 中儲存工作簿**,從頭到尾示範了整個流程:**如何載入 Excel**、**如何建立工作表**(透過 SmartMarker 隱式完成)、**如何重複使用工作表**,以及 **如何產生報表**。這段程式碼可直接放入任何 .NET 專案,說明也提供了足夠的背景知識,讓你能將其套用到更複雜的情境——例如多工作表報表、條件格式化,或匯出成 PDF。 + +準備好接受下一個挑戰了嗎?試著加入一個圖表來視覺化訂單數量,或將輸出格式改成 CSV 以供後續處理。載入、處理、儲存的原則始終如一,你會發現自己在許多報表任務中反覆使用這個模式。 + +如果遇到問題或有想法想分享,歡迎留下評論。祝程式開發愉快,盡情體驗**儲存工作簿**的順暢體驗吧! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/smart-markers-dynamic-data/_index.md b/cells/hongkong/net/smart-markers-dynamic-data/_index.md index 8e23af9153..83c4c34641 100644 --- a/cells/hongkong/net/smart-markers-dynamic-data/_index.md +++ b/cells/hongkong/net/smart-markers-dynamic-data/_index.md @@ -72,7 +72,7 @@ Aspose.Cells Smart Markers 還支援匿名類型,無需預先定義結構即 透過我們的逐步指南了解如何在 Aspose.Cells for .NET 中使用圖像標記插入圖像!使用視覺效果有效增強您的 Excel 報表。 ### [使用智慧標記 Aspose.Cells 的匿名類型](./use-anonymous-types-smart-markers/) 了解如何在 Aspose.Cells 中使用帶有智慧標記的匿名類型在 .NET 中產生動態 Excel 報表。遵循我們的簡單指南。 -### [在 Aspose.Cells 智慧標記中套用複製樣式屬性](./copy-style-attribute-smart-markers/) +### [在智慧標記 Aspose.Cells 中套用複製樣式屬性](./copy-style-attribute-smart-markers/) 探索 Aspose.Cells for .NET 的強大功能,並學習如何在 Excel Smart Markers 中輕鬆套用複製樣式屬性。本綜合教程涵蓋了逐步說明。 ### [在智慧標記欄位 Aspose.Cells 中使用公式參數](./formula-parameter-smart-marker/) 學習使用 Aspose.Cells for .NET 在智慧標記中使用公式參數。輕鬆建立動態電子表格。 @@ -84,6 +84,8 @@ Aspose.Cells Smart Markers 還支援匿名類型,無需預先定義結構即 透過在逐步指南中使用智慧標記輕鬆處理嵌套對象,釋放 Aspose.Cells 的 Excel 報告潛力。 ### [使用智慧標記 Aspose.Cells 實現變數數組](./variable-array-smart-markers/) 釋放 Aspose.Cells 的強大功能。了解如何使用智慧標記逐步實現變數數組,以無縫產生 Excel 報表。 +### [如何使用 SmartMarker 在 C# 中生成 Excel 報告 – 完整指南](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +使用 Aspose.Cells for .NET SmartMarker,在 C# 中完整生成 Excel 報告的全程指南。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/hongkong/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..e067756f4a --- /dev/null +++ b/cells/hongkong/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-22 +description: 如何在 C# 中使用主從模板產生 Excel 報表。快速學習使用 C# 填充 Excel 模板,並利用 SmartMarker 產生可重複的工作表。 +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: zh-hant +og_description: 如何使用可重用模板在 C# 中產生 Excel 報表。此逐步指南會示範如何以主從資料填充 C# 的 Excel 模板。 +og_title: 如何在 C# 中生成 Excel 報表 – 完整 SmartMarker 教程 +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: 如何在 C# 中生成 Excel 報表 – 使用 SmartMarker 的完整指南 +url: /zh-hant/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中產生 Excel 報表 – 使用 SmartMarker 的完整指南 + +有沒有想過 **如何在 C# 中產生 Excel 報表**,而不必寫無盡的逐格程式碼?你並不是唯一有此疑問的人。大多數開發者在需要一份精緻、具多工作表且呈現主從關係的報表時(例如訂單與明細項目),常會卡關,卻又不想每次都重新發明輪子。 + +好消息是?只要有現成的 Excel 範本加上 Aspose.Cells 的 **SmartMarker** 引擎,你就能在幾行程式碼內 **populate Excel template C#**。在本教學中,我們將逐步示範真實情境、說明每一步的重要性,並提供一個完整、可直接執行的範例,讓你今天就能複製貼上使用。 + +> **你將得到:** 一份主從式 Excel 報表,每筆訂單會產生自己的工作表,全部由純 C# 物件驅動。無需手動迴圈處理儲存格,也不會有脆弱的公式——只有乾淨且易於維護的程式碼。 + +--- + +## 前置條件 + +Before we dive in, make sure you have: + +- **.NET 6.0**(或更新版本)已安裝 – 程式碼以 .NET 6 為目標,但同樣可在 .NET Framework 4.7+ 上執行。 +- **Aspose.Cells for .NET** NuGet 套件 (`Install-Package Aspose.Cells`) – 提供 `Workbook`、`SmartMarkerProcessor` 以及相關類別。 +- 一個名為 **MasterDetailTemplate.xlsx** 的 Excel 檔案,放置於 `YOUR_DIRECTORY`。它應在第一張工作表包含如 `{{Orders.OrderId}}` 的 SmartMarker 區塊,並在明細項目上有嵌套區塊 `{{Orders.Items.Prod}}`。 +- 對 C# 匿名型別有基本了解 – 我們將使用它來建模訂單與明細項目。 + +如果上述任一項目聽起來陌生,別擔心。我們稍後會提及替代方案(例如使用 EPPlus),但核心概念不變。 + +## 步驟 1:載入包含 SmartMarker 區塊的 Excel 範本 + +We first open the template file. Think of the template as a skeleton; SmartMarker will later flesh it out with real data. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**為什麼這很重要:** 透過將版面配置(範本)與資料(C# 物件)分離,設計師與開發者都能保持快樂。設計師可以在不觸碰程式碼的情況下調整字型、顏色或公式。 + +## 步驟 2:建立主從資料來源 + +Next, we create the data that will populate the template. For a typical order report, you have a collection of orders, each with its own collection of items. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **專業提示:** 若需在多個報表間重複使用,請改用強型別類別而非匿名型別。匿名型別的寫法讓範例更簡潔。 + +**為什麼這很重要:** SmartMarker 透過比對屬性名稱(`Orders`、`OrderId`、`Items`、`Prod`、`Qty`)與範本中的佔位符來運作。階層必須完全對應,否則引擎會跳過相關區段。 + +## 步驟 3:指示 SmartMarker 為每筆主記錄建立新工作表 + +By default SmartMarker writes all rows into a single sheet. We want each order on its own worksheet, which is perfect for printing or emailing per‑order PDFs later. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**為什麼這很重要:** `EnableRepeatingSheet` 免除手動複製工作表的需求。引擎會複製原始工作表、注入訂單資料,並自動重新命名工作表(通常使用第一欄的值)。 + +## 步驟 4:使用資料處理範本 + +Now we bind everything together. The `SmartMarkerProcessor` walks through the workbook, replaces tags, and creates new sheets as instructed. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**為什麼這很重要:** 這一行程式碼完成了繁重的工作——解析範本、遍歷集合、處理巢狀表格。它就是 **populate Excel template C#** 的核心,無需任何手動迴圈。 + +## 步驟 5:儲存完成的報表 + +Finally, write the populated workbook to disk. You can also stream it directly to an HTTP response for web apps. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**為什麼這很重要:** 儲存為檔案可得到可直接在 Excel 開啟、與利害關係人分享,或供後續流程(如 PDF 轉換)使用的實體成果。 + +## 完整可執行範例(直接複製貼上) + +Below is the complete program, including `using` directives and a `Main` method. Drop it into a console app, adjust the file paths, and run. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### 預期輸出 + +When you open `MasterDetailResult.xlsx` you’ll see: + +- **工作表 “Order_1”** – 包含訂單 1 的標頭以及產品 A 與 B 的兩筆資料列。 +- **工作表 “Order_2”** – 包含訂單 2 的標頭以及產品 C 的單筆資料列。 +- 原始範本中的所有公式、格式與圖表皆被保留。 + +![每筆訂單分別工作表的 Excel 報表 – 已填充活頁簿範例](/images/excel-report-example.png "產生的 Excel 報表(主從資料)") + +*圖片說明:已產生的 Excel 報表,每筆訂單分別在不同工作表,展示如何使用 C# 與 SmartMarker 產生 Excel 報表。* + +## 常見問題與邊緣案例 + +### 如果我需要一個靜態工作表(例如彙總)與重複工作表同時存在怎麼辦? + +僅在包含主區塊的工作表上將 `EnableRepeatingSheet = true` **設定**。其他工作表將保持不變,這樣你就能在原始範本中保留彙總頁面。 + +### 我可以使用 DataTable 取代匿名物件嗎? + +當然可以。SmartMarker 能與任何實作 `IEnumerable` 的物件一起使用。只要將匿名型別換成 `DataTable`,並確保欄位名稱與標籤相符即可。 + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### 如何變更產生工作表的命名慣例? + +實作自訂的 `ISmartMarkerSheetNaming` 介面(或在處理完畢後操作 `workbook.Worksheets`)。大多數開發者會直接根據儲存格的值重新命名工作表: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### 如果我的範本使用不同的佔位符語法怎麼辦? + +SmartMarker 允許透過 `SmartMarkerOptions` 設定自訂分隔符。例如,改用 `<< >>` 取代 `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## 擴展此方法的技巧 + +- **在記憶體中快取範本**,如果每個請求需要產生多份報表;每次從磁碟載入會增加延遲。 +- **結合 PDF 轉換**(`workbook.Save("report.pdf", SaveFormat.Pdf)`)以產生適合電郵的輸出。 +- **參數化檔案路徑**,使用設定檔或環境變數,使解決方案在開發、測試與正式環境間皆可移植。 +- **單元測試資料層**,將其獨立測試;SmartMarker 本身是確定性的,你只需驗證輸入資料符合預期的結構。 + +## 結論 + +我們已完整說明 **如何在 C# 中產生 Excel 報表**,從載入支援 SmartMarker 的範本,到儲存具主從關係的多工作表活頁簿。只要以少量程式碼 **populate Excel template C#**,即可避免脆弱的逐格程式邏輯,並讓設計師自由打造最終外觀。 + +接下來,你可以探索: + +- 使用 **populate Excel template C#** 搭配會依工作表自動更新的圖表。 +- 將 **excel smartmarker c#** 整合至 ASP.NET Core,以直接串流報表至瀏覽器。 +- 自動化 **c# excel automation** 工作流程,從 API 或資料庫取得資料。 + +試試看,微調範本,便能快速將原始資料轉換為精緻的 Excel 報表。有任何問題或酷炫的使用案例嗎?在下方留下評論吧——祝開發愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hongkong/net/tables-and-lists/_index.md b/cells/hongkong/net/tables-and-lists/_index.md index b75f55f584..9dd6c081dc 100644 --- a/cells/hongkong/net/tables-and-lists/_index.md +++ b/cells/hongkong/net/tables-and-lists/_index.md @@ -40,7 +40,7 @@ Aspose.Cells for .NET 最強大的功能之一是它能夠輕鬆讀取和寫入 ### [使用 Aspose.Cells 在 Excel 中建立清單對象](./creating-list-object/) 請依照本詳細指南使用 Aspose.Cells for .NET 在 Excel 中建立清單物件。掌握簡單的資料管理和計算。 ### [使用 Aspose.Cells 在 Excel 中格式化清單對象](./formatting-list-object/) -了解如何使用 Aspose.Cells for .NET 在 Excel 中格式化清單物件。輕鬆建立和設計表格。 +了解如何使用 Aspose.Cells for .NET 在 Excel 中格式化清單對象。輕鬆建立和設計表格。 ### [使用 Aspose.Cells 將表格轉換為 ODS](./converting-table-to-ods/) 透過我們簡單的逐步教程,學習使用 Aspose.Cells for .NET 將 Excel 表格轉換為 ODS。 ### [在 Excel 中將表格轉換為區域](./converting-table-to-range/) @@ -51,6 +51,8 @@ Aspose.Cells for .NET 最強大的功能之一是它能夠輕鬆讀取和寫入 釋放 Aspose.Cells for .NET 的強大功能。透過本詳細的分步指南學習如何讀取和寫入具有查詢資料來源的表。 ### [在 Excel 中設定表格或清單的註釋](./setting-comment-of-table-or-list/) 透過我們簡單的逐步指南了解如何使用 Aspose.Cells for .NET 為 Excel 中的表格設定註解。 +### [使用 C# 建立 Excel 表格 – 步驟指南](./create-excel-table-in-c-step-by-step-guide/) +透過本詳細的逐步教學,學習如何使用 C# 與 Aspose.Cells 在 Excel 中建立表格。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hongkong/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/hongkong/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..cdb7ddcd77 --- /dev/null +++ b/cells/hongkong/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: 快速在 C# 中建立 Excel 表格。學習如何新增表格、定義表格範圍、隱藏表格標題列,以及停用表格篩選,並附上完整程式碼範例。 +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: zh-hant +og_description: 在 C# 中建立 Excel 表格,示範清晰。只需幾行程式碼,即可學會新增表格、設定表格範圍、隱藏表頭及停用篩選。 +og_title: 在 C# 中建立 Excel 表格 – 完整程式設計指南 +tags: +- Aspose.Cells +- C# +- Excel Automation +title: 在 C# 中建立 Excel 表格 – 步驟教學 +url: /zh-hant/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中建立 Excel 表格 – 步驟指南 + +有沒有需要使用 C# 程式化 **create Excel table**?當你掌握正確步驟時,建立 Excel 表格變得輕而易舉。在本教學中,我們將逐步示範完整、可執行的範例,說明 **how to add table**、**define table range**、**hide table header**,甚至 **disable table filter** ——全部在 IDE 中完成。 + +如果你曾因 AutoFilter 介面在不需要時彈出而感到困擾,這裡正是你的解決之道。完成本指南後,你將擁有一段可直接執行的程式碼,會產生名為 *TableNoFilter.xlsx* 的乾淨活頁簿,並且了解每一行程式碼的意義。 + +## 您將學習到 + +- 如何使用 Aspose.Cells 從頭 **create Excel table**。 +- **define table range** 的確切語法(本例為 A1:D5)。 +- 如何啟用標題列以顯示內建的篩選 UI。 +- **hide table header** 與 **disable table filter** 的技巧,讓不需要的 UI 消失。 +- 完整、可直接複製貼上的 C# 程式碼,今天就能執行。 + +### 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦相容 .NET Framework 4.7+)。 +- 透過 NuGet 安裝 Aspose.Cells for .NET(`Install-Package Aspose.Cells`)。 +- 具備基本的 C# 與 Visual Studio(或其他 IDE)使用經驗。 + +--- + +## 步驟 1:設定專案並匯入命名空間 + +在能 **create Excel table** 之前,你需要一個參考 Aspose.Cells 的 Console 專案。開啟終端機並執行: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +接著開啟 *Program.cs*,加入必要的 `using` 陳述式: + +```csharp +using System; +using Aspose.Cells; +``` + +這些匯入讓你可以使用 `Workbook`、`Worksheet`、`CellArea` 與 `ListObject` 等類別,進而完成本教學的所有操作。 + +## 步驟 2:初始化新 Workbook 並取得第一個 Worksheet + +建立全新的活頁簿是第一步。把活頁簿想成 Excel 檔案的容器,而工作表則是我們放置表格的單一工作表。 + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **為什麼這很重要:** 全新 `Workbook` 會自動帶有一張空白工作表。透過 `Worksheets[0]` 取得預設工作表,免除手動建立工作表的程序。 + +## 步驟 3:定義表格範圍 (A1:D5) + +在 Excel 中,*表格* 位於一個矩形區塊內。`CellArea` 結構讓我們精確指定這個區塊。本步驟示範 **define table range** 為 A1 到 D5。 + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **小技巧:** 若需要動態範圍,可根據資料長度計算 `endRow` 與 `endColumn`。零基索引是常見的「多或少一」錯誤來源,務必再次確認數值。 + +## 步驟 4:加入表格並啟用標題列 + +接下來就是教學的核心:**how to add table** 到工作表。`ListObjects` 集合負責管理表格,將 `ShowHeaders = true` 會自動產生 AutoFilter UI。 + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **說明:** +> - `Add(tableRange, true)` 會在指定範圍內建立新的 `ListObject`(即 Excel 表格)。 +> - `true` 參數告訴 Aspose.Cells 將範圍的第一列視為標題列。 +> - 設定 `ShowHeaders` 為 `true` 會顯示標題,並觸發內建的篩選 UI。 + +此時若開啟產生的活頁簿,你會看到每個欄位標題上都有篩選箭頭,表格已完整呈現。 + +## 步驟 5:隱藏標題列並停用 AutoFilter + +有時只想要純資料而不需要 UI 雜訊。或許你正在匯出一份乾淨的報表,根本不需要篩選功能。以下示範 **hide table header** 與 **disable table filter** 的作法: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **為什麼要這麼做:** +> - `ShowHeaders = false` 會移除可視的標題列,讓表格變成純資料區塊。 +> - 設定 `AutoFilter = null` 會清除隱藏的篩選物件,確保不會留下任何篩選邏輯,這正是 **disable table filter** 的核心。 + +## 步驟 6:將活頁簿儲存至磁碟 + +最後,將檔案寫入你指定的位置。把 `"YOUR_DIRECTORY"` 替換成實際的路徑即可。 + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +執行程式後,你應該會看到: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +開啟檔案後會發現工作表只剩資料區塊(無標題、無篩選箭頭)。這就是從 **create Excel table** 到 **disable table filter** 的完整流程。 + +--- + +## 完整可執行範例(直接複製貼上) + +以下提供整個程式碼,直接編譯即可。只要把佔位目錄換成有效路徑即可。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**預期結果:** 產生一個名為 *TableNoFilter.xlsx* 的檔案,內容為 A1:D5 的純資料範圍,且沒有可見的標題列與篩選下拉選單。 + +--- + +## 常見問題與進階情境 + +### 如果需要在同一工作表中放置多個表格該怎麼辦? + +只要在 **步驟 3** 再建立一個新的 `CellArea`,然後再呼叫一次 `ListObjects.Add` 即可。每個表格都有獨立的標題與篩選設定,你可以選擇隱藏其中一個而保留另一個可見。 + +### 在隱藏標題之前,我可以先為表格套用樣式(條紋列、顏色)嗎? + +當然可以。`ListObject` 提供 `TableStyleType` 屬性。例如: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +先套用樣式,再隱藏標題,視覺格式仍會保留。 + +### 如果我想保留標題列,但只想隱藏篩選箭頭? + +將 `ShowHeaders = true`(保留標題列),然後清除篩選: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +如此即可滿足 **disable table filter** 的需求,同時保留欄位標籤。 + +### 這只適用於 .xlsx 檔案嗎? + +Aspose.Cells 會根據 `Save` 時傳入的副檔名自動偵測格式。除了 `.xlsx`,你也可以輸出為 `.xls`、`.csv`,甚至以不同副檔名輸出為 `.pdf`。 + +--- + +## 結論 + +我們已完整說明如何在 C# 中使用 Aspose.Cells **create Excel table**,從 **define table range**、**hide table header** 到 **disable table filter**,整段程式碼簡潔、易讀,適合直接投入生產環境。未來你可以探索 **how to add table** 搭配動態資料、套用自訂樣式,或將同一本活頁簿匯出為 PDF。所有這些主題皆以本教學為基礎,歡迎自行實驗與調整,將程式碼套用到自己的專案中。 + +有任何想法或技巧想分享嗎?歡迎在下方留言,祝 coding 愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/converting-excel-files-to-other-formats/_index.md b/cells/hungarian/net/converting-excel-files-to-other-formats/_index.md index c4ac036ae7..1dba974315 100644 --- a/cells/hungarian/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/hungarian/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Tanulja meg, hogyan konvertálhat Excel-fájlokat PDF/A-1a formátumba archivál Tanuld meg, hogyan konvertálhatsz JSON fájlokat CSV fájlokká programozottan .NET-ben az Aspose.Cells segítségével. Kövesd lépésről lépésre szóló útmutatónkat a zökkenőmentes adatátalakítás érdekében. ### [Excel fájlok programozott konvertálása PPTX formátumba .NET-ben](./converting-excel-file-to-pptx/) Tanulja meg, hogyan konvertálhat Excel-fájlt PowerPoint-bemutatóvá (PPTX) programozottan az Aspose.Cells for .NET használatával ebből a lépésről lépésre szóló útmutatóból. +### [Excel exportálása PowerPointba – Teljes C# útmutató](./export-excel-to-powerpoint-complete-c-guide/) +Ismerje meg, hogyan exportálhat Excel-fájlokat PowerPoint prezentációvá teljes körű C# példákkal az Aspose.Cells for .NET segítségével. ### [HTML CrossType megadása a kimeneti HTML-ben programozottan .NET-ben](./specifying-html-crosstype-in-output-html/) Tanuld meg, hogyan adhatsz meg HTML CrossType-ot az Aspose.Cells for .NET-ben. Kövesd lépésről lépésre szóló útmutatónkat az Excel-fájlok precíz HTML-be konvertálásához. ### [Numbers táblázatok programozott olvasása .NET-ben](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ Ebben a részletes oktatóanyagban megtudhatja, hogyan menthet munkafüzetet Str leírás: Ebben a részletes oktatóanyagban megtudhatja, hogyan követheti nyomon a dokumentumkonverzió előrehaladását programozottan az Aspose.Cells for .NET használatával. ### [Dokumentumkonverziós folyamatkövetés TIFF formátumban programozottan .NET-ben](./tracking-document-conversion-progress-for-tiff/) Tanuld meg, hogyan követheted nyomon a TIFF konverzió előrehaladását programozottan az Aspose.Cells for .NET használatával lépésről lépésre bemutató útmutatónkkal. Fejleszd dokumentumkezelési készségeidet. +### [Nyomtatási terület beállítása Excelben és exportálás PowerPointba – Lépés‑ről‑lépésre útmutató](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Ismerje meg, hogyan állíthat be nyomtatási területet Excelben, majd exportálhatja a munkalapot PowerPoint diára az Aspose.Cells for .NET segítségével. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/hungarian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..1d77f2f4fd --- /dev/null +++ b/cells/hungarian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: Tanulja meg, hogyan exportálja az Excelt PowerPointba, állítsa be az + Excel nyomtatási területét, és mentse az Excelt PPTX formátumban szerkeszthető diagramokkal + és OLE-objektumokkal, mindezt néhány lépésben. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: hu +og_description: Gyorsan exportálja az Excelt PowerPointba. Ez az útmutató megmutatja, + hogyan állítható be a nyomtatási terület az Excelben, és hogyan menthető az Excel + PPTX formátumban szerkeszthető diagramokkal és OLE-objektumokkal. +og_title: Excel exportálása PowerPointba – Teljes C# útmutató +tags: +- Aspose.Cells +- C# +- Office Automation +title: Excel exportálása PowerPointba – Teljes C# útmutató +url: /hu/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel exportálása PowerPointba – Teljes C# útmutató + +Szükséged van **Excel exportálására PowerPointba**? Jó helyen jársz. Akár heti értékesítési prezentációt építesz, akár jelentéskészítő folyamatot automatizálsz, egy Excel munkalap PowerPoint diavetítésévé alakítása órákat takaríthat meg a másolás‑beillesztés munkájában. + +Ebben az útmutatóban egy gyakorlati példán keresztül vezetünk végig, amely nem csak **excel exportálására PowerPointba**, hanem azt is megmutatja, hogyan **állíts be nyomtatási területet Excelben** és **mentsd el az Excelt pptx‑ként**, hogy a létrejövő diák a diagramokat és OLE objektumokat teljesen szerkeszthető formában tartsák. A végére egy azonnal futtatható C# programod lesz, amely professzionális megjelenésű `.pptx` fájlt hoz létre teljes manuális beavatkozás nélkül. + +## Amire szükséged lesz + +- **.NET 6+** (bármely friss .NET futtatókörnyezet működik; a kód C# 10 szintaxist használ) +- **Aspose.Cells for .NET** – a könyvtár, amely az exportot hajtja végre. Letöltheted a NuGet‑ről (`Install-Package Aspose.Cells`). +- Egy Excel munkafüzet, amely legalább egy diagramot és/vagy OLE objektumot tartalmaz (a `ChartAndOle.xlsx` mintafájl a kódban van használva). +- Kedvenc IDE‑d (Visual Studio, Rider vagy VS Code – bármi, ami neked megfelel). + +Ennyi. Nincs szükség COM interopra, Office telepítésre sem. + +> **Miért érdemes könyvtárat használni?** +> A beépített Office Interop törékeny, szerveren Office‑ot igényel, és gyakran raszteres képeket eredményez, amikor valójában vektoros, szerkeszthető alakzatokra van szükség. Az Aspose.Cells elvégzi a nehéz munkát, és mindent szerkeszthetővé tesz a PowerPointban. + +--- + +## 1. lépés: Az Excel munkafüzet betöltése + +Először betöltjük a forrásfájlt a memóriába. A `Workbook` osztály absztrahálja az egész Excel fájlt, és hozzáférést biztosít a munkalapokhoz, diagramokhoz és OLE objektumokhoz. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Miért fontos:** A munkafüzet betöltése az alap. Ha az útvonal hibás vagy a fájl sérült, a további folyamat nem fut le. A `try…catch` blokk barátságos hibajelzést ad a leállás helyett. + +--- + +## 2. lépés: Nyomtatási terület beállítása Excelben + +Az exportálás előtt általában korlátozni szeretnéd a kimenetet egy meghatározott tartományra. Itt jön képbe a **set print area excel**. Nyomtatási terület definiálásával pontosan megmondod az Aspose.Cells‑nek, mely cellák (és a hozzájuk tartozó objektumok) jelenjenek meg a dián. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro tipp:** Ha több munkalapod van, ismételd meg a `PrintArea` beállítást minden exportálni kívánt lapnál. Ha a nyomtatási terület nincs beállítva, az egész lap exportálódik, ami felnyúlhatja a PowerPoint fájlt. + +--- + +## 3. lépés: Exportálási beállítások konfigurálása – Diagramok és OLE szerkeszthetőek megtartása + +Az Aspose.Cells egy gazdag `ImageOrPrintOptions` objektumot kínál. Az `ExportChartObjects` és `ExportOleObjects` kapcsolók beállításával megőrizhetjük a diagramok vektoros jellegét és az OLE objektumok élő szerkeszthetőségét (például beágyazott Word dokumentumok vagy PDF‑ek). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Mi történik a háttérben?** +Amikor az `ExportChartObjects` értéke `true`, az Aspose a diagramot natív PowerPoint diagram alakzattá konvertálja, megőrizve a sorozatokat, tengelyeket és formázást. Ha az `ExportOleObjects` engedélyezve van, a beágyazott objektumok OLE keretként kerülnek beillesztésre, így a PowerPointban dupla‑kattintásra megnyílik az eredeti alkalmazás (Word, Excel stb.) szerkesztésre. + +--- + +## 4. lépés: A munkalap mentése szerkeszthető PowerPoint fájlként + +Most összekapcsoljuk a lépéseket. A `Save` metódus a beállított opciókkal írja a `.pptx` fájlt. Az eredmény egy diavetítés, ahol minden munkalap egy diát (vagy több diát, ha a nyomtatási terület több oldalra terjed) képez. + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Várt eredmény + +- **Fájl helye:** `C:\MyProjects\EditableChartOle.pptx` +- **Tartalom:** + - Egy dia, amely a `A1:H30` tartományt pontosan úgy mutatja, ahogy az Excelben látható. + - Minden diagram PowerPoint diagram objektum – kattints egy oszlopra, és szerkeszd az adatokat. + - OLE objektumok (pl. beágyazott Word dokumentum) közvetlenül a diáról nyithatók és szerkeszthetők. + +Ha megnyitod a PPTX‑et PowerPointban, egy tiszta diát látsz, amely teljesen szerkeszthető komponenseket tartalmaz – nincs raszteres képernyőfelvétel. + +--- + +## Szélsőséges esetek és variációk + +### Több munkalap → Több dia +Ha azt szeretnéd, hogy minden munkalap saját diát kapjon, egyszerűen iterálj a `workbook.Worksheets`‑en, és hívd meg a `Save`‑t egy `SheetToImageOptions`‑szel, amely egy adott lap indexet céloz. Az Aspose automatikusan új diát generál minden iterációhoz. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Nagy tartományok és teljesítmény +Exportálás egy hatalmas nyomtatási terület (pl. `A1:Z1000`) esetén növelheti a memóriahasználatot. Ennek mérséklésére fontold meg: +- A tartomány kisebb darabokra bontása és külön diákba exportálása. +- `WorkbookSettings` használata a `MemorySetting` növeléséhez, ha `OutOfMemoryException`-t kapsz. + +### Kompatibilitási aggályok +A generált PPTX működik a PowerPoint 2016‑os és újabb verzióival. Régebbi verziók is megnyithatják a fájlt, de elveszíthetik a fejlett diagramfunkciókat. Mindig teszteld a célzott Office verzióval, ha széles körben terjeszted a prezentációt. + +--- + +## Teljes működő példa (másolás‑beillesztés kész) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tipp:** Cseréld le a keménykódolt útvonalakat konfigurációs értékekre vagy parancssori argumentumokra a rugalmasabb eszköz érdekében. + +--- + +## Gyakran ismételt kérdések + +**K: Exportálhatok csak egy diagramot a környező cellák nélkül?** +V: Igen. Használd csak az `ExportChartObjects`‑t, és állítsd be a nyomtatási területet a diagram határoló tartományára. A diagram középre kerül a dián. + +**K: Mi van, ha a munkafüzet makrókat tartalmaz?** +V: Az Aspose.Cells a VBA makrókat figyelmen kívül hagyja exportálás közben. Ha makrófunkcióra van szükséged PowerPointban, azt PowerPoint VBA‑val vagy kiegészítőkkel kell újra létrehozni. + +**K: Működik ez Linuxon/macOS‑on?** +V: Természetesen. Az Aspose.Cells egy tiszta .NET könyvtár; amíg van .NET futtatókörnyezet, a kód platformfüggetlenül fut. + +--- + +## Összegzés + +Most megtanultad, hogyan **exportálj Excelből PowerPointba**, miközben pontosan **set print area excel** és **save excel as pptx** műveleteket végzel, teljesen szerkeszthető diagramokkal és OLE objektumokkal. A kulcsfontosságú lépések a munkafüzet betöltése, a nyomtatási terület meghatározása, az `ImageOrPrintOptions` konfigurálása, majd a PPTX mentése. + +- Több munkalap exportálása egyetlen prezentációba. +- Egyedi dia címek vagy jegyzetek programozott hozzáadása. +- A PPTX PDF‑re konvertálása terjesztéshez (használd a `SaveFormat.Pdf`‑et). + +Futtasd a kódot, finomítsd a nyomtatási területet, és nézd meg, ahogy az Excel adataid varázslatosan megjelennek PowerPointban – manuális másolás‑beillesztés nélkül. Ha problémába ütközöl, nézd meg az Aspose.Cells dokumentációját vagy hagyj megjegyzést alább. Boldog kódolást! + +![Diagram az Excel exportálásáról PowerPointba](/images/export-excel-to-powerpoint.png "Diagram az Excel exportálásáról PowerPointba") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/hungarian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..f4b2e122d0 --- /dev/null +++ b/cells/hungarian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-03-22 +description: Állítsd be a nyomtatási területet Excelben, és konvertáld az Excelt PowerPointba + szerkeszthető alakzatokkal. Tanuld meg, hogyan ismételd meg a címsort, hozz létre + PowerPointot Excelből, és exportáld az Excelt PPTX formátumba. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: hu +og_description: Állítsd be a nyomtatási területet Excelben, és konvertáld PowerPoint + diává szerkeszthető alakzatokkal. Kövesd ezt a teljes útmutatót a címsor ismétléséhez + és az Excel pptx formátumba exportálásához. +og_title: Nyomtatási terület beállítása Excelben – Exportálás PowerPointba oktató +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Nyomtatási terület beállítása Excelben és exportálás PowerPointba – Lépésről + lépésre útmutató +url: /hu/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Nyomtatási terület beállítása Excelben és exportálás PowerPointba – Teljes programozási útmutató + +Szükséged volt már arra, hogy **nyomtatási területet állíts be** egy Excel munkalapon, majd ezt a szeletet PowerPoint diára alakítsd? Nem vagy egyedül. Sok jelentéskészítő folyamatban ugyanazok az adatok, amelyek nyomtatásra jól néznek ki, prezentációban is meg kell jelenjenek, gyakran az első sor címként ismétlődik. A jó hír? Néhány C# sorral **excel to powerpoint konvertálást** hajthatunk végre, az összes szövegdobozt szerkeszthetővé tehetjük, és akár **cím sor ismétlését** is automatikusan megoldhatjuk. + +Ebben az útmutatóban mindent végigvesszünk: a nyomtatási terület beállításától a PPTX fájl létrehozásáig, amelyet közvetlenül PowerPointban szerkeszthetsz. A végére képes leszel **powerpoint from excel létrehozására**, az eredményt **export excel to pptx** formátumban exportálni, és ugyanazt a kódot bármely .NET projektben újra felhasználni. Nincs varázslat, csak világos lépések és egy teljes, futtatható példa. + +## Amire szükséged lesz + +Mielőtt belevágnánk, győződj meg róla, hogy a következők rendelkezésedre állnak: + +- **.NET 6.0** vagy újabb (az API .NET Framework‑del is működik) +- **Aspose.Cells for .NET** (az a könyvtár, amely biztosítja a `Workbook`, `ImageOrPrintOptions`, stb.) +- Egy alap C# IDE (Visual Studio, Rider vagy VS Code a C# kiegészítővel) +- Egy Excel fájl (`input.xlsx`), amely a exportálni kívánt adatokat tartalmazza + +Ennyi—nem kell más NuGet csomag az Aspose.Cells‑en kívül. Ha még nem adtad hozzá a könyvtárat, futtasd: + +```bash +dotnet add package Aspose.Cells +``` + +Most már készen állunk. + +## 1. lépés: A munkafüzet betöltése – az export kiindulópontja + +Az első dolog, amit meg kell tenned, hogy betöltsd azt a munkafüzetet, amelyik a diává alakítandó lapot tartalmazza. Gondolj a munkafüzetre, mint a forrásdokumentumra; nélküle semmi más nem számít. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Miért fontos:** A munkafüzet betöltése hozzáférést biztosít a munkalap-gyűjteményhez, az oldalbeállítási opciókhoz és az exportmotorhoz. Ha kihagyod ezt a lépést, nem tudod beállítani a **nyomtatási területet**, vagy ismételni bármely sort. + +> **Pro tipp:** Teszteléskor használj abszolút elérési utat, majd a termékben válts relatív vagy konfiguráció‑alapú útra. + +## 2. lépés: Exportálási beállítások konfigurálása – Szövegdobozok és alakzatok szerkeszthetőek maradnak + +PowerPointba exportáláskor valószínűleg szerkeszthető diát szeretnél. Az Aspose.Cells ezt a `ImageOrPrintOptions` segítségével szabályozza. Az `ExportTextBoxes` és `ExportShapeObjects` `true` értékre állítása azt mondja a könyvtárnak, hogy őrizze meg ezeket az objektumokat natív PowerPoint elemekként, a képpé laposítás helyett. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Miért fontos:** Ha valaha **excel to powerpoint konvertálást** végzel, majd manuálisan finomítod a diát, ez a beállítás megspórolja a szövegdobozok újbóli létrehozását. Emellett biztosítja, hogy az alakzatok (pl. nyilak vagy diagramok) vektoros objektumok maradjanak, amelyeket átméretezhetsz. + +## 3. lépés: Nyomtatási terület beállítása és a cím sor ismétlése + +Most jön a tutorial szíve: **nyomtatási terület beállítása** és az első sor ismétlése minden nyomtatott oldalon (vagy ebben az esetben az exportált dián). A nyomtatási terület megmondja az Excelnek, mely cellákat vegye figyelembe nyomtatáskor – vagy a mi esetünkben exportáláskor. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Miért fontos:** Az exportot `A1:G20`‑ra korlátozva elkerülöd a hatalmas üres tartományok beolvasását, ami felgyorsítja a konverziót és tisztább diát eredményez. A `PrintTitleRows` sor pedig az első sort fejlécként kezeli – pontosan azt, amit akkor akarsz, amikor **cím sor ismétlését** valósítod meg egy prezentációban. + +> **Különleges eset:** Ha az adataid a 2. sorban kezdődnek, módosítsd a tartományt ennek megfelelően (pl. `PrintTitleRows = "$2:$2"`). + +## 4. lépés: A munkalap mentése PowerPoint fájlként + +Végül a diát leírjuk a lemezre. A `Save` metódus megkapja a célfájlnév‑t és a korábban konfigurált opciókat. Az eredmény egy PPTX fájl, amely szerkeszthető szövegdobozokat és alakzatokat tartalmaz, készen áll a PowerPointban való megnyitásra. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Mit fogsz látni:** Nyisd meg a `SheetWithEditableShapes.pptx`‑t PowerPointban. Az első sor címként jelenik meg, az `A1:G20` tartomány összes cellája megjelenik, és az Excelben hozzáadott alakzatok továbbra is mozgathatók és szerkeszthetők. Nincsenek raszteres képek – csak natív PowerPoint objektumok. + +## Teljes működő példa – Az összes lépés egyben + +Az alábbi program teljes, másolás‑beillesztés‑kész kód. Futtasd konzolalkalmazásként vagy ágyazd be bármely nagyobb megoldásba. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Várható kimenet:** A program futtatása után a konzol kiírja a sikerüzenetet, és a PPTX fájl a megadott helyen megjelenik. A fájl megnyitása egyetlen diát mutat a kiválasztott tartománnyal, szerkeszthető szövegdobozokkal és az eredeti alakzatokkal. + +## Gyakori kérdések és buktatók + +| Kérdés | Válasz | +|----------|--------| +| **Működik ez több munkalappal?** | Igen. Iterálj a `workbook.Worksheets`‑en, és ismételd meg ugyanazokat a lépéseket minden lapra, a kimeneti fájlnevet minden alkalommal módosítva. | +| **Mi van, ha több diát kell exportálnom?** | Hívd meg többször a `workbook.Save`‑t különböző `ImageOrPrintOptions` objektumokkal, mindegyikhez szükség esetén másik `PageSetup`‑ot konfigurálva. | +| **Módosítható a dia mérete?** | Használd az `exportOptions.ImageFormat`‑ot a DPI beállításához, vagy állítsd be a `sheet.PageSetup.PaperSize`‑t mentés előtt. | +| **Az Aspose.Cells ingyenes?** | Van egy ingyenes értékelő verzió vízjelekkel. Termelésben licenc szükséges. | +| **Mi a helyzet az Excel képletekkel?** | Az exportált értékek a **kiszámított eredmények** az export időpontjában. Ha élő képleteket szeretnél PowerPointban, más megoldásra lesz szükség. | + +## Tippek a zökkenőmentes munkafolyamathoz + +- **Pro tipp:** A `Workbook.Settings.CalcMode = CalculationModeType.Automatic` beállítása export előtt garantálja, hogy minden képlet naprakész legyen. +- **Figyelem:** Nagyon nagy tartományok memória‑nyomást okozhatnak. Vágd le a nyomtatási területet a legkisebbre, ami szükséges. +- **Teljesítmény tipp:** Ha sok lapot exportálsz, használj egyetlen `ImageOrPrintOptions` példányt; minden alkalommal új létrehozása plusz terhet jelent. +- **Verzió megjegyzés:** A fenti kód az Aspose.Cells 23.10‑es (2023. november) verziójára épül. Későbbi verziók ugyanazt az API‑t tartják, de mindig ellenőrizd a kiadási megjegyzéseket a tör breaking változásokért. + +## Összegzés + +Áttekintettük, hogyan **állíts be nyomtatási területet** egy Excel munkalapon, ismételjük meg az első sort címként, majd **export excel to pptx** módon exportáljuk úgy, hogy a szövegdobozok és alakzatok szerkeszthetőek maradjanak. Röviden, most már tudod, hogyan **convert excel to powerpoint**, **repeat title row**, és **create powerpoint from excel** néhány C# sorral. + +Készen állsz a következő lépésre? Próbáld ki egy tucatnyi jelentés kötegelt konvertálását, vagy adj egyedi diaelrendezéseket a PowerPoint SDK‑val az export után. A lehetőségek végtelenek – kísérletezz, hibázz, és élvezd a programozott dokumentumgenerálás erejét. + +Ha hasznosnak találtad ezt az útmutatót, oszd meg, írj egy megjegyzést a saját trükkjeiddel, vagy nézd meg a többi útmutatónkat a **export excel to pptx** és kapcsolódó automatizálási témákban. Jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/csv-file-handling/_index.md b/cells/hungarian/net/csv-file-handling/_index.md index 2b6d3a6d8e..105eeccd6b 100644 --- a/cells/hungarian/net/csv-file-handling/_index.md +++ b/cells/hungarian/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ További információkért tekintse meg részletes oktatóanyagainkat a követke Tanuld meg, hogyan nyithatsz meg CSV fájlokat az Aspose.Cells for .NET segítségével átfogó, lépésről lépésre haladó útmutatónkkal. Mesteradatok kezelése. ### [CSV-fájlok megnyitása az előnyben részesített elemzővel](./csv-file-opening-csv-files-with-preferred-parser/) Tanuld meg, hogyan nyithatsz meg és elemezhetsz CSV-fájlokat egyéni elemzőkkel az Aspose.Cells for .NET-ben. Kezeld könnyedén a szöveget és a dátumokat. Tökéletes fejlesztők számára. +### [Munkafüzet mentése CSV-ként C#-ban – Excel exportálása CSV-be](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Tanuld meg, hogyan mentheted el a munkafüzetet CSV formátumban C#-ban az Aspose.Cells for .NET segítségével. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/hungarian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..22683e5852 --- /dev/null +++ b/cells/hungarian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Mentsd el a munkafüzetet CSV formátumban C#-ban gyorsan. Tanuld meg, + hogyan exportálj Excel-t CSV-be, állítsd be a pontosságot, és konvertáld az xlsx-et + CSV-re az Aspose.Cells segítségével néhány sorban. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: hu +og_description: Mentse a munkafüzetet CSV-ként C#-ban gyorsan. Ez az útmutató bemutatja, + hogyan exportálja az Excelt CSV-be, állítsa be a pontosságot, és konvertálja az + xlsx-et CSV-re az Aspose.Cells segítségével. +og_title: Munkafüzet mentése CSV-ként C#-ban – Excel exportálása CSV-be +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Munkafüzet mentése CSV-ként C#-ban – Excel exportálása CSV-be +url: /hu/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Munkafüzet mentése CSV‑ként C#‑ban – Excel exportálása CSV‑be + +Szükséged volt már **munkafüzet mentésére CSV‑ként**, de nem tudtad, hogyan tartsd rendben a számokat? Nem vagy egyedül. Sok adatcsővezeték‑szituációban **Excel exportálása CSV‑be** szükséges, miközben egy meghatározott számú jelentős számjegyet megőrzünk, és az Aspose.Cells könyvtár ezt gyerekjátékká teszi. + +Ebben az útmutatóban egy teljes, azonnal futtatható példát látsz, amely **menti a munkafüzetet CSV‑ként**, megmutatja *hogyan állítsuk be a pontosságot*, és még *hogyan konvertáljunk xlsx‑t CSV‑re* valós projektekhez. Nincs homályos hivatkozás – csak olyan kód, amit ma másolhatsz, beilleszthetsz és futtathatsz. + +## Amit megtanulsz + +- A pontos lépéseket a **munkafüzet mentéséhez CSV‑ként** egyedi pontossági beállítással. +- Hogyan **exportáljunk Excel‑t CSV‑be** a `CsvSaveOptions` használatával, és miért fontos a `SignificantDigits` tulajdonság. +- Különböző pontossági igényekhez tartozó variációk és gyakori buktatók nagy számok kezelésekor. +- Gyors áttekintés egy `.xlsx` fájl `.csv`‑re konvertálásáról adatvesztés nélkül. + +### Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.6+‑on is működik). +- A **Aspose.Cells for .NET** NuGet csomag (`Install-Package Aspose.Cells`). +- Alapvető C# és fájl‑I/O ismeretek. + +Ha ezek megvannak, merüljünk el. + +![munkafüzet mentése csv példája](image.png "munkafüzet mentése csv példája") + +## Munkafüzet mentése CSV‑ként – Lépésről‑lépésre útmutató + +Alább a teljes program. Minden sor meg van kommentálva, hogy lásd *miért* van ott, ne csak *mit* csinál. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Miért használjuk a `CsvSaveOptions.SignificantDigits`‑et? + +Amikor **hogyan állítsuk be a pontosságot** egy CSV exportálásnál, valójában azt döntöd el, hány számjegy marad meg egy lebegőpontos számból a konverzió során. Az Excel legfeljebb 15 számjegy pontossággal tárolja a számokat, de a legtöbb downstream rendszer (adatbázisok, elemző csövek) csak néhányra van szüksége. A `SignificantDigits = 4` beállítással a könyvtár a `123.456789`‑et `123.5`‑re kerekíti, így a fájl kompakt és emberi olvasásra alkalmas marad. + +> **Pro tipp:** Ha *pontos* értékekre van szükség (pl. pénzügyi adatoknál), állítsd a `SignificantDigits`‑et magasabb számra, vagy hagyd el teljesen. Az alapértelmezett 15, ami az Excel belső pontosságát tükrözi. + +## Excel exportálása CSV‑be – Gyakori variációk + +### A határoló karakter módosítása + +Néhány rendszer pontosvesszőt (`;`) vár a vessző helyett. Így állíthatod be: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Egy adott munkalap exportálása + +Ha csak a második lapot szeretnéd exportálni, cseréld le az opcionális blokkot a következőre: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Ezután hívd meg a `workbook.Save`‑t, ahogy korábban. Ez a technika akkor hasznos, amikor **xlsx‑t csv‑re konvertálsz**, de csak egy bizonyos fület érdekel. + +### Nagy adathalmazok kezelése + +Millió sor esetén érdemes a CSV‑t streaming‑ként írni, a teljes munkafüzet betöltése helyett. Az Aspose.Cells kínál egy `CsvSaveOptions` tulajdonságot, az `ExportDataOnly`‑t, amely kihagyja a stílusinformációkat, csökkentve a memóriaigényt: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Hogyan exportáljunk CSV‑t – Az eredmény ellenőrzése + +A program futtatása után nyisd meg a `Numbers_4sd.csv`‑t egy egyszerű szövegszerkesztőben. Valami ilyesmit kell látnod: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Figyeld meg, hogy a számok négy jelentős számjegyre korlátozódnak, pontosan ahogy kértük. Ha Excel‑ben nyitod meg a fájlt, az értékek azonosak lesznek, mivel az Excel tiszteletben tartja a exportáláskor alkalmazott kerekítést. + +## Szélsőséges esetek és hibaelhárítás + +| Helyzet | Mit ellenőrizz | Javítás | +|-----------|---------------|-----| +| **Fájl nem található** | Ellenőrizd, hogy a `sourcePath` valós `.xlsx` fájlra mutat. | Használd a `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`‑t. | +| **Helytelen kerekítés** | Győződj meg róla, hogy a `SignificantDigits` a `Save` hívása előtt van beállítva. | Mozgasd a `CsvSaveOptions` hozzárendelést előrébb, vagy ellenőrizd az értéket. | +| **Speciális karakterek �‑ként jelennek meg** | A CSV kódolás alapértelmezés szerint UTF‑8 BOM nélkül. | Állítsd be a `csvOptions.Encoding = System.Text.Encoding.UTF8`‑t vagy `Encoding.Unicode`‑t. | +| **Felesleges üres oszlopok** | Egyes munkalapokban a használt tartományon túl formázás maradhat. | Hívd meg a `worksheet.Cells.MaxDisplayRange`‑t, hogy a nem használt oszlopokat levágd exportálás előtt. | + +## Pontosság dinamikus beállítása + +Néha a szükséges pontosság nem ismert fordítási időben. Beolvashatod egy konfigurációs fájlból vagy parancssori argumentumból: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Ezután futtathatod: + +``` +dotnet run -- 6 +``` + +és egy hat jelentős számjegyet tartalmazó CSV‑t kapsz. Ez a kis módosítás rugalmas megoldássá teszi a **hogyan exportáljunk csv**‑t különböző környezetekben. + +## Teljes működő példa összefoglaló + +Az összes elemet egy helyen, a teljes program (az opcionális finomításokkal együtt) így néz ki: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Futtasd a programot, nyisd meg a generált CSV‑t, és látni fogod a kért pontosságot, ezzel megerősítve, hogy sikeresen **mentetted a munkafüzetet CSV‑ként**. + +## Összegzés + +Most már van egy szilárd, termelés‑kész recept a **munkafüzet CSV‑ként mentéséhez** C#‑ban. Az útmutató lefedte, *hogyan exportáljunk Excel‑t CSV‑be*, bemutatta a *pontosság beállítását* a `CsvSaveOptions.SignificantDigits`‑en keresztül, és több variációt is a **convert xlsx to csv** szituációkra. A teljes kódrészlettel beillesztheted bármely .NET projektbe, és azonnal elkezdheted az adatok exportálását. + +**Mi a következő?** + +- Kísérletezz különböző határoló karakterekkel (`;`, `\t`) TSV exportokhoz. +- Kombináld ezt a megközelítést egy fájl‑figyelővel, hogy automatikusan CSV‑t generáljon, amikor egy Excel‑fájl megváltozik. +- Fedezd fel az Aspose.Cells `CsvLoadOptions`‑át, ha valaha CSV‑t kell visszaolvasnod egy munkafüzetbe. + +Nyugodtan finomítsd a pontosságot, adj hozzá egyedi fejléceket, vagy csatlakoztasd az exportert + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/document-properties/_index.md b/cells/hungarian/net/document-properties/_index.md index 0ac135ba1b..4a400d1e7f 100644 --- a/cells/hungarian/net/document-properties/_index.md +++ b/cells/hungarian/net/document-properties/_index.md @@ -35,6 +35,8 @@ Ismerje meg, hogyan érheti el a dokumentumok tulajdonságait Excelben az Aspose Tanulja meg, hogyan érheti el a dokumentumok tulajdonságait Excelben az Aspose.Cells for .NET használatával lépésről lépésre bemutató útmutatónkkal. Kezelje hatékonyan táblázatait. ### [Dokumentumtulajdonságok hozzáadása .NET-ben](./adding-document-properties/) Tanulja meg, hogyan adhat hozzá dokumentumtulajdonságokat az Excelben az Aspose.Cells for .NET használatával ebből a részletes, lépésről lépésre szóló útmutatóból. +### [Excel munkafüzet létrehozása – Egyéni tulajdonságok hozzáadása és mentés XLSB formátumban](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Ismerje meg, hogyan hozhat létre Excel munkafüzetet, adhat hozzá egyéni tulajdonságokat, és mentheti XLSB formátumban az Aspose.Cells for .NET segítségével. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/hungarian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..1c9e7af807 --- /dev/null +++ b/cells/hungarian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: Excel munkafüzet létrehozása, egyéni tulajdonságok hozzáadása, munkalap + nevének beállítása, és XLSB bináris fájl mentése C#‑ban. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: hu +og_description: Excel munkafüzet létrehozása, egyéni tulajdonságok hozzáadása, munkalap + nevének beállítása, és mentés XLSB bináris fájlként C#‑ban. +og_title: Excel munkafüzet létrehozása – Egyéni tulajdonságok hozzáadása és mentés + XLSB formátumban +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excel munkafüzet létrehozása – Egyéni tulajdonságok hozzáadása és mentés XLSB + formátumban +url: /hu/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel munkafüzet létrehozása – Egyéni tulajdonságok hozzáadása és mentés XLSB formátumba + +Valaha is szükséged volt **Excel munkafüzet** programozottan létrehozni, miközben némi metaadatot is csatolni? Lehet, hogy egy jelentéskészítő motoron dolgozol, amely minden fájlt egy jelentésazonosítóval, szerző nevével vagy verziószámmal lát el. Ebben az esetben, ha megtanulod, hogyan **adj hozzá egyéni tulajdonságokat**, miközben **beállítod a munkalap nevét**, és végül **XLSB‑ként mented**, sok kézi utófeldolgozást takaríthatsz meg. + +Ebben a tutorialban egy teljes, futtatható példán keresztül mutatjuk be, hogyan **írj bináris Excel fájlt** C#‑ben. Megtudod, miért a XLSB formátum a megfelelő választás az egyéni tulajdonságok szállításához, hogyan kerüld el a leggyakoribb buktatókat, és mit tegyél, ha régebbi Excel verziókat kell támogatnod. + +--- + +## Amire szükséged lesz + +- **.NET 6+** (vagy .NET Framework 4.6+). A kód bármely friss futtatókörnyezeten működik. +- **Aspose.Cells for .NET** (ingyenes próba vagy licenc). Biztosítja a `Workbook`, `Worksheet` és `CustomProperties` osztályokat, amelyeket alább használunk. +- Egy kedvedre való IDE – Visual Studio, Rider vagy akár VS Code is megfelel. +- Írási jogosultság egy mappához, ahová a generált fájlt menteni fogod. + +Más harmadik féltől származó könyvtár nem szükséges. + +--- + +## 1. lépés: Aspose.Cells telepítése + +Kezdésként add hozzá az Aspose.Cells NuGet csomagot a projektedhez: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** Ha CI szerveren dolgozol, tárold a licenckulcsot környezeti változóban, és töltsd be futásidőben – ez megakadályozza, hogy az „értékelés” vízjel bekerüljön a kimenetbe. + +--- + +## 2. lépés: Excel munkafüzet létrehozása – Áttekintés + +Az első tényleges művelet a **Excel munkafüzet** létrehozása. Ez az objektum a teljes fájlt reprezentálja a memóriában, és hozzáférést biztosít a munkalapokhoz, stílusokhoz és egyéni tulajdonságokhoz. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Miért hozunk létre egy új `Workbook`‑ot a sablon betöltése helyett? Egy üres munkafüzet garantálja, hogy nincsenek rejtett stílusok vagy maradék egyéni tulajdonságok, ami különösen fontos, ha **bináris excel fájlt** szeretnél írni olyan downstream rendszereknek, amelyek tiszta állapotot várnak. + +--- + +## 3. lépés: Munkalap név beállítása (és miért fontos) + +Az Excel munkalapok alapértelmezés szerint „Sheet1”, „Sheet2” stb. nevet kapnak. Egy érthető név megkönnyíti a downstream feldolgozást – például a Power Query vagy VBA makrók számára. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Ha duplikált nevet próbálsz megadni, az Aspose.Cells `ArgumentException`‑t dob. Biztonság kedvéért ellenőrizheted a `Worksheets.Exists("Data")` metódussal, mielőtt átneveznéd. + +--- + +## 4. lépés: Egyéni tulajdonságok hozzáadása + +Az egyéni tulajdonságok a munkafüzet belső XML‑ében tárolódnak, és a formátumtól függetlenül a fájllal együtt utaznak. Tökéletesek olyan információk beágyazására, mint a `ReportId` vagy a `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Miért használjunk egyéni tulajdonságokat?** +> • Elérhetők az Excel **Fájl → Info → Tulajdonságok** paneljén. +> • A munkafüzetet fogyasztó kód beolvashatja őket anélkül, hogy a cellatartalmakat kellene átvizsgálnia. +> • A formátumkonverziók (XLSX ↔ XLSB) során is megmaradnak, mivel a fájl metaadatai részei. + +Tárolhatsz dátumokat, logikai értékeket vagy akár bináris blob‑okat is, de tartsd a terhet kicsire – az Excel nem adatbázis. + +--- + +## 5. lépés: Mentés XLSB‑ként (Bináris Excel fájl írása) + +A XLSB formátum bináris struktúrában tárolja az adatokat, így a fájl kisebb és gyorsabban nyitható. Ami ennél fontosabb a tutorialhoz, **az egyéni tulajdonságok be vannak ágyazva a bináris adatfolyamba**, garantálva, hogy a fájllal együtt kerülnek át. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Várható eredmény + +A program futtatása után a `WithCustomProps.xlsb` fájlt a asztalon fogod megtalálni. Nyisd meg Excelben, menj a **Fájl → Info → Tulajdonságok** menüpontra, és a *Custom* szekcióban láthatod a `ReportId` és a `GeneratedBy` bejegyzéseket. + +--- + +## 6. lépés: Szélső esetek és gyakori kérdések + +### Mi van, ha a célmappa csak olvasható? + +Tedd a `Save` hívást egy `try/catch` blokkba, és térj vissza egy felhasználó által írható helyre, például a `%TEMP%`‑re. Így elkerülöd, hogy az alkalmazás jogosultsági hibára fusson. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### **Menthetek‑e XLSX‑ként is, és megmaradnak a egyéni tulajdonságok?** + +Igen – csak cseréld le a `SaveFormat.Xlsb`‑t `SaveFormat.Xlsx`‑ra. A tulajdonságok ugyanabban az XML‑részben tárolódnak, így a formátumváltás során is megmaradnak. Azonban az XLSX fájlok nagyobbak, mert tömörített XML‑et tartalmaznak, míg a XLSB jobb teljesítményt nyújt nagy adathalmazoknál. + +### Hogyan olvassam be később az egyéni tulajdonságokat? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Ez a kódrészlet kiír minden egyéni tulajdonságot, így a downstream szolgáltatások számára egyszerűen ellenőrizhető a fájl eredete. + +--- + +## Teljes működő példa + +Az alábbi program a teljes kód, amelyet egyszerűen beilleszthetsz egy új konzolos projektbe. Semmi sem hiányzik – a `using` direktíváktól a végső `Console.WriteLine`‑ig minden benne van. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Futtasd a programot, nyisd meg a keletkezett fájlt, és ellenőrizd az egyéni tulajdonságokat. Így teljesen lefedi a **excel munkafüzet létrehozása**, **egyéni tulajdonságok hozzáadása**, **munkalap név beállítása** és **XLSB‑ként mentés** folyamatát egy átlátható lépésben. + +--- + +## Összegzés + +Most már pontosan tudod, hogyan **hozd létre az Excel munkafüzetet**, hogyan adj a lapnak egyértelmű **munkalap nevet**, hogyan ágyazz be hasznos metaadatokat **egyéni tulajdonságok** segítségével, és végül hogyan **mentsd XLSB‑ként** egy kompakt, bináris Excel fájl létrehozásához. Ez a munkafolyamat megbízható, .NET verziók között működik, és könnyen skálázható akár egy, akár ezer jelentés generálásához. + +Mi a következő? Próbálj meg egy adat táblát hozzáadni a „Data” munkalaphoz, kísérletezz különböző tulajdonságtípusokkal (dátumok, logikai értékek), vagy állítsd át a kimenetet **XLSB‑ként** nagy adathalmazokhoz. Érdemes lehet a munkafüzetet jelszóval védeni is – az Aspose.Cells ehhez is egyetlen soros megoldást kínál. + +Ha bármilyen problémába ütközöl, nyugodtan írj kommentet, vagy oszd meg, hogyan bővítetted ezt a mintát a saját projektjeidben. Jó kódolást! + +--- + +![Create Excel workbook screenshot](image.png){alt="Excel munkafüzet egyéni tulajdonságokkal"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/excel-advanced-named-ranges/_index.md b/cells/hungarian/net/excel-advanced-named-ranges/_index.md index 98b696ea55..839a987340 100644 --- a/cells/hungarian/net/excel-advanced-named-ranges/_index.md +++ b/cells/hungarian/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Ennek a funkciónak a szépsége a könnyű használhatóságában rejlik. Progr Könnyedén azonosíthatod a cellákat egy elnevezett tartományban az Excelben az Aspose.Cells for .NET segítségével ezzel az átfogó, lépésről lépésre haladó oktatóanyaggal. ### [Cellák egyesítése elnevezett tartományban Excelben](./merge-cells-in-named-range/) Tanuld meg, hogyan egyesíthetsz cellákat egy elnevezett tartományban az Aspose.Cells for .NET használatával ebben a lépésenkénti oktatóanyagban. Ismerd meg, hogyan formázhatod, stílusozhatod és automatizálhatod az Excel-jelentéseket. +### [Excel munkafüzet létrehozása – Lépésről‑lépésre útmutató táblák hozzáadásához és elnevezési szabályokhoz](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Ismerd meg, hogyan hozhatsz létre Excel munkafüzetet, adj hozzá táblákat és állíts be elnevezési szabályokat lépésről‑lépésre. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/hungarian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..99b8c07a91 --- /dev/null +++ b/cells/hungarian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Excel munkafüzet létrehozása táblázattal, az Excel táblázat elnevezési + szabályainak megismerése, a névvel ellátott tartomány hibájának elkerülése, és az + Excel táblázat nevének helyes beállítása C#‑ban. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: hu +og_description: Excel munkafüzet létrehozása C#-ban és az Excel táblanevek szabályainak + elsajátítása. Tanulja meg, hogyan adjon hozzá táblázat munkalapot, állítsa be az + Excel tábla nevét, és javítsa a névvel ellátott tartomány hibáit. +og_title: Excel munkafüzet létrehozása – Teljes C# táblázat- és elnevezési útmutató +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excel munkafüzet létrehozása – Lépésről lépésre útmutató a táblák hozzáadásához + és az elnevezési szabályokhoz +url: /hu/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel munkafüzet létrehozása – Teljes C# útmutató táblákhoz és elnevezéshez + +Valaha is szükséged volt arra, hogy **create excel workbook** programozottan, és azon tűnődtél, miért ütközik hirtelen a táblaneved egy névvel ellátott tartománnyal? Nem vagy egyedül. Sok automatizálási projektben, amikor megpróbálsz egy táblának barátságos azonosítót adni, az Excel egy *named range error*-t dob, ami leállítja a teljes folyamatot. + +Ebben az útmutatóban egy teljesen futtatható példán keresztül vezetünk végig, amely **creates an Excel workbook**, **adds a table to a worksheet**, és bemutatja a **excel table naming rules**-t, amelyek megakadályozzák, hogy saját magadba botlj. A végére pontosan tudni fogod, hogyan **add table worksheet**, **set excel table name**, és hogyan kezeld elegánsan az időnként előforduló névütközést. + +> **Pro tip:** A legtöbb zavar a tényből ered, hogy az Excel a táblaneveket és a munkafüzet‑szintű névvel ellátott tartományokat egyetlen névtérnek tekinti. Ennek a szabálynak a korai megértése órákat takarít meg a hibakeresésben. + +## Amire szükséged lesz + +- **Aspose.Cells for .NET** (vagy bármely könyvtár, amely a `Workbook`, `Worksheet`, `ListObject` osztályokat biztosítja). +- .NET 6+ vagy .NET Framework 4.8 – a kód mindkettőn működik. +- Alapvető C# szintaxis ismeret – nincs szükség haladó trükkökre. + +Ha ezek megvannak, merüljünk el. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## 1. lépés: Excel munkafüzet létrehozása és az első munkalap elérése + +Az első dolog, amit a **create excel workbook** során teszel, az a `Workbook` osztály példányosítása, és a munkalapra való hivatkozás megszerzése, amelyen dolgozni fogsz. Az Aspose.Cells-ben a munkafüzet egy alapértelmezett, “Sheet1” nevű lappal indul. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Miért fontos ez a lépés? Munkafüzet objektum nélkül nincs semmi, amire táblát csatolhatsz, és a `Worksheet` hivatkozás egy vásznat biztosít, ahol a **add table worksheet** művelet végrehajtásra kerül. + +## 2. lépés: Táblázat (ListObject) hozzáadása egy meghatározott tartományra + +Ezután **add table worksheet**‑szintű adatot adunk hozzá. A `ListObjects.Add` metódus egy tartomány karakterláncot és egy logikai értéket vár, amely jelzi, hogy az első sor tartalmaz‑e fejléceket. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Vedd észre a `salesTable.Name = "SalesData"` hívást. Itt lépnek életbe a **excel table naming rules**: a névnek egyedinek kell lennie az egész munkafüzetben, nem csak a lapon. Emellett nem tartalmazhat szóközöket vagy speciális karaktereket, és betűvel vagy aláhúzással kell kezdődnie. + +## 3. lépés: Kísérlet egy munkafüzet‑szintű névvel ellátott tartomány létrehozására ugyanazzal az azonosítóval + +Most szándékosan előidézzük a **named range error**-t, hogy lássuk, mi történik, amikor névütközés fordul elő. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Ha kinyitod a sor megjegyzését, az Aspose.Cells egy `ArgumentException`-t dob, amely azt jelzi, hogy a név már létezik. A hibaüzenet így néz ki: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Ez az üzenet a korábban említett **named range error**. Azt mondja, hogy a **excel table naming rules** a táblaneveket és a névvel ellátott tartományokat egyetlen névtérnek tekintik. + +## 4. lépés: A névütközés elegáns kezelése + +A valós kódban szeretnéd elkapni ezt a kivételt, és vagy átnevezni a táblát, vagy másik tartománynevet választani. Íme egy rendezett megoldás: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +A hívás `try/catch`‑be csomagolásával elkerülöd a súlyos összeomlást, és a felhasználónak (vagy a hívó kódnak) egyértelmű magyarázatot adsz – pontosan az a **excel table naming rules**‑tudás, amely megakadályozza a jövőbeli hibákat. + +## 5. lépés: A munkafüzet mentése és az eredmény ellenőrzése + +Végül mentsd a fájlt lemezre, és nyisd meg Excelben, hogy megerősítsd, a tábla és a névvel ellátott tartományok jelen vannak. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Amikor megnyitod a *SalesReport.xlsx* fájlt, a következőket fogod látni: +- Egy **A1:C5** tartományt lefedő tábla, amely **SalesData** néven szerepel. +- Ha megtartottad a alternatív tartományt, egy munkafüzet‑szintű névvel ellátott tartomány **SalesData_Range**, amely a **D1**-re mutat. + +Nincs futásidejű összeomlás, és a névütközés megoldódott. + +## Az Excel táblanevek szabályainak mélyreható megértése + +Vizsgáljuk meg, miért léteznek ezek a szabályok: + +| Szabály | Mit jelent | Példa | +|------|----------------|---------| +| **Unique across workbook** | Nem két tábla vagy névvel ellátott tartomány oszthatja meg ugyanazt az azonosítót. | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | A nevek nem kezdődhetnek számmal. | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | Használj CamelCase‑t vagy aláhúzást. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | Gyakorlatilag mindig teljesül. | N/A | + +Ezeknek a szabályoknak a szem előtt tartása a **set excel table name** során megszünteti a rettegett *named range error*-t. + +## Gyakori változatok és szélhelyzetek + +1. **Adding multiple tables** – Minden táblának saját egyedi névvel kell rendelkeznie. +2. **Renaming an existing table** – Használd a `salesTable.Name = "NewName"`-t, mielőtt bármilyen ütköző névvel ellátott tartományt létrehoznál. +3. **Using dynamic ranges** – Ha egy bővülő tartományra van szükséged, használj strukturált hivatkozást, például `=SalesData[Amount]` a statikus cím helyett. +4. **Cross‑sheet named ranges** – Még mindig ugyanahhoz a névtérhez tartoznak, így egy Sheet1‑en lévő tábla blokkolja ugyanazt a nevet viselő tartományt a Sheet2‑n. + +## Pro tippek a zökkenőmentes Excel automatizáláshoz + +- **Ellenőrizd a létezést hozzáadás előtt**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Biztonságos neveket generálj programozottan**: Adj hozzá egy GUID‑ot vagy növekményes számlálót (`SalesData_{Guid.NewGuid()}`), ha nem vagy biztos. +- **Használd a `ListObject.ShowHeaders = true`-t**, hogy a tábláid önmagukat dokumentálják. +- **Érvényesíts mentés után**: Nyisd meg a fájlt egy könnyű könyvtárral (pl. EPPlus), hogy biztosan helyesen lett létrehozva a tábla. + +## Összefoglalás: Mit fedtünk le + +- Hogyan **create excel workbook**-ot hozhatsz létre az alapoktól az Aspose.Cells használatával. +- A pontos **excel table naming rules**, amelyek a táblák és a névvel ellátott tartományok azonosítóit szabályozzák. +- Miért jelenik meg egy **named range error**, amikor újrahasználod a nevet. +- A helyes módja a **add table worksheet** és **set excel table name** elvégzésének ütközések nélkül. +- Egy robusztus minta a névütközések elegáns kezelésére. + +## Mi következik? + +Miután elsajátítottad az alapokat, érdemes felfedezni: + +- **Dynamic table growth** a `ListObject.Resize` használatával. +- **Stílusok alkalmazása** a táblákra (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exportálás CSV‑be** a táblaszerkezetek megőrzése mellett. +- **Integráció az Office Open XML‑el** a munkafüzet belső részeinek még szigorúbb irányítása érdekében. + +Nyugodtan kísérletezz—változtasd a tartományt, adj hozzá több táblát, vagy próbálj ki különböző elnevezési sémákat. Minél többet szövegszerkeszted, annál mélyebb lesz a **excel table naming rules** megértésed. + +--- + +*Boldog kódolást, és legyenek a munkafüzetek soha többé ütközés nélkül!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/excel-custom-number-date-formatting/_index.md b/cells/hungarian/net/excel-custom-number-date-formatting/_index.md index 0f0c2d2ad8..6122a04c22 100644 --- a/cells/hungarian/net/excel-custom-number-date-formatting/_index.md +++ b/cells/hungarian/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Ez az oktatóanyag felvértezi Önt az adathalmazok importálásának képesség Tanuld meg, hogyan ellenőrizheted az Excel cellaértékeket egyéni számformátumokkal szemben az Aspose.Cells for .NET használatával ebből a lépésről lépésre bemutató oktatóanyagból. ### [Képletmezők megadása adatok Excel-táblázatba importálásakor](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Ebben a részletes oktatóanyagban megtudhatja, hogyan importálhat adatokat Excel-táblázatokba megadott képletmezők használatával az Aspose.Cells for .NET használatával. +### [Egyéni számformátum Excel C#-ban – Teljes útmutató](./custom-number-format-excel-in-c-complete-guide/) +Tanuld meg, hogyan használhatod az egyéni számformátumokat Excelben C#-ban az Aspose.Cells for .NET segítségével ebben a teljes útmutatóban. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/hungarian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..87a8a84b7b --- /dev/null +++ b/cells/hungarian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Egyéni számformátum Excel oktató, amely bemutatja, hogyan importáljunk + adat táblát Excelbe, állítsuk be az oszlop háttérszínét, formázzuk az oszlopot pénznemként, + és mentsük a munkafüzetet xlsx formátumban. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: hu +og_description: Egyedi számformátum Excel oktató, amely végigvezet a DataTable importálásán, + az oszlop háttérszínének beállításán, az oszlop pénznemkénti formázásán, és a munkafüzet + xlsx formátumban való mentésén. +og_title: Egyéni számformátum Excelben C#-ban – Lépésről lépésre útmutató +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Egyéni számformátum Excelben C#-ban – Teljes útmutató +url: /hu/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Egyedi számformátum Excel – Full‑Stack C# Bemutató + +Gondolkodtál már azon, hogyan lehet **custom number format excel** stílust alkalmazni közvetlenül C#‑ból? Lehet, hogy már megpróbáltad egy DataTable‑t egy táblázatba exportálni, csak egyszerű számokat láttál, színek nélkül és pénznem formázás nélkül. Ez egy gyakori fájdalompont – különösen, ha egy kifinomult jelentésre van szükséged a döntéshozók számára. + +Ebben az útmutatóban együtt megoldjuk ezt a problémát: megtanulod, hogyan **import datatable to excel**, **set column background color**, **format column as currency**, és végül **save workbook as xlsx** egy egyedi számformátummal, amely kiemeli az értékeket. Nincs homályos hivatkozás, csak egy teljes, futtatható megoldás, amelyet egyszerűen beilleszthetsz a projektedbe. + +--- + +## Mit fogsz építeni + +A tutorial végére egy önálló C# konzolos alkalmazásod lesz, amely: + +1. Lekér egy `DataTable`‑t (a stubot kicserélheted a saját lekérdezésedre). +2. Létrehoz egy új Excel munkafüzetet az Aspose.Cells (vagy bármely kompatibilis könyvtár) segítségével. +3. Alkalmaz egy kék, félkövér betűtípust az első oszlopra, egy világos sárga háttérszínt a másodikra, és egy pénznem formátumot (`$#,##0.00`) a harmadikra. +4. Elmenti a fájlt `DataTableWithStyleArray.xlsx` néven egy általad választott mappába. + +Látni fogod, pontosan hogyan járul hozzá minden sor a végső Excel fájlhoz, és megvitatjuk, miért fontosak ezek a választások a karbantarthatóság és a teljesítmény szempontjából. + +--- + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.7+‑vel is működik). +- Aspose.Cells for .NET (ingyenes próba vagy licencelt verzió). Telepítés NuGet‑en keresztül: + +```bash +dotnet add package Aspose.Cells +``` + +- Alapvető ismeretek a `DataTable`‑ról és a C# konzolos alkalmazásokról. + +--- + +## 1. lépés: A forrásadatok lekérése DataTable‑ként + +Először is szükségünk van némi adatra az exporthoz. Valós környezetben valószínűleg egy repository‑t hívnál vagy egy SQL lekérdezést futtatnál. Bemutatásként egy egyszerű táblát hozunk létre memóriában. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Miért fontos:** A `DataTable` használata egy táblázatos, séma‑tudatos forrást biztosít, amely tisztán leképezhető az Excel sorokra és oszlopokra. Emellett lehetővé teszi, hogy ugyanazt az export logikát bármely adatkészlethez újrahasználd anélkül, hogy újraírnád a kódot. + +--- + +## 2. lépés: Új munkafüzet létrehozása és az első munkalap lekérése + +Most létrehozunk egy Excel munkafüzetet. A `Workbook` osztály képviseli az egész fájlt; a `Worksheets[0]` az alapértelmezett lap, ahová az adatainkat helyezzük. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tipp:** Ha több lapra van szükséged, egyszerűen hívd a `workbook.Worksheets.Add("SheetName")`‑t, és ismételd meg a stíluslépéseket minden egyesnél. + +--- + +## 3. lépés: Oszlopstílusok meghatározása – betűtípus, háttér és számformátum + +Az Aspose.Cells‑ben a stílusok `Style` objektumokkal történnek. Egy tömböt hozunk létre, ahol minden elem a DataTable egy oszlopának felel meg. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Miért stílustömb?** Egy tömb átadása az `ImportDataTable`‑nek lehetővé teszi, hogy egyetlen hívásban különböző stílust alkalmazz minden oszlopra, ami egyszerű és teljesítményorientált. Emellett garantálja, hogy a formázás szinkronban marad az adat sorrendjével. + +--- + +## 4. lépés: DataTable importálása a stílusok alkalmazásával + +Itt van a művelet szíve: betápláljuk a `DataTable`‑t a munkalapba, megmondjuk az Aspose‑nak, hogy vegye fel a fejléc sort, és átadjuk a `columnStyles` tömböt. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Mi történik a háttérben?** Az Aspose végigiterál minden oszlopon, kiírja a fejlécet, majd minden sor értékét. Ezzel egyidejűleg alkalmazza a tömbből a megfelelő `Style`‑t, így egy kék „Product” fejlécet, egy sárgás árnyalatú „Quantity” oszlopot és egy szépen formázott „Revenue” oszlopot kapsz. + +--- + +## 5. lépés: Munkafüzet mentése XLSX fájlként + +Végül a munkafüzetet lemezre mentjük. A `Save` metódus automatikusan az XLSX formátumot választja a fájl kiterjesztése alapján. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tipp:** Ha a fájlt stream‑ként kell továbbadni (pl. egy web API‑hoz), használd a `workbook.Save(stream, SaveFormat.Xlsx)`‑t a fájlútvonal helyett. + +--- + +## Teljes működő példa + +Az alábbiakban a teljes program látható, amelyet beilleszthetsz egy új konzolos projektbe. Fordítható és futtatható változatban egy stílusos Excel fájlt hoz létre. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Várt eredmény + +Amikor megnyitod a `DataTableWithStyleArray.xlsx` fájlt, a következőt fogod látni: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +A megadott **custom number format excel** (`$#,##0.00`) biztosítja, hogy minden bevétel cella dollárjelet, ezres elválasztót és két tizedesjegyet jelenítsen meg – pontosan azt, amit a pénzügyi csapatok elvárnak. + +--- + +## Gyakran Ismételt Kérdések és Különleges Esetek + +### Használhatom ezt másik Excel könyvtárral? + +Természetesen. A koncepció – oszloponként stílus létrehozása és importálás közbeni alkalmazása – átültethető EPPlus, ClosedXML vagy NPOI esetén is. Az API hívások különböznek, de a minta ugyanaz marad. + +### Mi van, ha a DataTable‑m több oszlopot tartalmaz, mint a stílusok? + +Az Aspose az alapértelmezett stílust alkalmazza minden olyan oszlopra, amelynek nincs megfelelő bejegyzése a `columnStyles` tömbben. A meglepetések elkerülése érdekében vagy állítsd be a tömb méretét a `dataTable.Columns.Count` értékére, vagy generálj stílusokat dinamikusan egy ciklusban. + +### Hogyan állíthatok be egyedi számformátumot dátumokhoz? + +Csak állítsd be a `style.Custom = "dd‑mm‑yyyy"`‑t (vagy bármely érvényes Excel formátum stringet). Ugyanez a tömb‑alapú megközelítés működik dátumok, százalékok vagy tudományos jelölés esetén is. + +### Van mód a oszlopok automatikus méretezésére importálás után? + +Igen – hívd a `worksheet.AutoFitColumns();`‑t az importálás után. Gyors szélességszámítást végez a cellák tartalma alapján. + +### Mi a helyzet nagy adatkészletekkel (100 000+ sor)? + +Az `ImportDataTable` tömeges műveletekre van optimalizálva, de előfordulhat memóriakorlát. Ebben az esetben fontold meg a sorok manuális streamelését a `Cells[i, j].PutValue(...)`‑val, és egyetlen `Style` objektum újrahasználatát a terhelés csökkentése érdekében. + +--- + +## Pro tippek és gyakori buktatók + +- **Kerüld a keménykódolt útvonalak** használatát a produkciós kódban; használd az `Environment.GetFolderPath`‑t vagy a konfigurációs beállításokat. +- **A munkafüzetet zárd le** (dispose), ha hosszú‑távú szolgáltatásban vagy – tedd `using` blokkba a natív erőforrások felszabadításához. +- **Figyelj a kultúraspecifikus elválasztókra**. A `custom` formátum `$#,##0.00` kényszeríti a pontot tizedeselválasztóként az operációs rendszer helyi beállításaitól függetlenül, ami általában a pénzügyi jelentésekhez szükséges. +- **Ne felejtsd el hivatkozni a System.Drawing** (vagy a `.NET Core`‑on a `System.Drawing.Common`‑ra) a stílusban használt színstruktúrákhoz. +- **Teszteld a kimenetet különböző Excel verziókon**; a régebbi verziók esetleg kissé eltérően értelmezhetik egyes egyedi formátumokat. + +--- + +## Összegzés + +Mindezt lefedtük, ami szükséges a **custom number format excel** fájlokhoz C#‑ból: adatlekérés `DataTable`‑ból, **import datatable to excel**, **set column background color** alkalmazása, **format column as currency** használata, és végül **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/excel-workbook/_index.md b/cells/hungarian/net/excel-workbook/_index.md index 05ae7396f5..92e59056b8 100644 --- a/cells/hungarian/net/excel-workbook/_index.md +++ b/cells/hungarian/net/excel-workbook/_index.md @@ -69,7 +69,7 @@ Miért ne ragadnád meg ezt a lehetőséget, hogy fejleszd Excel-készségeidet? ## Oktatóanyagok | Cím | Leírás | | --- | --- | -| [Hozzáférés webbővítmény-információkhoz](./access-web-extension-information/) | Tanulja meg, hogyan férhet hozzá a webbővítmények adataihoz Excel-fájlokban az Aspose.Cells for .NET használatával lépésről lépésre bemutató útmutatónkkal. | +| [Hozzáférés webbővítmény-információkhoz](./access-web-extension-information/) | Tanulja meg, hogyan férhet hozzá a webbővítmények adataihoz Excel-fájlokban az Aspose.Cells for .NET használatával lépésről lépésre bemutató útmutánkkal. | | [Digitális aláírás hozzáadása egy már aláírt Excel-fájlhoz](./add-digital-signature-to-an-already-signed-excel-file/) | Tanulja meg, hogyan adhat hozzá digitális aláírást egy már aláírt Excel-fájlhoz az Aspose.Cells for .NET használatával ebből a részletes, lépésről lépésre szóló útmutatóból. | | [Webbővítmény hozzáadása](./add-web-extension/) | Tanulja meg, hogyan adhat hozzá webbővítményeket Excel-fájlokhoz az Aspose.Cells for .NET használatával ezzel a teljes körű, lépésről lépésre szóló oktatóanyaggal, amely kibővíti a táblázatkezelő funkcióit. | | [Tömörítési szint beállítása](./adjust-compression-level/) Ismerje meg, hogyan állíthatja be az Excel-fájlok tömörítési szintjeit az Aspose.Cells for .NET segítségével. Optimalizálja hatékonyan a fájlméreteket ezzel a lépésről lépésre szóló útmutatóval. | @@ -86,6 +86,7 @@ Miért ne ragadnád meg ezt a lehetőséget, hogy fejleszd Excel-készségeidet? | [Munkafüzet nyomtatási előnézete](./workbook-print-preview/) | Tanuld meg, hogyan hozhatsz létre nyomtatási előnézeteket Excel fájlokhoz az Aspose.Cells for .NET használatával. Tanuld meg a kódolási lépéseket egy részletes, könnyen követhető oktatóanyagban. | [Tartalomtípus-tulajdonságok használata](./working-with-content-type-properties/) | Ismerje meg, hogyan használható az Aspose.Cells for .NET a tartalomtípus-tulajdonságokkal való munkához az Excel metaadatainak hatékonyabb kezeléséhez. Kövesse ezt az egyszerű, lépésről lépésre szóló útmutatót. | | [Xades Signature támogatás](./xades-signature-support/) | Tanulja meg, hogyan adhat hozzá Xades aláírásokat Excel fájlokhoz az Aspose.Cells for .NET használatával ezzel a lépésről lépésre szóló útmutatóval. Biztosítsa dokumentumait. | +| [Új munkafüzet létrehozása C# – Lépésről lépésre útmutató szórt képletekkel](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Tanulja meg, hogyan hozhat létre új munkafüzetet C#-ban szórt képletekkel az Aspose.Cells for .NET használatával lépésről lépésre. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/hungarian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..804d5d3fed --- /dev/null +++ b/cells/hungarian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Hozzon létre új munkafüzetet C#-ban gyorsan az Aspose.Cells használatával. + Tanulja meg, hogyan adjon hozzá egy SEQUENCE spilloló képletet, automatikusan újraszámolja, + és kezelje a függő cellákat. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: hu +og_description: Új munkafüzet létrehozása C#-ban az Aspose.Cells segítségével. Ez + a bemutató megmutatja, hogyan lehet SEQUENCE spilloló képletet hozzáadni, újraszámolni + a munkafüzetet, és kezelni a függő cellákat. +og_title: Új munkafüzet létrehozása C#-ban – Teljes útmutató +tags: +- C# +- Excel automation +- Aspose.Cells +title: Új munkafüzet létrehozása C#‑ban – Lépésről lépésre útmutató kiterjesztett + képletekkel +url: /hu/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Új munkafüzet létrehozása C#‑ban – Teljes programozási útmutató + +Gondolkodtál már azon, hogyan **create new workbook C#** anélkül, hogy a COM interopbal küzdenél? Nem vagy egyedül. Sok projektben szükség van arra, hogy futás közben egy Excel fájlt hozzunk létre, beilleszünk egy dinamikus tömbképletet, és minden automatikusan frissüljön. + +Ebben az útmutatóban pontosan ezt mutatjuk be – a modern **Aspose.Cells** könyvtár használatával, egy `SEQUENCE` spilloló képlet hozzáadásával, egy függő cella módosításával, és egy újraszámítás kényszerítésével, hogy az eredmények frissek maradjanak. A végére egy önálló, futtatható példát kapsz, amelyet bármely .NET alkalmazásba beilleszthetsz. + +## Mit fogsz megtanulni + +- Hogyan **create new workbook C#** programozott módon. +- A **spilled array formula** működése és miért hasznos. +- A **Excel SEQUENCE function** használata C# kódból. +- **C# workbook calculation** indítása, hogy a függő cellák azonnal frissüljenek. +- Gyakori buktatók (pl. a `Calculate` hívás elfelejtése) és gyors megoldások. + +Nincs szükség külső dokumentációra – minden, amire szükséged van, itt megtalálható. + +## Előfeltételek + +- .NET 6+ (vagy .NET Framework 4.7.2+) telepítve. +- Visual Studio 2022 vagy a kedvenc IDE-d. +- A **Aspose.Cells** NuGet csomag (`Install-Package Aspose.Cells`). +- Alapvető ismeretek a C# szintaxisról (ha teljesen újonc vagy, a kód bőven kommentált). + +--- + +## 1. lépés: Új munkafüzet létrehozása C#‑ban + +Ez az H2 fejléc pontosan a **primary keyword**-et tartalmazza, ahogy az SEO ellenőrzőlista megköveteli. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Miért fontos:** +> A `Workbook` példányosítása egy memóriában létező Excel fájl reprezentációt ad. Nincs COM, nincs interop, csak tiszta .NET objektumok, amelyeket biztonságosan manipulálhatsz. + +--- + +## 2. lépés: Spilloló SEQUENCE képlet hozzáadása + +A **spilled array formula** automatikusan kiterjed a szomszédos cellákra, ami tökéletes dinamikus listák generálásához. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Hogyan működik:** +> A `SEQUENCE` függvény (az Excel 365‑ben bevezetve) egy függőleges számokból álló tömböt hoz létre. Mivel egy *spilling* képletet használunk, az Excel (és az Aspose.Cells) automatikusan kitölti az `A1` alatti tartományt anélkül, hogy ciklust írnunk kellene. + +--- + +## 3. lépés: Függő cella módosítása az automatikus frissítés megfigyeléséhez + +Módosítsuk a `B1` cellát, hogy megfigyelhessük, hogyan számolja újra a munkafüzet a spillolt tömböt. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tipp:** +> Ha később más képletekben hivatkozol a spillolt tartományra, a spill bármely cellájának módosítása azt eredményezi, hogy azok a képletek frissülnek a `Calculate` hívása után. + +--- + +## 4. lépés: C# munkafüzet számítás kényszerítése + +Kifejezett hívás nélkül az Aspose.Cells nem számolja újra automatikusan a képleteket. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Mit csinál a `Calculate`:** +> Végigjár minden képletcellát, kiértékeli őket, és az eredményeket visszaírja a munkalapra. Ez a **C# workbook calculation** lényege, és biztosítja, hogy a spillolt tömb szinkronban maradjon minden függő adattal. + +### Várt kimenet + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Nyisd meg a `SpilledSequenceDemo.xlsx` fájlt, és látni fogod, hogy az 1‑5 számok kitöltik az `A1:A5` tartományt, míg a `B1` a `10` értéket tartalmazza. Módosíts bármely cellát a spillben, futtasd újra a `Calculate`‑t, és az új értékek azonnal megjelennek. + +--- + +## Az Excel SEQUENCE függvény megértése C#‑ban + +Ha kíváncsi vagy, miért részesítik előnyben a `SEQUENCE`‑t a kézi ciklus helyett, vedd figyelembe a következő pontokat: + +1. **Performance** – A motor egy lépésben értékeli ki az egész tömböt. +2. **Readability** – Egy sor kód helyettesíti a tucatnyi `PutValue` hívást. +3. **Dynamic sizing** – A statikus `5` helyett hivatkozhatsz egy másik cellára, így a hossz futásidőben állítható. + +Ez egy klasszikus példa egy **spilled array formula**‑ra, amely egyszerűsíti az adatgenerálási feladatokat. + +--- + +## Gyakori buktatók és profi tippek + +| Buktató | Megoldás | +|---------|----------| +| A `workbook.Calculate()` elfelejtése | Mindig hívd meg a képletek módosítása után; különben a lap régi, gyorsítótárazott értékeket mutat. | +| Régebbi Aspose.Cells verzió használata | Frissíts a legújabb NuGet csomagra, hogy biztosítsd a dinamikus tömbfüggvények, például a `SEQUENCE`, támogatását. | +| Mentés a számítás előtt | Mentsd **a `Calculate` után**, hogy a fájl a legújabb eredményeket tartalmazza. | +| Feltételezni, hogy a spill felülírja a meglévő adatokat | Az Aspose.Cells tiszteletben tartja a spill tartományon kívüli meglévő adatokat; ha tiszta lapra van szükséged, előbb töröld a területet. | + +**Pro tipp:** Ha a sorozat hosszát konfigurálhatóvá szeretnéd tenni, tárold a számot egy cellában (pl. `C1`), és használd a `=SEQUENCE(C1)`‑t – a számítási motor futásidőben beolvassa az értéket. + +--- + +## A példa kiterjesztése + +Most, hogy tudod, hogyan **create new workbook C#**, a következőket teheted: + +- Bonyolultabb képletek hozzáadása, amelyek a spillolt tartományra hivatkoznak (`=SUM(A1#)`, ahol a `#` a spillt jelöli). +- Exportálás PDF‑be a `workbook.Save("output.pdf", SaveFormat.Pdf)` segítségével. +- Diagramok beszúrása, amelyek automatikusan alkalmazkodnak a dinamikus tömb méretéhez. + +Ezek mind ugyanazon **C# workbook calculation** alapra épülnek, amelyet most bemutattunk. + +--- + +## Összegzés + +Áttekintettük a **create new workbook C#** teljes folyamatát, a `Workbook` objektum példányosításától a spilloló `SEQUENCE` képlet beillesztéséig, egy függő cella módosításáig, és végül a számítás kényszerítésig, hogy minden naprakész legyen. A fenti teljes kódrészlet készen áll a futtatásra – egyszerűen helyezd egy konzolalkalmazásba, add hozzá az Aspose.Cells NuGet csomagot, és néhány másodperc alatt egy működő Excel fájlod lesz. + +Készen állsz a következő lépésre? Próbáld meg cserélni a statikus `5`‑öt egy cellahivatkozásra, kísérletezz más dinamikus tömbfüggvényekkel, mint a `FILTER` vagy a `UNIQUE`, és fedezd fel, hogyan tudja a **Aspose.Cells C#** teljes körű jelentéskészítő motorokat hajtani. Boldog kódolást! + +--- + +*Image placeholder:* + +![Képernyőfotó, amely egy frissen létrehozott munkafüzetet mutat spillolt SEQUENCE képlettel – create new workbook C# példa](/images/create-new-workbook-csharp.png) + +--- + +*Ha hasznosnak találtad ezt az útmutatót, fontold meg a repository csillagozását, a csapattagokkal való megosztását, vagy hagyj egy megjegyzést alább. A visszajelzésed táplálja a jövőbeli útmutatókat!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/hungarian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..97f0d954b9 --- /dev/null +++ b/cells/hungarian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-22 +description: Hogyan használjunk lambda kifejezést C#-ban Excel képletekkel való munkához. + Tanulja meg, hogyan írjon képletet egy cellába, hogyan konvertáljon tartományt tömbbé, + hogyan jelenítse meg a tömböt a konzolon, és hogyan számítsa ki a kotangenset Excelben. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: hu +og_description: Hogyan használjunk lambda kifejezést C#-ban az Excel képletek manipulálásához, + a tartomány tömbbé konvertálásához, képlet írásához cellába, a tömb konzolra történő + megjelenítéséhez, és a kotangens kiszámításához Excelben. +og_title: Hogyan használjunk lambda kifejezéseket C#-ban Excel képletekkel – lépésről + lépésre +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Hogyan használjuk a lambda kifejezéseket C#-ban Excel képletekkel – Teljes + útmutató +url: /hu/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan használjunk lambda-t C#-ban Excel képletekkel – Teljes útmutató + +Gondolkodtál már azon, **hogyan használjunk lambda-t**, amikor C#-ból automatizálod az Excelt? Nem vagy egyedül. Sok fejlesztő akad el, amikor az Excel új dinamikus tömbfüggvényeinek erejét kell kombinálni a C# `LAMBDA` képességével. A jó hír? Valójában elég egyszerű, ha látod, hogyan illeszkednek egymáshoz a részek. + +Ebben az útmutatóban végigvezetünk a **képlet cellába írása**, **tartomány tömbbé konvertálása**, **tömb megjelenítése a konzolon**, és még **cotangens számítása Excelben** lépéseken, miközben megmutatjuk, **hogyan használjunk lambda-t** egy `REDUCE` híváson belül. A végére lesz egy futtatható kódrészlet, amelyet bármely .NET projektbe beilleszthetsz, amely hivatkozik az Aspose.Cells-re (vagy egy hasonló könyvtárra). + +## Mit tanulhatsz meg + +- Hogyan **írjunk képletet cellába** C#-ban. +- Hogyan **konvertáljunk tartományt tömbbé** az `EXPAND` függvénnyel. +- Hogyan **jelenítsünk meg egy tömböt a konzolon** a számítás után. +- Hogyan **számítsuk ki a cotangenset Excelben** a `COT` és `COTH` használatával. +- A pontos szintaxis **hogyan használjunk lambda-t** az Excel `REDUCE` függvényén belül C#-ból. + +> **Előfeltétel:** Szükséged van egy friss .NET verzióra (Core 6+ vagy .NET Framework 4.7+), valamint az Aspose.Cells for .NET könyvtárra, amelyet a NuGet-en keresztül kell telepíteni. + +## 1. lépés: A munkafüzet előkészítése és képlet írása cellába + +Az első lépés, hogy létrehozzunk egy új munkafüzetet, és lekérjük az első munkalapot. Ezután **képletet írunk egy cellába** – ebben az esetben az `A1` tartalmazza az `EXPAND` hívás eredményét. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Miért fontos:** A képlet közvetlenül a kódból való írása lehetővé teszi, hogy helyben generálj összetett táblázatokat anélkül, hogy megnyitnád az Excelt. Emellett előkészíti a következő lépést, ahol **tartományt konvertálunk tömbbé**. + +## 2. lépés: Tartomány konvertálása tömbbé az EXPAND használatával + +`EXPAND` az Excel módja annak, hogy egy kis tartományt nagyobb mátrixszá alakítson. Ha a képletet az `A1`-be helyezzük, az Excel egy 4 × 5‑ös blokkot fog „kifolyatni” ebből a cellából. C#-ból nem kell manuálisan másolni az értékeket – a könyvtár elvégzi a nehéz munkát, amikor meghívjuk a `Calculate`-t. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Hogyan használjunk lambda-t:** Még nem, de maradj velünk. Először szükségünk van az adatokra a táblázatban, majd egy lambda-val fogjuk csökkenteni őket. + +## 3. lépés: LAMBDA használata a REDUCE-ben – A „Hogyan használjunk lambda-t” lényege + +Az Excel 365 bevezette a `REDUCE` függvényt, amely egy **kezdeti értéket**, egy **tartományt**, és egy **LAMBDA**-t fogad, amely meghatározza, hogyan kombinálja az egyes elemeket. C#-ból egyszerűen a képlet karakterláncát adjuk meg; a lambda az Excel képletben él, nem a C# kódban. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Magyarázat:** +- `0` a kezdő akkumulátor (`acc`). +- `A1:D4` a feldolgozni kívánt tartomány (a kifolyás első négy oszlopa). +- `LAMBDA(acc, x, acc + x)` azt mondja az Excelnek, hogy minden cellát (`x`) adjon hozzá az akkumulátorhoz. + +Ez a **hogyan használjunk lambda-t** lényege az aggregációhoz egy táblázatkezelő kontextusban. + +## 4. lépés: Cotangens számítása Excelben – Fokból hiperbolikusra + +Ha trigonometrikus eredményekre van szükséged, az Excel `COT` és `COTH` függvényei egyszerűek. Ezeket a `G1` és `G2` cellákba helyezzük. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Miért hasznos:** A **cotangens számítása Excelben** ismerete megspórolhatja a saját matematikai kód írását, különösen, ha a munkafüzetet nem‑fejlesztőkkel osztod meg. + +## 5. lépés: Számítás kényszerítése és a kibővített tömb lekérése + +Most azt mondjuk a munkafüzetnek, hogy értékelje ki az összes képletet, majd kinyerjük a kifolyott tömböt az `A1`-ből. Itt jön a **tömb megjelenítése a konzolon**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Ami látható lesz:** +- Egy szép formázott 4 × 5‑ös mátrix, soronként nyomtatva. +- A `REDUCE` lambda által kiszámított összeg. +- A két cotangens érték. + +Ez befejezi a folyamatot a **képlet cellába írásától** egészen a **tömb konzolon való megjelenítéséig**. + +## Teljes működő példa (másolás‑beillesztés kész) + +Az alábbiakban a teljes program látható, amelyet beilleszthetsz egy konzolos alkalmazásba. Ne felejtsd el először hozzáadni az `Aspose.Cells` NuGet csomagot (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Várható konzolkimenet (az értékek a B1:C2 alapértelmezett tartalma alapján változhatnak, ami alapértelmezés szerint 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Nyugodtan töltsd fel a `B1:C2` tartományt saját számaiddal a futtatás előtt – a mátrix ezeknek az értékeknek a megfelelően fog megjelenni. + +## Pro tippek és gyakori buktatók + +- **Pro tip:** Ha a kifolyó tartományt máshol szeretnéd kezdeni, egyszerűen módosítsd a célcellát (`A1`). Az `EXPAND` függvény tiszteletben tartja a horgonyt. +- **Vigyázz:** A forrástartomány üres cellái `0`-ként jelennek meg a kifolyott tömbben, ami befolyásolhatja a `REDUCE` összegét. +- **Különleges eset:** Ha a munkafüzet olyan képleteket tartalmaz, amelyek volatilis függvényektől (pl. `NOW()`) függenek, hívd meg a `workbook.Calculate()`-t a képletek beállítása után, hogy minden naprakész legyen. +- **Teljesítményjegyzet:** Nagy kifolyások esetén fontold meg a méret korlátozását az `EXPAND` hívásban; különben több memóriát foglalhatsz, mint amire szükség van. +- **Kompatibilitás:** A ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/number-and-display-formats-in-excel/_index.md b/cells/hungarian/net/number-and-display-formats-in-excel/_index.md index 29a0bf02e4..ae5aa94123 100644 --- a/cells/hungarian/net/number-and-display-formats-in-excel/_index.md +++ b/cells/hungarian/net/number-and-display-formats-in-excel/_index.md @@ -21,7 +21,7 @@ Amikor az Excelre gondolunk, gyakran adatokkal teli táblázatokat képzelünk e ## Beépített számformátumok használata -beépített számformátumok használata hihetetlenül egyszerű! Tegyük fel, hogy azt szeretnéd, hogy az Excel-táblázatod következetesen jelenítse meg a pénzértékeket. Ahelyett, hogy manuálisan formáznád az egyes cellákat, az Aspose.Cells segítségével automatikusan alkalmazhatsz olyan formátumokat, mint a pénznem vagy a százalék. Ez a funkció nemcsak a prezentációt javítja, hanem kiküszöböli az emberi hibákat is. Képzeld el a megkönnyebbülést, amikor tudod, hogy minden adatod helyesen van formázva, mielőtt elküldöd. Olyan, mintha egy személyi asszisztensed lenne, aki csak a táblázatod esztétikájával foglalkozik! További információkért nézd meg az oktatóanyagunkat a következőről: [Beépített számformátumok használata az Excelben programozottan](./using-built-in-number-formats/). +beépített számformátumok használata hihetetlenül egyszerű! Tegyük fel, hogy azt szeretnéd, hogy az Excel-táblázatod következetesen jelenítse meg a pénzértékeket. Ahelyett, hogy manuálisan formáznád az egyes cellákat, az Aspose.Cells segítségével automatikusan alkalmazhatsz olyan formátumokat, mint a pénznem vagy a százalék. Ez a funkció nemcsak a prezentációt javítja, hanem kiküszöböli az emberi hibákat is. Képzeld el a megkönnyebbülést, amikor tudod, hogy minden adatod helyesen van formázva, mielőtt elküldöd. Olyan, mintha egy személyi asszisztended lenne, aki csak a táblázatod esztétikájával foglalkozik! További információkért nézd meg az oktatóanyagunkat a következőről: [Beépített számformátumok használata az Excelben programozottan](./using-built-in-number-formats/). ## Megjelenítési formátumok testreszabása @@ -32,6 +32,10 @@ Ha személyesebbé szeretnéd tenni az Excel-táblázataidat, a megjelenítési Automatizálja a számformázást az Excelben az Aspose.Cells for .NET használatával. Ismerje meg, hogyan alkalmazhat programozottan dátum-, százalék- és pénznemformátumokat. ### [Megjelenítési formátumok testreszabása felhasználó által definiált számokkal](./customizing-display-formats-with-user-defined-numbers/) Ismerje meg, hogyan szabhatja testre a megjelenítési formátumokat az Aspose.Cells for .NET segítségével. Formázza a dátumokat, százalékokat és pénznemeket ezzel a lépésről lépésre bemutató útmutatóval. +### [Excel exportálása formázással – Számformátum megőrzése](./how-to-export-excel-with-formatting-preserve-number-format/) +Tanulja meg, hogyan exportálhatja az Excel-fájlt a formázás megtartásával, beleértve a számformátumok megőrzését az Aspose.Cells for .NET segítségével. +### [Dátum és idő formázása ISO formátumba C#-ban – Teljes útmutató](./format-datetime-to-iso-in-c-complete-guide/) +Ismerje meg, hogyan formázhatja a dátum- és időértékeket ISO 8601 formátumba C#-ban az Aspose.Cells for .NET segítségével. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/hungarian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..9b17e68fab --- /dev/null +++ b/cells/hungarian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Tanulja meg, hogyan formázhatja a dátum‑idő értéket ISO formátumba, miközben + Excelből kinyeri a dátumot, és hogyan jelenítheti meg az ISO dátumot az Aspose.Cells + segítségével C#‑ban. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: hu +og_description: A dátum és idő ISO formátumba konvertálása egyszerű. Ez az útmutató + bemutatja, hogyan lehet kinyerni a dátumot az Excelből, és megjeleníteni az ISO + dátumot az Aspose.Cells segítségével. +og_title: Dátum és idő formázása ISO formátumba C#-ban – Lépésről lépésre útmutató +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Dátum és idő formázása ISO formátumba C#-ban – Teljes útmutató +url: /hu/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Dátum és idő formázása ISO formátumba C#‑ban – Teljes útmutató + +Valaha szükséged volt **format datetime to iso**-ra, de a forrás egy Excel munkafüzetben van? Lehet, hogy a cella egy japán korszakot tartalmaz, például “令和3年5月1日”, és azon kapkodod a fejed, hogy hogyan alakítsd át egy tiszta `2021‑05‑01` karakterlánccá. Nem vagy egyedül. Ebben az útmutatóban **extract date from excel**‑t fogunk végrehajtani, feldolgozzuk a japán korszakot, majd **display iso date**-t jelenítünk meg a konzolon – mindezt néhány C# és Aspose.Cells sorral. + +Végigvezetünk minden szükséges lépésen: a szükséges NuGet csomagon, a pontos kódrészleten, amelyet egyszerűen másolhatsz‑beilleszthetsz, hogy miért fontos minden sor, és néhány edge‑case tippel. A végére egy újrahasználható kódrészletet kapsz, amely **formats datetime to iso**, függetlenül attól, milyen furcsa az eredeti Excel érték. + +## Amire szükséged lesz + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.6+‑on is fordul) +- Visual Studio 2022 (vagy bármelyik kedvenc szerkesztő) +- **Aspose.Cells for .NET** NuGet csomag – `Install-Package Aspose.Cells` +- Egy Excel fájl (vagy egy új munkafüzet), amely japán korszak formátumú dátumot tartalmaz + +Ennyi. Nincs extra könyvtár, nincs COM interop, csak egyetlen, jól dokumentált metódus. + +## 1. lépés: Munkafüzet létrehozása és japán korszak dátum írása + +Először is szükségünk van egy munkafüzetre, amivel dolgozhatunk. Ha már van egy Excel fájlod, betöltheted a `new Workbook("path")`‑vel. Ebben a példában egy új munkafüzetet hozunk létre a memóriában, és egy japán korszak szöveget helyezünk a **A1** cellába. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Miért csináljuk ezt:** Aspose.Cells alapértelmezés szerint a cellaértékeket karakterláncként kezeli. A nyers korszak szöveg beillesztésével egy valós helyzetet szimulálunk, ahol egy japán ügyfél a saját naptáruk szerint adta meg a dátumokat. + +## 2. lépés: Japán korszak feldolgozás engedélyezése és a dátum kinyerése + +Az Aspose.Cells automatikusan le tudja fordítani a japán korszak karakterláncokat .NET `DateTime` objektumokká – ha ezt engedélyezed. A `DateTimeParseOptions.EnableJapaneseEra` jelző végzi a nehéz munkát. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tipp:** Ha elfelejted az `EnableJapaneseEra` opciót, a könyvtár az eredeti karakterláncot adja vissza, és a későbbi konverzió hibára fut. Mindig ellenőrizd a `parsed.Type`‑t, ha vegyes tartalommal dolgozol. + +## 3. lépés: A feldolgozott DateTime konvertálása ISO 8601‑re + +Most, hogy már van egy megfelelő `DateTime` objektumunk, az ISO‑formátumú karakterlánccá alakítása gyerekjáték. A `"yyyy-MM-dd"` minta megfelel az ISO 8601 dátum résznek, amit a legtöbb API elvár. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Running the program prints: + +``` +ISO date: 2021-05-01 +``` + +Ez a **display iso date**, amit kerestél. + +## Teljes, futtatható példa + +Az alábbi teljes kódrészletet közvetlenül beillesztheted egy konzolos projektbe. Nincs rejtett függőség, nincs extra konfiguráció. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Várható kimenet:** `ISO date: 2021-05-01` + +## Lépésről‑lépésre magyarázat (Miért fontos minden részlet) + +| Lépés | Mi történik | Miért fontos | +|------|--------------|--------------------| +| **Munkafüzet létrehozása** | Inicializál egy memóriában lévő Excel konténert. | Egy sandboxot biztosít a teszteléshez, anélkül, hogy a fájlrendszert érintenéd. | +| **PutValue** | Elhelyezi a nyers japán korszak karakterláncot a **A1** cellában. | Utánozza a valós adatbevitelt; biztosítja, hogy a parser a pontos szöveget lássa. | +| **GetValue with `EnableJapaneseEra`** | Átalakítja a korszak karakterláncot .NET `DateTime` objektummá. | Automatikusan kezeli a naptárkonverziót – manuális keresőtáblákra nincs szükség. | +| **`ToString("yyyy-MM-dd")`** | Formázza a `DateTime`-ot ISO 8601‑re. | Garantál egy kultúra‑független, rendezhető dátumkarakterláncot, amelyet a REST API‑k, adatbázisok stb. elfogadnak. | +| **Console.WriteLine** | Megjeleníti a végső ISO dátumot. | Megerősíti, hogy az egész folyamat vég‑től‑végig működik. | + +## Gyakori változatok kezelése + +### 1. Különböző cellahelyek + +Ha a dátumod a **B2** cellában vagy egy névvel ellátott tartományban van, egyszerűen cseréld le az `"A1"`‑t a megfelelő címre: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Több dátum egy oszlopban + +Ha sok sorban kell **extract date from excel**‑t végrehajtani, iterálj a használt tartományon: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Tartalék nem‑korszak dátumokhoz + +Ha egy cella már egy szabványos dátumkarakterláncot tartalmaz, a parser továbbra is működik, de érdemes egy biztonsági hálót beépíteni: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +A `TryParse` jelző megakadályozza a kivételeket, és ha a konverzió sikertelen, az eredeti értéket adja vissza. + +### 4. Idő komponens + +Ha szükséged van az idő részre is, használd a `"yyyy-MM-ddTHH:mm:ss"` formátumot: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Ez egy teljes ISO 8601 időbélyeget eredményez (`2021-05-01T00:00:00`). + +## Vizuális segédlet + +![dátum és idő formázása ISO példája](image.png "Példa a dátum és idő ISO formátumba történő formázására C#‑ban") + +*Alt szöveg:* *dátum és idő formázása ISO példája a konzol kimenetén* + +## Gyakran Ismételt Kérdések + +- **Használhatom ezt .xls fájlokkal?** + Igen. Az Aspose.Cells alapból támogatja a `.xls`, `.xlsx`, `.csv` és számos más formátumot. + +- **Mi van, ha a munkafüzet jelszóval védett?** + Töltsd be a `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`‑vel. + +- **Az ISO formátum helyi beállítástól függ?** + Nem. A `"yyyy-MM-dd"` minta kultúra‑független, garantálva ugyanazt a karakterláncot minden gépen. + +- **Működik ez .NET Core‑on?** + Teljesen – az Aspose.Cells .NET Standard 2.0‑nak megfelelő. + +## Összegzés + +Áttekintettük, hogyan **format datetime to iso** **extract date from excel**‑vel, a japán korszak karakterláncok feldolgozásával, és végül **display iso date** megjelenítésével a konzolon. A fő lépések – munkafüzet létrehozása, a korszak szöveg írása vagy betöltése, a japán korszak feldolgozás engedélyezése, és a `ToString("yyyy-MM-dd")` formázás – mindent tartalmaznak a legtöbb esethez. + +Ezután esetleg szeretnéd: + +- Visszaírni az ISO dátumokat egy másik oszlopba a további feldolgozáshoz. +- Exportálni a módosított munkafüzetet CSV‑be tömeges importáláshoz. +- Összevonni ezt a logikát egy web API‑val, amely Excel feltöltéseket fogad, és JSON‑kódolt ISO dátumokat ad vissza. + +Nyugodtan kísérletezz különböző dátumformátumokkal, időzónákkal vagy akár egyedi naptárakkal. Az Aspose.Cells rugalmassága miatt ritkán ütközöl akadályba. + +Boldog kódolást, és legyenek a dátumaid mindig tökéletesen ISO‑kompatibilisek! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/hungarian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..e37be7e19e --- /dev/null +++ b/cells/hungarian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Hogyan exportáljunk Excel-t formázással és megőrizzük a számformátumot. + Tanulja meg, hogyan konvertáljon Excel-tartományt, hogyan szerezze meg a képlet + eredményét, és hogyan exportáljon Excel-t formázással az Aspose.Cells használatával. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: hu +og_description: Hogyan exportáljunk Excel-t formázással és megőrizve a számformátumot. + Lépésről‑lépésre útmutató az Excel‑tartomány konvertálásához, a képlet eredményének + lekéréséhez, és az Excel formázott exportálásához C#‑ban. +og_title: Hogyan exportáljunk Excel-t formázással – a számformátum megőrzése +tags: +- C# +- Aspose.Cells +- Excel automation +title: Hogyan exportáljunk Excel-t formázással – a számformátum megőrzése +url: /hu/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan exportáljunk Excel-t formázással – Számformátum megőrzése + +Valaha is elgondolkodtál azon, **how to export Excel** adatokat, miközben minden cella megjelenését pontosan úgy őrzöd, ahogy a munkafüzetben látható? Lehet, hogy jelentést kell elküldened egy ügyfélnek, egy rácsvezérlőnek kell adatot adnod, vagy egyszerűen csak az értékeket egy adatbázisban szeretnéd tárolni. A leggyakoribb probléma a számformátum elvesztése vagy a képletek nyers szöveggé válása. + +Ebben az útmutatóban egy teljes, azonnal futtatható C# példán keresztül vezetünk végig, amely **preserves number format**, **converts an Excel range** egy `DataTable`-be, **gets the formula result**, és végül **exports Excel with formatting** az Aspose.Cells használatával. A végére egyetlen metódust kapsz, amelyet bármelyik projektbe beilleszthetsz, és egy munkalap hivatkozással meghívhatsz. + +> **Quick preview:** a kód létrehoz egy munkafüzetet, beír egy értéket és egy képletet, azt mondja az Aspose.Cells-nek, hogy exportálja a cellákat formázott karakterláncokként, és kiírja a `123.456 | 246.912` értéket – pontosan azt, amit az Excelben várnál. + +--- + +## Amire szükséged lesz + +- **Aspose.Cells for .NET** (az ingyenes próba megfelelő a tanuláshoz) +- .NET 6.0 vagy újabb (az API ugyanaz a .NET Framework‑on is) +- Egy alap C# fejlesztői környezet (Visual Studio, VS Code, Rider… válaszd ki a neked megfelelőt) + +Nem szükséges további NuGet csomag az Aspose.Cells-en kívül. Ha még nem telepítetted, futtasd: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## 1. lépés – Munkafüzet létrehozása és értékek írása (beleértve egy képletet) + +Először létrehozunk egy új munkafüzetet, és egy numerikus értéket helyezünk a **A1** cellába. Ezután egy egyszerű képletet adunk hozzá a **B1** cellához, amely a első cellát kettővel szorozza. Ez előkészíti a **get formula result** bemutatását a későbbiekben. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Miért fontos:** +- A `PutValue` a nyers számot tárolja, míg a `PutFormula` a számítást. +- Az Aspose.Cells a képletet **élő** állapotban tartja, így amikor később a cella értékét kérjük, ténylegesen a `246.912` értéket kapjuk, nem a `"=A1*2"` szöveget. + +--- + +## 2. lépés – Az Aspose.Cells tájékoztatása, hogy exportálja az értékeket formázott karakterláncokként + +Ha egyszerűen meghívod a `ExportDataTable`-t az alapértelmezett beállításokkal, a numerikus cellák az alapul szolgáló `double` értékekkel fognak visszatérni. Ez eltávolítja az esetleges ezreselválasztókat, pénznem jeleket vagy egyéni tizedesjegyeket, amelyeket beállítottál. Az `ExportTableOptions` osztály lehetővé teszi, hogy **preserve number format** és **export as string**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Fontos pont:** az `ExportNumberFormat = true` az a jelző, amely a **preserve number format** működését biztosítja. Enélkül a `"123.456"` és `"246.912"` nyers számként jelenik meg, ami a kódban rendben lehet, de nem akkor, amikor az adatot egy olyan UI‑ba illeszted be, amely az Excelhez hasonló formázást vár. + +--- + +## 3. lépés – Exportált adatok kiírása (ellenőrzés) + +Most, hogy van egy `DataTable`-ünk, amely formázott karakterláncokkal teli, írjuk ki a tartalmát a konzolra. Ez azt is bemutatja, hogy sikeresen **get formula result** anélkül, hogy magunk értékelnénk a képletet. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Vedd észre, hogy a második oszlop a **formula result**-ot mutatja, nem a képlet szövegét. Ez pontosan az, amire szükséged van, amikor **export Excel with formatting**-ot végzel a további feldolgozáshoz. + +--- + +## 4. lépés – Nagyobb Excel tartományok konvertálása (opcionális) + +A fenti példa egy apró `A1:B1` szeletet kezel, de a valós helyzetek gyakran igénylik az egész táblázatok exportálását. Ugyanaz a metódus bármilyen téglalap alakú blokkra működik – csak állítsd be a `firstRow`, `firstColumn`, `totalRows` és `totalColumns` argumentumokat. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tipp:** Ha a lapod már tartalmaz fejlécsort, állítsd a `includeColumnNames` értékét `true`-ra. Az Aspose.Cells a tartomány első sorát fogja oszlopnevekként használni, ami hasznos, ha később a `DataTable`-t UI rácshoz kötöd. + +--- + +## 5. lépés – Gyakori buktatók és hogyan kerüld el őket + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Numbers lose commas or currency symbols** | `ExportAsString` is `false` or `ExportNumberFormat` is omitted | Set both `ExportAsString = true` **and** `ExportNumberFormat = true`. | +| **Formula cells return the formula text** | You didn’t call `CalculateFormula` before export (only needed if the workbook isn’t set to auto‑calculate) | Either enable auto‑calculate (`workbook.CalculateFormula()`) or rely on `ExportAsString` which forces evaluation. | +| **Headers appear as data rows** | `includeColumnNames` set to `false` while your range includes a header row | Set `includeColumnNames = true` to treat the first row as column names. | +| **Large ranges cause memory pressure** | Exporting the entire sheet at once loads everything into memory | Export in chunks (e.g., 500 rows at a time) and merge `DataTable`s if needed. | + +--- + +## 6. lépés – Teljes működő példa (másolás-beillesztés kész) + +Az alábbiakban a teljes program látható, a `using` direktíváktól a `Main`-ig. Illeszd be egy konzolos alkalmazásba, és nyomd meg a **F5**-öt – a formázott kimenetet azonnal láthatod. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Ez a teljes **how to export excel** munkafolyamat, a formázás megmarad, a képlet eredmények kiértékelődnek, és egy tiszta `DataTable` áll készen bármely .NET felhasználó számára. + +--- + +## Következtetés + +Megmutattuk mindent, amit a **how to export Excel** adatok **preserving number format**, **converting an Excel range** egy `DataTable`-be, és **getting formula results** extra feldolgozás nélkül kell tudnod. A kulcs az `ExportTableOptions` konfiguráció – ha beállítod az `ExportAsString` és `ExportNumberFormat` értékét `true`-ra, az Aspose.Cells elvégzi a nehéz munkát. + +From here you can: + +- A `DataTable`-t csatlakoztathatod egy WPF `DataGrid`-hez vagy ASP.NET MVC nézethez. +- A táblát CSV fájlba írhatod, miközben megőrzöd a pontos vizuális megjelenést. +- Kiterjesztheted a megközelítést több munkalapra vagy dinamikus tartományokra. + +Nyugodtan kísérletezz különböző formátumokkal (pénznem, százalék) és nagyobb adatblokkokkal. Ha bármilyen furcsaságba ütközöl, nézd meg újra a **common pitfalls** táblázatot – ez lefedi a leggyakoribb akadályokat, amikor **export excel with formatting**-et végzel. + +Boldog kódolást, és legyenek az exportált táblázataid mindig olyan kifinomultak, mint az eredetiek! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/hungarian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..7f0713f118 --- /dev/null +++ b/cells/hungarian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Tanulja meg, hogyan duplikálhatja a pivot táblát C#-ban az Aspose.Cells + segítségével. Ez az útmutató bemutatja, hogyan másolhat sorokat, és hogyan tölthet + be Excel munkafüzetet C#-ban a zökkenőmentes Excel automatizáláshoz. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: hu +og_description: Hogyan duplikáljuk a pivotot C#-ban? Kövesd ezt a tömör útmutatót + az Excel munkafüzet C#-ban történő betöltéséhez, sorok másolásához, és az Excel + automatizálás mesterségéhez a sorok másolásában. +og_title: Hogyan duplikáljuk a Pivotot C#-ban – Teljes útmutató +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Hogyan duplikáljuk a Pivot-ot C#-ban – Teljes lépésről lépésre útmutató +url: /hu/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Duplicate Pivot in C# – Complete Step‑by‑Step Guide + +Gondolkodtál már azon, hogy **how to duplicate pivot** táblákat programozottan duplikáljunk anélkül, hogy manuálisan húznánk őket Excelben? Nem vagy egyedül. Sok jelentéskészítési folyamatban ugyanaz a pivot elrendezésre van szükség egy új sorhalmazon, és kézzel végrehajtani időpocsékolás. + +A jó hír? Néhány C# sorral betöltheted az Excel munkafüzetet, meghatározhatod a pivotot tartalmazó területet, és **how to copy rows**-t, hogy a pivot egy új helyen jelenjen meg – mindezt egy automatizált futtatásban. Ebben az útmutatóban továbbá bemutatjuk a **load excel workbook c#** alapjait, és szilárd alapot adunk a **excel automation copy rows** feladatokhoz. + +> **What you’ll walk away with** +> • Egy teljes, futtatható példát, amely duplikálja a pivot táblát. +> • Magyarázatot arra, hogy miért fontos minden sor. +> • Tippeket a szélhelyzetek kezeléséhez, például rejtett munkalapok vagy több pivot esetén. + +--- + +## Előfeltételek + +Mielőtt belevágnánk, győződj meg róla, hogy rendelkezel: + +- **.NET 6.0** (vagy bármely friss .NET verzió) telepítve. +- **Aspose.Cells for .NET** – a könyvtár, amelyet az Excel fájlok manipulálásához használunk. NuGet‑en keresztül szerezheted be: + +```bash +dotnet add package Aspose.Cells +``` + +- Egy forrás munkafüzet (`Source.xlsx`), amely már tartalmaz egy pivot táblát a **A1:J20** tartományban (ez a tartomány, amelyet duplikálni fogunk). +- Alapvető ismeretek a C# szintaxisról – semmi különös, csak a szokásos `using` utasítások és a `Main` metódus. + +Ha bármelyik ismeretlennek tűnik, tarts egy szünetet és telepítsd a csomagot; a útmutató további része feltételezi, hogy a könyvtár készen áll a használatra. + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "how to duplicate pivot in C# illustration") + +*Kép alternatív szöveg: "how to duplicate pivot in C# példája, amely a forrás és a duplikált pivot sorokat mutatja".* + +## Step 1: Load Excel Workbook C# – A fájl megnyitása + +Az első dolog, amit meg kell tenned, amikor **load excel workbook c#** szeretnél, az egy `Workbook` példány létrehozása, amely a fájlodra mutat. Ez az objektum hozzáférést biztosít minden munkalaphoz, cellához és pivothoz a fájlban. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Miért fontos ez:** +`Workbook` egy absztrakciót biztosít az egész Excel fájlra egy memóriabeli modellben. A betöltés nélkül nem tudod megvizsgálni a pivot helyét vagy sorokat másolni. Emellett a konstruktor automatikusan felismeri a fájlformátumot (XLS, XLSX, CSV, stb.), így nem kell extra kód a formátum felismeréséhez. + +## Step 2: How to Copy Rows – A pivot terület meghatározása + +Miután a munkafüzet a memóriában van, meg kell mondanunk az Aspose.Cells‑nek, mely sorok tartalmazzák a pivotot. A példánkban a pivot a **A1:J20** tartományban van, ami **0‑19** sorokra (nulla‑alapú indexelés) fordítható. Ezt egy `CellArea` struktúrába fogjuk csomagolni. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Miért használjuk a `CellArea`‑t:** +Ez egy könnyű módja egy téglalap alakú blokk leírásának. Amikor később meghívod a `CopyRows`‑t, a metódus ezt az objektumot olvassa, hogy pontosan tudja, mely sorokat kell duplikálni. Ha valaha módosítanod kell a tartományt (például a pivot a K oszlopig nő), csak az `endColumn` értéket kell változtatnod. + +## Step 3: A cél munkalap elérése + +A legtöbb munkafüzetnek egyetlen lapja van, de az API ugyanúgy működik több lap esetén is. Szerezd meg az első munkalapot (index 0) – itt található az eredeti pivot. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tipp:** +Ha névvel ellátott lapjaid vannak, akkor a nevével is lekérheted őket: `workbook.Worksheets["Sheet1"]`. Ez segít elkerülni a indexek hard‑kódolását, ha a munkafüzet szerkezete változik. + +## Step 4: How to Copy Rows – A pivot tábla duplikálása + +Itt van a **how to duplicate pivot** lényege: a pivotot tartalmazó sorokat egy új helyre másoljuk. Ebben az esetben a 31. sornál (nulla‑alapú index 30) kezdünk. A `CopyRows` metódus *mind* az adatot és a mögöttes pivot gyorsítótárat másolja, így az új sorok pontosan úgy viselkednek, mint az eredetiek. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Mi történik a háttérben?** +`CopyRows` minden sort klónoz, megőrizve a képleteket, stílusokat és a pivot definíciókat. Mivel a pivot gyorsítótár a munkafüzet szintjén él, a duplikált pivot automatikusan ugyanarra az adatforrásra hivatkozik – nincs szükség extra konfigurációra. + +**Szélhelyzet – rejtett sorok:** +Ha a forrás tartomány bármely sora rejtett, a másolás után is rejtett marad. Ha fel akarod fedni őket, hívd meg a `worksheet.Rows[destRow].IsHidden = false` parancsot a másolás után. + +## Step 5: A munkafüzet mentése – A duplikátum ellenőrzése + +Végül írd vissza a változásokat a lemezre. Felülírhatod az eredeti fájlt, vagy biztonságosabb, ha új néven mented, így össze tudod hasonlítani a változás előtti és utáni állapotot. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Az eredmény, amit látnod kell:** +Nyisd meg a `CopyWithPivot.xlsx` fájlt. Megtalálod az eredeti pivotot a **A1:J20** tartományban, és egy azonos másolatot a **A31:J50** tartományban. Mindkét pivot önállóan frissíthető, és a eredetihez csatolt szeletelők (slicerek) továbbra is működnek a másolaton, mivel ugyanazt a gyorsítótárat használják. + +## Gyakori kérdések és variációk + +### Duplikálhatok több pivotot egyszerre? + +Természetesen. Iterálj végig az összes pivot táblán (`worksheet.PivotTables`) és másold minden egyes tartományát egy külön célterületre. Csak ügyelj arra, hogy a cél tartományok ne fedjék át egymást. + +### Mi van, ha a forrás munkafüzet jelszóval védett? + +Az Aspose.Cells lehetővé teszi egy védett fájl megnyitását a jelszó átadásával a `Workbook` konstruktorban: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Hogyan másolhatók a sorok anélkül, hogy a képletek érintettek lennének? + +Ha csak az *értékeket* (képletek nélkül) szeretnéd, használd a `CopyRows`-t a `CopyOptions` zászlóval: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Van mód a sorok *másik* munkafüzetbe másolására? + +Igen. A sorok másolása után a forrás lapot klónozhatod egy másik `Workbook` példányba a `targetWorkbook.Worksheets.AddCopy(worksheet)` segítségével. + +## Pro tippek a megbízható Excel Automation Copy Rows-hez + +- **Érvényesítsd a tartományt** a másolás előtt. Egy egyszerű `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` megakadályozza a tartományon kívüli hibákat. +- **Kapcsold ki a számítást** nagy tartományok másolása közben: `workbook.Settings.CalcMode = CalcMode.Manual;` – ez jelentősen felgyorsítja a műveletet. +- **Felszabadítsd az objektumokat** (`workbook.Dispose()`), ha egy ciklusban sok fájlt dolgozol fel, hogy felszabadítsd a natív erőforrásokat. +- **Logold a műveletet** – különösen a termelési folyamatokban – hogy nyomon követhesd, mely fájlok lettek feldolgozva, és időben észrevegyél hibákat. + +## Következtetés + +Most már tudod, hogyan **how to duplicate pivot** táblákat C#‑ban az Aspose.Cells használatával, és láttad a teljes munkafolyamatot a **load excel workbook c#**‑től a **excel automation copy rows**‑ig, majd a végeredmény mentéséig. A példa önálló, azonnal futtatható, és kiterjeszthető több pivot kezelésére, védett fájlokra vagy munkafüzetközi másolásra. + +**Következő lépések?** Próbáld meg a szkriptet a következőkre adaptálni: + +- A duplikált pivot programozott frissítése (`pivotTable.RefreshData();`). +- A duplikált terület CSV‑be exportálása további feldolgozáshoz. +- A kód integrálása egy ASP.NET Core API‑ba, hogy a felhasználók feltölthessenek egy fájlt és azonnal megkapják a duplikált‑pivot verziót. + +Boldog kódolást, és legyen az Excel automatizálásod mindig zökkenőmentes! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/row-and-column-management/_index.md b/cells/hungarian/net/row-and-column-management/_index.md index c584ed1b96..bdafa5bc69 100644 --- a/cells/hungarian/net/row-and-column-management/_index.md +++ b/cells/hungarian/net/row-and-column-management/_index.md @@ -68,7 +68,7 @@ Ismerje meg, hogyan törölhet oszlopokat egy Excel-fájlban az Aspose.Cells for Tanuld meg, hogyan törölhetsz egy sort Excelben az Aspose.Cells for .NET segítségével. Ez a lépésenkénti útmutató ismerteti az előfeltételeket, a kódimportálást és a zökkenőmentes adatkezelés részletes bemutatását. ### [Több sor törlése az Aspose.Cells .NET-ben](./delete-multiple-rows-aspose-cells/) Tanuld meg, hogyan törölhetsz több sort Excelben az Aspose.Cells for .NET segítségével. Ez a részletes, lépésről lépésre haladó útmutató tartalmazza az előfeltételeket, a kódolási példákat és a fejlesztőknek szóló GYIK-et. -### [Oszlop beszúrása az Aspose.Cells .NET-be](./insert-column-aspose-cells/) +### [Oszlop beszúrása az Aspose.Cells .NET-be](./delete-column-aspose-cells/) Tanuld meg, hogyan szúrhatsz be oszlopot Excelben az Aspose.Cells for .NET használatával. Kövesd egyszerű, lépésről lépésre szóló útmutatónkat egy új oszlop zökkenőmentes hozzáadásához. Tökéletes .NET fejlesztők számára. ### [Sor beszúrása az Aspose.Cells .NET-be](./insert-row-aspose-cells/) Tanuld meg, hogyan szúrhatsz be sort Excelben az Aspose.Cells for .NET használatával ezzel a lépésről lépésre szóló útmutatóval. Fejleszd adatkezelési készségeidet könnyedén. @@ -76,6 +76,8 @@ Tanuld meg, hogyan szúrhatsz be sort Excelben az Aspose.Cells for .NET használ Tanuld meg, hogyan szúrhatsz be formázott sort Excelben az Aspose.Cells for .NET használatával. Kövesd lépésről lépésre szóló útmutatónkat az egyszerű megvalósításhoz. ### [Több sor beszúrása az Aspose.Cells .NET-be](./insert-multiple-rows-aspose-cells/) Tanuld meg, hogyan szúrhatsz be több sort Excelben az Aspose.Cells for .NET segítségével. Kövesd részletes oktatóanyagunkat a zökkenőmentes adatkezeléshez. +### [Aspose Cells sorok törlése – Fejléc sor védelme Excelben](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Ismerje meg, hogyan törölhet sorokat úgy, hogy a fejléc sort megőrizze az Excel-fájlban az Aspose.Cells for .NET használatával. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/hungarian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..4df651fbbb --- /dev/null +++ b/cells/hungarian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells sorok törlése a fejlécsor védelme mellett. Tanulja meg, + hogyan lehet lekérni az első táblázatot, és biztonságosan törölni az Excel táblázat + sorait C#‑ban. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: hu +og_description: Aspose Cells sorok törlése a fejléc sor védelmével. Tanulja meg, hogyan + lehet lekérni az első táblázatot, és biztonságosan törölni az Excel táblázat sorait + C#-ban. +og_title: Aspose Cells sorok törlése – Fejléc sor védelme Excelben +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells sorok törlése – Fejlécsor védelme Excelben +url: /hu/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells sorok törlése – Fejléc sor védelme Excelben + +Már próbálta **aspose cells delete rows** egy táblából, csak hogy a fejléc eltűnjön? Ez egy gyakori buktató, amikor programozottan manipulálunk Excel munkalapokat. Ebben az útmutatóban végigvezetünk egy teljes, futtatható megoldáson, amely **védi a fejléc sort**, megmutatja, hogyan **retrieve first table**, és biztonságosan **delete Excel table rows** anélkül, hogy megbontaná a szerkezetet. + +Mindent lefedünk a munkafüzet betöltésétől a Aspose által dobott kivétel kezeléséig, amikor megpróbálja elárasztani a fejlécet. A végére egy stabil mintát kap, amelyet bármely .NET projektbe be lehet illeszteni, amely az Aspose.Cells‑t használja. + +--- + +## Amire szüksége lesz + +- **Aspose.Cells for .NET** (v23.12 vagy újabb) – a könyvtár, amely lehetővé teszi Excel fájlok kezelését Office telepítése nélkül. +- Alap C# fejlesztői környezet (Visual Studio, Rider vagy a `dotnet` CLI). +- Egy Excel fájl (`TableWithHeader.xlsx`), amely legalább egy **ListObject**‑et (Excel tábla) tartalmaz, fejléccel az első sorban. + +További NuGet csomagok nem szükségesek az Aspose.Cells‑en kívül. + +--- + +## 1. lépés: A munkafüzet betöltése és az első tábla lekérése + +Az első teendő a munkafüzet megnyitása és a módosítandó tábla megszerzése. Itt jön képbe a másodlagos kulcsszó **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Miért fontos:** +- A `Workbook` a fájlt Excel telepítése nélkül olvassa be. +- A `worksheet.ListObjects[0]` a legegyszerűbb módja a **retrieve first table**‑nak; ha több táblája van, iterálhat vagy használhatja a tábla nevét. + +> **Pro tipp:** Ha nem biztos benne, hogy egy munkalap ténylegesen tartalmaz-e táblát, először ellenőrizze a `worksheet.ListObjects.Count` értékét, hogy elkerülje a `IndexOutOfRangeException`‑t. + +--- + +## 2. lépés: Fejléc sor védelme a sorok törlése közben + +Most jön a lényeg: **aspose cells delete rows** anélkül, hogy a fejlécet eltávolítaná. Az Aspose `DeleteRows` metódusa nullától indexelt kezdő indexet és egy darabszámot vár. A fejléc (0‑ás sor) törlése kivételt vált ki, amit el akarunk kerülni. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**A logika magyarázata:** + +| Lépés | Indoklás | +|------|----------| +| `table.DeleteRows(1, 2);` | Az 1‑es index a **második** sorra (az első adat sorra) mutat. Két sor törlése az Excelben a 2‑3‑as sorokat távolítja el, a fejléc (1‑es sor) érintetlen marad. | +| `catch (Exception ex)` | Az Aspose csak akkor dob kivételt, ha a művelet elárasztaná a fejlécet. A kifogás elkapása lehetővé teszi, hogy barátságos üzenetet loggoljon ahelyett, hogy az alkalmazás összeomlana. | +| `Save` | A változtatások mentése után megnyithatja a `Result.xlsx` fájlt, és láthatja, hogy a fejléc még mindig jelen van. | + +> **Mi van, ha tényleg törölni kell a fejlécet?** +> Használja a `table.ShowHeaders = false;` beállítást a törlés előtt, vagy törölje az egész táblát és hozza létre újból. A legtöbb üzleti helyzetben azonban a **protect header row** a kívánt megoldás. + +--- + +## 3. lépés: Az eredmény ellenőrzése – Várt kimenet + +A program futtatása után nyissa meg a `Result.xlsx` fájlt. A következőket kell látnia: + +- Az első sor még mindig a régi oszlopcímeket tartalmazza. +- A 2‑3‑as sorok (amelyeket célzottunk) eltűntek, a maradék adat feljebb tolódott. + +A konzol a következőt írja ki: + +``` +Rows deleted successfully. +``` + +Ha véletlenül a fejlécet próbálta törölni (pl. `table.DeleteRows(0, 1);`), a kimenet így néz ki: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Ez az üzenet megerősíti, hogy az Aspose beépített védelme működik. + +--- + +## 4. lépés: Alternatív módszerek a **Delete Excel Table Rows**‑hez + +Néha nagyobb kontrollra van szükség – például feltétel alapján sorok törlése, vagy nem egymást követő sorok eltávolítása. Itt van két gyors minta, amely megőrzi a fejlécet. + +### 4.1 Sorok törlése adat szűrő alapján + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Tömeges törlés tartomány használatával + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Mindkét kódrészlet betartja a **protect header row** szabályt, mivel a kezdő index soha nem esik 1 alá. + +--- + +## 5. lépés: Gyakori buktatók és elkerülésük módja + +| Buktató | Ok | Megoldás | +|---------|----|----------| +| Véletlenül a fejléc törlése | `0` index használata kezdő sorként | Mindig `1`‑t használjon az adat sorokhoz, vagy előbb ellenőrizze a `table.ShowHeaders` értékét. | +| `IndexOutOfRangeException`, ha a lapnak nincs táblája | Feltételezi, hogy létezik tábla | Ellenőrizze, hogy `worksheet.ListObjects.Count > 0` legyen, mielőtt a `[0]` elemet eléri. | +| Változások nem mentődnek | Elfelejtett `Save` hívás | Módosítás után hívja meg a `workbook.Save`‑t. | +| Sorok törlése közben az indexek eltolódnak, így kimaradnak sorok | Előre iterálás törlés közben | Iteráljon **visszafelé**, vagy először gyűjtse össze a törlendő sorokat. | + +--- + +## 6. lépés: Összeállítás – Teljes működő példa + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Futtassa ezt a programot, nyissa meg a `Result.xlsx` fájlt, és láthatja, hogy a fejléc érintetlen maradt, míg a kijelölt sorok eltűntek. Ez a **teljes, önálló megoldás** a **aspose cells delete rows** problémára anélkül, hogy a fejlécet feláldozná. + +--- + +## Összegzés + +Bemutattuk, hogyan **aspose cells delete rows** miközben **protect header row**, hogyan **retrieve first table**, és több módot a **delete excel table rows** biztonságos végrehajtására. A fő tanulságok: + +- Mindig a 1‑es indexnél kezdje a törlést, hogy a fejléc megmaradjon. +- Használjon `try/catch`‑et az Aspose beépített védelmi kivétel kezelésére. +- Ellenőrizze a tábla létezését a művelet előtt, és iteráljon visszafelé, ha feltételesen töröl sorokat. + +Készen áll a következő szintre? Próbálja kombinálni ezt a megközelítést az **Aspose Cells** stílus API‑kkal, hogy a törölt sorokat előtte kiemelje, vagy automatizálja a folyamatot több munkalapon. A lehetőségek végtelenek, és most már van egy megbízható minta, amire építhet. + +Ha hasznosnak találta ezt az útmutatót, nyomjon egy lájkot, ossza meg kollégáival, vagy hagyjon megjegyzést saját edge‑case megoldásaival. Boldog kódolást! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/hungarian/net/saving-and-exporting-excel-files-with-options/_index.md index 6df1ab68b1..cfa33b68a8 100644 --- a/cells/hungarian/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/hungarian/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Tanuld meg, hogyan kezelheted a figyelmeztetéseket Excel-fájlok .NET-ben tört Tanulja meg, hogyan adhat meg dokumentumtulajdonságokat, például verziót, szerzőt és címet egy Excel-fájlban programozottan az Aspose.Cells for .NET használatával lépésről lépésre bemutatott utasításokkal. ### [Üres sorok és oszlopok levágása exportálás közben](./trimming-leading-blank-rows-and-columns/) Egyszerűsítse CSV-exportjait a kezdő üres sorok és oszlopok levágásával az Aspose.Cells for .NET segítségével. A tiszta adatok mindössze néhány lépésnyire vannak. +### [Munkafüzet mentése C#-ban – Teljes Excel automatizálási útmutató](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Ismerje meg, hogyan menthet egy munkafüzetet C#-ban az Aspose.Cells segítségével, lépésről lépésre a teljes Excel automatizálás érdekében. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/hungarian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..a19964ebdf --- /dev/null +++ b/cells/hungarian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Hogyan mentse el a munkafüzetet C#-ban az Aspose.Cells használatával + – lépésről lépésre útmutató, amely bemutatja, hogyan töltsön be Excel-fájlt, hozzon + létre munkalapot, használja újra a munkalapot, és generáljon jelentést. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: hu +og_description: Hogyan menthetünk munkafüzetet C#-ban az Aspose.Cells segítségével. + Tanulja meg, hogyan töltsön be Excel fájlt, hozzon létre munkalapot, használja újra + a munkalapot, és generáljon jelentést egyetlen útmutatóban. +og_title: Hogyan mentse el a munkafüzetet C#-ban – Teljes Excel automatizálási útmutató +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Hogyan mentse el a munkafüzetet C#-ban – Teljes Excel automatizálási útmutató +url: /hu/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan mentsünk munkafüzetet C#‑ban – Teljes Excel automatizálási útmutató + +Gondoltad már **hogyan mentsünk munkafüzetet** C#‑ban, miután adatokat dolgoztál fel? Nem vagy egyedül. A legtöbb fejlesztő elakad, amikor a jelentés tökéletesen néz ki a képernyőn, de nem akar visszaírni a lemezre. Ebben az útmutatóban egy teljes funkcionalitású példán keresztül mutatjuk be, amely nem csak **hogyan mentsünk munkafüzetet**, hanem **hogyan töltsünk be Excel‑t**, **hogyan hozzunk létre munkalapot**, **hogyan használjuk újra a munkalapot**, és **hogyan generáljunk jelentést** – mindezt az Aspose.Cells segítségével. + +Gondolj rá úgy, mint egy kávészünetes beszélgetésre, ahol a laptopomról húzom elő a kódot, és minden sort elmagyarázok. A végére egy futtatható programod lesz, amely betölti a sablont, adatokat injektál a SmartMarker‑rel, újrahasznál egy meglévő részletlap nevét, és végül a fájlt a saját mappádba írja. Nincs rejtély, csak világos lépések, amelyeket másol‑beilleszthetsz. + +## Amire szükséged lesz + +- **Aspose.Cells for .NET** (a legújabb verzió 2026‑ig). NuGet‑ből telepítheted a `Install-Package Aspose.Cells` paranccsal. +- .NET fejlesztői környezet (Visual Studio, Rider vagy VS Code a C# kiegészítővel tökéletes). +- Egy egyszerű Excel sablonfájl, amelynek neve `MasterTemplate.xlsx`, és egy általad irányított mappában található. +- Alapvető C# ismeretek – ha már írtál `Console.WriteLine`‑t, már jó úton vagy. + +> **Pro tipp:** Tedd a sablont egy külön *Resources* mappába, és jelöld meg „Copy if newer” opcióval, hogy az útvonal minden buildnél konzisztens maradjon. + +Most merüljünk el a kódban. + +## 1. lépés: Hogyan töltsünk be Excel‑t – Nyissuk meg a sablon munkafüzetet + +Az első dolog, amit meg kell tenned, hogy a munkafüzetet memóriába betöltsd. Az Aspose.Cells ezt egy soros kóddal megoldja, de a „miért” megértése segít a későbbi hibakeresésben. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Miért fontos:** A munkafüzet betöltése hozzáférést biztosít minden munkalaphoz, stílushoz és névhez a sablonban. Ha a fájl nem található, az Aspose `FileNotFoundException`‑t dob, ezért ellenőrizd az útvonalat. +- **Szélsőséges eset:** Ha a sablon jelszóval védett, add meg a jelszót a `Workbook` konstruktorában: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## 2. lépés: Hogyan használjuk újra a munkalapot – SmartMarker beállítások konfigurálása + +A SmartMarker automatikusan létrehozhat egy új részletlapot, de lehet, hogy már van egy **Detail** nevű lapod. Az ütközés elkerülése érdekében azt mondjuk a processzornak, hogy használja újra ezt a nevet. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Miért fontos:** Ezzel a beállítással az Aspose nem ad hozzá numerikus utótagot (pl. „Detail1”), ami megtörheti a downstream makrókat vagy képleteket, amelyek egy fix lapnevet várnak. +- **Mi van, ha a lap nem létezik?** Az Aspose létrehozza azt – tehát ugyanaz a kód működik, függetlenül attól, hogy a lap jelen van-e vagy sem. + +## 3. lépés: Hogyan hozzunk létre munkalapot – Adatforrás előkészítése + +Bár itt nem adunk hozzá manuálisan munkalapot, a SmartMarker‑nek átadott adat határozza meg, hogy új lap jön‑e létre. Készítsünk egy egyszerű anonim objektumot, amely egy rendeléslistát utánoz. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Miért fontos:** A SmartMarker a sablonban `&=Header` és `&=Items.Id` jelölőket keresi. Az `orderData` struktúrájának pontosan meg kell egyeznie ezekkel a jelölőkkel, különben a processzor csendben kihagyja őket. +- **Variáció:** Ha adatbázisból húzod az adatokat, cseréld le az anonim típust DTO‑k listájára vagy egy `DataTable`‑re. A processzor mindkettőt kezeli. + +## 4. lépés: Hogyan generáljunk jelentést – SmartMarker feldolgozása + +Most kötjük össze az adatot a sablonnal. A processzor az első munkalapon végigjárja a jelölőket, helyettesíti őket, és felépíti a részletlapot. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Miért fontos:** Ez az egyetlen sor végzi a nehéz munkát – kitölti a fejléceket, iterál a `Items`‑en, és figyelembe veszi a korábban beállított `DetailSheetNewName`‑t. +- **Gyakori kérdés:** *Mi van, ha több munkalapon is vannak jelölők?* Iterálj minden munkalapon, és hívd meg külön a `SmartMarkerProcessor.Process`‑t. + +## 5. lépés: Hogyan mentsünk munkafüzetet – Az eredmény fájl mentése + +Végül visszaírjuk a módosított munkafüzetet a lemezre. Itt válik konkrétté a **hogyan mentsünk munkafüzetet** kérdés. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Miért fontos:** A `Save` metódus számos formátumot támogat (`.xlsx`, `.xls`, `.csv`, `.pdf`, stb.). Alapértelmezés szerint Excel‑fájlt ír, de átadhatsz egy `SaveOptions` objektumot a kimenet módosításához. +- **Szélsőséges eset:** Ha a célfájl nyitva van Excel‑ben, a `Save` `IOException`‑t dob. Zárd be a megnyitott példányokat, vagy minden futtatásnál használj egyedi fájlnevet. + +![Hogyan mentsünk munkafüzetet C#‑ban példa](/images/how-to-save-workbook-csharp.png "Hogyan mentsünk munkafüzetet C#‑ban – a folyamat vizuális áttekintése") + +### Teljes működő példa + +Mindent összevonva, itt egy önálló konzolalkalmazás, amelyet lefordíthatsz és futtathatsz: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Várható kimenet:** A futtatás után megtalálod a `SmartMarkerWithDupDetail.xlsx` fájlt a `YOUR_DIRECTORY` mappában. Megnyitva látnod kell: + +- Az eredeti fejléc kitöltve „Orders” szöveggel. +- Egy új (vagy újrahasznált) **Detail** nevű lap, amely két sort tartalmaz: `Id=1, Qty=5` és `Id=2, Qty=3`. + +Ha a **Detail** lap már létezett, annak tartalma felül lesz írva az új adatokkal – nem keletkeznek extra lapok a fájlban. + +## Gyakran Ismételt Kérdések (GYIK) + +| Kérdés | Válasz | +|----------|--------| +| *Menthetek PDF‑be az XLSX helyett?* | Igen. Cseréld le a `workbook.Save("file.xlsx")` sort `workbook.Save("file.pdf", SaveFormat.Pdf);`‑re. | +| *Mi van, ha a sablonom több SmartMarker szekciót tartalmaz?* | Hívd meg a `SmartMarkerProcessor.Process`‑t minden olyan munkalapon, amely jelölőket tartalmaz, vagy adj át egy adatobjektum‑gyűjteményt, amely minden szekciónak megfelel. | +| *Létezik mód arra, hogy a Detail lapra adatot fűzzek hozzá a felülírás helyett?* | Használd a `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` beállítást (újabb Aspose verziókban elérhető). | +| *Kell-e lecsatolni a Workbook‑et?* | A `Workbook` osztály implementálja az `IDisposable` interfészt. Használd `using` blokkban a tiszta erőforrás‑kezeléshez. | + +## Összegzés + +Most már ismered a **hogyan mentsünk munkafüzetet** C#‑ban a teljes folyamatot: **hogyan töltsünk be Excel‑t**, **hogyan hozzunk létre munkalapot** (implicit módon a SmartMarker‑rel), **hogyan használjuk újra a munkalapot**, és **hogyan generáljunk jelentést**. A kód készen áll arra, hogy bármely .NET projektbe beilleszd, és a magyarázatok elegendő kontextust adnak ahhoz, hogy összetettebb szcenáriókra is adaptáld – például többlapos jelentésekre, feltételes formázásra vagy PDF‑exportálásra. + +Készen állsz a következő kihívásra? Próbálj meg egy diagramot hozzáadni, amely a rendelési mennyiségeket ábrázolja, vagy változtasd meg a kimeneti formátumot CSV‑re a további feldolgozáshoz. Az ugyanazok az elvek – betöltés, feldolgozás, mentés – továbbra is érvényesek, így ezt a mintát sok jelentéskészítési feladat során újra felhasználhatod. + +Ha elakadsz, vagy van ötleted a bővítésre, nyugodtan hagyj megjegyzést. Boldog kódolást, és élvezd a zökkenőmentes élményt, amikor végre **munkafüzetet tudsz menteni** pontosan úgy, ahogy szükséged van! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/smart-markers-dynamic-data/_index.md b/cells/hungarian/net/smart-markers-dynamic-data/_index.md index b6c39375af..26ce9c2efa 100644 --- a/cells/hungarian/net/smart-markers-dynamic-data/_index.md +++ b/cells/hungarian/net/smart-markers-dynamic-data/_index.md @@ -77,13 +77,14 @@ Fedezd fel az Aspose.Cells for .NET erejét, és tudd meg, hogyan alkalmazhatsz ### [Képletparaméter használata az Aspose.Cells intelligens jelölőmezőben](./formula-parameter-smart-marker/) Tanuld meg a képletparaméterek használatát az intelligens jelölőkben az Aspose.Cells for .NET segítségével. Hozz létre dinamikus táblázatokat könnyedén. ### [Általános lista használata az intelligens markerekben az Aspose.Cells függvényben](./generic-list-smart-markers/) -Sajátítsa el az Aspose.Cells for .NET-et általános listákkal és intelligens jelölőkkel, hogy könnyedén készíthessen dinamikus Excel-jelentéseket. Könnyen használható útmutató fejlesztőknek. +Sajátítsa el az Aspose.Cells for .NET-et általános listákkal és intelligens jelölőkkel, hogy könnyen készíthessen dinamikus Excel-jelentéseket. Könnyen használható útmutató fejlesztőknek. ### [HTML tulajdonságok használata intelligens jelölőkben Aspose.Cells .NET](./html-property-smart-markers/) Engedd szabadjára az Aspose.Cells erejét ezzel a lépésről lépésre haladó oktatóanyaggal, amely bemutatja a HTML tulajdonság használatát az intelligens jelölőkben .NET alkalmazásokhoz. ### [Beágyazott objektumok kezelése intelligens jelölőkkel Aspose.Cells](./nested-objects-smart-markers/) Az Aspose.Cells segítségével lépésről lépésre haladva könnyedén kezelheted a beágyazott objektumokat intelligens jelölők segítségével, így az Excel-jelentéskészítésben rejlő lehetőségeket is kihasználhatod. ### [Változó tömb implementálása intelligens jelölőkkel Aspose.Cells](./variable-array-smart-markers/) Engedd szabadjára az Aspose.Cells erejét. Tanuld meg, hogyan valósíthatsz meg változó tömböket intelligens jelölőkkel lépésről lépésre a zökkenőmentes Excel-jelentéskészítéshez. +### [Excel jelentés generálása C#-ban – Teljes útmutató a SmartMarker használatával](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/hungarian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..1d0cbecc05 --- /dev/null +++ b/cells/hungarian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Hogyan generáljunk Excel jelentést C#-ban egy master‑detail sablonnal. + Tanulja meg gyorsan feltölteni az Excel sablont C#-ban, a SmartMarker használatával + ismétlődő munkalapokhoz. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: hu +og_description: Hogyan generáljunk Excel jelentést C#‑ban újrahasználható sablon segítségével. + Ez a lépésről‑lépésre útmutató megmutatja, hogyan töltsük fel az Excel sablont C#‑ban + mester‑részlet adatokkal. +og_title: Excel jelentés generálása C#-ban – Teljes SmartMarker útmutató +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Hogyan generáljunk Excel jelentést C#-ban – Teljes útmutató a SmartMarker használatával +url: /hu/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan generáljunk Excel jelentést C#‑ban – Teljes útmutató a SmartMarker használatával + +Gondolkodtál már azon, **hogyan generálj Excel jelentést** C#‑ban anélkül, hogy végtelen cella‑cella kódot írnál? Nem vagy egyedül. A legtöbb fejlesztő szembe ütközik egy akadállyal, amikor egy kifinomult, több lapos jelentésre van szüksége, amely a master‑detail (fő‑részletek) kapcsolatokat tükrözi – gondoljunk a megrendelésekre és a tételsorokra – ugyanakkor nem akarják minden alkalommal újra feltalálni a kereket. + +A jó hír? Egy kész Excel sablonnal és az Aspose.Cells **SmartMarker** motorjával néhány sor kóddal **populate Excel template C#**‑t (Excel sablon feltöltés C#‑ban) tudsz elvégezni. Ebben az útmutatóban egy valós példán keresztül vezetünk végig, elmagyarázzuk, miért fontos minden lépés, és egy teljes, futtatható példát adunk, amelyet ma másolhatsz‑beilleszthetsz. + +> **Mit kapsz:** egy master‑detail Excel jelentés, ahol minden megrendelés saját munkalapot hoz létre, mindezt egyszerű C# objektumok vezérlik. Nincs manuális cella‑ciklus, nincs törékeny képlet – csak tiszta, karbantartható kód. + +--- + +## Előfeltételek + +Mielőtt belevágnánk, győződj meg róla, hogy a következők rendelkezésedre állnak: + +- **.NET 6.0** (vagy újabb) telepítve – a kód a .NET 6‑ra céloz, de a .NET Framework 4.7+‑on is működik. +- **Aspose.Cells for .NET** NuGet csomag (`Install-Package Aspose.Cells`) – ez biztosítja a `Workbook`, `SmartMarkerProcessor` és a kapcsolódó osztályokat. +- Egy **MasterDetailTemplate.xlsx** nevű Excel fájl, amely a `YOUR_DIRECTORY` könyvtárban van elhelyezve. Tartalmaznia kell egy SmartMarker blokkot, például `{{Orders.OrderId}}` az első lapon, és egy beágyazott blokkot `{{Orders.Items.Prod}}` a tételsorokhoz. +- Alapvető ismeretek a C# anonim típusokról – ezeket fogjuk használni a megrendelések és tételek modellezéséhez. + +Ha valamelyik ismeretlennek tűnik, ne aggódj. Később megemlítünk alternatívákat (pl. EPPlus használata), de az alapelv változatlan marad. + +--- + +## 1. lépés: Az Excel sablon betöltése, amely SmartMarker blokkokat tartalmaz + +Az első dolog, amit teszünk, hogy megnyitjuk a sablonfájlt. Tekintsd a sablont egy vázra; a SmartMarker később valós adatokkal tölti ki. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Miért fontos:** A layout (a sablon) és az adatok (a C# objektumok) szétválasztásával mind a tervezők, mind a fejlesztők elégedettek maradnak. A tervezők betűtípusokat, színeket vagy képleteket módosíthatnak anélkül, hogy a kódot érintenék. + +--- + +## 2. lépés: A master‑detail adatforrás felépítése + +Ezután létrehozzuk az adatokat, amelyek a sablont feltöltik. Egy tipikus megrendelés‑jelentéshez rendelésgyűjteményed van, ahol minden rendelésnek saját tételgyűjteménye van. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tipp:** Használj erősen típusos osztályokat az anonim típusok helyett, ha több jelentésben is újra kell használni őket. Az anonim megközelítés a példát tömörnek tartja. + +**Miért fontos:** A SmartMarker a tulajdonnév‑párosítás alapján működik (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) a sablon helyőrzőivel. A hierarchiának pontosan egyeznie kell, különben a motor átugorja az adott szekciókat. + +--- + +## 3. lépés: A SmartMarker beállítása, hogy minden fő rekordhoz új lapot hozzon létre + +Alapértelmezés szerint a SmartMarker az összes sort egyetlen lapra írja. Szeretnénk, hogy minden megrendelés saját munkalapon legyen, ami később tökéletes nyomtatáshoz vagy egyes megrendelések PDF‑ként történő e‑mail küldéséhez. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Miért fontos:** Az `EnableRepeatingSheet` megszünteti a manuális lapklónozás szükségességét. A motor lemásolja az eredeti lapot, beilleszti a rendelési adatokat, és automatikusan átnevezi a lapot (általában az első oszlop értékét használva). + +--- + +## 4. lépés: A sablon feldolgozása az adataiddal + +Most mindent összekapcsolunk. A `SmartMarkerProcessor` végigjárja a munkafüzetet, kicseréli a címkéket, és az utasításnak megfelelően új lapokat hoz létre. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Miért fontos:** Ez az egyetlen sor végzi a nehéz munkát – a sablon elemzése, a gyűjtemények iterálása és a beágyazott táblák kezelése. Ez a **populate Excel template C#** lényege manuális ciklusok nélkül. + +--- + +## 5. lépés: A kész jelentés mentése + +Végül írjuk a feltöltött munkafüzetet a lemezre. Webalkalmazásoknál közvetlenül egy HTTP válaszba is streamelheted. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Miért fontos:** A fájlba mentés egy kézzelfogható eredményt ad, amelyet megnyithatsz Excelben, megoszthatsz az érintettekkel, vagy továbbadhatsz olyan folyamatoknak, mint a PDF konverzió. + +--- + +## Teljes működő példa (másolás‑beillesztés kész) + +Az alábbiakban a teljes program látható, beleértve a `using` direktívákat és a `Main` metódust. Helyezd be egy konzolos alkalmazásba, állítsd be a fájlútvonalakat, és futtasd. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Várt kimenet + +Amikor megnyitod a `MasterDetailResult.xlsx` fájlt, a következőket fogod látni: + +- **„Order_1” munkalap** – tartalmazza az 1. rendelés fejlécét és két sort az A és B termékekhez. +- **„Order_2” munkalap** – tartalmazza a 2. rendelés fejlécét és egy sort a C termékhez. +- Az eredeti sablon összes képlete, formázása és diagramja megmarad. + +![Excel jelentés különálló lapokkal minden megrendeléshez – a feltöltött munkafüzet példája](/images/excel-report-example.png "Generált Excel jelentés master‑detail adatokkal") + +*Kép alternatív szöveg: generált Excel jelentés különálló lapokkal minden megrendeléshez, bemutatva, hogyan generálj Excel jelentést C# és SmartMarker használatával.* + +--- + +## Gyakori kérdések és speciális esetek + +### Mi van, ha egy statikus lapra (pl. összegzés) van szükség a ismétlődő lapok mellett? + +Állítsd be az `EnableRepeatingSheet = true` **csak** azon munkalapon, amely a master blokkot tartalmazza. A többi lap érintetlen marad, így megtarthatsz egy összegző oldalt az eredeti sablonban. + +### Használhatok DataTable‑t az anonim objektumok helyett? + +Természetesen. A SmartMarker bármely, `IEnumerable`‑t megvalósító objektummal működik. Csak cseréld ki az anonim típust egy `DataTable`‑re, és győződj meg arról, hogy az oszlopnevek egyeznek a címkékkel. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Hogyan változtathatom meg a generált lapok elnevezési konvencióját? + +Implementálj egy egyedi `ISmartMarkerSheetNaming` interfészt (vagy a feldolgozás után módosítsd a `workbook.Worksheets`‑t). A legtöbb fejlesztő egyszerűen a cella értéke alapján nevez át lapokat: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Mi van, ha a sablon más helyőrző szintaxist használ? + +A SmartMarker egyedi határolókat engedélyez a `SmartMarkerOptions`‑on keresztül. Például a `<< >>` használata a `{{ }}` helyett: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tippek a megközelítés skálázásához + +- **Cache-eld a sablont** memóriában, ha egy kérésre sok jelentést generálsz; a lemezről való betöltés minden alkalommal késleltetést okoz. +- **Kombináld PDF konverzióval** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) az e‑mail‑barát kimenetekhez. +- **Paraméterezd a fájlútvonalakat** konfigurációs fájlok vagy környezeti változók segítségével, hogy a megoldás fejlesztői, teszt és produkciós környezetben is hordozható legyen. +- **Unit‑teszteld külön az adat réteget**; a SmartMarker determinisztikus, így csak azt kell ellenőrizned, hogy a betáplált adatok megfelelnek-e a várt sémának. + +--- + +## Következtetés + +Áttekintettük, **hogyan generáljunk Excel jelentést** C#‑ban a teljes folyamat során, a SmartMarker‑t támogató sablon betöltésétől a master‑detail kapcsolatokat tükröző több lapos munkafüzet mentéséig. A **populate Excel template C#** néhány sor kóddal elkerülheted a törékeny cella‑cella logikát, és a tervezőknek szabadságot adsz a végső megjelenés kialakításához. + +A következő lépésként érdemes lehet: + +- A **populate Excel template C#** használata olyan diagramokkal, amelyek minden lapon automatikusan frissülnek. +- A **excel smartmarker c#** integrálása ASP.NET Core‑dal, hogy a jelentéseket közvetlenül a böngészőbe streameld. +- A **c# excel automation** csővezetékek automatizálása, amelyek API‑kból vagy adatbázisokból húznak adatokat. + +Próbáld ki, finomítsd a sablont, és figyeld, milyen gyorsan alakíthatod nyers adatokat egy kifinomult Excel jelentéssé. Van kérdésed vagy egy izgalmas felhasználási eseted? Írj egy megjegyzést alább – jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/hungarian/net/tables-and-lists/_index.md b/cells/hungarian/net/tables-and-lists/_index.md index 462a112c06..0367d11e59 100644 --- a/cells/hungarian/net/tables-and-lists/_index.md +++ b/cells/hungarian/net/tables-and-lists/_index.md @@ -50,7 +50,9 @@ Az Aspose.Cells for .NET segítségével lépésről lépésre haladva tábláza ### [Tábla olvasása és írása lekérdezési adatforrással](./reading-and-writing-table-with-query-data-source/) Engedd szabadjára az Aspose.Cells for .NET erejét. Tanuld meg, hogyan kell táblázatokat olvasni és írni lekérdezési adatforrásokkal ebben a részletes, lépésről lépésre haladó útmutatóban. ### [Táblázat vagy lista megjegyzésének beállítása Excelben](./setting-comment-of-table-or-list/) -Tanuld meg, hogyan állíthatsz be megjegyzéseket táblázatokhoz Excelben az Aspose.Cells for .NET használatával egyszerű, lépésről lépésre bemutató útmutatónkkal. +Tanuld meg, hogyan állíthatsz be megjegyzéseket táblázatokhoz Excelben az Aspose.Cells for .NET használatával egyszerű, lépésről‑lépésre bemutató útmutatónkkal. +### [Excel-tábla létrehozása C#‑ban – Lépés‑ről‑lépésre útmutató](./create-excel-table-in-c-step-by-step-guide/) +Tanulja meg, hogyan hozhat létre Excel‑táblákat C#‑ban az Aspose.Cells for .NET segítségével lépésről‑lépésre. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/hungarian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/hungarian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..100a6e7dab --- /dev/null +++ b/cells/hungarian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Excel táblázat gyors létrehozása C#-ban. Tanulja meg, hogyan adjon hozzá + táblázatot, határozza meg a táblázat tartományát, rejtse el a táblázat fejléceit, + és tiltsa le a táblázat szűrőjét egy komplett kódrészlettel. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: hu +og_description: Készíts Excel táblát C#-ban egy világos példával. Tanuld meg, hogyan + adhatod hozzá a táblát, határozd meg a táblázat tartományát, rejtsd el a táblázat + fejléceit, és tiltsd le a szűrőt néhány sorban. +og_title: Excel-táblázat létrehozása C#‑ban – Teljes programozási útmutató +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Excel-tábla létrehozása C#‑ban – Lépésről lépésre útmutató +url: /hu/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel táblázat létrehozása C#‑ban – Lépésről‑lépésre útmutató + +Valaha szükséged volt már arra, hogy **Excel táblázatot** hozz létre programozottan C#‑ban? Az Excel táblázat létrehozása gyerekjáték, ha ismered a megfelelő lépéseket. Ebben az útmutatóban egy teljes, futtatható példán keresztül mutatjuk be, hogyan **adjunk hozzá táblázatot**, **definiáljuk a táblázat tartományát**, **elrejtsük a táblázat fejléceit**, és még **letiltjuk a táblázat szűrőjét** – mindezt anélkül, hogy elhagynád a fejlesztői környezetet. + +Ha valaha is bosszúságot okozott számodra az AutoFilter felhasználói felület megjelenése, amikor nem akarod, jó helyen vagy. A útmutató végére egy azonnal futtatható kódrészletet kapsz, amely egy tiszta *TableNoFilter.xlsx* munkafüzetet hoz létre, és megérted, miért fontos minden egyes sor. + +## Mit fogsz megtanulni + +- Hogyan **hozzunk létre Excel táblázatot** a semmiből az Aspose.Cells segítségével. +- A pontos szintaxis a **táblázat tartományának definiálásához** (esetünkben A1:D5). +- Hogyan engedélyezzük a fejléc sort, hogy megjelenjen a beépített szűrő UI. +- A trükk a **táblázat fejlécének elrejtésére** és a **táblázat szűrőjének letiltására**, ha már nincs rá szükség. +- Egy teljes, másolás‑beillesztésre kész C# program, amelyet már ma futtathatsz. + +### Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.7+‑vel is működik). +- Aspose.Cells for .NET telepítve NuGet‑en keresztül (`Install-Package Aspose.Cells`). +- Alapvető ismeretek C#‑ban és Visual Studio‑ban (vagy bármely általad preferált IDE‑ben). + +--- + +## 1. lépés: Projekt beállítása és névtér importálása + +Miután **Excel táblázatot** szeretnél létrehozni, szükséged van egy konzolos projektre, amely hivatkozik az Aspose.Cells-re. Nyiss egy terminált és futtasd: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Ezután nyisd meg a *Program.cs* fájlt, és add hozzá a szükséges `using` utasításokat: + +```csharp +using System; +using Aspose.Cells; +``` + +Ezek az importok hozzáférést biztosítanak a `Workbook`, `Worksheet`, `CellArea` és `ListObject` osztályokhoz, amelyek a tutorial többi részét hajtják végre. + +## 2. lépés: Új munkafüzet inicializálása és az első munkalap lekérése + +Új munkafüzet létrehozása az első logikus lépés. Tekintsd a munkafüzetet az Excel fájl tárolójának, a munkalapot pedig az egyedi lapnak, ahol a táblázatot elhelyezzük. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Miért fontos:** Egy vadonatúj `Workbook` egyetlen üres lappal indul. A `Worksheets[0]` lekérésével biztosítjuk, hogy az alapértelmezett lapon dolgozunk, anélkül, hogy manuálisan kellene létrehoznunk egy újat. + +## 3. lépés: A táblázat tartományának definiálása (A1:D5) + +Az Excel terminológiájában egy *táblázat* egy téglalap alakú cellatömbön belül helyezkedik el. A `CellArea` struktúra lehetővé teszi ennek a blokknak a meghatározását. Itt bemutatjuk a **táblázat tartományának definiálását** az A1‑től D5‑ig terjedő cellákra. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tipp:** Ha valaha dinamikus tartományra van szükséged, kiszámíthatod a `endRow` és `endColumn` értékeket az adatok hosszától függően. A nullától induló indexelés gyakori forrása az egy‑elütéses hibáknak, ezért ellenőrizd dupla‑szor a számokat. + +## 4. lépés: Táblázat hozzáadása és a fejléc sor engedélyezése + +Most következik a tutorial szíve: **hogyan adjunk hozzá táblázatot** a munkalaphoz. A `ListObjects` gyűjtemény kezeli a táblázatokat, és a `ShowHeaders = true` beállítás automatikusan beilleszti az AutoFilter UI‑t. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Magyarázat:** +> - `Add(tableRange, true)` új `ListObject`‑et (azaz egy Excel táblázatot) hoz létre a megadott tartományon belül. +> - A `true` jelző azt mondja az Aspose.Cells‑nek, hogy a tartomány első sorát fejlécként kell kezelni. +> - A `ShowHeaders` `true`‑ra állítása láthatóvá teszi a fejlécet, és elindítja a beépített szűrő UI‑t. + +Ezen a ponton, ha megnyitod a generált munkafüzetet, egy szép formázott táblázatot látsz, amelynek minden oszlopfejlécén szűrő nyilak jelennek meg. + +## 5. lépés: A fejléc sor elrejtése és az AutoFilter letiltása + +Néha csak az adatot akarod a UI‑zavaró elemek nélkül. Lehet, hogy egy tiszta jelentést exportálsz, ahol a szűrők nem szükségesek. Itt a **táblázat fejlécének elrejtése** és a **táblázat szűrőjének letiltása** technikája: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Miért csinálod ezt:** +> - `ShowHeaders = false` eltávolítja a vizuális fejléc sort, a táblázatot egyszerű adatblokká alakítja. +> - Az `AutoFilter = null` beállítás törli a rejtett szűrőobjektumot, biztosítva, hogy ne maradjon maradék szűrőlogika. Ez az, amit **táblázat szűrőjének letiltása**‑nak nevezünk. + +## 6. lépés: Munkafüzet mentése lemezre + +Végül a fájlt a választott helyre írjuk. Cseréld le a `"YOUR_DIRECTORY"`‑t a géped tényleges elérési útjára. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Amikor futtatod a programot, a következőt kell látnod: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +A fájl megnyitása egy munkalapot mutat az adatblokkal (fejléc és szűrő nyilak nélkül). Ez a teljes ciklus – a **Excel táblázat létrehozásától** a **táblázat szűrőjének letiltásáig**. + +--- + +## Teljes működő példa (másolás‑beillesztésre kész) + +Az alábbiakban a teljes program látható, amely már fordítható. Csak cseréld le a helyőrző könyvtárat egy érvényes útra. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Várható eredmény:** Egy *TableNoFilter.xlsx* nevű fájl, amely egy egyszerű adattartományt (A1:D5) tartalmaz látható fejléc sor és szűrő legördülő menü nélkül. + +--- + +## Gyakran Ismételt Kérdések & Szélsőséges Esetek + +### Mi van, ha több táblázatra van szükség ugyanabban a munkalapon? + +Egyszerűen ismételd meg a **3. lépést** egy új `CellArea`‑val és egy friss `ListObject`‑tal. Minden táblázat saját fejléccel és szűrőbeállítással rendelkezik, így elrejtheted az egyiket, a másikat láthatóan hagyva. + +### Stílusozhatom a táblázatot (csíkos sorok, színek) a fejléc elrejtése előtt? + +Természetesen. A `ListObject` egy `TableStyleType` tulajdonságot kínál. Például: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Alkalmazhatod a stílust **mielőtt** elrejted a fejlécet; a vizuális formázás megmarad. + +### Mi van, ha meg kell tartani a fejlécet, de csak a szűrő nyilakat akarom elrejteni? + +Állítsd `ShowHeaders = true`‑ra (tartsd meg a sort), majd töröld a szűrőt: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Ez teljesíti a **táblázat szűrőjének letiltása** követelményt anélkül, hogy elveszítenéd az oszlopcímkéket. + +### Csak .xlsx fájlokkal működik ez? + +Az Aspose.Cells automatikusan felismeri a formátumot a `Save`‑nek átadott fájlkiterjesztés alapján. Kimenetet generálhatsz `.xls`, `.csv` vagy akár `.pdf` formátumba is, ha másik kiterjesztést használsz. + +--- + +## Következtetés + +Most már mindent megtanultál, ami a **Excel táblázat létrehozásához** szükséges C#‑ban az Aspose.Cells használatával, a **táblázat tartományának definiálásától** a **táblázat fejlécének elrejtéséig** és a **táblázat szűrőjének letiltásáig**. A kód rövid, áttekinthető, és készen áll a termelésben való használatra. + +Következő lépésként felfedezheted, hogyan **adjunk hozzá táblázatot** dinamikus adatokkal, alkalmazz egyedi stílusokat, vagy exportáld ugyanazt a munkafüzetet PDF‑be. Ezek a témák mind a most megszerzett alapokra épülnek, így bátran kísérletezz és igazítsd a kódrészletet saját projektjeidhez. + +Van valami saját megoldásod, amit meg szeretnél osztani? Írj egy megjegyzést alább, és jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/converting-excel-files-to-other-formats/_index.md b/cells/indonesian/net/converting-excel-files-to-other-formats/_index.md index 353f7c2101..9fe4c098c3 100644 --- a/cells/indonesian/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/indonesian/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Pelajari cara mengonversi file Excel ke PDF/A-1a untuk keperluan pengarsipan men Pelajari cara mengonversi JSON ke CSV secara terprogram di .NET menggunakan Aspose.Cells. Ikuti panduan langkah demi langkah kami untuk memastikan transformasi data yang lancar. ### [Mengonversi File Excel ke PPTX Secara Terprogram di .NET](./converting-excel-file-to-pptx/) Pelajari cara mengonversi file Excel ke presentasi PowerPoint (PPTX) secara terprogram menggunakan Aspose.Cells for .NET dengan panduan langkah demi langkah ini. +### [Mengatur Area Cetak di Excel dan Mengekspor ke PowerPoint – Panduan Langkah‑demi‑Langkah](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Pelajari cara menentukan area cetak pada lembar Excel dan mengekspornya ke PowerPoint secara terprogram menggunakan Aspose.Cells untuk .NET. ### [Menentukan HTML CrossType dalam Output HTML Secara Terprogram di .NET](./specifying-html-crosstype-in-output-html/) Pelajari cara menentukan HTML CrossType di Aspose.Cells untuk .NET. Ikuti tutorial langkah demi langkah kami untuk mengonversi file Excel ke HTML dengan tepat. ### [Membaca Lembar Kerja Angka Secara Terprogram di .NET](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ Pelajari cara menyimpan buku kerja dalam format Strict Open XML Spreadsheet meng deskripsi: Pelajari cara melacak kemajuan konversi dokumen secara terprogram menggunakan Aspose.Cells untuk .NET dalam tutorial terperinci ini. ### [Melacak Kemajuan Konversi Dokumen untuk TIFF Secara Terprogram di .NET](./tracking-document-conversion-progress-for-tiff/) Pelajari cara melacak kemajuan konversi TIFF secara terprogram menggunakan Aspose.Cells untuk .NET dengan panduan langkah demi langkah kami. Tingkatkan keterampilan manajemen dokumen Anda. +### [Ekspor Excel ke PowerPoint – Panduan Lengkap C#](./export-excel-to-powerpoint-complete-c-guide/) +Pelajari cara mengekspor file Excel ke PowerPoint secara terprogram menggunakan Aspose.Cells untuk .NET dalam panduan langkah demi langkah ini. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/indonesian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..243232dc49 --- /dev/null +++ b/cells/indonesian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Pelajari cara mengekspor Excel ke PowerPoint, mengatur area cetak di + Excel, dan menyimpan Excel sebagai PPTX dengan grafik yang dapat diedit serta objek + OLE dalam beberapa langkah saja. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: id +og_description: Ekspor Excel ke PowerPoint dengan cepat. Tutorial ini menunjukkan + cara mengatur area cetak di Excel dan menyimpan Excel sebagai PPTX dengan grafik + yang dapat diedit serta objek OLE. +og_title: Ekspor Excel ke PowerPoint – Panduan C# Lengkap +tags: +- Aspose.Cells +- C# +- Office Automation +title: Ekspor Excel ke PowerPoint – Panduan Lengkap C# +url: /id/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekspor Excel ke PowerPoint – Panduan Lengkap C# + +Perlu **mengekspor Excel ke PowerPoint**? Anda berada di tempat yang tepat. Baik Anda sedang membuat deck penjualan mingguan atau mengotomatisasi pipeline pelaporan, mengubah lembar kerja Excel menjadi rangkaian slide PowerPoint dapat menghemat berjam‑jam kerja copy‑and‑paste. + +Dalam tutorial ini kami akan membimbing Anda melalui contoh praktis yang tidak hanya **export excel to powerpoint**, tetapi juga menunjukkan cara **set print area Excel** dan **save excel as pptx** sehingga slide yang dihasilkan mempertahankan grafik dan objek OLE yang dapat diedit sepenuhnya. Pada akhir tutorial Anda akan memiliki program C# siap‑jalankan yang menghasilkan file `.pptx` berpenampilan profesional tanpa perlu penyetelan manual. + +## Apa yang Anda Butuhkan + +- **.NET 6+** (runtime .NET terbaru apa saja; kode menggunakan sintaks C# 10) +- **Aspose.Cells for .NET** – pustaka yang menangani proses ekspor. Anda dapat mengunduhnya dari NuGet (`Install-Package Aspose.Cells`). +- Sebuah workbook Excel yang berisi setidaknya satu grafik dan/atau objek OLE (file contoh `ChartAndOle.xlsx` digunakan dalam kode). +- IDE favorit (Visual Studio, Rider, atau VS Code – apa pun yang Anda suka). + +Itu saja. Tanpa interop COM, tanpa instalasi Office. + +> **Mengapa menggunakan pustaka?** +> Interop Office bawaan bersifat rapuh, memerlukan Office di server, dan sering menghasilkan gambar raster ketika Anda sebenarnya menginginkan bentuk vektor yang dapat diedit. Aspose.Cells menangani beban kerja berat dan menjaga semuanya tetap dapat diedit di PowerPoint. + +--- + +## Langkah 1: Muat Workbook Excel + +Pertama kita memuat file sumber ke memori. Kelas `Workbook` mengabstraksi seluruh file Excel, memberi kami akses ke lembar kerja, grafik, dan objek OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Mengapa ini penting:** Memuat workbook adalah fondasi. Jika jalur salah atau file rusak, seluruh pipeline tidak akan berjalan. Blok `try…catch` memberikan pesan error yang ramah alih‑alih crash. + +--- + +## Langkah 2: Atur Area Cetak di Excel + +Sebelum mengekspor, biasanya Anda ingin membatasi output ke rentang tertentu. Di sinilah **set print area excel** berperan. Dengan mendefinisikan area cetak, Anda memberi tahu Aspose.Cells sel‑sel mana (beserta objek terkait) yang harus muncul di slide. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Tip pro:** Jika Anda memiliki beberapa lembar kerja, ulangi penetapan `PrintArea` untuk setiap lembar yang akan diekspor. Membiarkan area cetak tidak diatur akan mengekspor seluruh lembar, yang dapat memperbesar ukuran file PowerPoint. + +--- + +## Langkah 3: Konfigurasi Opsi Ekspor – Pertahankan Grafik & OLE yang Dapat Diedit + +Aspose.Cells menyediakan objek `ImageOrPrintOptions` yang kaya. Dengan mengaktifkan `ExportChartObjects` dan `ExportOleObjects` kita mempertahankan sifat vektor grafik dan kemampuan edit langsung objek OLE (seperti dokumen Word atau PDF yang disematkan). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Apa yang terjadi di balik layar?** +Ketika `ExportChartObjects` bernilai `true`, Aspose mengonversi grafik menjadi bentuk grafik PowerPoint native, mempertahankan seri, sumbu, dan formatnya. Dengan `ExportOleObjects` diaktifkan, objek yang disematkan dimasukkan sebagai bingkai OLE, sehingga double‑click di PowerPoint membuka aplikasi asli (Word, Excel, dll.) untuk diedit. + +--- + +## Langkah 4: Simpan Lembar Kerja sebagai File PowerPoint yang Dapat Diedit + +Sekarang kita mengikat semuanya. Metode `Save` menulis file `.pptx` menggunakan opsi yang telah kita konfigurasi. Hasilnya adalah deck slide di mana setiap lembar kerja menjadi satu slide (atau serangkaian slide jika area cetak mencakup beberapa halaman). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Hasil yang Diharapkan + +- **Lokasi file:** `C:\MyProjects\EditableChartOle.pptx` +- **Konten:** + - Sebuah slide yang menampilkan rentang `A1:H30` persis seperti di Excel. + - Semua grafik menjadi objek grafik PowerPoint—klik batang dan edit datanya. + - Objek OLE (misalnya dokumen Word yang disematkan) dapat dibuka dan diedit langsung dari slide. + +Jika Anda membuka PPTX di PowerPoint, Anda akan melihat slide bersih dengan komponen yang sepenuhnya dapat diedit—tanpa screenshot raster. + +--- + +## Kasus Pojok & Variasi + +### Beberapa Lembar Kerja → Beberapa Slide +Jika Anda ingin setiap lembar kerja menjadi slide tersendiri, cukup lakukan loop melalui `workbook.Worksheets` dan panggil `Save` dengan `SheetToImageOptions` yang menargetkan indeks lembar tertentu. Aspose secara otomatis menghasilkan slide baru untuk setiap iterasi. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Rentang Besar & Kinerja +Mengekspor area cetak yang sangat besar (mis., `A1:Z1000`) dapat meningkatkan penggunaan memori. Untuk mengurangi dampak, pertimbangkan: +- Membagi rentang menjadi potongan lebih kecil dan mengekspornya sebagai slide terpisah. +- Menggunakan `WorkbookSettings` untuk meningkatkan `MemorySetting` jika Anda menemui `OutOfMemoryException`. + +### Masalah Kompatibilitas +PPTX yang dihasilkan bekerja dengan PowerPoint 2016 ke atas. Versi yang lebih lama mungkin tetap dapat membuka file tetapi dapat kehilangan beberapa fitur grafik lanjutan. Selalu uji pada versi Office target jika Anda akan mendistribusikan deck secara luas. + +--- + +## Contoh Lengkap yang Siap Pakai (Copy‑Paste) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Ganti jalur yang ditulis keras dengan nilai konfigurasi atau argumen baris perintah untuk alat yang lebih fleksibel. + +--- + +## Pertanyaan yang Sering Diajukan + +**T: Bisakah saya mengekspor hanya sebuah grafik tanpa sel di sekitarnya?** +J: Ya. Gunakan saja `ExportChartObjects` dan atur area cetak ke rentang batas grafik. Grafik akan muncul terpusat di slide. + +**T: Bagaimana jika workbook saya berisi makro?** +J: Aspose.Cells mengabaikan makro VBA selama proses ekspor. Jika Anda memerlukan fungsionalitas makro di PowerPoint, Anda harus membuatnya kembali menggunakan VBA PowerPoint atau add‑in. + +**T: Apakah ini dapat dijalankan di Linux/macOS?** +J: Tentu saja. Aspose.Cells adalah pustaka .NET murni; selama Anda memiliki runtime .NET, kode dapat dijalankan lintas‑platform. + +--- + +## Kesimpulan + +Anda baru saja mempelajari cara **export Excel to PowerPoint** sambil secara tepat **set print area excel** dan **save excel as pptx** dengan grafik dan objek OLE yang dapat diedit sepenuhnya. Langkah‑langkah kuncinya adalah memuat workbook, menentukan area cetak, mengonfigurasi `ImageOrPrintOptions`, dan akhirnya menyimpan PPTX. + +Dari sini Anda dapat menjelajahi: +- Mengekspor beberapa lembar kerja ke dalam satu deck. +- Menambahkan judul slide atau catatan khusus secara programatis. +- Mengonversi PPTX ke PDF untuk distribusi (gunakan `SaveFormat.Pdf`). + +Jalankan kode, sesuaikan area cetak, dan saksikan data Excel Anda muncul secara ajaib di PowerPoint—tanpa copy‑paste manual. Jika Anda menemui kendala, periksa dokumentasi Aspose.Cells atau tinggalkan komentar di bawah. Selamat coding! + +![Diagram yang menunjukkan alur kerja ekspor excel ke powerpoint](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/indonesian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..d75e624225 --- /dev/null +++ b/cells/indonesian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Tetapkan area cetak di Excel dan konversi Excel ke PowerPoint dengan + bentuk yang dapat diedit. Pelajari cara mengulang baris judul, membuat PowerPoint + dari Excel, dan mengekspor Excel ke PPTX. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: id +og_description: Atur area cetak di Excel dan konversi menjadi slide PowerPoint dengan + bentuk yang dapat diedit. Ikuti panduan lengkap ini untuk mengulang baris judul + dan mengekspor Excel ke pptx. +og_title: Atur Area Cetak di Excel – Tutorial Ekspor ke PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Atur Area Cetak di Excel dan Ekspor ke PowerPoint – Panduan Langkah demi Langkah +url: /id/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Atur Area Cetak di Excel dan Ekspor ke PowerPoint – Tutorial Pemrograman Lengkap + +Pernahkah Anda perlu **set print area** di lembar kerja Excel dan kemudian mengubah bagian itu menjadi slide PowerPoint? Anda tidak sendirian. Dalam banyak alur pelaporan, data yang dicetak dengan rapi juga harus muncul dalam presentasi, seringkali dengan baris pertama diulang sebagai judul. Kabar baik? Dengan beberapa baris C# Anda dapat **convert excel to powerpoint**, menjaga semua kotak teks dapat diedit, dan bahkan **repeat title row** secara otomatis. + +Dalam panduan ini kami akan membahas semua yang perlu Anda ketahui: mulai dari mengonfigurasi area cetak hingga membuat file PPTX yang dapat Anda edit langsung di PowerPoint. Pada akhir tutorial Anda akan dapat **create powerpoint from excel**, mengekspor hasilnya sebagai **export excel to pptx**, dan menggunakan kembali kode yang sama di proyek .NET mana pun. Tanpa sulap, hanya langkah‑langkah jelas dan contoh lengkap yang dapat dijalankan. + +## Apa yang Anda Butuhkan + +Sebelum kita mulai, pastikan Anda memiliki: + +- **.NET 6.0** atau lebih baru (API ini juga berfungsi dengan .NET Framework) +- **Aspose.Cells for .NET** (perpustakaan yang menyediakan `Workbook`, `ImageOrPrintOptions`, dll.) +- IDE C# dasar (Visual Studio, Rider, atau VS Code dengan ekstensi C#) +- File Excel (`input.xlsx`) yang berisi data yang ingin Anda ekspor + +Itu saja—tidak ada paket NuGet tambahan selain Aspose.Cells. Jika Anda belum menambahkan perpustakaan tersebut, jalankan: + +```bash +dotnet add package Aspose.Cells +``` + +Sekarang kita siap meluncur. + +## Langkah 1: Muat Workbook – Titik Awal untuk Ekspor + +Hal pertama yang harus Anda lakukan adalah memuat workbook yang berisi sheet yang ingin Anda ubah menjadi slide. Anggap workbook sebagai dokumen sumber; tanpa itu tidak ada yang penting. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Mengapa ini penting:** Memuat workbook memberi Anda akses ke koleksi worksheet, opsi pengaturan halaman, dan mesin ekspor. Jika Anda melewatkan langkah ini, Anda tidak akan dapat mengatur **print area** atau mengulang baris apa pun. + +> **Pro tip:** Gunakan path absolut saat pengujian, lalu beralih ke path relatif atau path berbasis konfigurasi untuk produksi. + +## Langkah 2: Konfigurasikan Opsi Ekspor – Jaga Kotak Teks dan Bentuk Dapat Diedit + +Saat Anda mengekspor ke PowerPoint, biasanya Anda ingin slide yang dihasilkan dapat diedit. Aspose.Cells memungkinkan Anda mengontrol hal ini dengan `ImageOrPrintOptions`. Menetapkan `ExportTextBoxes` dan `ExportShapeObjects` ke `true` memberi tahu perpustakaan untuk mempertahankan objek‑objek tersebut sebagai elemen PowerPoint asli, bukan mengubahnya menjadi gambar. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Mengapa ini penting:** Jika Anda pernah perlu **convert excel to powerpoint** dan kemudian menyempurnakan slide secara manual, pengaturan ini menyelamatkan Anda dari harus membuat ulang kotak teks dari awal. Ini juga memastikan semua bentuk (seperti panah atau diagram) tetap sebagai objek vektor yang dapat Anda ubah ukurannya. + +## Langkah 3: Atur Area Cetak dan Ulangi Baris Judul + +Sekarang kita sampai pada inti tutorial: **set print area** dan membuat baris pertama diulang pada setiap halaman yang dicetak (atau, dalam kasus kita, pada slide yang diekspor). Area cetak memberi tahu Excel sel‑sel mana yang akan dipertimbangkan untuk pencetakan—atau dalam skenario ini, untuk ekspor. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Mengapa ini penting:** Dengan membatasi ekspor ke `A1:G20` Anda menghindari penarikan rentang kosong yang sangat besar, yang mempercepat konversi dan membuat slide tetap rapi. Baris `PrintTitleRows` membuat baris pertama berperan sebagai header—tepat apa yang Anda inginkan ketika **repeat title row** dalam presentasi. + +> **Edge case:** Jika data Anda dimulai pada baris 2, sesuaikan rentangnya (misalnya, `PrintTitleRows = "$2:$2"`). + +## Langkah 4: Simpan Worksheet sebagai File PowerPoint + +Akhirnya, kami menulis slide ke disk. Metode `Save` menerima nama file target dan opsi yang telah kami konfigurasikan sebelumnya. Hasilnya adalah file PPTX dengan kotak teks dan bentuk yang dapat diedit, siap dibuka di PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Apa yang akan Anda lihat:** Buka `SheetWithEditableShapes.pptx` di PowerPoint. Baris pertama muncul sebagai judul, semua sel dari `A1:G20` dirender, dan semua bentuk yang Anda tambahkan di Excel tetap dapat dipindahkan dan diedit. Tidak ada gambar raster—hanya objek PowerPoint asli. + +## Contoh Kerja Penuh – Semua Langkah Digabungkan + +Berikut adalah program lengkap yang siap disalin‑tempel. Jalankan sebagai aplikasi konsol atau sematkan dalam solusi yang lebih besar. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Output yang diharapkan:** Setelah menjalankan program, konsol menampilkan pesan keberhasilan, dan file PPTX muncul di lokasi yang ditentukan. Membuka file tersebut menampilkan satu slide dengan rentang yang dipilih, kotak teks yang dapat diedit, dan semua bentuk asli. + +## Pertanyaan Umum & Hal-hal yang Perlu Diwaspadai + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Ya. Loop melalui `workbook.Worksheets` dan ulangi langkah yang sama untuk setiap sheet, ubah nama file output setiap kali. | +| **What if I need to export more than one slide?** | Panggil `workbook.Save` beberapa kali dengan objek `ImageOrPrintOptions` yang berbeda, masing‑masing dikonfigurasikan dengan `PageSetup` yang berbeda bila diperlukan. | +| **Can I change the slide size?** | Gunakan `exportOptions.ImageFormat` untuk mengatur DPI, atau sesuaikan `sheet.PageSetup.PaperSize` sebelum menyimpan. | +| **Is Aspose.Cells free?** | Ia menawarkan evaluasi gratis dengan watermark. Untuk produksi, lisensi diperlukan. | +| **What about Excel formulas?** | Nilai yang diekspor adalah **calculated results** pada saat ekspor. Jika Anda memerlukan formula hidup di PowerPoint, Anda memerlukan pendekatan lain. | + +## Tips untuk Alur Kerja yang Lancar + +- **Pro tip:** Set `Workbook.Settings.CalcMode = CalculationModeType.Automatic` sebelum ekspor untuk menjamin semua formula terbaru. +- **Watch out for:** Rentang yang sangat besar dapat menyebabkan tekanan memori. Potong area cetak ke rentang terkecil yang diperlukan. +- **Performance tip:** Gunakan satu instance `ImageOrPrintOptions` jika Anda mengekspor banyak sheet; membuat instance baru setiap kali menambah beban. +- **Version note:** Kode di atas menargetkan Aspose.Cells 23.10 (dirilis November 2023). Versi selanjutnya tetap menggunakan API yang sama, tetapi selalu periksa catatan rilis untuk perubahan yang dapat memengaruhi. + +## Kesimpulan + +Kami telah membahas cara **set print area** di worksheet Excel, mengulang baris pertama sebagai judul, dan kemudian **export excel to pptx** sambil mempertahankan kotak teks serta bentuk yang dapat diedit. Singkatnya, Anda kini mengetahui cara andal untuk **convert excel to powerpoint**, **repeat title row**, dan **create powerpoint from excel** hanya dengan beberapa baris C#. + +Siap untuk langkah berikutnya? Cobalah mengotomatisasi konversi batch puluhan laporan, atau tambahkan tata letak slide khusus menggunakan PowerPoint SDK setelah ekspor. Langit adalah batasnya—bereksperimen, pecahkan masalah, dan nikmati kekuatan pembuatan dokumen secara programatik. + +Jika tutorial ini berguna bagi Anda, bagikan, tinggalkan komentar dengan modifikasi Anda, atau jelajahi panduan lain kami tentang **export excel to pptx** dan topik otomasi terkait. Selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/csv-file-handling/_index.md b/cells/indonesian/net/csv-file-handling/_index.md index e7995fe365..845380f2c6 100644 --- a/cells/indonesian/net/csv-file-handling/_index.md +++ b/cells/indonesian/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Untuk wawasan tambahan, silakan periksa tutorial terperinci kami di [membuka fil Pelajari cara membuka file CSV menggunakan Aspose.Cells untuk .NET dengan panduan langkah demi langkah yang komprehensif. Kuasai manipulasi data. ### [Membuka File CSV dengan Preferred Parser](./csv-file-opening-csv-files-with-preferred-parser/) Pelajari cara membuka dan mengurai file CSV dengan parser khusus di Aspose.Cells untuk .NET. Tangani teks dan tanggal dengan mudah. Sempurna untuk pengembang. +### [Simpan workbook sebagai CSV di C# – Ekspor Excel ke CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Pelajari cara menyimpan workbook Excel sebagai file CSV menggunakan C# dengan Aspose.Cells untuk .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/indonesian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..f022c20c1d --- /dev/null +++ b/cells/indonesian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Simpan workbook sebagai CSV di C# dengan cepat. Pelajari cara mengekspor + Excel ke CSV, mengatur presisi, dan mengonversi xlsx ke CSV dengan Aspose.Cells + dalam hanya beberapa baris. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: id +og_description: Simpan workbook sebagai CSV di C# dengan cepat. Panduan ini menunjukkan + cara mengekspor Excel ke CSV, mengatur presisi, dan mengonversi xlsx ke CSV menggunakan + Aspose.Cells. +og_title: Simpan buku kerja sebagai CSV di C# – Ekspor Excel ke CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Simpan buku kerja sebagai CSV di C# – Ekspor Excel ke CSV +url: /id/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan workbook sebagai CSV di C# – Ekspor Excel ke CSV + +Pernah perlu **menyimpan workbook sebagai CSV** tetapi tidak yakin bagaimana menjaga angka tetap rapi? Anda tidak sendirian. Dalam banyak skenario pipeline data kita harus **mengekspor Excel ke CSV** sambil mempertahankan jumlah digit signifikan tertentu, dan pustaka Aspose.Cells membuatnya sangat mudah. + +Dalam tutorial ini Anda akan melihat contoh lengkap yang siap‑jalankan yang **menyimpan workbook sebagai CSV**, menunjukkan *cara mengatur presisi*, dan bahkan menjelaskan *cara mengonversi xlsx ke CSV* untuk proyek dunia nyata. Tanpa referensi yang samar—hanya kode yang dapat Anda salin, tempel, dan jalankan hari ini. + +## Apa yang Akan Anda Pelajari + +- Langkah‑langkah tepat untuk **menyimpan workbook sebagai CSV** dengan pengaturan presisi khusus. +- Cara **mengekspor Excel ke CSV** menggunakan `CsvSaveOptions` dan mengapa properti `SignificantDigits` penting. +- Variasi untuk kebutuhan presisi yang berbeda serta jebakan umum saat menangani angka besar. +- Sekilas cepat tentang mengonversi file `.xlsx` ke `.csv` tanpa kehilangan integritas data. + +### Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga berfungsi pada .NET Framework 4.6+). +- Paket NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Pemahaman dasar tentang C# dan I/O file. + +Jika Anda sudah memiliki semuanya, mari kita mulai. + +![contoh menyimpan workbook sebagai csv](image.png "contoh menyimpan workbook sebagai csv") + +## Simpan workbook sebagai CSV – Panduan Langkah‑per‑Langkah + +Berikut adalah program lengkapnya. Setiap baris diberi komentar sehingga Anda dapat melihat *mengapa* setiap bagian ada, bukan hanya *apa* yang dilakukannya. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Mengapa Menggunakan `CsvSaveOptions.SignificantDigits`? + +Saat Anda **mengatur presisi** untuk ekspor CSV, Anda sebenarnya memutuskan berapa banyak digit dari angka floating‑point yang tetap ada setelah konversi. Excel menyimpan angka dengan presisi hingga 15 digit, tetapi kebanyakan sistem hilir (basis data, pipeline analitik) hanya membutuhkan beberapa. Dengan mengatur `SignificantDigits = 4`, pustaka akan membulatkan `123.456789` menjadi `123.5`, menjaga file tetap ringkas dan mudah dibaca manusia. + +> **Tip profesional:** Jika Anda memerlukan nilai *tepat* (misalnya untuk data keuangan), atur `SignificantDigits` ke angka yang lebih tinggi atau hapus pengaturannya sama sekali. Nilai default adalah 15, yang mencerminkan presisi internal Excel. + +## Ekspor Excel ke CSV – Variasi Umum + +### Mengubah Delimiter + +Beberapa sistem mengharapkan titik koma (`;`) alih‑alih koma. Anda dapat menyesuaikannya seperti ini: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Mengekspor Worksheet Tertentu + +Jika Anda hanya ingin mengekspor lembar kerja kedua, ganti blok opsional dengan: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Kemudian panggil `workbook.Save` seperti sebelumnya. Teknik ini berguna ketika Anda **mengonversi xlsx ke csv** tetapi hanya peduli pada tab tertentu. + +### Menangani Dataset Besar + +Saat berurusan dengan jutaan baris, pertimbangkan untuk melakukan streaming CSV alih‑alih memuat seluruh workbook ke memori. Aspose.Cells menyediakan properti `CsvSaveOptions` bernama `ExportDataOnly` yang melewatkan informasi gaya, mengurangi beban memori: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Cara Mengekspor CSV – Memverifikasi Hasil + +Setelah menjalankan program, buka `Numbers_4sd.csv` di editor teks biasa. Anda akan melihat sesuatu seperti: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Perhatikan bagaimana angka dibatasi pada empat digit signifikan, persis seperti yang kami minta. Jika Anda membuka file tersebut di Excel, nilai‑nilainya akan tampak identik karena Excel menghormati pembulatan yang diterapkan saat ekspor. + +## Kasus Khusus & Pemecahan Masalah + +| Situasi | Apa yang Diperiksa | Solusi | +|-----------|---------------|-----| +| **File tidak ditemukan** | Pastikan `sourcePath` mengarah ke file `.xlsx` yang nyata. | Gunakan `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Pembulatan tidak tepat** | Pastikan `SignificantDigits` sudah diatur sebelum memanggil `Save`. | Pindahkan penetapan `CsvSaveOptions` lebih awal atau periksa kembali nilainya. | +| **Karakter khusus muncul sebagai �** | Enkoding CSV default ke UTF‑8 tanpa BOM. | Atur `csvOptions.Encoding = System.Text.Encoding.UTF8` atau `Encoding.Unicode`. | +| **Kolom kosong tambahan** | Beberapa worksheet memiliki format tersisa di luar rentang yang digunakan. | Panggil `worksheet.Cells.MaxDisplayRange` untuk memotong kolom yang tidak terpakai sebelum ekspor. | + +## Cara Mengatur Presisi Secara Dinamis + +Kadang‑kadang presisi yang dibutuhkan tidak diketahui saat kompilasi. Anda dapat membacanya dari file konfigurasi atau argumen baris perintah: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Sekarang Anda dapat menjalankan: + +``` +dotnet run -- 6 +``` + +dan mendapatkan CSV dengan enam digit signifikan. Penyesuaian kecil ini membuat solusi menjadi fleksibel untuk **cara mengekspor csv** di berbagai lingkungan. + +## Ringkasan Contoh Kerja Lengkap + +Menggabungkan semua bagian, program lengkap (termasuk penyesuaian opsional) terlihat seperti ini: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Jalankan program, buka CSV yang dihasilkan, dan Anda akan melihat presisi yang Anda minta, mengonfirmasi bahwa Anda telah berhasil **menyimpan workbook sebagai CSV**. + +## Kesimpulan + +Anda kini memiliki resep siap produksi untuk **menyimpan workbook sebagai CSV** di C#. Panduan ini mencakup *cara mengekspor Excel ke CSV*, mendemonstrasikan *cara mengatur presisi* melalui `CsvSaveOptions.SignificantDigits`, dan menampilkan beberapa variasi untuk skenario **mengonversi xlsx ke csv**. Dengan potongan kode lengkap, Anda dapat menambahkannya ke proyek .NET apa pun dan mulai mengekspor data secara instan. + +**Apa selanjutnya?** + +- Bereksperimen dengan delimiter berbeda (`;`, `\t`) untuk ekspor TSV. +- Gabungkan pendekatan ini dengan file‑watcher untuk mengotomatisasi pembuatan CSV setiap kali file Excel berubah. +- Jelajahi `CsvLoadOptions` milik Aspose.Cells jika Anda pernah perlu membaca CSV kembali ke workbook. + +Silakan sesuaikan presisi, tambahkan header khusus, atau hubungkan exporter + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/document-properties/_index.md b/cells/indonesian/net/document-properties/_index.md index a61e91e5ad..74f6677ef0 100644 --- a/cells/indonesian/net/document-properties/_index.md +++ b/cells/indonesian/net/document-properties/_index.md @@ -35,6 +35,8 @@ Pelajari cara mengakses properti dokumen di Excel menggunakan Aspose.Cells for . Pelajari cara mengakses properti dokumen di Excel menggunakan Aspose.Cells for .NET dengan panduan langkah demi langkah kami. Kelola lembar kerja Anda secara efisien. ### [Menambahkan Properti Dokumen di .NET](./adding-document-properties/) Pelajari cara menambahkan properti dokumen di Excel menggunakan Aspose.Cells untuk .NET dengan panduan langkah demi langkah terperinci ini. +### [Buat Workbook Excel – Tambahkan Properti Kustom dan Simpan sebagai XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Pelajari cara membuat workbook Excel, menambahkan properti kustom, dan menyimpannya dalam format XLSB menggunakan Aspose.Cells for .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/indonesian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..d91f5ceeb7 --- /dev/null +++ b/cells/indonesian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Buat workbook Excel, tambahkan properti khusus, atur nama lembar kerja, + dan simpan sebagai file biner XLSB menggunakan C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: id +og_description: Buat buku kerja Excel, tambahkan properti khusus, atur nama lembar + kerja, dan simpan sebagai file biner XLSB menggunakan C#. +og_title: Buat Buku Kerja Excel – Tambahkan Properti Kustom dan Simpan sebagai XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Buat Buku Kerja Excel – Tambahkan Properti Kustom dan Simpan sebagai XLSB +url: /id/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Workbook Excel – Tambahkan Properti Kustom dan Simpan sebagai XLSB + +Pernah perlu **membuat workbook Excel** secara programatik tetapi juga ingin menyimpan beberapa metadata yang terlampir? Mungkin Anda sedang membangun mesin pelaporan yang menandai setiap file dengan ID laporan, nama penulis, atau nomor versi. Dalam kasus itu, mempelajari cara **menambahkan properti kustom** sambil **menetapkan nama worksheet** dan akhirnya **menyimpan sebagai XLSB** akan menghemat banyak pekerjaan manual pasca‑pemrosesan. + +Dalam tutorial ini kami akan menelusuri contoh lengkap yang dapat dijalankan yang menunjukkan secara tepat cara **menulis file Excel biner** menggunakan C#. Anda akan melihat mengapa format XLSB adalah pilihan yang tepat untuk mentransfer properti kustom, cara menghindari jebakan paling umum, dan apa yang harus dilakukan jika Anda perlu mendukung versi Excel yang lebih lama. + +--- + +## Apa yang Anda Butuhkan + +- **.NET 6+** (atau .NET Framework 4.6+). Kode ini bekerja pada runtime terbaru mana pun. +- **Aspose.Cells for .NET** (versi percobaan gratis atau berlisensi). Menyediakan kelas `Workbook`, `Worksheet`, dan `CustomProperties` yang digunakan di bawah. +- IDE yang Anda sukai – Visual Studio, Rider, atau bahkan VS Code sudah cukup. +- Hak menulis ke folder tempat file yang dihasilkan akan disimpan. + +Tidak ada pustaka pihak ketiga lain yang diperlukan. + +--- + +## Langkah 1: Instal Aspose.Cells + +Untuk memulai, tambahkan paket NuGet Aspose.Cells ke proyek Anda: + +```bash +dotnet add package Aspose.Cells +``` + +> **Tips profesional:** Jika Anda menjalankan di server CI, simpan kunci lisensi dalam variabel lingkungan dan muat pada saat runtime – ini mencegah watermark “evaluation” masuk ke output Anda. + +--- + +## Langkah 2: Buat Workbook Excel – Gambaran Umum + +Tindakan nyata pertama adalah **membuat workbook Excel**. Objek ini mewakili seluruh file di memori dan memberi Anda akses ke worksheet, style, serta properti kustom. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Mengapa menginstansiasi `Workbook` baru alih‑alih memuat templat? Workbook kosong menjamin tidak ada style tersembunyi atau properti kustom yang tertinggal, yang sangat penting ketika Anda berniat **menulis file excel biner** untuk sistem hilir yang mengharapkan lembaran bersih. + +--- + +## Langkah 3: Tetapkan Nama Worksheet (dan Mengapa Itu Penting) + +Sheet Excel secara default bernama “Sheet1”, “Sheet2”, dll. Memberi sheet nama yang bermakna membuat pemrosesan hilir—seperti Power Query atau makro VBA—jauh lebih mudah dibaca. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Jika Anda mencoba menetapkan nama yang duplikat, Aspose.Cells akan melempar `ArgumentException`. Untuk menghindari, Anda dapat memeriksa `Worksheets.Exists("Data")` sebelum mengganti nama. + +--- + +## Langkah 4: Tambahkan Properti Kustom + +Properti kustom disimpan dalam XML internal workbook dan ikut bepergian bersama file terlepas dari formatnya. Mereka sangat cocok untuk menyematkan hal‑hal seperti `ReportId` atau `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Mengapa menggunakan properti kustom?** +> • Mereka dapat diakses melalui panel Excel “File → Info → Properties”. +> • Kode yang mengonsumsi workbook dapat membacanya tanpa harus memindai isi sel. +> • Mereka tetap ada setelah konversi format (XLSX ↔ XLSB) karena merupakan bagian dari metadata file. + +Anda juga dapat menyimpan tanggal, boolean, atau bahkan blob biner, tetapi jaga payload tetap kecil—Excel bukan basis data. + +--- + +## Langkah 5: Simpan sebagai XLSB (Tulis File Excel Biner) + +Format XLSB menyimpan data dalam struktur biner, yang membuat file lebih kecil dan lebih cepat dibuka. Lebih penting untuk tutorial ini, **properti kustom terintegrasi dalam aliran biner**, menjamin mereka ikut bersama file. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Hasil yang Diharapkan + +Setelah menjalankan program, Anda akan menemukan `WithCustomProps.xlsb` di desktop Anda. Buka di Excel, pilih **File → Info → Properties**, dan Anda akan melihat `ReportId` serta `GeneratedBy` terdaftar di bawah *Custom*. + +--- + +## Langkah 6: Kasus Tepi & Pertanyaan Umum + +### Bagaimana jika folder target bersifat read‑only? + +Bungkus pemanggilan `Save` dalam blok `try/catch` dan alihkan ke lokasi yang dapat ditulisi pengguna, seperti `%TEMP%`. Ini mencegah aplikasi crash karena kesalahan izin. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Bisakah saya **menyimpan sebagai XLSX** dan tetap mempertahankan properti kustom? + +Ya—cukup ubah `SaveFormat.Xlsb` menjadi `SaveFormat.Xlsx`. Properti disimpan di bagian XML yang sama, sehingga mereka tetap ada setelah pergantian format. Namun, file XLSX lebih besar karena merupakan XML yang dikompres, sementara XLSB menawarkan kinerja lebih baik untuk kumpulan data besar. + +### Bagaimana cara membaca properti kustom nanti? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Potongan kode ini mencetak setiap properti kustom, sehingga layanan hilir dapat dengan mudah memverifikasi asal‑usul file. + +--- + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke proyek konsol baru. Tidak ada bagian yang hilang—semua mulai dari pernyataan `using` hingga `Console.WriteLine` akhir sudah termasuk. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Jalankan program, buka file yang dihasilkan, dan verifikasi properti kustomnya. Itulah seluruh proses **membuat workbook excel**, **menambahkan properti kustom**, **menetapkan nama worksheet**, dan **menyimpan sebagai xlsb** dalam satu alur yang rapi. + +--- + +## Kesimpulan + +Anda kini tahu persis cara **membuat workbook Excel**, memberi sheet-nya nama **set worksheet name** yang jelas, menyematkan metadata berguna dengan **add custom properties**, dan akhirnya **save as XLSB** untuk menghasilkan file Excel biner yang kompak. Alur kerja ini dapat diandalkan, berfungsi di semua versi .NET, dan skalabel baik Anda menghasilkan satu laporan maupun seribu. + +Apa selanjutnya? Coba tambahkan tabel data ke sheet “Data”, bereksperimen dengan tipe properti berbeda (tanggal, boolean), atau ubah output menjadi **save as xlsb** untuk kumpulan data masif. Anda juga dapat menjelajahi cara melindungi workbook dengan password—Aspose.Cells menyediakan satu baris kode untuk itu. + +Silakan tinggalkan komentar jika Anda menemukan kendala, atau bagikan bagaimana Anda memperluas pola ini di proyek Anda sendiri. Selamat coding! + +--- + +![Create Excel workbook screenshot](image.png){alt="Buat workbook Excel dengan properti kustom"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/excel-advanced-named-ranges/_index.md b/cells/indonesian/net/excel-advanced-named-ranges/_index.md index b7048bc78c..31928c828b 100644 --- a/cells/indonesian/net/excel-advanced-named-ranges/_index.md +++ b/cells/indonesian/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Keindahan fungsi ini terletak pada kemudahan penggunaannya. Anda dapat menggabun Identifikasi sel dengan mudah dalam rentang bernama di Excel menggunakan Aspose.Cells untuk .NET dengan tutorial langkah demi langkah yang komprehensif ini. ### [Gabungkan Sel dalam Rentang Bernama di Excel](./merge-cells-in-named-range/) Pelajari cara menggabungkan sel dalam rentang bernama menggunakan Aspose.Cells for .NET dalam tutorial langkah demi langkah ini. Temukan cara memformat, memberi gaya, dan mengotomatiskan laporan Excel. +### [Buat Workbook Excel – Panduan Langkah‑per‑Langkah Menambahkan Tabel dan Aturan Penamaan](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Pelajari cara membuat workbook Excel, menambahkan tabel, dan menetapkan aturan penamaan dengan panduan langkah demi langkah. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/indonesian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..54667be137 --- /dev/null +++ b/cells/indonesian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Buat workbook Excel dengan tabel, pelajari aturan penamaan tabel Excel, + hindari kesalahan named range, dan atur nama tabel Excel dengan benar di C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: id +og_description: Buat workbook Excel di C# dan kuasai aturan penamaan tabel Excel. + Pelajari cara menambahkan lembar kerja tabel, mengatur nama tabel Excel, dan memperbaiki + kesalahan rentang bernama. +og_title: Buat Workbook Excel – Panduan Lengkap Tabel & Penamaan C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Buat Buku Kerja Excel – Panduan Langkah-demi-Langkah Menambahkan Tabel dan + Aturan Penamaan +url: /id/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Workbook Excel – Panduan Lengkap C# untuk Tabel dan Penamaan + +Pernah perlu **create excel workbook** secara programatis dan bertanya-tanya mengapa nama tabel Anda tiba‑tiba bentrok dengan named range? Anda tidak sendirian. Dalam banyak proyek otomasi, saat Anda mencoba memberi tabel identifier yang ramah, Excel melempar *named range error* yang menghentikan seluruh proses. + +Dalam tutorial ini kami akan membahas contoh yang dapat dijalankan sepenuhnya yang **creates an Excel workbook**, **adds a table to a worksheet**, dan menjelaskan **excel table naming rules** yang mencegah Anda tersandung sendiri. Pada akhir tutorial Anda akan tahu persis cara **add table worksheet**, **set excel table name**, dan menangani benturan penamaan secara elegan. + +> **Pro tip:** Sebagian besar kebingungan berasal dari fakta bahwa Excel memperlakukan nama tabel dan named range tingkat workbook sebagai satu namespace. Memahami aturan itu sejak awal menghemat Anda berjam‑jam debugging. + +## Apa yang Anda Butuhkan + +- **Aspose.Cells for .NET** (atau library apa pun yang mengekspos kelas `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ atau .NET Framework 4.8 – kode ini bekerja pada keduanya. +- Pemahaman dasar tentang sintaks C# – tidak memerlukan trik lanjutan. + +Jika Anda sudah memiliki semua itu, mari kita mulai. + +![Tangkapan layar workbook Excel yang baru dibuat dengan tabel bernama SalesData](create_excel_workbook_example.png "contoh create excel workbook") + +## Langkah 1: Buat Excel Workbook dan Akses Worksheet Pertama + +Hal pertama yang Anda lakukan saat **create excel workbook** adalah menginstansiasi kelas `Workbook` dan mengambil referensi ke sheet yang akan Anda kerjakan. Pada Aspose.Cells, workbook dimulai dengan sheet default bernama “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Mengapa langkah ini penting? Tanpa objek workbook Anda tidak memiliki apa‑apa untuk menempelkan tabel, dan referensi `Worksheet` memberi Anda kanvas tempat operasi **add table worksheet** terjadi. + +## Langkah 2: Tambahkan Tabel (ListObject) yang Mencakup Rentang Tertentu + +Selanjutnya kami **add table worksheet**‑level data. Metode `ListObjects.Add` mengharapkan string rentang dan boolean yang menunjukkan apakah baris pertama berisi header. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Perhatikan pemanggilan `salesTable.Name = "SalesData"`. Di sinilah **excel table naming rules** berlaku: nama harus unik di seluruh workbook, bukan hanya di sheet. Nama juga tidak boleh mengandung spasi atau karakter khusus, dan harus dimulai dengan huruf atau underscore. + +## Langkah 3: Coba Buat Named Range Tingkat Workbook dengan Identifier yang Sama + +Sekarang kami sengaja memicu **named range error** untuk melihat apa yang terjadi ketika terjadi benturan nama. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Jika Anda meng-uncomment baris tersebut, Aspose.Cells melempar `ArgumentException` yang menyatakan bahwa nama tersebut sudah ada. Pesan errornya terlihat seperti: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Pesan itu adalah **named range error** yang kami peringatkan sebelumnya. Itu memberi tahu Anda bahwa **excel table naming rules** memperlakukan nama tabel dan named range sebagai satu namespace. + +## Langkah 4: Menangani Konflik Penamaan dengan Elegan + +Dalam kode dunia nyata Anda ingin menangkap exception itu dan mengganti nama tabel atau memilih nama range yang berbeda. Berikut cara rapi untuk melakukannya: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Dengan membungkus pemanggilan dalam `try/catch`, Anda menghindari crash keras dan memberi pengguna (atau kode pemanggil) penjelasan yang jelas—tepat jenis wawasan **excel table naming rules** yang mencegah bug di masa depan. + +## Langkah 5: Simpan Workbook dan Verifikasi Hasil + +Akhirnya, simpan file ke disk dan buka di Excel untuk memastikan tabel dan semua named range ada. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Saat Anda membuka *SalesReport.xlsx* Anda akan melihat: + +- Sebuah tabel yang mencakup **A1:C5** dengan nama **SalesData**. +- Jika Anda mempertahankan range alternatif, sebuah named range tingkat workbook **SalesData_Range** yang mengarah ke **D1**. + +Tidak ada crash runtime, dan konflik penamaan teratasi. + +## Memahami Excel Table Naming Rules secara Mendalam + +Mari kita kupas mengapa aturan-aturan ini ada: + +| Aturan | Artinya | Contoh | +|------|----------------|---------| +| **Unik di seluruh workbook** | Tidak ada dua tabel atau named range yang dapat memiliki identifier yang sama. | `Table1` vs `Table1` → konflik | +| **Dimulai dengan huruf atau underscore** | Nama tidak boleh dimulai dengan angka. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Tanpa spasi atau karakter khusus** | Gunakan CamelCase atau underscore. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Panjang ≤ 255 karakter** | Praktis selalu terpenuhi. | N/A | + +Mengingat aturan-aturan ini saat Anda **set excel table name** menghilangkan *named range error* yang menakutkan. + +## Variasi Umum dan Kasus Tepi + +1. **Menambahkan beberapa tabel** – Setiap tabel harus memiliki nama unik masing‑masing. +2. **Mengganti nama tabel yang ada** – Gunakan `salesTable.Name = "NewName"` sebelum membuat named range yang konflik. +3. **Menggunakan range dinamis** – Jika Anda membutuhkan range yang dapat berkembang, gunakan referensi terstruktur seperti `=SalesData[Amount]` alih‑alih alamat statis. +4. **Named range lintas sheet** – Mereka tetap menjadi bagian dari namespace yang sama, jadi tabel di Sheet1 menghalangi range dengan nama yang sama di Sheet2. + +## Pro Tips untuk Otomasi Excel yang Lancar + +- **Periksa keberadaan sebelum menambahkan**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Hasilkan nama aman secara programatis**: Tambahkan GUID atau counter inkremental (`SalesData_{Guid.NewGuid()}`) ketika Anda tidak yakin. +- **Gunakan `ListObject.ShowHeaders = true`** untuk membuat tabel Anda mendokumentasikan dirinya sendiri. +- **Validasi setelah menyimpan**: Buka file dengan library ringan (misalnya EPPlus) untuk memastikan tabel dibuat dengan benar. + +## Ringkasan: Apa yang Telah Kami Bahas + +- Cara **create excel workbook** dari awal menggunakan Aspose.Cells. +- Aturan **excel table naming rules** yang mengatur identifier tabel dan named range. +- Mengapa **named range error** muncul ketika Anda menggunakan kembali nama. +- Cara yang tepat untuk **add table worksheet** dan **set excel table name** tanpa benturan. +- Pola yang kuat untuk menangani konflik penamaan dengan elegan. + +## Apa Selanjutnya? + +Sekarang Anda telah menguasai dasar-dasarnya, pertimbangkan untuk menjelajahi: + +- **Pertumbuhan tabel dinamis** menggunakan `ListObject.Resize`. +- **Menerapkan gaya** pada tabel (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Ekspor ke CSV** sambil mempertahankan struktur tabel. +- **Integrasi dengan Office Open XML** untuk kontrol yang lebih ketat atas internal workbook. + +Silakan bereksperimen—ubah range, tambahkan lebih banyak tabel, atau coba skema penamaan yang berbeda. Semakin banyak Anda bereksperimen, semakin dalam pemahaman Anda tentang **excel table naming rules**. + +--- + +*Selamat coding, semoga workbook Anda tidak pernah bentrok lagi!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/excel-custom-number-date-formatting/_index.md b/cells/indonesian/net/excel-custom-number-date-formatting/_index.md index ebc49f37d9..6f063f50d6 100644 --- a/cells/indonesian/net/excel-custom-number-date-formatting/_index.md +++ b/cells/indonesian/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Tutorial ini akan membekali Anda dengan keterampilan untuk mengimpor kumpulan da Pelajari cara memeriksa nilai sel Excel terhadap format angka kustom menggunakan Aspose.Cells untuk .NET dengan tutorial langkah demi langkah ini. ### [Tentukan Bidang Rumus Saat Mengimpor Data ke Lembar Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Pelajari cara mengimpor data ke dalam lembar Excel dengan bidang rumus tertentu menggunakan Aspose.Cells untuk .NET dalam tutorial terperinci ini. +### [Format Angka Kustom Excel di C# – Panduan Lengkap](./custom-number-format-excel-in-c-complete-guide/) +Panduan lengkap tentang cara membuat format angka khusus di Excel menggunakan C# dengan Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/indonesian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..e562362f02 --- /dev/null +++ b/cells/indonesian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Tutorial format angka khusus di Excel yang menunjukkan cara mengimpor + datatable ke Excel, mengatur warna latar belakang kolom, memformat kolom sebagai + mata uang, dan menyimpan workbook sebagai xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: id +og_description: Tutorial format angka khusus di Excel yang memandu Anda melalui proses + mengimpor DataTable, mengatur warna latar belakang kolom, memformat kolom sebagai + mata uang, dan menyimpan workbook sebagai xlsx. +og_title: Format Angka Kustom di Excel dengan C# – Panduan Langkah demi Langkah +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Format Angka Kustom Excel di C# – Panduan Lengkap +url: /id/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Format Angka Kustom Excel – Tutorial C# Full‑Stack + +Pernah bertanya-tanya bagaimana cara menerapkan gaya **custom number format excel** langsung dari C#? Mungkin Anda pernah mencoba mengekspor DataTable ke spreadsheet hanya untuk melihat angka biasa, tanpa warna, dan tanpa format mata uang. Itu adalah masalah umum—terutama ketika Anda membutuhkan laporan yang rapi untuk para pemangku kepentingan. + +Dalam panduan ini kami akan menyelesaikan masalah tersebut bersama: Anda akan belajar cara **import datatable to excel**, **set column background color**, **format column as currency**, dan akhirnya **save workbook as xlsx** dengan format angka kustom yang membuat angka Anda menonjol. Tanpa referensi yang samar, hanya solusi lengkap yang dapat dijalankan yang dapat Anda salin‑tempel ke dalam proyek Anda. + +--- + +## Apa yang Akan Anda Bangun + +Pada akhir tutorial ini Anda akan memiliki aplikasi konsol C# yang berdiri sendiri yang: + +1. Mengambil sebuah `DataTable` (Anda dapat mengganti stub dengan kueri Anda sendiri). +2. Membuat workbook Excel baru menggunakan Aspose.Cells (atau perpustakaan kompatibel lainnya). +3. Menerapkan font biru, tebal pada kolom pertama, latar belakang kuning‑muda pada kolom kedua, dan format mata uang (`$#,##0.00`) pada kolom ketiga. +4. Menyimpan file sebagai `DataTableWithStyleArray.xlsx` di folder yang Anda pilih. + +Anda akan melihat secara tepat bagaimana setiap baris berkontribusi pada file Excel akhir, dan kami akan membahas mengapa pilihan tersebut penting untuk pemeliharaan dan kinerja. + +--- + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga bekerja dengan .NET Framework 4.7+). +- Aspose.Cells untuk .NET (versi percobaan gratis atau berlisensi). Instal melalui NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Pemahaman dasar tentang `DataTable` dan aplikasi konsol C#. + +--- + +## Langkah 1: Ambil Data Sumber sebagai DataTable + +Pertama, kita membutuhkan beberapa data untuk diekspor. Dalam skenario dunia nyata Anda mungkin akan memanggil repository atau menjalankan kueri SQL. Untuk ilustrasi kami akan membuat tabel sederhana di memori. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Mengapa ini penting:** Menggunakan `DataTable` memberi Anda sumber tabular yang sadar skema yang dapat dipetakan dengan bersih ke baris dan kolom Excel. Ini juga memungkinkan Anda menggunakan kembali logika ekspor yang sama untuk dataset apa pun tanpa menulis ulang kode. + +--- + +## Langkah 2: Buat Workbook Baru dan Ambil Worksheet Pertama + +Sekarang kami membuat workbook Excel. Kelas `Workbook` mewakili seluruh file; `Worksheets[0]`-nya adalah sheet default tempat kami akan menaruh data kami. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** Jika Anda membutuhkan beberapa sheet, cukup panggil `workbook.Worksheets.Add("SheetName")` dan ulangi langkah styling untuk masing‑masing. + +--- + +## Langkah 3: Definisikan Gaya Kolom – Font, Latar Belakang, dan Format Angka + +Styling di Aspose.Cells dilakukan melalui objek `Style`. Kami akan membuat array di mana setiap elemen sesuai dengan sebuah kolom dalam DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Mengapa array gaya?** Mengirimkan array ke `ImportDataTable` memungkinkan Anda menerapkan gaya yang berbeda untuk setiap kolom dalam satu panggilan, yang sekaligus ringkas dan cepat. Ini juga menjamin bahwa pemformatan tetap sinkron dengan urutan data. + +--- + +## Langkah 4: Impor DataTable Sambil Menerapkan Gaya + +Berikut inti dari operasi: kami memasukkan `DataTable` ke dalam worksheet, memberi tahu Aspose untuk menyertakan baris header, dan menyerahkan array `columnStyles` kami. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Apa yang terjadi di balik layar?** Aspose mengiterasi setiap kolom, menulis header, lalu menulis nilai setiap baris. Selama proses itu ia menerapkan `Style` yang sesuai dari array, sehingga Anda mendapatkan header biru untuk “Product”, “Quantity” berbayang kuning, dan kolom “Revenue” yang diformat dengan baik. + +--- + +## Langkah 5: Simpan Workbook sebagai File XLSX + +Akhirnya, kami menyimpan workbook ke disk. Metode `Save` secara otomatis memilih format XLSX berdasarkan ekstensi file. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** Jika Anda perlu men‑stream file (mis., untuk API web), gunakan `workbook.Save(stream, SaveFormat.Xlsx)` alih‑alih jalur file. + +--- + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda tempel ke dalam proyek konsol baru. Program ini dapat dikompilasi dan dijalankan apa adanya, menghasilkan file Excel yang bergaya. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Hasil yang Diharapkan + +Saat Anda membuka `DataTableWithStyleArray.xlsx` Anda akan melihat: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Format **custom number format excel** yang Anda tentukan (`$#,##0.00`) memastikan setiap sel revenue menampilkan tanda dolar, pemisah ribuan, dan dua tempat desimal—tepat seperti yang diharapkan tim keuangan. + +--- + +## Pertanyaan yang Sering Diajukan & Kasus Tepi + +### Bisakah saya menggunakan ini dengan perpustakaan Excel yang berbeda? + +Tentu saja. Konsep—membuat gaya per kolom dan menerapkannya selama impor—dapat diterapkan pada EPPlus, ClosedXML, atau NPOI. Panggilan API berbeda, tetapi pola tetap sama. + +### Bagaimana jika DataTable saya memiliki lebih banyak kolom daripada gaya? + +Aspose akan menerapkan gaya default pada kolom mana pun yang tidak memiliki entri yang cocok di array `columnStyles`. Untuk menghindari kejutan, ukuran array harus sama dengan `dataTable.Columns.Count` atau hasilkan gaya secara dinamis dalam loop. + +### Bagaimana cara mengatur format angka kustom untuk tanggal? + +Cukup set `style.Custom = "dd‑mm‑yyyy"` (atau string format Excel yang valid lainnya). Pendekatan berbasis array yang sama bekerja untuk tanggal, persentase, atau notasi ilmiah. + +### Apakah ada cara untuk mengatur ukuran kolom secara otomatis setelah impor? + +Ya—panggil `worksheet.AutoFitColumns();` setelah impor. Ini melakukan perhitungan lebar cepat berdasarkan isi sel. + +### Bagaimana dengan set data besar (100k+ baris)? + +`ImportDataTable` dioptimalkan untuk operasi bulk, tetapi Anda mungkin menemui batas memori. Dalam kasus tersebut, pertimbangkan untuk men‑stream baris secara manual dengan `Cells[i, j].PutValue(...)` dan menggunakan kembali satu objek `Style` untuk mengurangi beban. + +--- + +## Tips Pro & Kesalahan Umum + +- **Hindari hard‑coding jalur** dalam kode produksi; gunakan `Environment.GetFolderPath` atau pengaturan konfigurasi. +- **Dispose workbook** jika Anda berada dalam layanan yang berjalan lama—bungkus dalam blok `using` untuk membebaskan sumber daya native. +- **Waspadai pemisah spesifik budaya**. Format kustom `$#,##0.00` memaksa titik sebagai pemisah desimal terlepas dari locale OS, yang biasanya diinginkan untuk laporan keuangan. +- **Ingat untuk mereferensikan System.Drawing** (atau `System.Drawing.Common` pada .NET Core) untuk struct warna yang digunakan dalam styling. +- **Uji output pada versi Excel yang berbeda**; versi lama mungkin menafsirkan beberapa format kustom sedikit berbeda. + +--- + +## Kesimpulan + +Kami telah membahas semua yang Anda perlukan untuk **custom number format excel** file dari C#: mengambil data dari `DataTable`, **import datatable to excel**, menerapkan **set column background color**, menggunakan **format column as currency**, dan akhirnya **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/excel-workbook/_index.md b/cells/indonesian/net/excel-workbook/_index.md index a9ac5f0089..6866d71a5a 100644 --- a/cells/indonesian/net/excel-workbook/_index.md +++ b/cells/indonesian/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Jadi, mengapa tidak memanfaatkan kesempatan ini untuk meningkatkan keterampilan | [Pratinjau Cetak Buku Kerja](./workbook-print-preview/) | Pelajari cara membuat pratinjau cetak untuk file Excel menggunakan Aspose.Cells for .NET. Pelajari langkah-langkah pengkodean dalam tutorial terperinci dan mudah diikuti. | | [Bekerja Dengan Properti Tipe Konten](./working-with-content-type-properties/) | Pelajari cara menggunakan Aspose.Cells for .NET untuk bekerja dengan properti tipe konten guna meningkatkan manajemen metadata Excel. Ikuti panduan langkah demi langkah sederhana ini. | | [Dukungan Tanda Tangan Xades](./xades-signature-support/) | Pelajari cara menambahkan tanda tangan Xades ke berkas Excel menggunakan Aspose.Cells for .NET dengan panduan langkah demi langkah ini. Amankan dokumen Anda. | +| [Buat buku kerja baru C# – Panduan Langkah demi Langkah dengan Formula Spill](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Pelajari cara membuat buku kerja baru di C# dengan formula spill secara langkah demi langkah menggunakan Aspose.Cells untuk .NET. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/indonesian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..0afb7df7c0 --- /dev/null +++ b/cells/indonesian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Buat workbook baru C# dengan cepat menggunakan Aspose.Cells. Pelajari + cara menambahkan formula SEQUENCE yang spill, menghitung ulang secara otomatis, + dan menangani sel yang bergantung. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: id +og_description: Buat workbook baru C# dengan Aspose.Cells. Tutorial ini menunjukkan + cara menambahkan formula SEQUENCE yang spill, menghitung ulang workbook, dan mengelola + sel yang bergantung. +og_title: Buat workbook baru C# – Panduan Lengkap +tags: +- C# +- Excel automation +- Aspose.Cells +title: Buat workbook baru C# – Panduan Langkah-demi-Langkah dengan Rumus yang Tersebar +url: /id/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat workbook baru C# – Panduan Pemrograman Lengkap + +Pernah bertanya-tanya bagaimana cara **membuat workbook baru C#** tanpa harus berurusan dengan COM interop? Anda tidak sendirian. Dalam banyak proyek Anda perlu membuat file Excel secara dinamis, menambahkan formula array dinamis, dan memastikan semuanya menyegarkan secara otomatis. + +Dalam panduan ini kami akan menunjukkan hal itu—menggunakan library **Aspose.Cells** modern, menambahkan formula `SEQUENCE` yang spill, mengubah sel dependen, dan memaksa perhitungan ulang sehingga hasilnya tetap segar. Pada akhir tutorial Anda akan memiliki contoh yang berdiri sendiri, dapat dijalankan, dan dapat disalin‑tempel ke aplikasi .NET mana pun. + +## Apa yang Akan Anda Pelajari + +- Cara **membuat workbook baru C#** secara programatik. +- Mekanisme di balik **formula array yang spill** dan mengapa itu berguna. +- Menggunakan **fungsi Excel SEQUENCE** dari kode C#. +- Memicu **perhitungan workbook C#** sehingga sel dependen memperbarui secara instan. +- Kesulitan umum (misalnya, lupa memanggil `Calculate`) dan solusi cepatnya. + +Tidak memerlukan dokumen eksternal—semua yang Anda butuhkan ada di sini. + +## Prasyarat + +- .NET 6+ (atau .NET Framework 4.7.2+) terpasang. +- Visual Studio 2022 atau IDE lain pilihan Anda. +- Paket NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Familiaritas dasar dengan sintaks C# (jika Anda benar‑benar baru, kode ini sangat banyak diberi komentar). + +--- + +## Langkah 1: Buat workbook baru di C# + +Header H2 ini berisi **kata kunci utama** tepat di tempat yang dibutuhkan oleh checklist SEO. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Mengapa ini penting:** +> Menginstansiasi `Workbook` memberi Anda representasi dalam memori dari sebuah file Excel. Tanpa COM, tanpa interop, hanya objek .NET murni yang dapat Anda manipulasi dengan aman. + +--- + +## Langkah 2: Tambahkan formula SEQUENCE yang spill + +**Formula array yang spill** secara otomatis memperluas ke sel‑sel di sekitarnya, yang sangat cocok untuk menghasilkan daftar dinamis. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Cara kerjanya:** +> Fungsi `SEQUENCE` (diperkenalkan di Excel 365) membuat array vertikal berisi angka. Karena kita menggunakan formula *spill*, Excel (dan Aspose.Cells) akan otomatis mengisi rentang di bawah `A1` tanpa harus menulis loop. + +--- + +## Langkah 3: Ubah sel dependen untuk melihat auto‑refresh + +Mari ubah `B1` sehingga kita dapat mengamati bagaimana workbook menghitung ulang array yang spill. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tip:** +> Jika nanti Anda merujuk ke rentang yang spill dalam formula lain, mengubah sel apa pun di dalam spill akan menyebabkan formula‑formula tersebut memperbarui setelah Anda memanggil `Calculate`. + +--- + +## Langkah 4: Paksa perhitungan workbook C# + +Tanpa pemanggilan eksplisit, Aspose.Cells tidak akan secara otomatis menghitung ulang formula. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Apa yang dilakukan `Calculate`:** +> Ia menelusuri setiap sel formula, mengevaluasinya, dan menuliskan hasilnya kembali ke lembar. Inilah inti dari **perhitungan workbook C#** dan memastikan bahwa array yang spill tetap sinkron dengan data dependen apa pun. + +### Output yang Diharapkan + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Buka `SpilledSequenceDemo.xlsx` dan Anda akan melihat angka 1‑5 mengisi `A1:A5`, sementara `B1` berisi nilai `10`. Ubah sel apa pun di dalam spill, jalankan `Calculate` lagi, dan nilai baru akan muncul secara instan. + +--- + +## Memahami fungsi Excel SEQUENCE di C# + +Jika Anda penasaran mengapa `SEQUENCE` lebih disukai dibandingkan loop manual, pertimbangkan poin‑poin berikut: + +1. **Performa** – Mesin mengevaluasi seluruh array dalam satu kali jalan. +2. **Keterbacaan** – Satu baris kode menggantikan puluhan pemanggilan `PutValue`. +3. **Ukuran dinamis** – Anda dapat mengganti angka statis `5` dengan referensi ke sel lain, sehingga panjangnya dapat diatur pada waktu runtime. + +Ini adalah contoh klasik dari **formula array yang spill** yang menyederhanakan tugas‑tugas generasi data. + +--- + +## Kesulitan Umum & Pro Tips + +| Kesulitan | Solusi | +|-----------|--------| +| Lupa memanggil `workbook.Calculate()` | Selalu panggil setelah memodifikasi formula; jika tidak, lembar akan menampilkan nilai cache lama. | +| Menggunakan versi Aspose.Cells yang lebih lama | Tingkatkan ke paket NuGet terbaru untuk memastikan dukungan fungsi array dinamis seperti `SEQUENCE`. | +| Menyimpan sebelum perhitungan | Simpan **setelah** `Calculate` sehingga file berisi hasil terbaru. | +| Mengira spill akan menimpa data yang ada | Aspose.Cells menghormati data di luar rentang spill; bersihkan area terlebih dahulu jika Anda membutuhkan lembar bersih. | + +**Pro tip:** Jika Anda ingin panjang urutan dapat dikonfigurasi, simpan jumlahnya di sel (misalnya `C1`) dan gunakan `=SEQUENCE(C1)`—mesin perhitungan akan membaca nilai tersebut pada runtime. + +--- + +## Memperluas Contoh + +Setelah Anda menguasai cara **membuat workbook baru C#**, Anda dapat: + +- Menambahkan formula yang lebih kompleks yang merujuk ke rentang yang spill (`=SUM(A1#)` dimana `#` menandakan spill). +- Mengekspor ke PDF dengan `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Menyisipkan diagram yang otomatis menyesuaikan ukuran array dinamis. + +Semua ini dibangun di atas fondasi **perhitungan workbook C#** yang sama yang baru saja kita bahas. + +--- + +## Kesimpulan + +Kami telah menelusuri seluruh proses **membuat workbook baru C#**, mulai dari menginstansiasi objek `Workbook` hingga menyisipkan formula `SEQUENCE` yang spill, mengubah sel dependen, dan akhirnya memaksa perhitungan ulang agar semuanya tetap up‑to‑date. Potongan kode lengkap di atas siap dijalankan—cukup letakkan di aplikasi console, tambahkan paket NuGet Aspose.Cells, dan Anda akan memiliki file Excel yang berfungsi dalam hitungan detik. + +Siap untuk langkah selanjutnya? Coba ganti angka statis `5` dengan referensi sel, bereksperimen dengan fungsi array dinamis lain seperti `FILTER` atau `UNIQUE`, dan jelajahi bagaimana **Aspose.Cells C#** dapat menggerakkan mesin pelaporan yang lengkap. Selamat coding! + +--- + +*Placeholder gambar:* + +![Tangkapan layar yang menunjukkan workbook baru dengan formula SEQUENCE yang spill – contoh create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*Jika Anda menemukan tutorial ini bermanfaat, pertimbangkan untuk memberi bintang pada repositori, membagikannya dengan rekan tim, atau meninggalkan komentar di bawah. Masukan Anda menggerakkan panduan‑panduan selanjutnya!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/formulas-functions/_index.md b/cells/indonesian/net/formulas-functions/_index.md index 5a58ea31ed..2b3201d912 100644 --- a/cells/indonesian/net/formulas-functions/_index.md +++ b/cells/indonesian/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ Pelajari cara menentukan bahasa file Excel Anda menggunakan Aspose.Cells .NET. T ### [Memperbarui Rumus Excel Power Query dengan Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Pelajari cara memperbarui rumus Power Query secara terprogram di buku kerja Excel menggunakan Aspose.Cells untuk .NET. Kelola sumber data utama untuk pelaporan dinamis. +### [Cara Menggunakan Lambda di C# dengan Rumus Excel – Panduan Lengkap](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Pelajari cara memanfaatkan ekspresi lambda di C# untuk membuat dan menghitung rumus Excel secara dinamis dengan Aspose.Cells. + ## Memahami Jenis Rumus Excel Rumus Excel tersedia dalam berbagai bentuk, masing-masing dengan karakteristik unik yang dapat dikelola Aspose.Cells: diff --git a/cells/indonesian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/indonesian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..d89326f99b --- /dev/null +++ b/cells/indonesian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Cara menggunakan lambda di C# untuk bekerja dengan formula Excel. Pelajari + cara menulis formula ke sel, mengonversi rentang menjadi array, menampilkan array + di konsol, dan menghitung kotangen di Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: id +og_description: Cara menggunakan lambda di C# untuk memanipulasi formula Excel, mengonversi + rentang menjadi array, menulis formula ke sel, menampilkan array di konsol, dan + menghitung kotangen di Excel. +og_title: Cara Menggunakan Lambda di C# dengan Rumus Excel – Langkah demi Langkah +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Cara Menggunakan Lambda di C# dengan Rumus Excel – Panduan Lengkap +url: /id/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menggunakan Lambda di C# dengan Rumus Excel – Panduan Lengkap + +Pernah bertanya‑tanya **bagaimana cara menggunakan lambda** saat mengotomatisasi Excel dari C#? Anda tidak sendirian. Banyak pengembang menemui kebuntuan ketika harus menggabungkan kekuatan fungsi array dinamis baru Excel dengan kemampuan `LAMBDA` di C#. Kabar baiknya? Ini sebenarnya cukup sederhana setelah Anda melihat bagaimana bagian‑bagian tersebut cocok satu sama lain. + +Dalam tutorial ini kita akan melangkah melalui **menulis rumus ke sel**, **mengonversi rentang menjadi array**, **menampilkan array tersebut di konsol**, dan bahkan **menghitung kotangen di Excel**—semua sambil menunjukkan **bagaimana cara menggunakan lambda** di dalam pemanggilan `REDUCE`. Pada akhir tutorial Anda akan memiliki potongan kode yang dapat dijalankan dan dapat disisipkan ke proyek .NET apa pun yang merujuk ke Aspose.Cells (atau perpustakaan serupa). + +--- + +## Apa yang Akan Anda Pelajari + +- Cara **menulis rumus ke sel** menggunakan C#. +- Cara **mengonversi rentang menjadi array** dengan fungsi `EXPAND`. +- Cara **menampilkan array di konsol** setelah perhitungan. +- Cara **menghitung kotangen di Excel** menggunakan `COT` dan `COTH`. +- Sintaks tepat **bagaimana cara menggunakan lambda** di dalam fungsi `REDUCE` Excel dari C#. + +> **Prasyarat:** Anda memerlukan versi .NET terbaru (Core 6+ atau .NET Framework 4.7+) dan perpustakaan Aspose.Cells untuk .NET yang diinstal melalui NuGet. + +--- + +## Langkah 1: Siapkan Workbook dan Tulis Rumus ke Sel + +Hal pertama yang kita lakukan adalah membuat workbook baru dan mengambil worksheet pertama. Kemudian kita **menulis rumus ke sel** – dalam contoh ini sel `A1` akan menampung hasil pemanggilan `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Mengapa ini penting:** Menulis rumus langsung dari kode berarti Anda dapat menghasilkan spreadsheet kompleks secara dinamis tanpa harus membuka Excel. Ini juga menyiapkan panggung untuk langkah berikutnya di mana kita **mengonversi rentang menjadi array**. + +--- + +## Langkah 2: Mengonversi Rentang menjadi Array dengan EXPAND + +`EXPAND` adalah cara Excel mengubah rentang kecil menjadi matriks yang lebih besar. Dengan menempatkan rumus di `A1`, Excel akan menumpahkan blok 4 × 5 yang dimulai dari sel tersebut. Dari C#, kita tidak perlu menyalin nilai secara manual – perpustakaan akan melakukan pekerjaan berat ketika kita memanggil `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Bagaimana cara menggunakan lambda:** Belum, tapi tunggu dulu. Pertama kita butuh data di lembar, kemudian kita akan mereduksinya dengan lambda. + +--- + +## Langkah 3: Gunakan LAMBDA di Dalam REDUCE – Inti dari “Cara Menggunakan Lambda” + +Excel 365 memperkenalkan `REDUCE`, yang menerima **nilai awal**, **rentang**, dan **LAMBDA** yang menentukan cara menggabungkan setiap elemen. Dari C# kita cukup menetapkan string rumus; lambda berada di dalam rumus Excel, bukan di kode C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Penjelasan:** +- `0` adalah akumulator awal (`acc`). +- `A1:D4` adalah rentang yang ingin kita proses (empat kolom pertama dari spill). +- `LAMBDA(acc, x, acc + x)` memberi tahu Excel untuk menambahkan setiap sel (`x`) ke akumulator. + +Itulah esensi **bagaimana cara menggunakan lambda** untuk agregasi dalam konteks spreadsheet. + +--- + +## Langkah 4: Hitung Kotangen di Excel – Dari Derajat ke Hiperbolik + +Jika Anda membutuhkan hasil trigonometri, fungsi `COT` dan `COTH` Excel sangat mudah digunakan. Kita akan menempatkannya di `G1` dan `G2` masing‑masing. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Mengapa ini berguna:** Mengetahui **cara menghitung kotangen di Excel** dapat menghemat Anda dari menulis kode matematika khusus, terutama ketika workbook akan dibagikan kepada non‑developer. + +--- + +## Langkah 5: Paksa Perhitungan dan Ambil Array yang Diperluas + +Sekarang kita memberi tahu workbook untuk mengevaluasi setiap rumus, lalu mengambil array yang ditumpahkan dari `A1`. Di sinilah kita **menampilkan array di konsol**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Apa yang akan Anda lihat:** +- Matriks 4 × 5 yang diformat rapi, dicetak baris per baris. +- Jumlah yang dihitung oleh lambda `REDUCE`. +- Dua nilai kotangen. + +Itulah alur lengkap dari **menulis rumus ke sel** hingga **menampilkan array di konsol**. + +--- + +## Contoh Lengkap yang Siap Pakai (Copy‑Paste) + +Berikut adalah seluruh program yang dapat Anda tempel ke aplikasi console. Ingat untuk menambahkan paket NuGet `Aspose.Cells` terlebih dahulu (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Output console yang diharapkan (nilai dapat berbeda tergantung isi default B1:C2, yang secara default 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Silakan isi `B1:C2` dengan angka pilihan Anda sebelum menjalankan – matriks akan mencerminkan nilai‑nilai tersebut. + +--- + +## Tips Pro & Kesalahan Umum + +- **Tip pro:** Jika Anda ingin rentang yang ditumpahkan mulai dari sel lain, cukup ubah sel target (`A1`). Fungsi `EXPAND` menghormati anchor tersebut. +- **Waspada:** Sel kosong di rentang sumber menjadi `0` dalam array yang ditumpahkan, yang dapat memengaruhi jumlah `REDUCE` Anda. +- **Kasus tepi:** Ketika workbook berisi rumus yang bergantung pada fungsi volatil (misalnya `NOW()`), panggil `workbook.Calculate()` setelah menetapkan semua rumus untuk memastikan semuanya up‑to‑date. +- **Catatan kinerja:** Untuk spill yang sangat besar, pertimbangkan membatasi ukuran dalam pemanggilan `EXPAND`; jika tidak, Anda mungkin mengalokasikan memori lebih banyak dari yang diperlukan. +- **Kompatibilitas:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/number-and-display-formats-in-excel/_index.md b/cells/indonesian/net/number-and-display-formats-in-excel/_index.md index b3c842b014..85d5e8890f 100644 --- a/cells/indonesian/net/number-and-display-formats-in-excel/_index.md +++ b/cells/indonesian/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Jika Anda ingin menambahkan sentuhan pribadi pada lembar Excel Anda, menyesuaika Otomatiskan pemformatan angka di Excel menggunakan Aspose.Cells untuk .NET. Pelajari cara menerapkan format tanggal, persentase, dan mata uang secara terprogram. ### [Menyesuaikan Format Tampilan dengan Angka yang Ditentukan Pengguna](./customizing-display-formats-with-user-defined-numbers/) Pelajari cara menyesuaikan format tampilan dengan Aspose.Cells untuk .NET. Format tanggal, persentase, dan mata uang menggunakan panduan langkah demi langkah ini. +### [Cara Mengekspor Excel dengan Pemformatan – Mempertahankan Format Angka](./how-to-export-excel-with-formatting-preserve-number-format/) +Ekspor file Excel sambil mempertahankan format angka menggunakan Aspose.Cells untuk .NET. Ikuti panduan langkah demi langkah kami. +### [Format DateTime ke ISO di C# – Panduan Lengkap](./format-datetime-to-iso-in-c-complete-guide/) +Pelajari cara mengonversi nilai DateTime menjadi format ISO menggunakan C# dengan Aspose.Cells untuk .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/indonesian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..53061bd1c3 --- /dev/null +++ b/cells/indonesian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Pelajari cara memformat datetime ke ISO saat mengekstrak tanggal dari + Excel dan menampilkan tanggal ISO menggunakan Aspose.Cells dalam C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: id +og_description: Memformat datetime ke ISO menjadi mudah. Panduan ini menunjukkan cara + mengekstrak tanggal dari Excel dan menampilkan tanggal ISO dengan Aspose.Cells. +og_title: Format datetime ke ISO di C# – Tutorial Langkah demi Langkah +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Format datetime ke ISO di C# – Panduan Lengkap +url: /id/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime ke iso di C# – Panduan Lengkap + +Pernah perlu **format datetime ke iso** tetapi sumbernya berada di dalam workbook Excel? Mungkin sel tersebut berisi era Jepang seperti “令和3年5月1日” dan Anda kebingungan bagaimana mengubahnya menjadi string bersih `2021‑05‑01`. Anda tidak sendirian. Dalam tutorial ini kami akan **mengekstrak tanggal dari excel**, mengurai era Jepang, dan kemudian **menampilkan tanggal iso** di konsol—semua dengan beberapa baris C# dan Aspose.Cells. + +Kami akan membahas semua yang Anda perlukan: paket NuGet yang diperlukan, kode tepat yang dapat Anda salin‑tempel, mengapa setiap baris penting, dan beberapa tips untuk kasus tepi. Pada akhir tutorial Anda akan memiliki potongan kode yang dapat digunakan kembali untuk memformat datetime ke iso tidak peduli seberapa unik nilai Excel aslinya. + +## Apa yang Anda Butuhkan + +- .NET 6.0 atau lebih baru (kode ini juga dapat dikompilasi pada .NET Framework 4.6+) +- Visual Studio 2022 (atau editor lain yang Anda sukai) +- Paket NuGet **Aspose.Cells for .NET** – `Install-Package Aspose.Cells` +- File Excel (atau workbook baru) yang berisi tanggal dalam format era Jepang + +Itu saja. Tanpa pustaka tambahan, tanpa interop COM, hanya satu metode yang terdokumentasi dengan baik. + +## Langkah 1: Buat Workbook dan Tulis Tanggal Era Jepang + +Pertama, kita memerlukan workbook untuk bekerja. Jika Anda sudah memiliki file Excel, Anda dapat memuatnya dengan `new Workbook("path")`. Untuk contoh ini kami akan membuat workbook baru di memori dan menaruh string era Jepang ke sel **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Mengapa kami melakukan ini:** Aspose.Cells memperlakukan nilai sel sebagai string secara default. Dengan menyisipkan teks era mentah kami mensimulasikan skenario dunia nyata di mana klien Jepang memasukkan tanggal menggunakan kalender asli mereka. + +## Langkah 2: Aktifkan Penguraian Era Jepang dan Ekstrak Tanggal + +Aspose.Cells dapat secara otomatis menerjemahkan string era Jepang menjadi objek .NET `DateTime`—asalkan Anda memberi tahu. Flag `DateTimeParseOptions.EnableJapaneseEra` melakukan pekerjaan berat tersebut. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** Jika Anda lupa menambahkan opsi `EnableJapaneseEra`, pustaka akan mengembalikan string asli, dan konversi selanjutnya akan gagal. Selalu periksa `parsed.Type` jika Anda menangani konten campuran. + +## Langkah 3: Konversi DateTime yang Telah Diurai ke ISO 8601 + +Setelah kita memiliki `DateTime` yang tepat, mengubahnya menjadi string berformat ISO sangat mudah. Pola `"yyyy-MM-dd"` mematuhi bagian tanggal ISO 8601, yang merupakan format yang paling banyak diharapkan oleh API. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Menjalankan program akan mencetak: + +``` +ISO date: 2021-05-01 +``` + +Itulah **menampilkan tanggal iso** yang Anda cari. + +## Contoh Lengkap yang Dapat Dijalankan + +Berikut adalah blok kode lengkap yang dapat Anda salin langsung ke proyek console. Tanpa dependensi tersembunyi, tanpa konfigurasi tambahan. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Output yang diharapkan:** `ISO date: 2021-05-01` + +## Penjabaran Langkah‑per‑Langkah (Mengapa Setiap Bagian Penting) + +| Langkah | Apa yang Terjadi | Mengapa Penting | +|------|--------------|--------------------| +| **Buat workbook** | Menginisialisasi kontainer Excel dalam memori. | Memberikan sandbox untuk menguji tanpa menyentuh sistem file. | +| **PutValue** | Menyimpan string era Jepang mentah ke **A1**. | Meniru entri data nyata; memastikan parser melihat teks persis. | +| **GetValue dengan `EnableJapaneseEra`** | Mengubah string era menjadi .NET `DateTime`. | Menangani konversi kalender secara otomatis—tanpa tabel lookup manual. | +| **`ToString("yyyy-MM-dd")`** | Memformat `DateTime` ke ISO 8601. | Menjamin string tanggal yang tidak bergantung pada budaya, dapat diurutkan, dan diterima oleh REST API, basis data, dll. | +| **Console.WriteLine** | Menampilkan tanggal ISO akhir. | Mengonfirmasi seluruh alur kerja berfungsi dari ujung ke ujung. | + +## Menangani Variasi Umum + +### 1. Lokasi Sel yang Berbeda + +Jika tanggal Anda berada di **B2** atau rentang bernama, cukup ganti `"A1"` dengan alamat yang sesuai: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Banyak Tanggal dalam Satu Kolom + +Ketika Anda perlu **mengekstrak tanggal dari excel** untuk banyak baris, lakukan loop melalui range yang digunakan: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Cadangan untuk Tanggal Bukan Era + +Jika sel sudah berisi string tanggal standar, parser tetap berfungsi, tetapi Anda mungkin menginginkan jaring pengaman: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Flag `TryParse` mencegah pengecualian dan mengembalikan nilai asli bila konversi gagal. + +### 4. Komponen Waktu + +Jika Anda juga memerlukan bagian waktu, gunakan `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Itu menghasilkan timestamp ISO 8601 lengkap (`2021-05-01T00:00:00`). + +## Bantuan Visual + +![contoh format datetime ke iso](image.png "Contoh format datetime ke iso dalam C#") + +*Alt text:* *contoh format datetime ke iso menampilkan output konsol* + +## Pertanyaan yang Sering Diajukan + +- **Apakah saya dapat menggunakan ini dengan file .xls?** + Ya. Aspose.Cells mendukung `.xls`, `.xlsx`, `.csv`, dan banyak format lain secara bawaan. + +- **Bagaimana jika workbook diproteksi password?** + Muat dengan `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Apakah format ISO tergantung locale?** + Tidak. Pola `"yyyy-MM-dd"` tidak bergantung pada budaya, menjamin string yang sama di mesin mana pun. + +- **Apakah ini bekerja di .NET Core?** + Tentu—Aspose.Cells kompatibel dengan .NET Standard 2.0. + +## Penutup + +Kami telah membahas cara **format datetime ke iso** dengan **mengekstrak tanggal dari excel**, mengurai string era Jepang, dan akhirnya **menampilkan tanggal iso** di konsol. Langkah inti—membuat workbook, menulis atau memuat teks era, mengaktifkan penguraian era Jepang, dan memformat dengan `ToString("yyyy-MM-dd")`—adalah semua yang Anda perlukan untuk kebanyakan skenario. + +Selanjutnya, Anda mungkin ingin: + +- Menulis kembali tanggal ISO ke kolom lain untuk pemrosesan lebih lanjut. +- Mengekspor workbook yang telah diubah ke CSV untuk impor massal. +- Menggabungkan logika ini dengan API web yang menerima unggahan Excel dan mengembalikan tanggal ISO dalam format JSON. + +Silakan bereksperimen dengan format tanggal lain, zona waktu, atau bahkan kalender khusus. Fleksibilitas Aspose.Cells berarti Anda jarang menemui batas. + +Selamat coding, semoga semua tanggal Anda selalu sesuai ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/indonesian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..2d41c61a37 --- /dev/null +++ b/cells/indonesian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Cara mengekspor Excel dengan format dan mempertahankan format angka. + Pelajari cara mengonversi rentang Excel, mendapatkan hasil formula, dan mengekspor + Excel dengan format menggunakan Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: id +og_description: Cara mengekspor Excel dengan pemformatan dan mempertahankan format + angka. Panduan langkah demi langkah untuk mengonversi rentang Excel, mendapatkan + hasil formula, dan mengekspor Excel dengan pemformatan di C#. +og_title: Cara Mengekspor Excel dengan Pemformatan – Pertahankan Format Angka +tags: +- C# +- Aspose.Cells +- Excel automation +title: Cara Mengekspor Excel dengan Pemformatan – Pertahankan Format Angka +url: /id/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Mengekspor Excel dengan Pemformatan – Mempertahankan Format Angka + +Pernah bertanya-tanya **bagaimana cara mengekspor data Excel** sambil mempertahankan tampilan setiap sel persis seperti yang Anda lihat di workbook? Mungkin Anda perlu mengirimkan laporan ke klien, mengisi kontrol grid, atau sekadar menyimpan nilai-nilai ke dalam basis data. Masalah yang sering muncul adalah hilangnya pemformatan angka atau rumus yang berubah menjadi string mentah. + +Dalam tutorial ini kami akan membahas contoh C# lengkap yang siap‑jalankan yang **mempertahankan format angka**, **mengonversi rentang Excel** menjadi `DataTable`, **mengambil hasil rumus**, dan akhirnya **mengekspor Excel dengan pemformatan** menggunakan Aspose.Cells. Pada akhir tutorial Anda akan memiliki satu metode yang dapat Anda sisipkan ke proyek mana pun dan panggil dengan referensi worksheet. + +> **Pratinjau cepat:** kode membuat sebuah workbook, menulis nilai dan sebuah rumus, memberi tahu Aspose.Cells untuk mengekspor sel sebagai string yang diformat, dan mencetak `123.456 | 246.912` – persis seperti yang Anda harapkan di Excel. + +--- + +## Apa yang Anda Butuhkan + +- **Aspose.Cells for .NET** (versi percobaan gratis sudah cukup untuk belajar) +- .NET 6.0 atau lebih baru (API-nya sama pada .NET Framework) +- Lingkungan pengembangan C# dasar (Visual Studio, VS Code, Rider… pilih sesuai kebutuhan) + +Tidak diperlukan paket NuGet tambahan selain Aspose.Cells. Jika Anda belum menginstalnya, jalankan: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Langkah 1 – Membuat Workbook dan Menulis Nilai (termasuk sebuah rumus) + +Pertama kami membuat workbook baru dan menaruh nilai numerik ke **A1**. Kemudian kami menambahkan rumus sederhana di **B1** yang mengalikan sel pertama dengan dua. Ini menyiapkan panggung untuk mendemonstrasikan **mengambil hasil rumus** nanti. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Mengapa ini penting:** +- `PutValue` menyimpan angka mentah, sedangkan `PutFormula` menyimpan perhitungan. +- Aspose.Cells menjaga rumus tetap **aktif**, sehingga ketika kami kemudian meminta nilai sel, kami akan mendapatkan `246.912`, bukan string `"=A1*2"`. + +--- + +## Langkah 2 – Meminta Aspose.Cells untuk Mengekspor Nilai sebagai String yang Diformat + +Jika Anda hanya memanggil `ExportDataTable` dengan pengaturan default, sel numerik akan dikembalikan sebagai nilai `double` dasarnya. Itu menghilangkan pemisah ribuan, simbol mata uang, atau tempat desimal khusus yang mungkin Anda atur. Kelas `ExportTableOptions` memungkinkan kita **mempertahankan format angka** dan **mengekspor sebagai string**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Poin utama:** `ExportNumberFormat = true` adalah flag yang membuat **mempertahankan format angka** berfungsi. Tanpanya Anda akan melihat `"123.456"` dan `"246.912"` sebagai angka mentah, yang mungkin terlihat baik dalam kode tetapi tidak ketika Anda menempelkan data ke UI yang mengharapkan pemformatan yang sama seperti di Excel. + +--- + +## Langkah 3 – Mencetak Data yang Diekspor (Verifikasi) + +Sekarang kami memiliki `DataTable` penuh dengan string yang diformat, mari kita cetak isinya ke konsol. Ini juga menunjukkan bahwa kami berhasil **mengambil hasil rumus** tanpa harus mengevaluasi rumus secara manual. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Menjalankan program mencetak: + +``` +123.456 | 246.912 +``` + +Perhatikan bagaimana kolom kedua menampilkan **hasil rumus**, bukan teks rumus. Itulah yang Anda butuhkan saat **mengekspor Excel dengan pemformatan** untuk pemrosesan selanjutnya. + +--- + +## Langkah 4 – Mengonversi Rentang Excel yang Lebih Besar (Opsional) + +Contoh di atas menangani potongan kecil `A1:B1`, tetapi skenario dunia nyata sering memerlukan pengeksporan seluruh tabel. Metode yang sama bekerja untuk blok persegi panjang apa pun – cukup sesuaikan argumen `firstRow`, `firstColumn`, `totalRows`, dan `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Tips pro:** Jika lembar Anda sudah memiliki baris header, atur `includeColumnNames` menjadi `true`. Aspose.Cells akan menggunakan baris pertama dari rentang sebagai nama kolom, yang berguna ketika Anda nanti mengikat `DataTable` ke grid UI. + +--- + +## Langkah 5 – Kesalahan Umum & Cara Menghindarinya + +| Masalah | Mengapa Terjadi | Solusi | +|-------|----------------|-----| +| **Angka kehilangan koma atau simbol mata uang** | `ExportAsString` bernilai `false` atau `ExportNumberFormat` tidak disertakan | Atur keduanya `ExportAsString = true` **dan** `ExportNumberFormat = true`. | +| **Sel rumus mengembalikan teks rumus** | Anda tidak memanggil `CalculateFormula` sebelum mengekspor (hanya diperlukan jika workbook tidak diatur untuk auto‑calculate) | Aktifkan auto‑calculate (`workbook.CalculateFormula()`) atau gunakan `ExportAsString` yang memaksa evaluasi. | +| **Header muncul sebagai baris data** | `includeColumnNames` diatur ke `false` padahal rentang Anda mencakup baris header | Atur `includeColumnNames = true` untuk memperlakukan baris pertama sebagai nama kolom. | +| **Rentang besar menyebabkan tekanan memori** | Mengekspor seluruh lembar sekaligus memuat semua data ke memori | Ekspor dalam potongan (misalnya 500 baris sekaligus) dan gabungkan `DataTable` bila diperlukan. | + +--- + +## Langkah 6 – Contoh Kerja Lengkap (Siap Salin‑Tempel) + +Berikut adalah seluruh program, mulai dari pernyataan `using` hingga `Main`. Tempelkan ke aplikasi console dan tekan **F5** – Anda akan melihat output yang diformat secara langsung. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Output yang diharapkan** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Itulah seluruh alur kerja **cara mengekspor excel**, dengan pemformatan tetap, hasil rumus dievaluasi, dan `DataTable` bersih siap untuk konsumen .NET apa pun. + +--- + +## Kesimpulan + +Kami telah membahas semua yang perlu Anda ketahui tentang **cara mengekspor data Excel** sambil **mempertahankan format angka**, **mengonversi rentang Excel** menjadi `DataTable`, dan **mengambil hasil rumus** tanpa parsing tambahan. Kuncinya adalah konfigurasi `ExportTableOptions` – setelah Anda mengatur `ExportAsString` dan `ExportNumberFormat` menjadi `true`, Aspose.Cells akan melakukan pekerjaan berat untuk Anda. + +Dari sini Anda dapat: + +- Sambungkan `DataTable` ke `DataGrid` WPF atau tampilan ASP.NET MVC. +- Tulis tabel ke file CSV sambil mempertahankan representasi visual yang persis. +- Perluas pendekatan ke beberapa lembar atau rentang dinamis. + +Silakan bereksperimen dengan format berbeda (mata uang, persentase) dan blok data yang lebih besar. Jika Anda menemukan kejanggalan, kembali ke tabel **kesalahan umum** – tabel tersebut mencakup masalah paling sering terjadi saat Anda **mengekspor excel dengan pemformatan**. + +Selamat coding, semoga spreadsheet yang Anda ekspor selalu tampak sehalus aslinya! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/indonesian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..327d8a6070 --- /dev/null +++ b/cells/indonesian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,207 @@ +--- +category: general +date: 2026-03-22 +description: Pelajari cara menduplikasi pivot di C# menggunakan Aspose.Cells. Panduan + ini juga menunjukkan cara menyalin baris dan memuat workbook Excel dengan C# untuk + otomatisasi Excel yang mulus dalam menyalin baris. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: id +og_description: Bagaimana cara menduplikasi pivot di C#? Ikuti tutorial singkat ini + untuk memuat workbook Excel dengan C#, menyalin baris, dan menguasai otomatisasi + Excel menyalin baris. +og_title: Cara Menggandakan Pivot di C# – Panduan Lengkap +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Cara Menggandakan Pivot di C# – Panduan Lengkap Langkah demi Langkah +url: /id/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menggandakan Pivot di C# – Panduan Lengkap Langkah‑per‑Langkah + +Pernah bertanya‑tanya **bagaimana cara menggandakan pivot** tabel secara programatis tanpa harus menyeretnya secara manual di Excel? Anda bukan satu‑satunya. Dalam banyak alur pelaporan, tata letak pivot yang sama diperlukan pada sekumpulan baris baru, dan melakukannya secara manual membuang waktu. + +Berita baik? Dengan beberapa baris C# Anda dapat memuat sebuah workbook Excel, menentukan area yang berisi pivot, dan **cara menyalin baris** sehingga pivot muncul di lokasi baru—semua dalam satu proses otomatis. Dalam tutorial ini kami juga akan membahas dasar‑dasar **load excel workbook c#** dan memberi Anda fondasi yang kuat untuk tugas **excel automation copy rows**. + +> **Apa yang akan Anda dapatkan** +> • Contoh lengkap yang dapat dijalankan yang menggandakan sebuah tabel pivot. +> • Penjelasan mengapa setiap baris kode penting. +> • Tips menangani kasus tepi seperti lembar kerja tersembunyi atau pivot ganda. + +--- + +## Prasyarat + +Sebelum kita mulai, pastikan Anda memiliki: + +- **.NET 6.0** (atau versi .NET terbaru) terpasang. +- **Aspose.Cells for .NET** – perpustakaan yang akan kami gunakan untuk memanipulasi file Excel. Anda dapat mengunduhnya via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Sebuah workbook sumber (`Source.xlsx`) yang sudah berisi tabel pivot pada rentang **A1:J20** (rentang yang akan kami gandakan). +- Familiaritas dasar dengan sintaks C# – tidak ada yang rumit, hanya pernyataan `using` biasa dan metode `Main`. + +Jika ada yang belum Anda kenal, jeda sejenak dan instal paketnya; sisanya mengasumsikan perpustakaan sudah siap pakai. + +![Ilustrasi cara menggandakan pivot di C# menggunakan Aspose.Cells](https://example.com/duplicate-pivot.png "ilustrasi cara menggandakan pivot di C#") + +*Teks alt gambar: "cara menggandakan pivot di C# contoh yang menunjukkan baris pivot sumber dan yang digandakan".* + +--- + +## Langkah 1: Memuat Workbook Excel C# – Membuka File + +Hal pertama yang harus Anda lakukan ketika ingin **load excel workbook c#** adalah membuat instance `Workbook` yang menunjuk ke file Anda. Objek ini memberi Anda akses ke setiap lembar kerja, sel, dan pivot di dalam file. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Mengapa ini penting:** +`Workbook` mengabstraksi seluruh file Excel menjadi model dalam memori. Tanpa memuatnya terlebih dahulu Anda tidak dapat memeriksa lokasi pivot atau menyalin baris. Selain itu, konstruktor secara otomatis mendeteksi format file (XLS, XLSX, CSV, dll.), sehingga Anda tidak memerlukan kode tambahan untuk deteksi format. + +--- + +## Langkah 2: Cara Menyalin Baris – Menentukan Area Pivot + +Setelah workbook berada di memori, kita perlu memberi tahu Aspose.Cells baris mana yang berisi pivot. Pada contoh ini pivot berada di **A1:J20**, yang diterjemahkan menjadi baris **0‑19** (indeks berbasis nol). Kita akan membungkusnya dalam struktur `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Mengapa kami menggunakan `CellArea`:** +Ini adalah cara ringan untuk mendeskripsikan blok persegi panjang. Ketika Anda kemudian memanggil `CopyRows`, metode tersebut membaca objek ini untuk mengetahui tepat baris mana yang harus digandakan. Jika Anda perlu menyesuaikan rentang (misalnya pivot berkembang ke kolom K), Anda hanya mengubah nilai `endColumn`. + +--- + +## Langkah 3: Mengakses Lembar Kerja Target + +Sebagian besar workbook hanya memiliki satu lembar, tetapi API bekerja sama untuk banyak lembar. Ambil lembar kerja pertama (indeks 0) – di situlah pivot asli berada. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tip:** +Jika Anda memiliki lembar bernama, Anda juga dapat mengambilnya dengan nama: `workbook.Worksheets["Sheet1"]`. Ini membantu menghindari hard‑coding indeks ketika struktur workbook berubah. + +--- + +## Langkah 4: Cara Menyalin Baris – Menggandakan Tabel Pivot + +Berikut inti dari **bagaimana cara menggandakan pivot**: kami menyalin baris yang berisi pivot ke lokasi baru. Pada contoh ini kami mulai di baris 31 (indeks berbasis nol 30). Metode `CopyRows` menyalin *baik* data maupun cache pivot yang mendasarinya, sehingga baris baru berperilaku persis seperti yang asli. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Apa yang terjadi di balik layar?** +`CopyRows` menggandakan setiap baris, mempertahankan formula, gaya, dan definisi pivot. Karena cache pivot berada di tingkat workbook, pivot yang digandakan otomatis merujuk ke sumber data yang sama – tidak perlu konfigurasi tambahan. + +**Kasus tepi – baris tersembunyi:** +Jika ada baris dalam rentang sumber yang tersembunyi, mereka tetap tersembunyi setelah penyalinan. Jika Anda ingin menampilkannya, panggil `worksheet.Rows[destRow].IsHidden = false` setelah proses penyalinan. + +--- + +## Langkah 5: Menyimpan Workbook – Memverifikasi Duplikat + +Akhirnya, tulis perubahan kembali ke disk. Anda dapat menimpa file asli atau, lebih aman, menyimpan dengan nama baru agar dapat membandingkan sebelum/d sesudah. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Hasil yang akan Anda lihat:** +Buka `CopyWithPivot.xlsx`. Anda akan menemukan pivot asli di **A1:J20** dan salinan identik mulai dari **A31:J50**. Kedua pivot dapat disegarkan secara independen, dan slicer apa pun yang terhubung ke yang asli tetap berfungsi untuk salinan karena mereka berbagi cache yang sama. + +--- + +## Pertanyaan Umum & Variasi + +### Bisakah saya menggandakan beberapa pivot sekaligus? + +Tentu saja. Loop melalui semua tabel pivot (`worksheet.PivotTables`) dan salin setiap rentang ke tujuan yang berbeda. Pastikan rentang tujuan tidak tumpang tindih. + +### Bagaimana jika workbook sumber dilindungi kata sandi? + +Aspose.Cells memungkinkan Anda membuka file yang dilindungi dengan memberikan kata sandi ke konstruktor `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Bagaimana menyalin baris tanpa memengaruhi formula? + +Jika Anda hanya membutuhkan *nilai* (tanpa formula), gunakan `CopyRows` dengan flag `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Apakah ada cara menyalin baris ke *workbook* lain? + +Ya. Setelah menyalin baris di lembar sumber, Anda dapat mengkloning lembar kerja ke instance `Workbook` lain via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Tips Pro untuk Excel Automation Copy Rows yang Handal + +- **Validasi rentang** sebelum menyalin. Pemeriksaan cepat `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` mencegah error out‑of‑range. +- **Matikan perhitungan** saat menyalin rentang besar: `workbook.Settings.CalcMode = CalcMode.Manual;` – ini mempercepat operasi secara signifikan. +- **Dispose objek** (`workbook.Dispose()`) jika Anda memproses banyak file dalam loop untuk membebaskan sumber daya native. +- **Log operasi** – terutama dalam pipeline produksi – sehingga Anda dapat melacak file mana yang diproses dan menangkap kegagalan lebih awal. + +--- + +## Kesimpulan + +Anda kini tahu **bagaimana cara menggandakan pivot** tabel di C# menggunakan Aspose.Cells, dan telah melihat alur kerja lengkap dari **load excel workbook c#** hingga **excel automation copy rows** serta akhirnya menyimpan hasilnya. Contoh ini berdiri sendiri, dapat dijalankan langsung, dan dapat diperluas untuk menangani pivot ganda, file terlindungi, atau penyalinan antar‑workbook. + +Langkah selanjutnya? Coba sesuaikan skrip untuk: + +- Menyegarkan pivot yang digandakan secara programatis (`pivotTable.RefreshData();`). +- Mengekspor area yang digandakan ke CSV untuk pemrosesan lebih lanjut. +- Mengintegrasikan kode ke dalam API ASP.NET Core sehingga pengguna dapat mengunggah file dan menerima versi dengan pivot yang digandakan secara instan. + +Selamat coding, semoga otomatisasi Excel Anda selalu lancar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/row-and-column-management/_index.md b/cells/indonesian/net/row-and-column-management/_index.md index f255afb65a..dc16db0cff 100644 --- a/cells/indonesian/net/row-and-column-management/_index.md +++ b/cells/indonesian/net/row-and-column-management/_index.md @@ -55,7 +55,7 @@ Pelajari cara membuat baris ringkasan di bawah baris yang dikelompokkan di Excel ### [Buat Baris Ringkasan Langsung dengan Aspose.Cells untuk .NET](./summary-row-right/) Pelajari cara membuat baris ringkasan di sebelah kanan di Excel menggunakan Aspose.Cells for .NET. Ikuti panduan langkah demi langkah kami untuk mendapatkan petunjuk yang jelas. ### [Memisahkan Baris dan Kolom di Excel dengan Aspose.Cells](./ungrouping-rows-and-columns/) -Pelajari cara memisahkan baris dan kolom di Excel menggunakan Aspose.Cells for .NET dengan panduan lengkap ini. Sederhanakan manipulasi data Excel Anda. +Pelajari cara memisahkan baris dan kolom di Excel menggunakan Aspose.Cells untuk .NET dengan panduan lengkap ini. Sederhanakan manipulasi data Excel Anda. ### [Sembunyikan Beberapa Baris dan Kolom di Aspose.Cells .NET](./hide-multiple-rows-columns-aspose-cells/) Pelajari cara menyembunyikan beberapa baris dan kolom di Excel dengan mudah menggunakan Aspose.Cells for .NET. Ikuti panduan langkah demi langkah ini untuk manipulasi Excel yang lancar. ### [Menyembunyikan Baris dan Kolom di Aspose.Cells .NET](./hide-rows-columns-aspose-cells/) @@ -66,6 +66,8 @@ Pelajari cara menampilkan kembali baris dan kolom di Excel menggunakan Aspose.Ce Pelajari cara menghapus kolom dalam file Excel menggunakan Aspose.Cells for .NET. Ikuti panduan terperinci kami, langkah demi langkah untuk menyederhanakan modifikasi file Excel Anda. ### [Hapus Baris di Aspose.Cells .NET](./delete-row-aspose-cells/) Pelajari cara menghapus baris di Excel dengan Aspose.Cells for .NET. Panduan langkah demi langkah ini mencakup prasyarat, impor kode, dan panduan terperinci untuk manipulasi data yang lancar. +### [Aspose Cells Hapus Baris – Lindungi Baris Header di Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Pelajari cara menghapus baris di Excel sambil melindungi baris header menggunakan Aspose.Cells untuk .NET. ### [Hapus Beberapa Baris di Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Pelajari cara menghapus beberapa baris di Excel menggunakan Aspose.Cells untuk .NET. Panduan terperinci dan langkah demi langkah ini mencakup prasyarat, contoh pengodean, dan Tanya Jawab Umum untuk pengembang. ### [Menyisipkan Kolom di Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/indonesian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/indonesian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..63cfa5f713 --- /dev/null +++ b/cells/indonesian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells Menghapus Baris sambil melindungi baris header. Pelajari + cara mengambil tabel pertama dan menghapus baris tabel Excel secara aman di C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: id +og_description: Aspose Cells Menghapus Baris sambil melindungi baris header. Pelajari + cara mengambil tabel pertama dan menghapus baris tabel Excel dengan aman di C#. +og_title: Aspose Cells Hapus Baris – Lindungi Baris Header di Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Hapus Baris – Lindungi Baris Header di Excel +url: /id/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Lindungi Baris Header di Excel + +Pernah mencoba **aspose cells delete rows** dari sebuah tabel hanya untuk menemukan bahwa header menghilang? Itu adalah jebakan umum saat memanipulasi lembar Excel secara programatis. Dalam panduan ini kami akan membahas solusi lengkap yang dapat dijalankan yang **melindungi baris header**, menunjukkan cara **retrieve first table**, dan dengan aman **delete Excel table rows** tanpa merusak struktur. + +Kami akan membahas semuanya mulai dari memuat workbook hingga menangani pengecualian yang dilempar Aspose ketika Anda mencoba memisahkan header. Pada akhir tutorial Anda akan memiliki pola yang solid yang dapat Anda gunakan dalam proyek .NET apa pun yang menggunakan Aspose.Cells. + +--- + +## Apa yang Anda Butuhkan + +- **Aspose.Cells for .NET** (v23.12 atau lebih baru) – perpustakaan yang memungkinkan Anda bekerja dengan file Excel tanpa harus menginstal Office. +- Lingkungan pengembangan C# dasar (Visual Studio, Rider, atau `dotnet` CLI). +- File Excel (`TableWithHeader.xlsx`) yang berisi setidaknya satu **ListObject** (tabel Excel) dengan baris header di baris pertama. + +Tidak ada paket NuGet tambahan yang diperlukan selain Aspose.Cells. + +--- + +## Langkah 1: Muat Workbook dan Retrieve First Table + +Hal pertama yang harus Anda lakukan adalah membuka workbook dan mengambil tabel yang ingin Anda ubah. Inilah tempat kata kunci sekunder **retrieve first table** berperan. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Mengapa ini penting:** +- `Workbook` membaca file tanpa perlu Excel terinstal. +- `worksheet.ListObjects[0]` adalah cara paling sederhana untuk **retrieve first table**; jika Anda memiliki beberapa tabel, Anda dapat mengiterasi atau menggunakan nama tabel. + +> **Pro tip:** Jika Anda tidak yakin apakah sebuah worksheet benar‑benar berisi tabel, periksa `worksheet.ListObjects.Count` terlebih dahulu untuk menghindari `IndexOutOfRangeException`. + +--- + +## Langkah 2: Lindungi Baris Header Saat Menghapus Baris + +Sekarang masuk ke inti masalah: **aspose cells delete rows** tanpa menghapus header. Metode `DeleteRows` milik Aspose menerima indeks mulai berbasis nol dan jumlah baris. Mencoba menghapus header (baris 0) memicu pengecualian, yang memang ingin kita hindari. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Penjelasan logika:** + +| Langkah | Alasan | +|------|--------| +| `table.DeleteRows(1, 2);` | Indeks 1 menunjuk ke baris **kedua** (baris data pertama). Menghapus dua baris menghilangkan baris 2‑3 dalam istilah Excel, meninggalkan header (baris 1) tidak tersentuh. | +| `catch (Exception ex)` | Aspose melempar pengecualian **hanya** ketika operasi akan memisahkan header. Menangkapnya memungkinkan Anda mencatat pesan yang ramah alih‑alih membuat aplikasi crash. | +| `Save` | Menyimpan perubahan memungkinkan Anda membuka `Result.xlsx` dan melihat bahwa header masih ada. | + +> **Bagaimana jika Anda benar‑benar perlu menghapus header?** +> Gunakan `table.ShowHeaders = false;` sebelum penghapusan, atau hapus seluruh tabel dan buat kembali. Namun dalam kebanyakan skenario bisnis Anda akan ingin **protect header row**. + +--- + +## Langkah 3: Verifikasi Hasil – Output yang Diharapkan + +Setelah menjalankan program, buka `Result.xlsx`. Anda harus melihat: + +- Baris pertama masih berisi judul kolom asli. +- Baris 2‑3 (yang kami targetkan) telah hilang, dan data yang tersisa telah bergeser ke atas. + +Konsol akan menampilkan: + +``` +Rows deleted successfully. +``` + +Jika Anda tidak sengaja mencoba menghapus header (misalnya `table.DeleteRows(0, 1);`), outputnya akan menjadi: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Pesan itu mengonfirmasi bahwa perlindungan bawaan Aspose berfungsi sebagaimana mestinya. + +--- + +## Langkah 4: Cara Alternatif untuk **Delete Excel Table Rows** + +Kadang‑kadang Anda memerlukan kontrol lebih—seperti menghapus baris berdasarkan kondisi, atau menghapus baris yang tidak berurutan. Berikut dua pola cepat yang menjaga header tetap aman. + +### 4.1 Hapus Baris dengan Filter Data + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Hapus Massal Menggunakan Rentang + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Kedua potongan kode menghormati aturan **protect header row** karena indeks mulai tidak pernah turun di bawah 1. + +--- + +## Langkah 5: Kesalahan Umum & Cara Menghindarinya + +| Kesalahan | Mengapa Terjadi | Solusi | +|---------|----------------|-----| +| Tidak sengaja menghapus header | Menggunakan `0` sebagai indeks mulai | Selalu mulai dari `1` untuk baris data, atau periksa `table.ShowHeaders` terlebih dahulu. | +| `IndexOutOfRangeException` ketika lembar tidak memiliki tabel | Mengasumsikan tabel ada | Verifikasi `worksheet.ListObjects.Count > 0` sebelum mengakses `[0]`. | +| Perubahan tidak disimpan | Lupa memanggil `Save` | Panggil `workbook.Save` setelah modifikasi. | +| Menghapus baris di tengah menggeser indeks, menyebabkan baris terlewat | Iterasi maju saat menghapus | Iterasi **mundur** atau kumpulkan baris yang akan dihapus terlebih dahulu. | + +--- + +## Langkah 6: Gabungkan Semua – Contoh Lengkap yang Berfungsi + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Jalankan program ini, buka `Result.xlsx`, dan Anda akan melihat header tetap tidak tersentuh sementara baris yang dipilih telah hilang. Itu adalah **complete, self‑contained solution** untuk **aspose cells delete rows** tanpa mengorbankan header. + +--- + +## Kesimpulan + +Kami baru saja mendemonstrasikan cara **aspose cells delete rows** sambil **protecting the header row**, cara **retrieve first table**, dan beberapa cara untuk **delete excel table rows** dengan aman. Poin pentingnya adalah: + +- Selalu mulai penghapusan pada indeks 1 untuk menjaga header tetap ada. +- Gunakan `try/catch` untuk menangani pengecualian perlindungan bawaan Aspose. +- Verifikasi keberadaan tabel sebelum beroperasi, dan iterasi mundur saat menghapus baris secara kondisional. + +Siap meningkatkan level? Coba gabungkan pendekatan ini dengan API styling **Aspose Cells’** untuk menyorot baris yang akan dihapus sebelum penghapusan, atau otomatisasi proses di banyak worksheet. Kemungkinannya tak terbatas, dan kini Anda memiliki pola andal untuk dibangun lebih lanjut. + +Jika Anda menemukan tutorial ini membantu, beri jempol, bagikan kepada rekan tim, atau tinggalkan komentar dengan solusi kasus tepi Anda sendiri. Selamat coding! + +--- + +![Contoh Aspose Cells Delete Rows – Baris Header Dilindungi](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/indonesian/net/saving-and-exporting-excel-files-with-options/_index.md index d95b2799b6..cfabe8cae5 100644 --- a/cells/indonesian/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/indonesian/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Pelajari cara menangani peringatan saat memuat file Excel dalam .NET menggunakan Pelajari cara menentukan properti dokumen seperti versi, penulis, dan judul dalam file Excel secara terprogram menggunakan Aspose.Cells untuk .NET dengan petunjuk langkah demi langkah. ### [Memangkas Baris dan Kolom Kosong Terkemuka saat Mengekspor](./trimming-leading-blank-rows-and-columns/) Sederhanakan ekspor CSV Anda dengan memangkas baris dan kolom kosong di awal dengan Aspose.Cells untuk .NET. Data bersih hanya dalam beberapa langkah saja. +### [Cara Menyimpan Workbook di C# – Panduan Otomatisasi Excel Lengkap](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Pelajari cara menyimpan workbook menggunakan C# dengan Aspose.Cells, langkah demi langkah untuk otomatisasi Excel yang lengkap. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/indonesian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..b7953fef74 --- /dev/null +++ b/cells/indonesian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Cara menyimpan workbook di C# menggunakan Aspose.Cells—panduan langkah + demi langkah yang mencakup cara memuat Excel, membuat sheet, menggunakan kembali + sheet, dan menghasilkan laporan. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: id +og_description: Cara menyimpan workbook di C# dengan Aspose.Cells. Pelajari cara memuat + Excel, membuat sheet, menggunakan kembali sheet, dan menghasilkan laporan dalam + satu tutorial. +og_title: Cara Menyimpan Workbook di C# – Panduan Lengkap Otomatisasi Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Cara Menyimpan Workbook di C# – Panduan Lengkap Otomatisasi Excel +url: /id/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menyimpan Workbook di C# – Panduan Otomasi Excel Lengkap + +Pernah bertanya-tanya **cara menyimpan workbook** di C# setelah Anda mengolah data? Anda tidak sendirian. Kebanyakan pengembang mengalami kebuntuan ketika laporan terlihat sempurna di layar tetapi tidak dapat menulis kembali ke disk. Dalam tutorial ini kita akan membahas contoh lengkap yang tidak hanya menunjukkan **cara menyimpan workbook**, tetapi juga mencakup **cara memuat Excel**, **cara membuat sheet**, **cara menggunakan kembali sheet**, dan **cara menghasilkan laporan**—semua dengan Aspose.Cells. + +Anggap saja ini seperti obrolan santai sambil minum kopi di mana saya mengeluarkan kode dari laptop dan menjelaskan setiap baris. Pada akhir tutorial Anda akan memiliki program yang dapat dijalankan, yang memuat templat, menyuntikkan data via SmartMarker, menggunakan kembali nama sheet detail yang sudah ada, dan akhirnya menulis file ke folder Anda. Tidak ada misteri, hanya langkah‑langkah jelas yang dapat Anda salin‑tempel. + +## Apa yang Anda Butuhkan + +- **Aspose.Cells for .NET** (versi terbaru per 2026). Anda dapat mengunduhnya dari NuGet dengan `Install-Package Aspose.Cells`. +- Lingkungan pengembangan .NET (Visual Studio, Rider, atau VS Code dengan ekstensi C# sudah cukup). +- File templat Excel dasar bernama `MasterTemplate.xlsx` yang ditempatkan di folder yang Anda kontrol. +- Pengetahuan dasar C#—jika Anda pernah menulis `Console.WriteLine` sebelumnya, Anda siap. + +> **Pro tip:** Simpan templat Anda di folder *Resources* terpisah dan tandai sebagai “Copy if newer” sehingga jalur tetap konsisten di semua build. + +Sekarang, mari kita selami kode. + +## Langkah 1: Cara Memuat Excel – Buka Workbook Templat + +Hal pertama yang harus Anda lakukan adalah memuat workbook ke memori. Aspose.Cells menjadikannya satu baris kode, tetapi memahami mengapa hal ini penting membantu saat Anda harus memecahkan masalah nanti. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Mengapa ini penting:** Memuat workbook memberi Anda akses ke setiap worksheet, style, dan named range di dalam templat. Jika file tidak ditemukan, Aspose akan melempar `FileNotFoundException`, jadi periksa kembali jalurnya. +- **Kasus tepi:** Jika templat diproteksi password, berikan password ke konstruktor `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Langkah 2: Cara Menggunakan Kembali Sheet – Konfigurasi Opsi SmartMarker + +SmartMarker dapat secara otomatis membuat sheet detail baru, tetapi Anda mungkin sudah memiliki sheet bernama **Detail**. Untuk menghindari bentrok, kami memberi tahu processor untuk menggunakan kembali nama tersebut. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Mengapa ini penting:** Tanpa opsi ini Aspose akan menambahkan sufiks numerik (misalnya “Detail1”) yang dapat merusak macro atau formula downstream yang mengharapkan nama sheet tetap. +- **Bagaimana jika sheet tidak ada?** Aspose akan membuatnya untuk Anda—jadi kode yang sama bekerja baik sheet ada maupun tidak. + +## Langkah 3: Cara Membuat Sheet – Siapkan Sumber Data + +Meskipun kita tidak menambahkan sheet secara manual di sini, data yang Anda berikan ke SmartMarker menentukan apakah sheet baru akan dibuat. Mari buat objek anonim sederhana yang meniru daftar pesanan. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Mengapa ini penting:** SmartMarker memindai templat untuk marker seperti `&=Header` dan `&=Items.Id`. Struktur `orderData` harus persis cocok dengan marker tersebut, jika tidak processor akan melewatkannya secara diam‑diam. +- **Variasi:** Jika Anda mengambil data dari basis data, gantilah tipe anonim dengan daftar DTO atau `DataTable`. Processor dapat menangani keduanya. + +## Langkah 4: Cara Menghasilkan Laporan – Proses SmartMarker + +Sekarang kami mengikat data ke templat. Processor berjalan melalui worksheet pertama, menggantikan marker, dan membangun sheet detail. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Mengapa ini penting:** Baris tunggal ini melakukan pekerjaan berat—mengisi header, mengiterasi `Items`, dan menghormati `DetailSheetNewName` yang kami setel sebelumnya. +- **Pertanyaan umum:** *Bagaimana jika saya memiliki beberapa worksheet dengan marker?* Loop melalui setiap worksheet dan panggil `SmartMarkerProcessor.Process` secara terpisah. + +## Langkah 5: Cara Menyimpan Workbook – Persist File Hasil + +Akhirnya, kami menulis workbook yang telah dimodifikasi kembali ke disk. Inilah saat **cara menyimpan workbook** menjadi nyata. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Mengapa ini penting:** Metode `Save` mendukung banyak format (`.xlsx`, `.xls`, `.csv`, `.pdf`, dll.). Secara default ia menulis file Excel, tetapi Anda dapat memberikan objek `SaveOptions` untuk mengubah output. +- **Kasus tepi:** Jika file target sedang dibuka di Excel, `Save` akan melempar `IOException`. Pastikan semua instance ditutup atau gunakan nama file unik setiap kali dijalankan. + +![Contoh Cara Menyimpan Workbook di C#](/images/how-to-save-workbook-csharp.png "Cara Menyimpan Workbook di C# – gambaran visual proses") + +### Contoh Lengkap yang Berfungsi + +Menggabungkan semuanya, berikut adalah aplikasi console mandiri yang dapat Anda kompilasi dan jalankan: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Output yang diharapkan:** Setelah dijalankan, Anda akan menemukan `SmartMarkerWithDupDetail.xlsx` di `YOUR_DIRECTORY`. Buka file tersebut dan Anda akan melihat: + +- Header asli terisi dengan “Orders”. +- Sheet baru (atau yang dipakai kembali) bernama **Detail** berisi dua baris: `Id=1, Qty=5` dan `Id=2, Qty=3`. + +Jika sheet **Detail** sudah ada, isinya akan ditimpa dengan data baru—tidak ada sheet tambahan yang mengacaukan file Anda. + +## Pertanyaan yang Sering Diajukan (FAQ) + +| Pertanyaan | Jawaban | +|------------|---------| +| *Bisakah saya menyimpan ke PDF alih-alih XLSX?* | Ya. Ganti `workbook.Save("file.xlsx")` dengan `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Bagaimana jika templat saya memiliki beberapa bagian SmartMarker?* | Panggil `SmartMarkerProcessor.Process` pada setiap worksheet yang berisi marker, atau berikan koleksi objek data yang cocok dengan setiap bagian. | +| *Apakah ada cara menambahkan data alih-alih menimpa sheet Detail?* | Gunakan `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (tersedia pada versi Aspose yang lebih baru). | +| *Apakah saya perlu membuang (dispose) Workbook?* | Kelas `Workbook` mengimplementasikan `IDisposable`. Bungkus dalam blok `using` untuk manajemen sumber daya yang bersih. | + +## Kesimpulan + +Kami baru saja membahas **cara menyimpan workbook** di C# dari awal hingga akhir, memperlihatkan seluruh alur: **cara memuat Excel**, **cara membuat sheet** (secara implisit lewat SmartMarker), **cara menggunakan kembali sheet**, dan **cara menghasilkan laporan**. Kode siap disisipkan ke proyek .NET mana pun, dan penjelasannya memberikan konteks cukup untuk menyesuaikannya dengan skenario yang lebih kompleks—seperti laporan multi‑sheet, conditional formatting, atau ekspor ke PDF. + +Siap untuk tantangan berikutnya? Coba tambahkan chart yang memvisualisasikan kuantitas pesanan, atau ubah format output menjadi CSV untuk proses downstream. Prinsip yang sama—memuat, memproses, dan menyimpan—tetap berlaku, sehingga Anda akan sering menggunakan pola ini dalam banyak tugas pelaporan. + +Jika Anda menemukan kendala atau memiliki ide untuk ekstensi, silakan tinggalkan komentar. Selamat coding, dan nikmati pengalaman mulus akhirnya dapat **menyimpan workbook** persis seperti yang Anda butuhkan! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/smart-markers-dynamic-data/_index.md b/cells/indonesian/net/smart-markers-dynamic-data/_index.md index 8ac57bb4fb..b082344b09 100644 --- a/cells/indonesian/net/smart-markers-dynamic-data/_index.md +++ b/cells/indonesian/net/smart-markers-dynamic-data/_index.md @@ -77,13 +77,14 @@ Fedezd fel az Aspose.Cells for .NET erejét, és tudd meg, hogyan alkalmazhatsz ### [Képletparaméter használata az Aspose.Cells intelligens jelölőmezőben](./formula-parameter-smart-marker/) Tanuld meg a képletparaméterek használatát az intelligens jelölőkben az Aspose.Cells for .NET segítségével. Hozz létre dinamikus táblázatokat könnyedén. ### [Általános lista használata az intelligens markerekben az Aspose.Cells függvényben](./generic-list-smart-markers/) -Sajátítsa el az Aspose.Cells for .NET-et általános listákkal és intelligens jelölőkkel, hogy könnyedén készíthessen dinamikus Excel-jelentéseket. Könnyen használható útmutató fejlesztőknek. +Sajátítsa el az Aspose.Cells for .NET-et általános listákkal és intelligens jelölőkkel, hogy könnyen készíthessen dinamikus Excel-jelentéseket. Könnyen használható útmutató fejlesztőknek. ### [HTML tulajdonságok használata intelligens jelölőkben Aspose.Cells .NET](./html-property-smart-markers/) Engedd szabadjára az Aspose.Cells erejét ezzel a lépésről lépésre haladó oktatóanyaggal, amely bemutatja a HTML tulajdonság használatát az intelligens jelölőkben .NET alkalmazásokhoz. ### [Beágyazott objektumok kezelése intelligens jelölőkkel Aspose.Cells](./nested-objects-smart-markers/) Az Aspose.Cells segítségével lépésről lépésre haladva könnyedén kezelheted a beágyazott objektumokat intelligens jelölők segítségével, így az Excel-jelentéskészítésben rejlő lehetőségeket is kihasználhatod. ### [Változó tömb implementálása intelligens jelölőkkel Aspose.Cells](./variable-array-smart-markers/) Engedd szabadjára az Aspose.Cells erejét. Tanuld meg, hogyan valósíthatsz meg változó tömböket intelligens jelölőkkel lépésről lépésre a zökkenőmentes Excel-jelentéskészítéshez. +### [Cara Membuat Laporan Excel di C# – Panduan Lengkap Menggunakan SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/indonesian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..ed8786208b --- /dev/null +++ b/cells/indonesian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Cara menghasilkan laporan Excel di C# dengan template master‑detail. + Pelajari cara mengisi template Excel C# dengan cepat, menggunakan SmartMarker untuk + lembar yang dapat diulang. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: id +og_description: Cara membuat laporan Excel di C# menggunakan templat yang dapat digunakan + kembali. Panduan langkah demi langkah ini menunjukkan cara mengisi templat Excel + C# dengan data master‑detail. +og_title: Cara Membuat Laporan Excel di C# – Tutorial SmartMarker Lengkap +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Cara Membuat Laporan Excel di C# – Panduan Lengkap Menggunakan SmartMarker +url: /id/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Membuat Laporan Excel di C# – Panduan Lengkap Menggunakan SmartMarker + +Pernah bertanya‑tanya **bagaimana cara membuat laporan Excel** di C# tanpa menulis kode sel‑per‑sel yang tak berujung? Anda bukan satu‑satunya. Kebanyakan pengembang menemui kebuntuan ketika mereka membutuhkan laporan multi‑sheet yang rapi dan mencerminkan hubungan master‑detail—misalnya pesanan dan item baris—tetapi mereka tidak ingin menciptakan kembali roda setiap kali. + +Berita baiknya? Dengan templat Excel siap pakai dan mesin **SmartMarker** dari Aspose.Cells, Anda dapat **populate Excel template C#** hanya dengan beberapa baris kode. Dalam tutorial ini kami akan membahas skenario dunia nyata, menjelaskan mengapa setiap langkah penting, dan memberikan contoh lengkap yang dapat dijalankan yang dapat Anda salin‑tempel hari ini. + +> **Apa yang akan Anda dapatkan:** laporan Excel master‑detail di mana setiap pesanan menghasilkan lembar kerja tersendiri, semuanya didorong oleh objek C# biasa. Tanpa perulangan manual pada sel, tanpa formula rapuh—hanya kode yang bersih dan mudah dipelihara. + +--- + +## Prerequisites + +Sebelum kita mulai, pastikan Anda memiliki: + +- **.NET 6.0** (atau lebih baru) terpasang – kode ini menargetkan .NET 6 tetapi juga berfungsi pada .NET Framework 4.7+. +- Paket NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`) – paket ini menyediakan kelas `Workbook`, `SmartMarkerProcessor`, dan kelas terkait lainnya. +- File Excel bernama **MasterDetailTemplate.xlsx** yang ditempatkan di `YOUR_DIRECTORY`. File tersebut harus berisi blok SmartMarker seperti `{{Orders.OrderId}}` pada lembar pertama dan blok bersarang `{{Orders.Items.Prod}}` untuk item‑item detail. +- Pemahaman dasar tentang tipe anonim C# – kami akan menggunakannya untuk memodelkan pesanan dan item. + +Jika ada hal di atas yang belum Anda kenal, jangan khawatir. Kami akan menyebutkan alternatif (misalnya menggunakan EPPlus) nanti, tetapi konsep dasarnya tetap sama. + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +Hal pertama yang kami lakukan adalah membuka file templat. Anggap templat sebagai kerangka; SmartMarker nanti akan mengisinya dengan data nyata. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Mengapa ini penting:** Dengan memisahkan tata letak (templat) dari data (objek C#), Anda membuat desainer dan pengembang sama‑sama senang. Desainer dapat mengubah font, warna, atau formula tanpa menyentuh kode. + +--- + +## Step 2: Build the Master‑Detail Data Source + +Selanjutnya, kami membuat data yang akan mengisi templat. Untuk laporan pesanan tipikal, Anda memiliki koleksi pesanan, masing‑masing dengan koleksi itemnya. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Gunakan kelas yang bertipe kuat alih‑alih tipe anonim jika Anda perlu menggunakan kembali data pada beberapa laporan. Pendekatan anonim membuat contoh menjadi singkat. + +**Mengapa ini penting:** SmartMarker bekerja dengan mencocokkan nama properti (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) dengan placeholder di templat. Hierarki harus persis cocok, jika tidak mesin akan melewatkan bagian‑bagian tersebut. + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +Secara default SmartMarker menulis semua baris ke satu lembar. Kami menginginkan setiap pesanan berada di lembar kerja terpisah, yang sangat cocok untuk pencetakan atau pengiriman PDF per‑pesanan nanti. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Mengapa ini penting:** `EnableRepeatingSheet` menghilangkan kebutuhan untuk menyalin lembar secara manual. Mesin menyalin lembar asli, menyuntikkan data pesanan, dan secara otomatis memberi nama lembar (biasanya menggunakan nilai kolom pertama). + +--- + +## Step 4: Process the Template with Your Data + +Sekarang kami mengikat semuanya. `SmartMarkerProcessor` berjalan melalui workbook, mengganti tag, dan membuat lembar baru sesuai instruksi. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Mengapa ini penting:** Baris tunggal ini melakukan pekerjaan berat—mem-parsing templat, mengiterasi koleksi, dan menangani tabel bersarang. Inilah inti dari **populate Excel template C#** tanpa perulangan manual. + +--- + +## Step 5: Save the Finished Report + +Terakhir, tulis workbook yang sudah terisi ke disk. Anda juga dapat mengalirkannya langsung ke respons HTTP untuk aplikasi web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Mengapa ini penting:** Menyimpan ke file memberi Anda artefak nyata yang dapat dibuka di Excel, dibagikan dengan pemangku kepentingan, atau diproses lebih lanjut seperti konversi ke PDF. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Berikut adalah program lengkap, termasuk direktif `using` dan metode `Main`. Letakkan di aplikasi console, sesuaikan jalur file, dan jalankan. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +Saat Anda membuka `MasterDetailResult.xlsx` Anda akan melihat: + +- **Sheet “Order_1”** – berisi header Order 1 dan dua baris untuk produk A dan B. +- **Sheet “Order_2”** – berisi header Order 2 dan satu baris untuk produk C. +- Semua formula, format, dan diagram dari templat asli tetap dipertahankan. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +Set `EnableRepeatingSheet = true` **only** on the worksheet that contains the master block. Other sheets will stay untouched, so you can keep a summary page in the original template. + +### Can I use a DataTable instead of anonymous objects? + +Absolutely. SmartMarker works with any object that implements `IEnumerable`. Just replace the anonymous type with a `DataTable` and ensure column names match the tags. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +Implement a custom `ISmartMarkerSheetNaming` interface (or manipulate `workbook.Worksheets` after processing). Most developers simply rename sheets based on a cell value: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker allows custom delimiters via `SmartMarkerOptions`. For example, to use `<< >>` instead of `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache the template** di memori jika Anda menghasilkan banyak laporan per permintaan; memuat dari disk setiap kali menambah latensi. +- **Combine with PDF conversion** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) untuk output yang mudah dikirim lewat email. +- **Parameterize the file paths** menggunakan file konfigurasi atau variabel lingkungan agar solusi dapat dipindahkan antar lingkungan dev, test, dan prod. +- **Unit‑test lapisan data** secara terpisah; SmartMarker sendiri deterministik, jadi Anda hanya perlu memverifikasi bahwa data yang diberikan sesuai dengan skema yang diharapkan. + +--- + +## Conclusion + +Kami telah membahas **cara membuat laporan Excel** di C# secara menyeluruh, mulai dari memuat templat yang mendukung SmartMarker hingga menyimpan workbook multi‑sheet yang mencerminkan hubungan master‑detail. Dengan **populate Excel template C#** hanya beberapa baris kode, Anda menghindari logika sel‑per‑sel yang rapuh dan memberi kebebasan pada desainer untuk mengatur tampilan akhir. + +Selanjutnya, Anda dapat menjelajahi: + +- Menggunakan **populate Excel template C#** dengan diagram yang otomatis memperbarui per lembar. +- Mengintegrasikan **excel smartmarker c#** dengan ASP.NET Core untuk mengalirkan laporan langsung ke browser. +- Mengotomatisasi pipeline **c# excel automation** yang menarik data dari API atau basis data. + +Cobalah, sesuaikan templatnya, dan saksikan betapa cepatnya Anda dapat mengubah data mentah menjadi laporan Excel yang profesional. Ada pertanyaan atau contoh penggunaan menarik? Tinggalkan komentar di bawah—selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/indonesian/net/tables-and-lists/_index.md b/cells/indonesian/net/tables-and-lists/_index.md index b65ebf5d38..b7ccdd0111 100644 --- a/cells/indonesian/net/tables-and-lists/_index.md +++ b/cells/indonesian/net/tables-and-lists/_index.md @@ -51,6 +51,7 @@ Az Aspose.Cells for .NET segítségével lépésről lépésre haladva tábláza Engedd szabadjára az Aspose.Cells for .NET erejét. Tanuld meg, hogyan kell táblázatokat olvasni és írni lekérdezési adatforrásokkal ebben a részletes, lépésről lépésre haladó útmutatóban. ### [Táblázat vagy lista megjegyzésének beállítása Excelben](./setting-comment-of-table-or-list/) Tanuld meg, hogyan állíthatsz be megjegyzéseket táblázatokhoz Excelben az Aspose.Cells for .NET használatával egyszerű, lépésről lépésre bemutató útmutatónkkal. +### [Membuat Tabel Excel di C# – Panduan Langkah demi Langkah](./create-excel-table-in-c-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/indonesian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/indonesian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..23b0e1daf6 --- /dev/null +++ b/cells/indonesian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Buat tabel Excel di C# dengan cepat. Pelajari cara menambahkan tabel, + menentukan rentang tabel, menyembunyikan header tabel, dan menonaktifkan filter + tabel dengan contoh kode lengkap. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: id +og_description: Buat tabel Excel di C# dengan contoh yang jelas. Pelajari cara menambahkan + tabel, menentukan rentang tabel, menyembunyikan header tabel, dan menonaktifkan + filter hanya dalam beberapa baris. +og_title: Membuat Tabel Excel di C# – Panduan Pemrograman Lengkap +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Buat Tabel Excel di C# – Panduan Langkah demi Langkah +url: /id/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Tabel Excel di C# – Panduan Langkah‑per‑Langkah + +Pernah membutuhkan untuk **create Excel table** secara programatis menggunakan C#? Membuat tabel Excel bisa menjadi mudah ketika Anda mengetahui langkah‑langkah yang tepat. Dalam tutorial ini kami akan membahas contoh lengkap yang dapat dijalankan yang menunjukkan **how to add table**, **define table range**, **hide table header**, dan bahkan **disable table filter** – semuanya tanpa meninggalkan IDE Anda. + +Jika Anda pernah kesulitan dengan UI AutoFilter yang muncul ketika Anda tidak menginginkannya, Anda berada di tempat yang tepat. Pada akhir panduan ini Anda akan memiliki potongan kode siap‑jalankan yang menghasilkan workbook bersih bernama *TableNoFilter.xlsx* dan Anda akan memahami mengapa setiap baris penting. + +## Apa yang Akan Anda Pelajari + +- Cara **create Excel table** dari awal dengan Aspose.Cells. +- Sintaks tepat untuk **define table range** (A1:D5 dalam kasus kami). +- Cara mengaktifkan baris header sehingga UI filter bawaan muncul. +- Trik untuk **hide table header** dan **disable table filter** ketika Anda tidak lagi membutuhkannya. +- Program C# lengkap, siap salin‑tempel yang dapat Anda jalankan hari ini. + +### Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga bekerja dengan .NET Framework 4.7+). +- Aspose.Cells untuk .NET diinstal via NuGet (`Install-Package Aspose.Cells`). +- Familiaritas dasar dengan C# dan Visual Studio (atau IDE apa pun yang Anda sukai). + +--- + +## Langkah 1: Siapkan Proyek dan Impor Namespace + +Sebelum Anda dapat **create Excel table**, Anda memerlukan proyek console yang mereferensikan Aspose.Cells. Buka terminal dan jalankan: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Sekarang buka *Program.cs* dan tambahkan pernyataan `using` yang diperlukan: + +```csharp +using System; +using Aspose.Cells; +``` + +Impor ini memberi Anda akses ke kelas `Workbook`, `Worksheet`, `CellArea`, dan `ListObject` yang menggerakkan sisa tutorial. + +## Langkah 2: Inisialisasi Workbook Baru dan Ambil Worksheet Pertama + +Membuat workbook baru adalah langkah logis pertama. Anggap workbook sebagai wadah file Excel, dan worksheet sebagai lembar individual tempat kita akan menempatkan tabel. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Mengapa ini penting:** Sebuah `Workbook` yang baru dibuat dimulai dengan satu lembar kosong. Dengan mengambil `Worksheets[0]` kita memastikan bekerja pada lembar default tanpa harus membuatnya secara manual. + +## Langkah 3: Tentukan Jangkauan Tabel (A1:D5) + +Dalam istilah Excel, sebuah *tabel* berada di dalam blok sel persegi panjang. Struktur `CellArea` memungkinkan kita menentukan blok tersebut. Di sini kami akan membahas **define table range** untuk sel A1 hingga D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** Jika Anda pernah membutuhkan jangkauan dinamis, Anda dapat menghitung `endRow` dan `endColumn` berdasarkan panjang data. Indeks berbasis nol adalah sumber umum bug off‑by‑one, jadi periksa kembali angka Anda. + +## Langkah 4: Tambahkan Tabel dan Aktifkan Baris Header + +Sekarang masuk ke inti tutorial: **how to add table** ke worksheet. Koleksi `ListObjects` menangani tabel, dan pengaturan `ShowHeaders = true` secara otomatis menyisipkan UI AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Penjelasan:** +> - `Add(tableRange, true)` membuat `ListObject` baru (yaitu tabel Excel) di dalam jangkauan yang ditentukan. +> - Flag `true` memberi tahu Aspose.Cells bahwa baris pertama dari jangkauan harus diperlakukan sebagai header. +> - Menetapkan `ShowHeaders` ke `true` membuat header terlihat dan memicu UI filter bawaan. + +Pada titik ini, jika Anda membuka workbook yang dihasilkan, Anda akan melihat tabel yang diformat dengan baik dengan panah filter pada setiap header kolom. + +## Langkah 5: Sembunyikan Baris Header dan Nonaktifkan AutoFilter + +Kadang‑kadang Anda menginginkan data tanpa kekacauan UI. Mungkin Anda mengekspor laporan bersih di mana filter tidak diperlukan. Berikut teknik **hide table header** dan **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Mengapa Anda melakukan ini:** +> - `ShowHeaders = false` menghapus baris header visual, mengubah tabel menjadi blok data biasa. +> - Menetapkan `AutoFilter = null` menghapus objek filter tersembunyi, memastikan tidak ada logika filter yang tersisa. Inilah yang kami maksud dengan **disable table filter**. + +## Langkah 6: Simpan Workbook ke Disk + +Akhirnya, kami menulis file ke lokasi pilihan Anda. Ganti `"YOUR_DIRECTORY"` dengan jalur sebenarnya di mesin Anda. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Saat Anda menjalankan program, Anda seharusnya melihat: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Membuka file memperlihatkan lembar dengan blok data (tanpa header, tanpa panah filter). Itulah siklus lengkap—dari **create Excel table** hingga **disable table filter**. + +--- + +## Contoh Lengkap yang Berfungsi (Siap Salin‑Tempel) + +Di bawah ini adalah seluruh program, siap untuk dikompilasi. Cukup ganti direktori placeholder dengan jalur yang valid. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Hasil yang diharapkan:** Sebuah file bernama *TableNoFilter.xlsx* yang berisi rentang data polos A1:D5 tanpa baris header yang terlihat dan tanpa dropdown filter. + +--- + +## Pertanyaan yang Sering Diajukan & Kasus Tepi + +### Bagaimana jika saya membutuhkan beberapa tabel dalam worksheet yang sama? + +Cukup ulangi **Step 3** dengan `CellArea` baru dan `ListObject` yang segar. Setiap tabel mempertahankan header dan pengaturan filternya masing‑masing, sehingga Anda dapat menyembunyikan satu dan tetap menampilkan yang lain. + +### Bisakah saya menata tabel (baris bergaris, warna) sebelum menyembunyikan header? + +Tentu saja. `ListObject` mengekspos properti `TableStyleType`. Misalnya: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Anda dapat menerapkan gaya **before** Anda menyembunyikan header; format visual akan tetap utuh. + +### Bagaimana jika saya perlu mempertahankan header tetapi hanya menyembunyikan panah filter? + +Setel `ShowHeaders = true` (pertahankan baris) dan kemudian bersihkan filter: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Itu memenuhi persyaratan **disable table filter** tanpa kehilangan label kolom. + +### Apakah ini hanya bekerja dengan file .xlsx? + +Aspose.Cells secara otomatis mendeteksi format berdasarkan ekstensi file yang Anda berikan ke `Save`. Anda juga dapat mengekspor ke `.xls`, `.csv`, atau bahkan `.pdf` dengan ekstensi yang berbeda. + +--- + +## Kesimpulan + +Kami baru saja membahas semua yang Anda perlukan untuk **create Excel table** di C# menggunakan Aspose.Cells, dari **define table range** hingga **hide table header** dan **disable table filter**. Kodenya singkat, jelas, dan siap untuk penggunaan produksi. + +Selanjutnya, Anda mungkin ingin mengeksplorasi **how to add table** dengan data dinamis, menerapkan gaya khusus, atau mengekspor workbook yang sama ke PDF. Setiap topik tersebut dibangun di atas fondasi yang baru saja Anda kuasai, jadi silakan bereksperimen dan sesuaikan potongan kode ini dengan proyek Anda sendiri. + +Ada variasi yang ingin Anda bagikan? Tinggalkan komentar di bawah, dan selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/converting-excel-files-to-other-formats/_index.md b/cells/italian/net/converting-excel-files-to-other-formats/_index.md index 40c0bcbd1e..4951cf6b65 100644 --- a/cells/italian/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/italian/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Scopri come convertire file Excel in PDF/A-1a per scopi di archiviazione utilizz Scopri come convertire JSON in CSV programmaticamente in .NET utilizzando Aspose.Cells. Segui la nostra guida passo passo per garantire una trasformazione dei dati impeccabile. ### [Conversione di file Excel in PPTX tramite programmazione in .NET](./converting-excel-file-to-pptx/) Scopri come convertire un file Excel in una presentazione PowerPoint (PPTX) a livello di programmazione utilizzando Aspose.Cells per .NET con questa guida dettagliata. +### [Esporta Excel in PowerPoint – Guida completa C#](./export-excel-to-powerpoint-complete-c-guide/) +Scopri come esportare un foglio Excel in una presentazione PowerPoint usando Aspose.Cells per .NET con esempi di codice C# passo‑passo. ### [Specificare HTML CrossType nell'output HTML a livello di programmazione in .NET](./specifying-html-crosstype-in-output-html/) Scopri come specificare HTML CrossType in Aspose.Cells per .NET. Segui il nostro tutorial passo passo per convertire i file Excel in HTML con precisione. ### [Lettura di fogli di calcolo numerici in modo programmatico in .NET](./reading-numbers-spreadsheet/) @@ -66,6 +68,8 @@ In questo tutorial dettagliato scoprirai come salvare una cartella di lavoro nel descrizione: Scopri come monitorare a livello di programmazione l'avanzamento della conversione dei documenti utilizzando Aspose.Cells per .NET in questo tutorial dettagliato. ### [Monitoraggio dell'avanzamento della conversione dei documenti per TIFF a livello di programmazione in .NET](./tracking-document-conversion-progress-for-tiff/) Impara a monitorare l'avanzamento della conversione TIFF a livello di codice utilizzando Aspose.Cells per .NET con la nostra guida passo passo. Migliora le tue competenze di gestione dei documenti. +### [Imposta area di stampa in Excel ed esporta in PowerPoint – Guida passo‑passo](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Scopri come impostare l'area di stampa in un foglio Excel e esportarla in una presentazione PowerPoint con Aspose.Cells per .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/italian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..25c7546d0d --- /dev/null +++ b/cells/italian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-22 +description: Scopri come esportare Excel in PowerPoint, impostare l'area di stampa + in Excel e salvare Excel come PPTX con grafici modificabili e oggetti OLE in pochi + passaggi. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: it +og_description: Esporta Excel in PowerPoint rapidamente. Questo tutorial mostra come + impostare l'area di stampa di Excel e salvare Excel come PPTX con grafici modificabili + e oggetti OLE. +og_title: Esporta Excel in PowerPoint – Guida completa C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Esporta Excel in PowerPoint – Guida completa C# +url: /it/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Esporta Excel in PowerPoint – Guida Completa C# + +Hai bisogno di **esportare Excel in PowerPoint**? Sei nel posto giusto. Che tu stia creando una presentazione settimanale delle vendite o automatizzando una pipeline di report, trasformare un foglio di lavoro Excel in una presentazione PowerPoint può farti risparmiare ore di lavoro di copia‑incolla. + +In questo tutorial seguirai un esempio pratico che non solo **esporta excel in powerpoint**, ma mostra anche come **impostare l'area di stampa in Excel** e **salvare excel come pptx** così le diapositive risultanti mantengono i grafici e gli oggetti OLE completamente modificabili. Alla fine avrai un programma C# pronto all'uso che produce un file `.pptx` dall'aspetto professionale senza alcuna manipolazione manuale. + +## Di cosa avrai bisogno + +- **.NET 6+** (qualsiasi runtime .NET recente funziona; il codice utilizza la sintassi C# 10) +- **Aspose.Cells for .NET** – la libreria che gestisce l'esportazione. Puoi ottenerla da NuGet (`Install-Package Aspose.Cells`). +- Una cartella di lavoro Excel che contiene almeno un grafico e/o un oggetto OLE (il file di esempio `ChartAndOle.xlsx` è usato nel codice). +- Un IDE preferito (Visual Studio, Rider o VS Code – quello che preferisci). + +È tutto. Nessun interop COM, nessuna installazione di Office necessaria. + +> **Perché usare una libreria?** +> L'Interop Office integrato è fragile, richiede Office sul server e spesso produce immagini rasterizzate quando si desiderano forme vettoriali e modificabili. Aspose.Cells gestisce il lavoro pesante e mantiene tutto modificabile in PowerPoint. + +## Passo 1: Carica la cartella di lavoro Excel + +Per prima cosa carichiamo il file sorgente in memoria. La classe `Workbook` astrae l'intero file Excel, fornendoci l'accesso a fogli di lavoro, grafici e oggetti OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Perché è importante:** Caricare la cartella di lavoro è la base. Se il percorso è errato o il file è corrotto, il resto della pipeline non verrà mai eseguito. Il blocco `try…catch` fornisce un errore amichevole invece di un arresto anomalo. + +## Passo 2: Imposta l'area di stampa in Excel + +Prima di esportare, di solito vuoi limitare l'output a un intervallo specifico. È qui che entra in gioco **set print area excel**. Definendo un'area di stampa, indichi ad Aspose.Cells esattamente quali celle (e gli oggetti associati) devono apparire nella diapositiva. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Consiglio professionale:** Se hai più fogli di lavoro, ripeti l'assegnazione `PrintArea` per ciascuno che intendi esportare. Lasciare l'area di stampa non impostata esporterà l'intero foglio, il che può gonfiare il file PowerPoint. + +## Passo 3: Configura le opzioni di esportazione – Mantieni grafici e OLE modificabili + +Aspose.Cells offre un ricco oggetto `ImageOrPrintOptions`. Attivando `ExportChartObjects` e `ExportOleObjects` preserviamo la natura vettoriale dei grafici e la modificabilità in tempo reale degli oggetti OLE (come documenti Word o PDF incorporati). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Cosa succede dietro le quinte?** +Quando `ExportChartObjects` è `true`, Aspose converte il grafico in una forma grafico nativa di PowerPoint, preservando serie, assi e formattazione. Con `ExportOleObjects` abilitato, gli oggetti incorporati vengono inseriti come frame OLE, così un doppio clic in PowerPoint apre l'applicazione originale (Word, Excel, ecc.) per la modifica. + +## Passo 4: Salva il foglio di lavoro come file PowerPoint modificabile + +Ora uniamo tutto. Il metodo `Save` scrive il file `.pptx` usando le opzioni configurate. Il risultato è una presentazione in cui ogni foglio di lavoro diventa una diapositiva (o una serie di diapositive se l'area di stampa copre più pagine). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Risultato atteso + +- **Posizione del file:** `C:\MyProjects\EditableChartOle.pptx` +- **Contenuto:** + - Una diapositiva che mostra l'intervallo `A1:H30` esattamente come appare in Excel. + - Tutti i grafici sono oggetti grafico PowerPoint—clicca su una barra e modifica i dati. + - Gli oggetti OLE (ad esempio, un documento Word incorporato) possono essere aperti e modificati direttamente dalla diapositiva. + +Se apri il PPTX in PowerPoint, dovresti vedere una diapositiva pulita con componenti completamente modificabili—nessuno screenshot rasterizzato. + +## Casi limite e variazioni + +### Più fogli di lavoro → Più diapositive +Se vuoi che ogni foglio di lavoro diventi una propria diapositiva, basta iterare su `workbook.Worksheets` e chiamare `Save` con un `SheetToImageOptions` che punta a un indice di foglio specifico. Aspose genererà automaticamente una nuova diapositiva per ogni iterazione. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Intervalli grandi e prestazioni +Esportare un'area di stampa enorme (ad es., `A1:Z1000`) può aumentare l'uso della memoria. Per mitigare, considera: +- Suddividere l'intervallo in blocchi più piccoli ed esportarli come diapositive separate. +- Usare `WorkbookSettings` per aumentare il `MemorySetting` se incontri `OutOfMemoryException`. + +### Problemi di compatibilità +Il PPTX generato funziona con PowerPoint 2016 e versioni successive. Le versioni più vecchie possono comunque aprire il file ma potrebbero perdere alcune funzionalità avanzate dei grafici. Testa sempre sulla versione di Office di destinazione se distribuisci la presentazione su larga scala. + +## Esempio completo funzionante (pronto per copia‑incolla) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Suggerimento:** Sostituisci i percorsi codificati con valori di configurazione o argomenti da riga di comando per uno strumento più flessibile. + +## Domande frequenti + +**D: Posso esportare solo un grafico senza le celle circostanti?** +R: Sì. Usa solo `ExportChartObjects` e imposta l'area di stampa sull'intervallo che delimita il grafico. Il grafico apparirà centrato nella diapositiva. + +**D: E se il mio workbook contiene macro?** +R: Aspose.Cells ignora le macro VBA durante l'esportazione. Se ti serve la funzionalità macro in PowerPoint, dovrai ricrearla usando VBA di PowerPoint o componenti aggiuntivi. + +**D: Funziona su Linux/macOS?** +R: Assolutamente. Aspose.Cells è una libreria .NET pura; finché hai il runtime .NET, il codice funziona su più piattaforme. + +## Conclusione + +Hai appena imparato come **esportare Excel in PowerPoint** impostando con precisione **set print area excel** e **save excel as pptx** con grafici e oggetti OLE completamente modificabili. I passaggi chiave sono caricare la cartella di lavoro, definire l'area di stampa, configurare `ImageOrPrintOptions` e infine salvare il PPTX. + +Da qui puoi esplorare: +- Esportare più fogli di lavoro in un'unica presentazione. +- Aggiungere titoli di diapositiva o note personalizzate programmaticamente. +- Convertire il PPTX in PDF per la distribuzione (usa `SaveFormat.Pdf`). + +Prova il codice, modifica l'area di stampa e guarda i tuoi dati Excel apparire magicamente in PowerPoint—senza necessità di copia‑incolla manuale. Se incontri problemi, consulta la documentazione di Aspose.Cells o lascia un commento qui sotto. Buona programmazione! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/italian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..cbb6a0a094 --- /dev/null +++ b/cells/italian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Imposta l'area di stampa in Excel e converti Excel in PowerPoint con + forme modificabili. Scopri come ripetere la riga del titolo, creare PowerPoint da + Excel ed esportare Excel in pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: it +og_description: Imposta l'area di stampa in Excel e convertila in una diapositiva + PowerPoint con forme modificabili. Segui questa guida completa per ripetere la riga + del titolo ed esportare Excel in pptx. +og_title: Imposta l'area di stampa in Excel – Tutorial per l'esportazione in PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Imposta l'area di stampa in Excel ed esporta in PowerPoint – Guida passo passo +url: /it/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Imposta l'area di stampa in Excel ed esporta in PowerPoint – Tutorial di programmazione completo + +Ti è mai capitato di dover **impostare l'area di stampa** in un foglio Excel e poi trasformare quella porzione in una diapositiva PowerPoint? Non sei l'unico. In molti flussi di reporting gli stessi dati che stampano bene devono apparire anche in una presentazione, spesso con la prima riga ripetuta come titolo. La buona notizia? Con poche righe di C# puoi **convertire excel in powerpoint**, mantenere tutte le caselle di testo modificabili e persino **ripetere la riga del titolo** automaticamente. + +In questa guida vedremo passo passo tutto ciò che devi sapere: dalla configurazione dell'area di stampa alla creazione di un file PPTX modificabile direttamente in PowerPoint. Alla fine sarai in grado di **creare powerpoint da excel**, esportare il risultato come **export excel to pptx**, e riutilizzare lo stesso codice in qualsiasi progetto .NET. Nessuna magia, solo passaggi chiari e un esempio completo e funzionante. + +## Cosa ti serve + +Prima di iniziare, assicurati di avere: + +- **.NET 6.0** o versioni successive (l'API funziona anche con .NET Framework) +- **Aspose.Cells for .NET** (la libreria che fornisce `Workbook`, `ImageOrPrintOptions`, ecc.) +- Un IDE C# di base (Visual Studio, Rider o VS Code con l'estensione C#) +- Un file Excel (`input.xlsx`) che contiene i dati da esportare + +Tutto qui—nessun pacchetto NuGet aggiuntivo oltre a Aspose.Cells. Se non hai ancora aggiunto la libreria, esegui: + +```bash +dotnet add package Aspose.Cells +``` + +Ora siamo pronti a partire. + +## Passo 1: Carica il Workbook – il punto di partenza per l'esportazione + +La prima cosa da fare è caricare il workbook che contiene il foglio che vuoi trasformare in una diapositiva. Pensa al workbook come al documento sorgente; senza di esso nulla ha senso. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Perché è importante:** Caricare il workbook ti dà accesso alla collezione di worksheet, alle opzioni di impostazione pagina e al motore di esportazione. Se salti questo passaggio non potrai impostare l'**area di stampa** né ripetere alcuna riga. + +> **Consiglio:** Usa un percorso assoluto durante i test, poi passa a un percorso relativo o basato su configurazione per la produzione. + +## Passo 2: Configura le opzioni di esportazione – mantieni caselle di testo e forme modificabili + +Quando esporti in PowerPoint probabilmente vuoi che la diapositiva risultante sia modificabile. Aspose.Cells ti permette di controllare questo con `ImageOrPrintOptions`. Impostare `ExportTextBoxes` e `ExportShapeObjects` a `true` indica alla libreria di preservare quegli oggetti come elementi nativi di PowerPoint invece di appiattirli in un'immagine. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Perché è importante:** Se devi **convertire excel in powerpoint** e poi modificare manualmente la diapositiva, questa impostazione ti salva dal dover ricreare le caselle di testo da zero. Garantisce inoltre che eventuali forme (come frecce o grafici) rimangano oggetti vettoriali ridimensionabili. + +## Passo 3: Imposta l'area di stampa e ripeti la riga del titolo + +Ora arriviamo al cuore del tutorial: **impostare l'area di stampa** e fare in modo che la prima riga si ripeta su ogni pagina stampata (o, nel nostro caso, su ogni diapositiva esportata). L'area di stampa indica a Excel quali celle considerare per la stampa—o per l'esportazione nel nostro scenario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Perché è importante:** Limitando l'esportazione a `A1:G20` eviti di includere ampie aree vuote, velocizzando la conversione e mantenendo la diapositiva ordinata. La riga `PrintTitleRows` fa sì che la prima riga si comporti da intestazione—esattamente ciò che vuoi quando **ripeti la riga del titolo** in una presentazione. + +> **Caso limite:** Se i tuoi dati iniziano dalla riga 2, adatta l'intervallo di conseguenza (ad es., `PrintTitleRows = "$2:$2"`). + +## Passo 4: Salva il worksheet come file PowerPoint + +Infine, scriviamo la diapositiva su disco. Il metodo `Save` accetta il nome del file di destinazione e le opzioni configurate in precedenza. Il risultato è un file PPTX con caselle di testo e forme modificabili, pronto per essere aperto in PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Cosa vedrai:** Apri `SheetWithEditableShapes.pptx` in PowerPoint. La prima riga appare come titolo, tutte le celle da `A1:G20` sono renderizzate, e le forme aggiunte in Excel sono ancora spostabili e modificabili. Nessuna immagine rasterizzata—solo oggetti nativi di PowerPoint. + +## Esempio completo funzionante – tutti i passaggi combinati + +Di seguito trovi il programma completo, pronto per il copia‑incolla. Eseguilo come app console o integralo in qualsiasi soluzione più ampia. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Output previsto:** Dopo l'esecuzione, la console stampa il messaggio di successo e il file PPTX appare nella posizione specificata. Aprendo il file vedrai una singola diapositiva con l'intervallo selezionato, caselle di testo modificabili e le eventuali forme originali. + +## Domande frequenti & Trappole + +| Domanda | Risposta | +|----------|----------| +| **Funziona con più fogli di lavoro?** | Sì. Scorri `workbook.Worksheets` e ripeti gli stessi passaggi per ogni foglio, cambiando il nome del file di output ogni volta. | +| **E se devo esportare più di una diapositiva?** | Chiama `workbook.Save` più volte con diversi oggetti `ImageOrPrintOptions`, ciascuno configurato con un diverso `PageSetup` se necessario. | +| **Posso cambiare le dimensioni della diapositiva?** | Usa `exportOptions.ImageFormat` per impostare DPI, o regola `sheet.PageSetup.PaperSize` prima del salvataggio. | +| **Aspose.Cells è gratuito?** | Offre una valutazione gratuita con filigrane. Per la produzione è necessaria una licenza. | +| **E le formule di Excel?** | I valori esportati sono i **risultati calcolati** al momento dell'esportazione. Se ti servono formule live in PowerPoint, serve un approccio diverso. | + +## Consigli per un flusso di lavoro fluido + +- **Consiglio:** Imposta `Workbook.Settings.CalcMode = CalculationModeType.Automatic` prima dell'esportazione per garantire che tutte le formule siano aggiornate. +- **Attenzione a:** Intervalli molto grandi possono provocare pressione sulla memoria. Riduci l'area di stampa al minimo necessario. +- **Suggerimento di performance:** Riutilizza una singola istanza di `ImageOrPrintOptions` se esporti molti fogli; crearne una nuova ogni volta aggiunge overhead. +- **Nota di versione:** Il codice sopra è basato su Aspose.Cells 23.10 (rilasciato novembre 2023). Le versioni successive mantengono la stessa API, ma verifica sempre le note di rilascio per eventuali breaking changes. + +## Conclusione + +Abbiamo visto come **impostare l'area di stampa** in un foglio Excel, ripetere la prima riga come titolo e poi **esportare excel in pptx** mantenendo caselle di testo e forme modificabili. In sintesi, ora conosci un metodo affidabile per **convertire excel in powerpoint**, **ripetere la riga del titolo** e **creare powerpoint da excel** con poche righe di C#. + +Pronto per il passo successivo? Prova ad automatizzare una conversione batch di decine di report, o aggiungi layout diapositive personalizzati usando il PowerPoint SDK dopo l'esportazione. Il cielo è il limite—sperimenta, rompi le cose e goditi la potenza della generazione programmatica di documenti. + +Se questo tutorial ti è stato utile, condividilo, lascia un commento con le tue personalizzazioni, o esplora le nostre altre guide su **export excel to pptx** e argomenti di automazione correlati. Buon coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/csv-file-handling/_index.md b/cells/italian/net/csv-file-handling/_index.md index de2859ed37..0e59ac8162 100644 --- a/cells/italian/net/csv-file-handling/_index.md +++ b/cells/italian/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Per ulteriori approfondimenti, non esitate a consultare i nostri tutorial dettag Scopri come aprire file CSV utilizzando Aspose.Cells per .NET con la nostra guida completa e passo passo. Manipolazione dei dati master. ### [Apertura di file CSV con il parser preferito](./csv-file-opening-csv-files-with-preferred-parser/) Scopri come aprire e analizzare file CSV con parser personalizzati in Aspose.Cells per .NET. Gestisci testo e date senza problemi. Perfetto per gli sviluppatori. +### [Salva cartella di lavoro come CSV in C# – Esporta Excel in CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Impara a salvare una cartella di lavoro Excel come file CSV usando Aspose.Cells per .NET in C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/italian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..dcd8ba59b3 --- /dev/null +++ b/cells/italian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Salva il workbook come CSV in C# rapidamente. Scopri come esportare Excel + in CSV, impostare la precisione e convertire xlsx in CSV con Aspose.Cells in poche + righe. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: it +og_description: Salva la cartella di lavoro come CSV in C# rapidamente. Questa guida + mostra come esportare Excel in CSV, impostare la precisione e convertire xlsx in + CSV usando Aspose.Cells. +og_title: Salva cartella di lavoro come CSV in C# – Esporta Excel in CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Salva cartella di lavoro come CSV in C# – Esporta Excel in CSV +url: /it/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva una cartella di lavoro come CSV in C# – Esporta Excel in CSV + +Ti è mai capitato di dover **salvare una cartella di lavoro come CSV** ma non eri sicuro di come mantenere i numeri ordinati? Non sei il solo. In molti scenari di pipeline di dati dobbiamo **esportare Excel in CSV** mantenendo un numero specifico di cifre significative, e la libreria Aspose.Cells lo rende un gioco da ragazzi. + +In questo tutorial vedrai un esempio completo, pronto‑all’uso, che **salva una cartella di lavoro come CSV**, mostra *come impostare la precisione* e spiega anche *come convertire xlsx in CSV* per progetti reali. Nessun riferimento vago—solo codice che puoi copiare, incollare ed eseguire subito. + +## Cosa imparerai + +- I passaggi esatti per **salvare una cartella di lavoro come CSV** con un'impostazione di precisione personalizzata. +- Come **esportare Excel in CSV** usando `CsvSaveOptions` e perché la proprietà `SignificantDigits` è importante. +- Varianti per diverse esigenze di precisione e le insidie comuni quando si gestiscono numeri grandi. +- Una rapida occhiata a come convertire un file `.xlsx` in `.csv` senza perdere l'integrità dei dati. + +### Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche su .NET Framework 4.6+). +- Il pacchetto NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Una conoscenza di base di C# e della gestione dei file I/O. + +Se li hai, immergiamoci. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Salva una cartella di lavoro come CSV – Guida passo‑passo + +Di seguito trovi il programma completo. Ogni riga è commentata così puoi vedere *perché* ogni parte è presente, non solo *cosa* fa. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Perché usare `CsvSaveOptions.SignificantDigits`? + +Quando **imposti la precisione** per un'esportazione CSV, decidi davvero quante cifre di un numero in virgola mobile sopravvivono alla conversione. Excel memorizza i numeri con una precisione fino a 15 cifre, ma la maggior parte dei sistemi a valle (database, pipeline di analisi) ne richiede solo poche. Impostando `SignificantDigits = 4`, la libreria arrotonda `123.456789` a `123.5`, mantenendo il file compatto e leggibile. + +> **Consiglio professionale:** Se ti servono valori *esatti* (ad esempio per dati finanziari), imposta `SignificantDigits` a un numero più alto o omettilo del tutto. Il valore predefinito è 15, che rispecchia la precisione interna di Excel. + +## Esporta Excel in CSV – Varianti comuni + +### Cambiare il delimitatore + +Alcuni sistemi si aspettano un punto e virgola (`;`) invece di una virgola. Puoi regolarlo così: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Esportare un foglio di lavoro specifico + +Se vuoi esportare solo il secondo foglio, sostituisci il blocco opzionale con: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Quindi chiama `workbook.Save` come prima. Questa tecnica è utile quando **converti xlsx in csv** ma ti interessa solo una scheda specifica. + +### Gestire set di dati di grandi dimensioni + +Quando si gestiscono milioni di righe, considera lo streaming del CSV invece di caricare l'intera cartella di lavoro in memoria. Aspose.Cells offre una proprietà `CsvSaveOptions` chiamata `ExportDataOnly` che omette le informazioni di stile, riducendo il consumo di memoria: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Come esportare CSV – Verifica del risultato + +Dopo aver eseguito il programma, apri `Numbers_4sd.csv` in un editor di testo semplice. Dovresti vedere qualcosa di simile: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Nota come i numeri siano limitati a quattro cifre significative, esattamente come richiesto. Se apri il file in Excel, i valori appariranno identici perché Excel rispetta l'arrotondamento applicato durante l'esportazione. + +## Casi limite e risoluzione dei problemi + +| Situazione | Cosa controllare | Correzione | +|-----------|------------------|------------| +| **File non trovato** | Verifica che `sourcePath` punti a un file `.xlsx` reale. | Usa `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Arrotondamento errato** | Assicurati che `SignificantDigits` sia impostato prima di chiamare `Save`. | Sposta l'assegnazione di `CsvSaveOptions` più in alto o ricontrolla il valore. | +| **Caratteri speciali visualizzati come �** | La codifica CSV predefinita è UTF‑8 senza BOM. | Imposta `csvOptions.Encoding = System.Text.Encoding.UTF8` o `Encoding.Unicode`. | +| **Colonne vuote extra** | Alcuni fogli hanno formattazioni residue oltre l'intervallo usato. | Chiama `worksheet.Cells.MaxDisplayRange` per tagliare le colonne inutilizzate prima dell'esportazione. | + +## Come impostare la precisione in modo dinamico + +A volte la precisione richiesta non è nota al momento della compilazione. Puoi leggerla da un file di configurazione o da un argomento della riga di comando: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Ora puoi eseguire: + +``` +dotnet run -- 6 +``` + +e ottenere un CSV con sei cifre significative. Questa piccola modifica rende la soluzione flessibile per **come esportare csv** in ambienti diversi. + +## Riepilogo dell'esempio completo funzionante + +Mettendo tutto insieme, il programma completo (incluse le modifiche opzionali) appare così: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Esegui il programma, apri il CSV generato e vedrai la precisione richiesta, confermando che hai salvato con successo la **cartella di lavoro come CSV**. + +## Conclusione + +Ora disponi di una ricetta solida e pronta per la produzione per **salvare una cartella di lavoro come CSV** in C#. La guida ha coperto *come esportare Excel in CSV*, ha dimostrato *come impostare la precisione* tramite `CsvSaveOptions.SignificantDigits` e ha mostrato diverse varianti per scenari di **convertire xlsx in csv**. Con lo snippet di codice completo, puoi inserire questo in qualsiasi progetto .NET e iniziare a esportare dati immediatamente. + +**Qual è il prossimo passo?** + +- Sperimenta con diversi delimitatori (`;`, `\t`) per esportazioni TSV. +- Combina questo approccio con un file‑watcher per automatizzare la generazione di CSV ogni volta che un file Excel cambia. +- Esplora `CsvLoadOptions` di Aspose.Cells se mai dovessi leggere CSV all'interno di una cartella di lavoro. + +Sentiti libero di modificare la precisione, aggiungere intestazioni personalizzate o collegare l'esportatore + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/document-properties/_index.md b/cells/italian/net/document-properties/_index.md index 93f372cd31..3cfc84e994 100644 --- a/cells/italian/net/document-properties/_index.md +++ b/cells/italian/net/document-properties/_index.md @@ -35,6 +35,8 @@ Scopri come accedere alle proprietà dei documenti in Excel utilizzando Aspose.C Scopri come accedere alle proprietà dei documenti in Excel utilizzando Aspose.Cells per .NET con la nostra guida passo passo. Gestisci i tuoi fogli di calcolo in modo efficiente. ### [Aggiunta di proprietà del documento in .NET](./adding-document-properties/) Scopri come aggiungere proprietà del documento in Excel utilizzando Aspose.Cells per .NET con questa guida dettagliata passo dopo passo. +### [Crea cartella di lavoro Excel – Aggiungi proprietà personalizzate e salva come XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Scopri come creare una cartella di lavoro Excel, aggiungere proprietà personalizzate e salvarla nel formato XLSB con Aspose.Cells per .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/italian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..0116af1f47 --- /dev/null +++ b/cells/italian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: Crea una cartella di lavoro Excel, aggiungi proprietà personalizzate, + imposta il nome del foglio di lavoro e salva come file binario XLSB usando C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: it +og_description: Crea una cartella di lavoro Excel, aggiungi proprietà personalizzate, + imposta il nome del foglio di lavoro e salva come file binario XLSB usando C#. +og_title: Crea cartella di lavoro Excel – Aggiungi proprietà personalizzate e salva + come XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Crea cartella di lavoro Excel – Aggiungi proprietà personalizzate e salva come + XLSB +url: /it/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea Cartella di Lavoro Excel – Aggiungi Proprietà Personalizzate e Salva come XLSB + +Hai mai avuto bisogno di **create Excel workbook** programmaticamente ma anche di mantenere alcuni metadati allegati? Forse stai costruendo un motore di reporting che etichetta ogni file con un ID report, nome dell'autore o numero di versione. In tal caso, imparare come **add custom properties** mentre **set worksheet name** e infine **save as XLSB** ti farà risparmiare molto lavoro manuale di post‑processing. + +In questo tutorial vedremo un esempio completo e eseguibile che mostra esattamente come **write binary Excel file** usando C#. Vedrai perché il formato XLSB è la scelta giusta per trasportare proprietà personalizzate, come evitare le insidie più comuni e cosa fare se devi supportare versioni più vecchie di Excel. + +--- + +## Cosa ti serve + +- **.NET 6+** (o .NET Framework 4.6+). Il codice funziona su qualsiasi runtime recente. +- **Aspose.Cells for .NET** (versione di prova gratuita o licenziata). Fornisce le classi `Workbook`, `Worksheet` e `CustomProperties` usate di seguito. +- Un IDE con cui ti trovi a tuo agio – Visual Studio, Rider o anche VS Code vanno bene. +- Accesso in scrittura a una cartella dove il file generato verrà salvato. + +Nessun'altra libreria di terze parti è necessaria. + +--- + +## Passo 1: Installa Aspose.Cells + +Per iniziare, aggiungi il pacchetto NuGet Aspose.Cells al tuo progetto: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** Se sei su un server CI, memorizza la chiave di licenza in una variabile d'ambiente e caricala a runtime – questo impedisce che il watermark “evaluation” si infiltri nell'output. + +--- + +## Passo 2: Crea Cartella di Lavoro Excel – Panoramica + +La prima azione reale è **create Excel workbook**. Questo oggetto rappresenta l'intero file in memoria e ti dà accesso a fogli, stili e proprietà personalizzate. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Perché istanziare un nuovo `Workbook` invece di caricare un modello? Un workbook vuoto garantisce l'assenza di stili nascosti o proprietà personalizzate residue, cosa particolarmente importante quando intendi **write binary excel file** per sistemi downstream che si aspettano una base pulita. + +--- + +## Passo 3: Imposta Nome Foglio di Lavoro (e Perché È Importante) + +I fogli di Excel hanno per impostazione predefinita “Sheet1”, “Sheet2”, ecc. Dare a un foglio un nome significativo rende il processamento downstream—come Power Query o macro VBA—molto più leggibile. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Se provi a assegnare un nome duplicato, Aspose.Cells lancerà un `ArgumentException`. Per sicurezza, puoi verificare `Worksheets.Exists("Data")` prima di rinominare. + +--- + +## Passo 4: Aggiungi Proprietà Personalizzate + +Le proprietà personalizzate sono memorizzate nell'XML interno del workbook e viaggiano con il file indipendentemente dal formato. Sono perfette per incorporare elementi come `ReportId` o `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Why use custom properties?** +> • Sono accessibili tramite il pannello “File → Info → Properties” di Excel. +> • Il codice che consuma il workbook può leggerle senza scansionare il contenuto delle celle. +> • Sopravvivono alle conversioni di formato (XLSX ↔ XLSB) perché fanno parte dei metadati del file. + +Puoi anche memorizzare date, booleani o persino blob binari, ma mantieni il payload piccolo—Excel non è un database. + +--- + +## Passo 5: Salva come XLSB (Scrivi File Excel Binario) + +Il formato XLSB memorizza i dati in una struttura binaria, rendendo il file più piccolo e più veloce da aprire. Ancora più importante per questo tutorial, **custom properties are baked into the binary stream**, garantendo che viaggino con il file. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Risultato Atteso + +Dopo aver eseguito il programma, troverai `WithCustomProps.xlsb` sul desktop. Aprilo in Excel, vai su **File → Info → Properties**, e vedrai `ReportId` e `GeneratedBy` elencati sotto *Custom*. + +--- + +## Passo 6: Casi Limite e Domande Frequenti + +### Cosa succede se la cartella di destinazione è di sola lettura? + +Avvolgi la chiamata `Save` in un blocco `try/catch` e ricorri a una posizione scrivibile dall'utente, come `%TEMP%`. Questo impedisce all'applicazione di crashare per errori di permesso. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Posso **save as XLSX** e mantenere comunque le proprietà personalizzate? + +Sì—basta cambiare `SaveFormat.Xlsb` in `SaveFormat.Xlsx`. Le proprietà sono memorizzate nella stessa parte XML, quindi sopravvivono al cambio di formato. Tuttavia, i file XLSX sono più grandi perché sono XML compressi, mentre XLSB offre migliori prestazioni per set di dati voluminosi. + +### Come leggo le proprietà personalizzate in seguito? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Questo snippet stampa ogni proprietà personalizzata, rendendo banale per i servizi downstream verificare la provenienza del file. + +--- + +## Esempio Completo Funzionante + +Di seguito trovi il programma completo che puoi copiare‑incollare in un nuovo progetto console. Nessuna parte è mancante—tutto, dalle istruzioni `using` al `Console.WriteLine` finale, è incluso. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Esegui il programma, apri il file risultante e verifica le proprietà personalizzate. Questo è l'intero processo di **create excel workbook**, **add custom properties**, **set worksheet name** e **save as xlsb** in un unico flusso ordinato. + +--- + +## Conclusione + +Ora sai esattamente come **create Excel workbook**, assegnare al suo foglio un chiaro **set worksheet name**, incorporare metadati utili con **add custom properties**, e infine **save as XLSB** per produrre un file Excel compatto e binario. Questo flusso di lavoro è affidabile, funziona su tutte le versioni .NET e scala bene sia che tu stia generando un report sia mille. + +Qual è il prossimo passo? Prova ad aggiungere una tabella di dati al foglio “Data”, sperimenta con diversi tipi di proprietà (date, booleani) o passa all'output **save as xlsb** per set di dati massivi. Potresti anche esplorare la protezione del workbook con una password—Aspose.Cells lo rende un'operazione a una riga. + +Sentiti libero di lasciare un commento se incontri difficoltà, o condividi come hai esteso questo modello nei tuoi progetti. Buon coding! + +--- + +![Create Excel workbook screenshot](image.png){alt="Crea cartella di lavoro Excel con proprietà personalizzate"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/excel-advanced-named-ranges/_index.md b/cells/italian/net/excel-advanced-named-ranges/_index.md index 69ef3ccee6..159e773f00 100644 --- a/cells/italian/net/excel-advanced-named-ranges/_index.md +++ b/cells/italian/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Il bello di questa funzionalità sta nella sua facilità d'uso. È possibile uni Identifica senza sforzo le celle in un intervallo denominato in Excel utilizzando Aspose.Cells per .NET con questa completa guida passo passo. ### [Unisci celle in un intervallo denominato in Excel](./merge-cells-in-named-range/) Scopri come unire le celle in un intervallo denominato utilizzando Aspose.Cells per .NET in questo tutorial passo passo. Scopri come formattare, applicare stili e automatizzare i report di Excel. +### [Crea cartella di lavoro Excel – Guida passo‑passo per aggiungere tabelle e regole di denominazione](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Impara a creare una cartella di lavoro Excel, aggiungere tabelle e definire regole di denominazione con Aspose.Cells per .NET passo dopo passo. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/italian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..6609498be0 --- /dev/null +++ b/cells/italian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Crea una cartella di lavoro Excel con una tabella, impara le regole di + denominazione delle tabelle Excel, evita l'errore di intervallo denominato e imposta + correttamente il nome della tabella Excel in C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: it +og_description: Crea una cartella di lavoro Excel in C# e padroneggia le regole di + denominazione delle tabelle Excel. Scopri come aggiungere un foglio di lavoro con + tabella, impostare il nome della tabella Excel e correggere gli errori di intervallo + denominato. +og_title: Crea cartella di lavoro Excel – Guida completa alle tabelle C# e alla denominazione +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Crea cartella di lavoro Excel – Guida passo passo per aggiungere tabelle e + regole di denominazione +url: /it/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea Cartella di Lavoro Excel – Guida Completa C# a Tabelle e Nominazione + +Ti è mai capitato di **create excel workbook** programmaticamente e di chiederti perché il nome della tua tabella collida improvvisamente con un intervallo denominato? Non sei solo. In molti progetti di automazione, nel momento in cui provi a dare alla tabella un identificatore amichevole, Excel genera un *named range error* che blocca l'intero processo. + +In questo tutorial vedremo un esempio completamente eseguibile che **creates an Excel workbook**, **adds a table to a worksheet**, e spiega le **excel table naming rules** che ti impediscono di inciampare su te stesso. Alla fine saprai esattamente come **add table worksheet**, **set excel table name**, e gestire elegantemente l'eventuale conflitto di nomi. + +> **Pro tip:** La maggior parte della confusione deriva dal fatto che Excel tratta i nomi delle tabelle e gli intervalli denominati a livello di cartella di lavoro come un unico namespace. Comprendere questa regola fin dall'inizio ti fa risparmiare ore di debug. + +## Di cosa avrai bisogno + +- **Aspose.Cells for .NET** (or any library that exposes `Workbook`, `Worksheet`, `ListObject` classes). +- .NET 6+ o .NET Framework 4.8 – il codice funziona su entrambi. +- Una conoscenza di base della sintassi C# – non servono trucchi avanzati. + +Se li hai, immergiamoci. + +![Screenshot of a newly created Excel workbook with a table named SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Passo 1: Crea Cartella di Lavoro Excel e Accedi al Primo Foglio di Lavoro + +La prima cosa da fare quando **create excel workbook** è istanziare la classe `Workbook` e ottenere un riferimento al foglio su cui lavorerai. In Aspose.Cells la cartella di lavoro inizia con un foglio predefinito chiamato “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Perché questo passo è cruciale? Senza un oggetto workbook non hai nulla a cui allegare una tabella, e il riferimento `Worksheet` ti fornisce una tela dove avverrà l'operazione **add table worksheet**. + +## Passo 2: Aggiungi Tabella (ListObject) Coprendo un Intervallo Specifico + +Ora **add table worksheet**‑level data. Il metodo `ListObjects.Add` si aspetta una stringa di intervallo e un booleano che indica se la prima riga contiene intestazioni. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Nota la chiamata a `salesTable.Name = "SalesData"`. È qui che le **excel table naming rules** entrano in gioco: il nome deve essere unico in tutto il workbook, non solo nel foglio. Inoltre non può contenere spazi o caratteri speciali, e deve iniziare con una lettera o un underscore. + +## Passo 3: Prova a Creare un Intervallo Denominato a Livello di Workbook con lo Stesso Identificatore + +Ora provochiamo deliberatamente il **named range error** per vedere cosa succede quando si verifica un conflitto di nomi. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Se decommenti la riga, Aspose.Cells lancia un `ArgumentException` che indica che il nome esiste già. Il messaggio di errore appare così: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Quel messaggio è il **named range error** di cui ti abbiamo avvertito prima. Ti indica che le **excel table naming rules** trattano i nomi delle tabelle e gli intervalli denominati come un unico namespace. + +## Passo 4: Gestire il Conflitto di Nomi in Modo Elegante + +Nel codice reale vorrai catturare quell'eccezione e o rinominare la tabella o scegliere un nome di intervallo diverso. Ecco un modo ordinato per farlo: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Avvolgendo la chiamata in un `try/catch`, eviti un crash violento e fornisci all'utente (o al codice chiamante) una spiegazione chiara—esattamente il tipo di intuizione delle **excel table naming rules** che previene bug futuri. + +## Passo 5: Salva la Cartella di Lavoro e Verifica il Risultato + +Infine, salva il file su disco e aprilo in Excel per confermare che la tabella e gli eventuali intervalli denominati siano presenti. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Quando apri *SalesReport.xlsx* vedrai: + +- Una tabella che copre **A1:C5** denominata **SalesData**. +- Se hai mantenuto l'intervallo alternativo, un intervallo denominato a livello di workbook **SalesData_Range** che punta a **D1**. + +Nessun crash a runtime, e il conflitto di nomi è risolto. + +## Comprendere a Fondo le Regole di Nominazione delle Tabelle Excel + +Analizziamo perché esistono queste regole: + +| Regola | Cosa Significa | Esempio | +|------|----------------|---------| +| **Unico in tutto il workbook** | Nessuna due tabelle o intervalli denominati possono condividere lo stesso identificatore. | `Table1` vs `Table1` → conflitto | +| **Inizia con una lettera o underscore** | I nomi non possono iniziare con un numero. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Nessuno spazio o caratteri speciali** | Usa CamelCase o underscore. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Lunghezza ≤ 255 caratteri** | Praticamente sempre soddisfatta. | N/A | + +Tenere a mente queste regole mentre **set excel table name** elimina il temuto *named range error*. + +## Varianti Comuni e Casi Limite + +1. **Adding multiple tables** – Ogni tabella deve avere un nome unico. +2. **Renaming an existing table** – Usa `salesTable.Name = "NewName"` prima di creare intervalli denominati in conflitto. +3. **Using dynamic ranges** – Se ti serve un intervallo che si espande, usa un riferimento strutturato come `=SalesData[Amount]` invece di un indirizzo statico. +4. **Cross‑sheet named ranges** – Sono comunque parte dello stesso namespace, quindi una tabella su Sheet1 blocca un intervallo con lo stesso nome su Sheet2. + +## Pro Tips per un'Automazione Excel Fluida + +- **Verifica l'esistenza prima di aggiungere**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: Aggiungi un GUID o un contatore incrementale (`SalesData_{Guid.NewGuid()}`) quando non sei sicuro. +- **Use `ListObject.ShowHeaders = true`** per rendere le tue tabelle auto‑documentanti. +- **Validate after saving**: Apri il file con una libreria leggera (ad es., EPPlus) per assicurarti che la tabella sia stata creata correttamente. + +## Riepilogo: Cosa Abbiamo Coperto + +- Come **create excel workbook** da zero usando Aspose.Cells. +- Le precise **excel table naming rules** che regolano gli identificatori di tabelle e intervalli denominati. +- Perché appare un **named range error** quando riutilizzi un nome. +- Il modo corretto per **add table worksheet** e **set excel table name** senza collisioni. +- Un modello solido per gestire i conflitti di nomi in modo elegante. + +## Cosa Viene Dopo? + +Ora che hai padroneggiato le basi, considera di esplorare: + +- **Dynamic table growth** usando `ListObject.Resize`. +- **Applying styles** alle tabelle (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** mantenendo le strutture delle tabelle. +- **Integrating with Office Open XML** per un controllo ancora più preciso sugli internals del workbook. + +Sentiti libero di sperimentare—cambia l'intervallo, aggiungi più tabelle o gioca con diversi schemi di denominazione. Più sperimenti, più profonda sarà la tua comprensione delle **excel table naming rules**. + +--- + +*Buona programmazione, e che le tue cartelle di lavoro non entrino mai più in conflitto!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/excel-custom-number-date-formatting/_index.md b/cells/italian/net/excel-custom-number-date-formatting/_index.md index c68e86c9ff..eb971300a1 100644 --- a/cells/italian/net/excel-custom-number-date-formatting/_index.md +++ b/cells/italian/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Questo tutorial ti fornirà le competenze necessarie per importare i tuoi set di Scopri come confrontare i valori delle celle di Excel con formati numerici personalizzati utilizzando Aspose.Cells per .NET con questo tutorial passo passo. ### [Specificare i campi formula durante l'importazione di dati in un foglio Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) In questo tutorial dettagliato scoprirai come importare dati in fogli Excel con campi formula specificati utilizzando Aspose.Cells per .NET. +### [Formato numerico personalizzato in Excel con C# – Guida completa](./custom-number-format-excel-in-c-complete-guide/) +Impara a creare e applicare formati numerici personalizzati in Excel con C# usando Aspose.Cells, con esempi pratici e consigli utili. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/italian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..0398d0ac33 --- /dev/null +++ b/cells/italian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-03-22 +description: Tutorial su formato numerico personalizzato in Excel che mostra come + importare una datatable in Excel, impostare il colore di sfondo della colonna, formattare + la colonna come valuta e salvare la cartella di lavoro come xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: it +og_description: Tutorial di Excel sul formato numerico personalizzato che ti guida + nell'importazione di una DataTable, nell'impostazione del colore di sfondo della + colonna, nella formattazione di una colonna come valuta e nel salvataggio della + cartella di lavoro come xlsx. +og_title: Formato numerico personalizzato in Excel con C# – Guida passo passo +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Formato numerico personalizzato in Excel con C# – Guida completa +url: /it/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Formato Numerico Personalizzato Excel – Tutorial Full‑Stack C# + +Ti sei mai chiesto come applicare uno **custom number format excel** direttamente da C#? Forse hai provato a esportare un DataTable in un foglio di calcolo solo per vedere numeri semplici, senza colori e senza formattazione valuta. È un problema comune—soprattutto quando ti serve un report curato per gli stakeholder. + +In questa guida risolveremo quel problema insieme: imparerai a **import datatable to excel**, a **set column background color**, a **format column as currency** e infine a **save workbook as xlsx** con un formato numerico personalizzato che farà risaltare i tuoi dati. Niente riferimenti vaghi, solo una soluzione completa e pronta all'uso che puoi copiare‑incollare nel tuo progetto. + +--- + +## Cosa Costruirai + +Al termine di questo tutorial avrai un'app console C# autonoma che: + +1. Recupera un `DataTable` (puoi sostituire lo stub con la tua query). +2. Crea un nuovo workbook Excel usando Aspose.Cells (o qualsiasi libreria compatibile). +3. Applica un carattere blu e grassetto alla prima colonna, uno sfondo giallo‑chiaro alla seconda e un formato valuta (`$#,##0.00`) alla terza. +4. Salva il file come `DataTableWithStyleArray.xlsx` in una cartella a tua scelta. + +Vedrai esattamente come ogni riga contribuisce al file Excel finale, e discuteremo perché queste scelte sono importanti per manutenibilità e performance. + +--- + +## Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche con .NET Framework 4.7+). +- Aspose.Cells per .NET (versione di prova gratuita o licenziata). Installa via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Familiarità di base con `DataTable` e le applicazioni console C#. + +--- + +## Passo 1: Recupera i Dati di Origine come DataTable + +Per prima cosa, ci servono dei dati da esportare. In uno scenario reale probabilmente chiameresti un repository o eseguirai una query SQL. Per illustrazione creiamo una tabella semplice in memoria. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Perché è importante:** Usare un `DataTable` ti fornisce una fonte tabellare, consapevole dello schema, che si mappa perfettamente su righe e colonne di Excel. Ti permette anche di riutilizzare la stessa logica di esportazione per qualsiasi set di dati senza riscrivere codice. + +--- + +## Passo 2: Crea un Nuovo Workbook e Ottieni il Primo Worksheet + +Ora creiamo un workbook Excel. La classe `Workbook` rappresenta l'intero file; il suo `Worksheets[0]` è il foglio predefinito dove inseriremo i dati. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** Se ti servono più fogli, basta chiamare `workbook.Worksheets.Add("SheetName")` e ripetere i passaggi di stilizzazione per ciascuno. + +--- + +## Passo 3: Definisci gli Stili delle Colonne – Font, Sfondo e Formato Numerico + +Lo styling in Aspose.Cells avviene tramite oggetti `Style`. Costruiremo un array in cui ogni elemento corrisponde a una colonna del DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Perché un array di stili?** Passare un array a `ImportDataTable` ti consente di applicare uno stile distinto a ogni colonna in una singola chiamata, il che è sia conciso che performante. Garantisce inoltre che la formattazione rimanga sincronizzata con l'ordine dei dati. + +--- + +## Passo 4: Importa il DataTable Applicando gli Stili + +Ecco il cuore dell'operazione: inseriamo il `DataTable` nel worksheet, chiediamo ad Aspose di includere la riga di intestazione e forniamo il nostro array `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Cosa succede dietro le quinte?** Aspose itera su ogni colonna, scrive l'intestazione, poi scrive i valori di ogni riga. Durante questo processo applica lo `Style` corrispondente dall'array, così ottieni un'intestazione blu per “Product”, una colonna “Quantity” con sfondo giallo e una colonna “Revenue” formattata correttamente come valuta. + +--- + +## Passo 5: Salva il Workbook come File XLSX + +Infine, persi il workbook su disco. Il metodo `Save` sceglie automaticamente il formato XLSX in base all'estensione del file. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Suggerimento:** Se devi trasmettere il file in streaming (ad esempio per un'API web), usa `workbook.Save(stream, SaveFormat.Xlsx)` invece di un percorso file. + +--- + +## Esempio Completo Funzionante + +Di seguito trovi il programma completo che puoi incollare in un nuovo progetto console. Compila ed esegue così com'è, producendo un file Excel stilizzato. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Risultato Atteso + +Aprendo `DataTableWithStyleArray.xlsx` vedrai: + +| **Product** (blu, grassetto) | **Quantity** (giallo‑chiaro) | **Revenue** (valuta) | +|------------------------------|------------------------------|----------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Il **custom number format excel** specificato (`$#,##0.00`) garantisce che ogni cella di revenue mostri il simbolo del dollaro, il separatore delle migliaia e due decimali—esattamente ciò che i team finanziari si aspettano. + +--- + +## Domande Frequenti & Casi Limite + +### Posso usarlo con una libreria Excel diversa? + +Assolutamente. Il concetto—creare uno stile per colonna e applicarlo durante l'importazione—si traduce in EPPlus, ClosedXML o NPOI. Le chiamate API cambiano, ma il pattern rimane lo stesso. + +### Cosa succede se il mio DataTable ha più colonne degli stili? + +Aspose applicherà lo stile predefinito a qualsiasi colonna senza una voce corrispondente nell'array `columnStyles`. Per evitare sorprese, dimensiona l'array a `dataTable.Columns.Count` o genera gli stili dinamicamente in un ciclo. + +### Come imposto un formato numerico personalizzato per le date? + +Basta impostare `style.Custom = "dd‑mm‑yyyy"` (o qualsiasi stringa di formato Excel valida). Lo stesso approccio basato su array funziona per date, percentuali o notazione scientifica. + +### Esiste un modo per auto‑dimensionare le colonne dopo l'importazione? + +Sì—chiama `worksheet.AutoFitColumns();` dopo l'importazione. Esegue un rapido calcolo della larghezza basato sul contenuto delle celle. + +### E per set di dati molto grandi (100k+ righe)? + +`ImportDataTable` è ottimizzato per operazioni bulk, ma potresti raggiungere limiti di memoria. In tal caso, considera lo streaming delle righe manualmente con `Cells[i, j].PutValue(...)` e riutilizza un unico oggetto `Style` per ridurre l'overhead. + +--- + +## Consigli Pro & Trappole Comuni + +- **Evita di hard‑codare i percorsi** in codice di produzione; usa `Environment.GetFolderPath` o impostazioni di configurazione. +- **Dispose del workbook** se lo utilizzi in un servizio a lungo termine—racchiudilo in un blocco `using` per liberare le risorse native. +- **Fai attenzione ai separatori specifici della cultura**. Il formato personalizzato `$#,##0.00` forza il punto come separatore decimale indipendentemente dalla locale del sistema, il che è solitamente quello che vuoi per i report finanziari. +- **Ricorda di referenziare System.Drawing** (o `System.Drawing.Common` su .NET Core) per le struct di colore usate nello styling. +- **Testa l'output su diverse versioni di Excel**; le versioni più vecchie potrebbero interpretare alcuni formati personalizzati in modo leggermente diverso. + +--- + +## Conclusione + +Abbiamo coperto tutto ciò che ti serve per **custom number format excel** file da C#: estrarre dati da un `DataTable`, **import datatable to excel**, applicare un **set column background color**, usare **format column as currency** e infine **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/excel-workbook/_index.md b/cells/italian/net/excel-workbook/_index.md index a13de5a9c9..57146274af 100644 --- a/cells/italian/net/excel-workbook/_index.md +++ b/cells/italian/net/excel-workbook/_index.md @@ -13,7 +13,7 @@ {{< blocks/products/pf/tutorial-page-section >}} -# Cartella di lavoro di Excel +# Cartella di lavoro Excel ## Introduzione @@ -69,23 +69,24 @@ Perché non cogliere l'occasione per migliorare le tue competenze in Excel? Ogni ## Tutorial | Titolo | Descrizione | | --- | --- | -| [Accedi alle informazioni sull'estensione Web](./access-web-extension-information/) | Scopri come accedere alle informazioni delle estensioni Web nei file Excel utilizzando Aspose.Cells per .NET con la nostra guida dettagliata. -| [Aggiungi firma digitale a un file Excel già firmato](./add-digital-signature-to-an-already-signed-excel-file/) | Scopri come aggiungere una firma digitale a un file Excel già firmato utilizzando Aspose.Cells per .NET con questa guida dettagliata passo dopo passo. -| [Aggiungi estensione Web](./add-web-extension/) | Scopri come aggiungere estensioni web ai file Excel utilizzando Aspose.Cells per .NET con questo tutorial completo passo dopo passo che migliora le funzionalità del tuo foglio di calcolo. +| [Accedi alle informazioni sull'estensione Web](./access-web-extension-information/) | Scopri come accedere alle informazioni delle estensioni Web nei file Excel utilizzando Aspose.Cells per .NET con la nostra guida dettagliata. | +| [Aggiungi firma digitale a un file Excel già firmato](./add-digital-signature-to-an-already-signed-excel-file/) | Scopri come aggiungere una firma digitale a un file Excel già firmato utilizzando Aspose.Cells per .NET con questa guida dettagliata passo dopo passo. | +| [Aggiungi estensione Web](./add-web-extension/) | Scopri come aggiungere estensioni web ai file Excel utilizzando Aspose.Cells per .NET con questo tutorial completo passo dopo passo che migliora le funzionalità del tuo foglio di calcolo. | | [Regola il livello di compressione](./adjust-compression-level/) Scopri come regolare i livelli di compressione per i file Excel utilizzando Aspose.Cells per .NET. Ottimizza le dimensioni dei tuoi file in modo efficiente con questa guida passo passo. | -| [Consenti apostrofo iniziale](./allow-leading-apostrophe/) | Gestisci senza sforzo gli apostrofi iniziali in Excel con Aspose.Cells per .NET. Questo tutorial completo ti guiderà passo dopo passo attraverso il processo. | -| [Crea cartella di lavoro condivisa](./create-shared-workbook/) | Scopri come creare una cartella di lavoro condivisa utilizzando Aspose.Cells per .NET con questa semplice guida passo passo. Perfetta per migliorare la collaborazione in team. | -| [Rileva tipi di collegamento](./detect-link-types/) | Scopri come rilevare i tipi di collegamento ipertestuale in Excel utilizzando Aspose.Cells per .NET. Semplici passaggi ed esempi di codice inclusi. | -| [Estrarre il file Mol incorporato](./extract-embedded-mol-file/) | Scopri come estrarre facilmente i file MOL incorporati da una cartella di lavoro di Excel utilizzando Aspose.Cells per .NET. | -| [Filtra i nomi definiti durante il caricamento della cartella di lavoro](./filter-defined-names-while-loading-workbook/) Scopri come filtrare i nomi definiti durante il caricamento di una cartella di lavoro con Aspose.Cells per .NET in questa guida completa. -| [Ottieni dettagli Odata](./get-odata-details/) | Scopri come estrarre i dettagli OData da Excel utilizzando Aspose.Cells per .NET in questo tutorial dettagliato passo dopo passo. -| [Proteggere o rimuovere la protezione tramite password della cartella di lavoro condivisa](./password-protect-or-unprotect-shared-workbook/) | Proteggi i tuoi file Excel condivisi utilizzando Aspose.Cells per .NET con la nostra semplice guida sulle tecniche di protezione e rimozione della protezione tramite password. | -| [Leggere e scrivere la connessione esterna del file XLSB](./read-and-write-external-connection-of-xlsb-file/) | Scopri come gestire le connessioni esterne nei file XLSB utilizzando Aspose.Cells per .NET in questo tutorial completo. -| [Sostituzione Regex](./regex-replace/) | Scopri come utilizzare in modo efficiente la sostituzione di espressioni regolari in Excel con Aspose.Cells per .NET. Aumenta la produttività e la precisione nelle tue attività sui fogli di calcolo. | -| [Aggiorna elemento formula Power Query](./update-power-query-formula-item/) Aggiorna facilmente gli elementi delle formule di Power Query in Excel utilizzando Aspose.Cells per .NET. Guida passo passo per semplificare i processi di manipolazione dei dati. | -| [Anteprima di stampa della cartella di lavoro](./workbook-print-preview/) | Scopri come creare anteprime di stampa per file Excel utilizzando Aspose.Cells per .NET. Scopri i passaggi di codifica in un tutorial dettagliato e facile da seguire. | -| [Lavorare con le proprietà del tipo di contenuto](./working-with-content-type-properties/) | Scopri come utilizzare Aspose.Cells per .NET per gestire le proprietà del tipo di contenuto e migliorare la gestione dei metadati di Excel. Segui questa semplice guida passo passo. | -| [Supporto per la firma Xades](./xades-signature-support/) | Scopri come aggiungere firme Xades ai file Excel utilizzando Aspose.Cells per .NET con questa guida passo passo. Proteggi i tuoi documenti. | +| [Consenti apostrofo iniziale](./allow-leading-apostrophe/) | Gestisci senza sforzo gli apostrofi iniziali in Excel con Aspose.Cells per .NET. Questo tutorial completo ti guiderà passo dopo passo attraverso il processo. | +| [Crea cartella di lavoro condivisa](./create-shared-workbook/) | Scopri come creare una cartella di lavoro condivisa utilizzando Aspose.Cells per .NET con questa semplice guida passo passo. Perfetta per migliorare la collaborazione in team. | +| [Rileva tipi di collegamento](./detect-link-types/) | Scopri come rilevare i tipi di collegamento ipertestuale in Excel utilizzando Aspose.Cells per .NET. Semplici passaggi ed esempi di codice inclusi. | +| [Estrarre il file Mol incorporato](./extract-embedded-mol-file/) | Scopri come estrarre facilmente i file MOL incorporati da una cartella di lavoro di Excel utilizzando Aspose.Cells per .NET. | +| [Filtra i nomi definiti durante il caricamento della cartella di lavoro](./filter-defined-names-while-loading-workbook/) Scopri come filtrare i nomi definiti durante il caricamento di una cartella di lavoro con Aspose.Cells per .NET in questa guida completa. | +| [Ottieni dettagli Odata](./get-odata-details/) | Scopri come estrarre i dettagli OData da Excel utilizzando Aspose.Cells per .NET in questo tutorial dettagliato passo dopo passo. | +| [Proteggere o rimuovere la protezione tramite password della cartella di lavoro condivisa](./password-protect-or-unprotect-shared-workbook/) | Proteggi i tuoi file Excel condivisi utilizzando Aspose.Cells per .NET con la nostra semplice guida sulle tecniche di protezione e rimozione della protezione tramite password. | +| [Leggere e scrivere la connessione esterna del file XLSB](./read-and-write-external-connection-of-xlsb-file/) | Scopri come gestire le connessioni esterne nei file XLSB utilizzando Aspose.Cells per .NET in questo tutorial completo. | +| [Sostituzione Regex](./regex-replace/) | Scopri come utilizzare in modo efficiente la sostituzione di espressioni regolari in Excel con Aspose.Cells per .NET. Aumenta la produttività e la precisione nelle tue attività sui fogli di calcolo. | +| [Aggiorna elemento formula Power Query](./update-power-query-formula-item/) Aggiorna facilmente gli elementi delle formule di Power Query in Excel utilizzando Aspose.Cells per .NET. Guida passo passo per semplificare i processi di manipolazione dei dati. | +| [Anteprima di stampa della cartella di lavoro](./workbook-print-preview/) | Scopri come creare anteprime di stampa per file Excel utilizzando Aspose.Cells per .NET. Scopri i passaggi di codifica in un tutorial dettagliato e facile da seguire. | +| [Lavorare con le proprietà del tipo di contenuto](./working-with-content-type-properties/) | Scopri come utilizzare Aspose.Cells per .NET per gestire le proprietà del tipo di contenuto e migliorare la gestione dei metadati di Excel. Segui questa semplice guida passo passo. | +| [Supporto per la firma Xades](./xades-signature-support/) | Scopri come aggiungere firme Xades ai file Excel utilizzando Aspose.Cells per .NET con questa guida passo passo. Proteggi i tuoi documenti. | +| [Crea nuova cartella di lavoro C# – Guida passo‑passo con formule spilt](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Scopri come creare una nuova cartella di lavoro in C# con Aspose.Cells, includendo formule spilt passo dopo passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/italian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..a4aff247f7 --- /dev/null +++ b/cells/italian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Crea rapidamente un nuovo workbook in C# usando Aspose.Cells. Scopri + come aggiungere una formula SEQUENCE che si espande, ricalcolare automaticamente + e gestire le celle dipendenti. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: it +og_description: Crea una nuova cartella di lavoro C# con Aspose.Cells. Questo tutorial + mostra come aggiungere una formula SEQUENCE di spill, ricalcolare la cartella di + lavoro e gestire le celle dipendenti. +og_title: Crea una nuova cartella di lavoro C# – Guida completa +tags: +- C# +- Excel automation +- Aspose.Cells +title: Crea una nuova cartella di lavoro C# – Guida passo passo con formule spill +url: /it/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea nuovo workbook C# – Guida completa di programmazione + +Ti sei mai chiesto come **create new workbook C#** senza combattere con COM interop? Non sei l’unico. In molti progetti è necessario generare al volo un file Excel, inserire una formula di array dinamico e far sì che tutto si aggiorni automaticamente. + +In questa guida ti mostreremo esattamente questo—utilizzando la moderna libreria **Aspose.Cells**, aggiungendo una formula `SEQUENCE` che si espande, modificando una cella dipendente e forzando un ricalcolo affinché i risultati rimangano aggiornati. Alla fine avrai un esempio autonomo e eseguibile da copiare‑incollare in qualsiasi app .NET. + +## Cosa imparerai + +- Come **create new workbook C#** programmaticamente. +- Il funzionamento di una **spilled array formula** e perché è utile. +- Utilizzare la **Excel SEQUENCE function** dal codice C#. +- Attivare il **C# workbook calculation** affinché le celle dipendenti si aggiornino istantaneamente. +- Trappole comuni (ad esempio, dimenticare di chiamare `Calculate`) e soluzioni rapide. + +Nessuna documentazione esterna necessaria—tutto ciò che ti serve è qui. + +## Prerequisiti + +- .NET 6+ (o .NET Framework 4.7.2+) installato. +- Visual Studio 2022 o qualsiasi IDE preferisci. +- Il pacchetto NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Familiarità di base con la sintassi C# (se sei alle prime armi, il codice è ampiamente commentato). + +--- + +## Passo 1: Crea un nuovo workbook in C# + +This H2 header contains the **primary keyword** exactly where the SEO checklist demands it. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Perché è importante:** +> L'istanziazione di `Workbook` ti fornisce una rappresentazione in memoria di un file Excel. Nessun COM, nessun interop, solo oggetti .NET puri che puoi manipolare in sicurezza. + +--- + +## Passo 2: Aggiungi una formula SEQUENCE che si espande + +Una **spilled array formula** si espande automaticamente nelle celle adiacenti, il che è perfetto per generare elenchi dinamici. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Come funziona:** +> La funzione `SEQUENCE` (introdotta in Excel 365) crea un array verticale di numeri. Poiché utilizziamo una formula *spilling*, Excel (e Aspose.Cells) riempirà automaticamente l’intervallo sotto `A1` senza dover scrivere un ciclo. + +--- + +## Passo 3: Modifica una cella dipendente per vedere l'auto‑refresh + +Modifichiamo `B1` così da poter osservare come il workbook ricalcola l'array espanso. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Suggerimento:** +> Se in seguito fai riferimento all’intervallo espanso in altre formule, modificare qualsiasi cella all’interno dello spill farà aggiornare quelle formule dopo aver chiamato `Calculate`. + +--- + +## Passo 4: Forza il calcolo del workbook C# + +Senza una chiamata esplicita, Aspose.Cells non ricalcolerà automaticamente le formule. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Cosa fa `Calculate`:** +> Scorre ogni cella contenente una formula, la valuta e scrive i risultati nuovamente nel foglio. Questo è il cuore del **C# workbook calculation** e garantisce che il tuo array espanso rimanga sincronizzato con tutti i dati dipendenti. + +### Output previsto + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Apri `SpilledSequenceDemo.xlsx` e vedrai i numeri da 1 a 5 riempire `A1:A5`, mentre `B1` contiene il valore `10`. Cambia qualsiasi cella all’interno dello spill, esegui nuovamente `Calculate` e i nuovi valori appariranno immediatamente. + +--- + +## Comprendere la funzione Excel SEQUENCE in C# + +Se ti chiedi perché `SEQUENCE` è preferita rispetto a un ciclo manuale, considera questi punti: + +1. **Performance** – Il motore valuta l’intero array in un solo passaggio. +2. **Leggibilità** – Una riga di codice sostituisce decine di chiamate a `PutValue`. +3. **Dimensionamento dinamico** – Puoi sostituire il valore statico `5` con un riferimento a un’altra cella, rendendo la lunghezza regolabile a runtime. + +Questo è un classico esempio di **spilled array formula** che semplifica le attività di generazione dati. + +--- + +## Problemi comuni e consigli professionali + +| Problema | Soluzione | +|----------|-----------| +| Dimenticare `workbook.Calculate()` | Chiamalo sempre dopo aver modificato le formule; altrimenti il foglio mostrerà valori vecchi nella cache. | +| Usare una versione più vecchia di Aspose.Cells | Aggiorna all’ultimo pacchetto NuGet per garantire il supporto alle funzioni di array dinamico come `SEQUENCE`. | +| Salvare prima del calcolo | Salva **dopo** `Calculate` così il file contiene i risultati più recenti. | +| Supporre che lo spill sovrascriva dati esistenti | Aspose.Cells rispetta i dati esistenti al di fuori dell’intervallo di spill; cancella l’area prima se ti serve una tabula rasa. | + +**Consiglio professionale:** Se hai bisogno che la lunghezza della sequenza sia configurabile, memorizza il conteggio in una cella (ad es. `C1`) e usa `=SEQUENCE(C1)`—il motore di calcolo leggerà il valore a runtime. + +--- + +## Estendere l'esempio + +Ora che sai come **create new workbook C#**, puoi: + +- Aggiungere formule più complesse che fanno riferimento all’intervallo espanso (`=SUM(A1#)` dove `#` indica lo spill). +- Esportare in PDF con `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Inserire grafici che si adattano automaticamente alla dimensione dell’array dinamico. + +Tutto ciò si basa sulla stessa base di **C# workbook calculation** che abbiamo appena trattato. + +--- + +## Conclusione + +Abbiamo percorso l’intero processo di **create new workbook C#**, dall’instanziare l’oggetto `Workbook` all’inserire una formula `SEQUENCE` che si espande, modificare una cella dipendente e infine forzare un ricalcolo affinché tutto rimanga aggiornato. Lo snippet di codice completo sopra è pronto per l’esecuzione—basta inserirlo in un’app console, aggiungere il pacchetto NuGet Aspose.Cells, e avrai un file Excel funzionale in pochi secondi. + +Pronto per il passo successivo? Prova a sostituire il valore statico `5` con un riferimento a una cella, sperimenta con altre funzioni di array dinamico come `FILTER` o `UNIQUE`, ed esplora come **Aspose.Cells C#** possa alimentare motori di reporting completi. Buon coding! + +--- + +*Image placeholder:* + +![Screenshot che mostra un workbook appena creato con formula SEQUENCE espansa – esempio create new workbook C# example](/images/create-new-workbook-csharp.png) + +--- + +*Se hai trovato utile questo tutorial, considera di mettere una stella al repository, condividerlo con i colleghi o lasciare un commento qui sotto. Il tuo feedback alimenta le guide future!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/formulas-functions/_index.md b/cells/italian/net/formulas-functions/_index.md index b4819682af..2f56bbbdd4 100644 --- a/cells/italian/net/formulas-functions/_index.md +++ b/cells/italian/net/formulas-functions/_index.md @@ -100,66 +100,8 @@ Scopri come padroneggiare le formule array utilizzando Aspose.Cells per .NET. Qu Scopri come specificare la lingua dei tuoi file Excel utilizzando Aspose.Cells .NET. Migliora l'accessibilità e la conformità dei documenti con questa guida dettagliata per l'internazionalizzazione delle impostazioni delle formule. ### [Aggiornare le formule di Excel Power Query con Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) -Scopri come aggiornare a livello di codice le formule di Power Query nelle cartelle di lavoro di Excel utilizzando Aspose.Cells per .NET. Gestione delle origini dati master per il reporting dinamico. -## Comprensione dei tipi di formule di Excel - -Le formule di Excel si presentano in varie forme, ciascuna con caratteristiche uniche che Aspose.Cells può gestire: - -### Formule standard delle celle - -Queste sono le formule più comuni che operano sulle singole celle: - -- **Formule aritmetiche**: Calcoli di base come `=A1+B1` -- **Formule basate sulle funzioni**:Utilizzando funzioni integrate come `=SUM(A1:A10)` -- **Formule logiche**: Logica condizionale con funzioni come `=IF(A1>10,"High","Low")` -- **Formule di testo**: Manipolazione del testo con funzioni come `=CONCATENATE(A1," ",B1)` - -### Formule basate sull'intervallo - -Queste formule funzionano con intervalli di celle: - -- **Formule di aggregazione**: Funzioni come `=AVERAGE(A1:A100)` che elaborano più cellule -- **Formule di ricerca**: Funzioni di riferimento come `=VLOOKUP(E1,A1:B20,2,FALSE)` per il recupero dei dati -- **Formule di database**: Funzioni specializzate come `=DSUM(A1:F100,"Amount",G1:H2)` per il filtraggio e il calcolo - -### Formule di matrice - -Le formule di matrice eseguono calcoli su più valori contemporaneamente: - -- **Formula di matrice a cella singola**: Restituisce un risultato ma elabora gli array internamente -- **Formula di matrice multi-cella**: popola più celle con risultati correlati -- **Array dinamici**: Formule moderne di Excel che distribuiscono automaticamente i risultati nelle celle vicine - -### Formule denominate - -Queste formule utilizzano intervalli denominati o nomi definiti: - -- **Riferimenti a intervalli denominati**:Utilizzando nomi definiti come `=SUM(SalesData)` -- **Riferimenti strutturati**: Riferimenti alla tabella come `=SUM(Table1[Amount])` -- **Intervalli denominati dinamici**: Formule che si adattano automaticamente alle dimensioni dei dati - -## Migliori pratiche per la gestione delle formule - -### Ottimizzazione delle prestazioni - -Per garantire una gestione efficiente delle formule: - -1. **Impostazione della formula batch**: Applica le formule agli intervalli anziché cella per cella -2. **Calcola in modo selettivo**: Utilizzare il calcolo mirato quando possibile invece del ricalcolo completo -3. **Ridurre al minimo le funzioni volatili**: Limitare l'uso di funzioni come NOW() o RAND() che attivano il ricalcolo -4. **Utilizzare formule condivise**: Sfrutta le capacità delle formule condivise per l'efficienza della memoria - -### Affidabilità della formula - -Per un'implementazione robusta della formula: - -1. **Gestione degli errori**: Implementare la gestione degli errori di formula con IFERROR o funzioni simili -2. **Analisi della dipendenza cellulare**: Comprendere le dipendenze delle formule per evitare riferimenti circolari -3. **Verifica delle formule**: Verificare la logica della formula prima della distribuzione -4. **Documentazione**: Mantenere una documentazione chiara delle strutture complesse delle formule - -Padroneggiando queste capacità delle formule con Aspose.Cells per .NET, puoi creare motori di calcolo sofisticati nei tuoi fogli di calcolo che forniscono risultati accurati e dinamici senza richiedere l'installazione di Excel. +### [Come utilizzare Lambda in C# con le formule di Excel – Guida completa](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/italian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..dfa0c8de94 --- /dev/null +++ b/cells/italian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Come usare le lambda in C# per lavorare con le formule di Excel. Impara + a scrivere una formula in una cella, convertire un intervallo in un array, visualizzare + l'array nella console e calcolare la cotangente in Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: it +og_description: Come usare lambda in C# per manipolare le formule di Excel, convertire + un intervallo in array, scrivere una formula in una cella, visualizzare l'array + nella console e calcolare la cotangente in Excel. +og_title: Come usare Lambda in C# con le formule Excel – Passo dopo passo +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Come utilizzare le lambda in C# con le formule Excel – Guida completa +url: /it/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come usare Lambda in C# con le formule di Excel – Guida completa + +Ti sei mai chiesto **come usare lambda** quando automatizzi Excel da C#? Non sei solo. Molti sviluppatori si trovano in difficoltà quando devono combinare la potenza delle nuove funzioni di array dinamici di Excel con la capacità `LAMBDA` di C#. La buona notizia? È in realtà piuttosto semplice una volta che vedi come i pezzi si incastrano. + +In questo tutorial vedremo **come scrivere una formula in una cella**, **come convertire un intervallo in un array**, **come visualizzare quell'array nella console**, e persino **come calcolare la cotangente in Excel**—tutto mostrando **come usare lambda** all'interno di una chiamata `REDUCE`. Alla fine avrai uno snippet eseguibile da inserire in qualsiasi progetto .NET che fa riferimento a Aspose.Cells (o a una libreria simile). + +--- + +## Cosa imparerai + +- Come **scrivere una formula in una cella** usando C#. +- Come **convertire un intervallo in un array** con la funzione `EXPAND`. +- Come **visualizzare l'array nella console** dopo il calcolo. +- Come **calcolare la cotangente in Excel** usando `COT` e `COTH`. +- La sintassi esatta per **come usare lambda** all'interno della funzione `REDUCE` di Excel da C#. + +> **Prerequisito:** È necessario avere una versione recente di .NET (Core 6+ o .NET Framework 4.7+) e la libreria Aspose.Cells per .NET installata tramite NuGet. + +--- + +## Passo 1: Configurare la cartella di lavoro e scrivere la formula nella cella + +La prima cosa che facciamo è creare una nuova cartella di lavoro e ottenere il primo foglio. Poi **scriviamo una formula in una cella** – in questo caso `A1` conterrà il risultato di una chiamata `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Perché è importante:** Scrivere la formula direttamente dal codice ti permette di generare fogli di calcolo complessi al volo senza aprire Excel. Inoltre prepara il terreno per il passo successivo, dove **convertiamo l'intervallo in un array**. + +--- + +## Passo 2: Convertire l'intervallo in un array con EXPAND + +`EXPAND` è il modo di Excel per trasformare un piccolo intervallo in una matrice più grande. Posizionando la formula in `A1`, Excel “spilla” un blocco 4 × 5 a partire da quella cella. Da C#, non dobbiamo copiare manualmente i valori – la libreria si occuperà del lavoro pesante quando chiamiamo `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Come usare lambda:** Non ancora, ma resta in attesa. Prima dobbiamo avere i dati nel foglio, poi li ridurremo con una lambda. + +--- + +## Passo 3: Usare LAMBDA dentro REDUCE – Il nocciolo di “Come usare Lambda” + +Excel 365 ha introdotto `REDUCE`, che accetta un **valore iniziale**, un **intervallo** e una **LAMBDA** che indica come combinare ogni elemento. Da C# assegniamo semplicemente la stringa della formula; la lambda vive all'interno della formula di Excel, non nel codice C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Spiegazione:** +- `0` è l'accumulatore iniziale (`acc`). +- `A1:D4` è l'intervallo che vogliamo elaborare (le prime quattro colonne dello spill). +- `LAMBDA(acc, x, acc + x)` dice a Excel di aggiungere ogni cella (`x`) all'accumulatore. + +Questa è l'essenza di **come usare lambda** per l'aggregazione in un contesto di foglio di calcolo. + +--- + +## Passo 4: Calcolare la cotangente in Excel – Da gradi a iperbolico + +Se ti servono risultati trigonometrici, le funzioni `COT` e `COTH` di Excel sono un gioco da ragazzi. Le inseriremo rispettivamente in `G1` e `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Perché è utile:** Conoscere **come calcolare la cotangente in Excel** può farti risparmiare la scrittura di codice matematico personalizzato, soprattutto quando il workbook verrà condiviso con persone non sviluppatrici. + +--- + +## Passo 5: Forzare il calcolo e recuperare l'array espanso + +Ora chiediamo al workbook di valutare tutte le formule, quindi estraiamo l'array spillato da `A1`. È qui che **visualizziamo l'array nella console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Ciò che vedrai:** +- Una matrice 4 × 5 formattata correttamente, stampata riga per riga. +- La somma calcolata dalla lambda `REDUCE`. +- I due valori di cotangente. + +Questo completa il flusso da **scrivere formula in una cella** fino a **visualizzare l'array nella console**. + +--- + +## Esempio completo funzionante (pronto per copia‑incolla) + +Di seguito trovi l'intero programma che puoi inserire in un'app console. Ricorda di aggiungere prima il pacchetto NuGet `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Output console previsto (i valori variano in base al contenuto predefinito di B1:C2, che di default è 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Sentiti libero di popolare `B1:C2` con i tuoi numeri prima di eseguire – la matrice rifletterà quei valori. + +--- + +## Pro Tips & Errori comuni + +- **Consiglio:** Se vuoi che l'intervallo spill inizi altrove, cambia semplicemente la cella di destinazione (`A1`). La funzione `EXPAND` rispetta l'ancora. +- **Attenzione a:** Le celle vuote nell'intervallo di origine diventano `0` nell'array spillato, il che può influenzare la somma della `REDUCE`. +- **Caso limite:** Quando il workbook contiene formule che dipendono da funzioni volatili (es. `NOW()`), chiama `workbook.Calculate()` dopo aver impostato tutte le formule per assicurarti che tutto sia aggiornato. +- **Nota sulle prestazioni:** Per spill di grandi dimensioni, considera di limitare la dimensione nella chiamata `EXPAND`; altrimenti potresti allocare più memoria del necessario. +- **Compatibilità:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/number-and-display-formats-in-excel/_index.md b/cells/italian/net/number-and-display-formats-in-excel/_index.md index b6b7f9de40..0c03577406 100644 --- a/cells/italian/net/number-and-display-formats-in-excel/_index.md +++ b/cells/italian/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Se desideri aggiungere un tocco personale ai tuoi fogli Excel, la personalizzazi Automatizza la formattazione dei numeri in Excel utilizzando Aspose.Cells per .NET. Scopri come applicare i formati di data, percentuale e valuta a livello di codice. ### [Personalizzazione dei formati di visualizzazione con numeri definiti dall'utente](./customizing-display-formats-with-user-defined-numbers/) Scopri come personalizzare i formati di visualizzazione con Aspose.Cells per .NET. Formatta date, percentuali e valute con questa guida dettagliata. +### [Come esportare Excel con formattazione – Conserva il formato numerico](./how-to-export-excel-with-formatting-preserve-number-format/) +Scopri come preservare i formati numerici durante l'esportazione di Excel usando Aspose.Cells per .NET. +### [Formattare data/ora in ISO in C# – Guida completa](./format-datetime-to-iso-in-c-complete-guide/) +Impara a convertire date e ore in formato ISO con C# usando Aspose.Cells per .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/italian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..18302944fa --- /dev/null +++ b/cells/italian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Scopri come formattare la data e ora in ISO durante l'estrazione della + data da Excel e visualizzare la data ISO utilizzando Aspose.Cells in C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: it +og_description: Formattare data e ora in ISO è semplice. Questa guida mostra come + estrarre la data da Excel e visualizzare la data ISO con Aspose.Cells. +og_title: Formattare datetime in ISO in C# – Tutorial passo‑passo +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formattare DateTime in ISO in C# – Guida completa +url: /it/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# formattare datetime in iso in C# – Guida completa + +Mai avuto bisogno di **format datetime to iso** ma la sorgente si trova all'interno di una cartella di lavoro Excel? Forse la cella contiene un'era giapponese come “令和3年5月1日” e ti stai grattando la testa chiedendoti come trasformarla in una stringa pulita `2021‑05‑01`. Non sei solo. In questo tutorial **extract date from excel**, analizzeremo l'era giapponese e poi **display iso date** sulla console—tutto con poche righe di C# e Aspose.Cells. + +Ti guideremo passo passo su tutto ciò che ti serve: il pacchetto NuGet necessario, il codice esatto da copiare‑incollare, perché ogni riga è importante e una serie di consigli per i casi limite. Alla fine avrai uno snippet riutilizzabile che **formats datetime to iso** indipendentemente da quanto strano sia il valore originale in Excel. + +## Cosa ti serve + +- .NET 6.0 o successivo (il codice si compila anche su .NET Framework 4.6+) +- Visual Studio 2022 (o qualsiasi editor tu preferisca) +- **Aspose.Cells for .NET** pacchetto NuGet – `Install-Package Aspose.Cells` +- Un file Excel (o una cartella di lavoro nuova) che contiene una data in formato era giapponese + +Questo è tutto. Nessuna libreria aggiuntiva, nessun interop COM, solo un singolo metodo ben documentato. + +## Passo 1: Crea un Workbook e Scrivi una Data in Era Giapponese + +Prima di tutto, ci serve un workbook con cui lavorare. Se hai già un file Excel, puoi caricarlo con `new Workbook("path")`. Per questo esempio creiamo un nuovo workbook in memoria e inseriamo una stringa di era giapponese nella cella **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells tratta i valori delle celle come stringhe per impostazione predefinita. Inserendo il testo grezzo dell'era simuliamo uno scenario reale in cui un cliente giapponese ha inserito le date nel proprio calendario nativo. + +## Passo 2: Abilita il Parsing dell'Era Giapponese e Estrai la Data + +Aspose.Cells può tradurre automaticamente le stringhe di era giapponese in oggetti .NET `DateTime`—a patto di dirglielo. Il flag `DateTimeParseOptions.EnableJapaneseEra` fa il lavoro pesante. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** Se dimentichi l'opzione `EnableJapaneseEra`, la libreria restituirà la stringa originale e la conversione successiva fallirà. Verifica sempre `parsed.Type` se gestisci contenuti misti. + +## Passo 3: Converti il DateTime Analizzato in ISO 8601 + +Ora che abbiamo un `DateTime` corretto, trasformarlo in una stringa formattata ISO è un gioco da ragazzi. Il pattern `"yyyy-MM-dd"` è conforme alla parte data di ISO 8601, che è ciò che la maggior parte delle API si aspetta. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Eseguendo il programma stampa: + +``` +ISO date: 2021-05-01 +``` + +Questa è la **display iso date** che cercavi. + +## Esempio Completo, Eseguibile + +Di seguito trovi il blocco di codice completo da copiare direttamente in un progetto console. Nessuna dipendenza nascosta, nessuna configurazione extra. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## Analisi Passo‑per‑Passo (Perché Ogni Parte è Importante) + +| Step | What Happens | Why It’s Important | +|------|--------------|--------------------| +| **Create workbook** | Inizializza un contenitore Excel in memoria. | Ti fornisce un sandbox per testare senza toccare il file system. | +| **PutValue** | Memorizza la stringa grezza dell'era giapponese in **A1**. | Simula l'inserimento reale dei dati; garantisce che il parser veda il testo esatto. | +| **GetValue with `EnableJapaneseEra`** | Converte la stringa dell'era in un .NET `DateTime`. | Gestisce automaticamente la conversione del calendario—nessuna tabella di ricerca manuale necessaria. | +| **`ToString("yyyy-MM-dd")`** | Format il `DateTime` in ISO 8601. | Garantisce una stringa data invariata dalla cultura, ordinabile e accettata da API REST, database, ecc. | +| **Console.WriteLine** | Mostra la data ISO finale. | Conferma che l'intera pipeline funziona end‑to‑end. | + +## Gestione delle Varianti Comuni + +### 1. Posizioni di Celle Diverse + +Se la tua data si trova in **B2** o in un intervallo denominato, sostituisci semplicemente `"A1"` con l'indirizzo appropriato: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Più Date in una Colonna + +Quando devi **extract date from excel** per molte righe, itera sull'intervallo usato: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback per Date Non‑Era + +Se una cella contiene già una stringa di data standard, il parser funziona comunque, ma potresti volere una rete di sicurezza: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Il flag `TryParse` previene eccezioni e restituisce il valore originale se la conversione fallisce. + +### 4. Componente Tempo + +Se ti serve anche la parte temporale, usa `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Ottieni così un timestamp ISO 8601 completo (`2021-05-01T00:00:00`). + +## Supporto Visivo + +![esempio di formattazione datetime in iso](image.png "Un esempio di formattazione datetime in iso in C#") + +*Testo alternativo:* *esempio di formattazione datetime in iso che mostra l'output della console* + +## Domande Frequenti + +- **Posso usarlo con file .xls?** + Sì. Aspose.Cells supporta `.xls`, `.xlsx`, `.csv` e molti altri formati out of the box. + +- **Cosa succede se il workbook è protetto da password?** + Caricalo con `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Il formato ISO dipende dalla locale?** + No. Il pattern `"yyyy-MM-dd"` è invariato dalla cultura, garantendo la stessa stringa su qualsiasi macchina. + +- **Funziona su .NET Core?** + Assolutamente—Aspose.Cells è conforme a .NET Standard 2.0. + +## Conclusione + +Abbiamo visto come **format datetime to iso** **extract date from excel**, analizzando le stringhe di era giapponese e infine **display iso date** sulla console. I passaggi fondamentali—creare un workbook, scrivere o caricare il testo dell'era, abilitare il parsing dell'era giapponese e formattare con `ToString("yyyy-MM-dd")`—sono tutto ciò che ti serve nella maggior parte degli scenari. + +Prossimi passi consigliati: + +- Scrivi le date ISO in un'altra colonna per ulteriori elaborazioni. +- Esporta il workbook trasformato in CSV per importazioni massive. +- Combina questa logica con un'API web che accetta upload di Excel e restituisce date ISO codificate in JSON. + +Sentiti libero di sperimentare con formati di data diversi, fusi orari o persino calendari personalizzati. La flessibilità di Aspose.Cells ti permette di non incontrare quasi mai ostacoli. + +Buon coding, e che tutte le tue date siano perfettamente conformi a ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/italian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..6161a6fbe9 --- /dev/null +++ b/cells/italian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Come esportare Excel con formattazione e preservare il formato numerico. + Scopri come convertire un intervallo Excel, ottenere il risultato di una formula + e esportare Excel con formattazione usando Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: it +og_description: Come esportare Excel con formattazione e preservare il formato dei + numeri. Guida passo‑passo per convertire un intervallo Excel, ottenere il risultato + della formula e esportare Excel con formattazione in C#. +og_title: Come esportare Excel con formattazione – Conserva il formato numerico +tags: +- C# +- Aspose.Cells +- Excel automation +title: Come esportare Excel con formattazione – Conservare il formato numerico +url: /it/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come esportare Excel con formattazione – Conservare il formato numerico + +Ti sei mai chiesto **come esportare Excel** mantenendo l’aspetto di ogni cella esattamente come lo vedi nella cartella di lavoro? Forse devi inviare un report a un cliente, alimentare un controllo grid, o semplicemente archiviare i valori in un database. Il punto dolente è solitamente la perdita della formattazione numerica o le formule che diventano stringhe grezze. + +In questo tutorial passeremo in rassegna un esempio completo, pronto‑da‑eseguire in C#, che **conserva il formato numerico**, **converte un intervallo Excel** in un `DataTable`, **ottiene il risultato della formula**, e infine **esporta Excel con formattazione** usando Aspose.Cells. Alla fine avrai un unico metodo da inserire in qualsiasi progetto e chiamare con un riferimento al foglio di lavoro. + +> **Anteprima rapida:** il codice crea una cartella di lavoro, scrive un valore e una formula, indica ad Aspose.Cells di esportare le celle come stringhe formattate, e stampa `123.456 | 246.912` – esattamente ciò che ti aspetti di vedere in Excel. + +--- + +## Di cosa avrai bisogno + +- **Aspose.Cells for .NET** (la versione di prova gratuita è sufficiente per imparare) +- .NET 6.0 o successivo (l’API è la stessa su .NET Framework) +- Un ambiente di sviluppo C# di base (Visual Studio, VS Code, Rider… a tua scelta) + +Non sono necessari pacchetti NuGet aggiuntivi oltre a Aspose.Cells. Se non lo hai ancora installato, esegui: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Passo 1 – Creare una cartella di lavoro e scrivere valori (inclusa una formula) + +Per prima cosa creiamo una nuova cartella di lavoro e inseriamo un valore numerico in **A1**. Poi aggiungiamo una semplice formula in **B1** che moltiplica la prima cella per due. Questo prepara il terreno per dimostrare **ottenere il risultato della formula** più avanti. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Perché è importante:** +- `PutValue` memorizza il numero grezzo, mentre `PutFormula` memorizza il calcolo. +- Aspose.Cells mantiene viva la formula, così quando più tardi chiediamo il valore della cella otterremo realmente `246.912`, non la stringa `"=A1*2"`. + +--- + +## Passo 2 – Dire ad Aspose.Cells di esportare i valori come stringhe formattate + +Se chiami semplicemente `ExportDataTable` con le impostazioni predefinite, le celle numeriche verranno restituite come i loro valori `double` sottostanti. Questo elimina separatori delle migliaia, simboli di valuta o decimali personalizzati che potresti aver impostato. La classe `ExportTableOptions` ci permette di **conservare il formato numerico** e **esportare come stringa**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Punto chiave:** `ExportNumberFormat = true` è l’opzione che fa funzionare **conservare il formato numerico**. Senza di essa vedresti `"123.456"` e `"246.912"` come numeri grezzi, il che può andare bene nel codice ma non quando incolli i dati in un’interfaccia che si aspetta la stessa formattazione di Excel. + +--- + +## Passo 3 – Stampare i dati esportati (verifica) + +Ora che abbiamo un `DataTable` pieno di stringhe formattate, scarichiamo il contenuto sulla console. Questo dimostra anche che siamo riusciti a **ottenere il risultato della formula** senza valutare la formula noi stessi. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +L’esecuzione del programma stampa: + +``` +123.456 | 246.912 +``` + +Nota come la seconda colonna mostri il **risultato della formula**, non il testo della formula. È esattamente ciò di cui hai bisogno quando **esporti Excel con formattazione** per l’elaborazione successiva. + +--- + +## Passo 4 – Convertire intervalli Excel più grandi (opzionale) + +L’esempio sopra gestisce una piccola porzione `A1:B1`, ma scenari reali spesso richiedono l’esportazione di tabelle intere. Lo stesso metodo funziona per qualsiasi blocco rettangolare – basta regolare i parametri `firstRow`, `firstColumn`, `totalRows` e `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Consiglio professionale:** Se il tuo foglio ha già una riga di intestazione, imposta `includeColumnNames` su `true`. Aspose.Cells utilizzerà la prima riga dell’intervallo come nomi di colonna, il che è comodo quando successivamente colleghi il `DataTable` a una griglia UI. + +--- + +## Passo 5 – Problemi comuni e come evitarli + +| Problema | Perché accade | Soluzione | +|----------|----------------|-----------| +| **I numeri perdono virgole o simboli di valuta** | `ExportAsString` è `false` o `ExportNumberFormat` è omesso | Imposta sia `ExportAsString = true` **che** `ExportNumberFormat = true`. | +| **Le celle con formula restituiscono il testo della formula** | Non hai chiamato `CalculateFormula` prima dell’esportazione (necessario solo se la cartella non è impostata su calcolo automatico) | Abilita il calcolo automatico (`workbook.CalculateFormula()`) o usa `ExportAsString` che forza la valutazione. | +| **Le intestazioni appaiono come righe di dati** | `includeColumnNames` è impostato su `false` mentre il tuo intervallo include una riga di intestazione | Imposta `includeColumnNames = true` per trattare la prima riga come nomi di colonna. | +| **Intervalli grandi causano pressione sulla memoria** | L’esportazione dell’intero foglio in una volta carica tutto in memoria | Esporta a blocchi (ad esempio 500 righe alla volta) e unisci i `DataTable` se necessario. | + +--- + +## Passo 6 – Esempio completo funzionante (pronto per copia‑incolla) + +Di seguito trovi l’intero programma, dalle istruzioni `using` al metodo `Main`. Incollalo in un’app console e premi **F5** – vedrai subito l’output formattato. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Output previsto** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Questo è l’intero flusso **come esportare Excel**, con formattazione intatta, risultati delle formule valutati, e un `DataTable` pulito pronto per qualsiasi consumatore .NET. + +--- + +## Conclusione + +Abbiamo coperto tutto ciò che devi sapere su **come esportare Excel** mantenendo **il formato numerico**, **convertendo un intervallo Excel** in un `DataTable`, e **ottenendo i risultati delle formule** senza parsing aggiuntivo. La chiave è la configurazione di `ExportTableOptions` – una volta impostati `ExportAsString` e `ExportNumberFormat` su `true`, Aspose.Cells fa il lavoro pesante per te. + +Da qui puoi: + +- Collegare il `DataTable` a un `DataGrid` WPF o a una vista ASP.NET MVC. +- Scrivere la tabella in un file CSV mantenendo la rappresentazione visiva esatta. +- Estendere l’approccio a più fogli o intervalli dinamici. + +Sentiti libero di sperimentare con formati diversi (valuta, percentuali) e blocchi di dati più grandi. Se incontri qualche strano comportamento, torna alla tabella **problemi comuni** – copre le difficoltà più frequenti quando **esporti Excel con formattazione**. + +Buona programmazione, e che i tuoi fogli esportati siano sempre lucidi come gli originali! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/italian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..e4a0ee3b95 --- /dev/null +++ b/cells/italian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Scopri come duplicare una tabella pivot in C# usando Aspose.Cells. Questa + guida mostra anche come copiare righe e caricare un workbook Excel in C# per un'automazione + Excel fluida nella copia delle righe. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: it +og_description: Come duplicare un pivot in C#? Segui questo conciso tutorial per caricare + una cartella di lavoro Excel in C#, copiare le righe e padroneggiare l'automazione + di Excel per copiare le righe. +og_title: Come duplicare Pivot in C# – Guida completa +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Come duplicare Pivot in C# – Guida completa passo passo +url: /it/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come duplicare una tabella pivot in C# – Guida completa passo‑passo + +Ti sei mai chiesto **come duplicare una pivot** programmaticamente senza trascinarla manualmente in Excel? Non sei l'unico. In molti flussi di reporting è necessario lo stesso layout pivot su un nuovo set di righe, e farlo a mano è una perdita di tempo. + +La buona notizia? Con poche righe di C# puoi caricare una cartella di lavoro Excel, definire l'area che contiene la pivot e **come copiare le righe** in modo che la pivot appaia in una nuova posizione—tutto in un'unica esecuzione automatizzata. In questo tutorial copriremo anche le basi di **load excel workbook c#** e ti forniremo una solida base per le attività di **excel automation copy rows**. + +> **Cosa otterrai** +> • Un esempio completo e eseguibile che duplica una tabella pivot. +> • Una spiegazione del motivo per cui ogni riga è importante. +> • Suggerimenti per gestire casi particolari come fogli nascosti o più pivot. + +--- + +## Prerequisiti + +Prima di immergerci, assicurati di avere: + +- **.NET 6.0** (o qualsiasi versione recente di .NET) installata. +- **Aspose.Cells for .NET** – la libreria che useremo per manipolare i file Excel. Puoi ottenerla tramite NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Un workbook di origine (`Source.xlsx`) che contiene già una tabella pivot nell'intervallo **A1:J20** (l'intervallo che duplicheremo). +- Familiarità di base con la sintassi C# – niente di complicato, solo le consuete istruzioni `using` e il metodo `Main`. + +Se qualcuno di questi ti è sconosciuto, fermati un attimo e installa il pacchetto; il resto della guida presuppone che la libreria sia pronta all'uso. + +![Illustrazione di come duplicare una pivot in C# usando Aspose.Cells](https://example.com/duplicate-pivot.png "illustrazione di come duplicare una pivot in C#") + +*Testo alternativo dell'immagine: "come duplicare una pivot in C# esempio che mostra le righe della pivot originale e duplicate".* + +## Passo 1: Caricare un workbook Excel C# – Aprire il file + +La prima cosa da fare quando vuoi **load excel workbook c#** è creare un'istanza `Workbook` che punti al tuo file. Questo oggetto ti dà accesso a ogni foglio, cella e pivot all'interno del file. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Perché è importante:** +`Workbook` astrae l'intero file Excel in un modello in‑memoria. Senza caricarlo prima non puoi ispezionare la posizione della pivot o copiare le righe. Inoltre, il costruttore rileva automaticamente il formato del file (XLS, XLSX, CSV, ecc.), quindi non è necessario codice aggiuntivo per il rilevamento del formato. + +## Passo 2: Come copiare le righe – Definire l'area della pivot + +Ora che il workbook è in memoria, dobbiamo indicare ad Aspose.Cells quali righe contengono la pivot. Nel nostro esempio la pivot si trova in **A1:J20**, che corrisponde alle righe **0‑19** (indicizzazione a zero). Avvolgeremo questo in una struttura `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Perché usiamo `CellArea`:** +È un modo leggero per descrivere un blocco rettangolare. Quando in seguito chiami `CopyRows`, il metodo legge questo oggetto per sapere esattamente quali righe duplicare. Se dovessi mai modificare l'intervallo (ad esempio la pivot si espande alla colonna K), devi cambiare solo il valore `endColumn`. + +## Passo 3: Accedere al foglio di lavoro di destinazione + +La maggior parte dei workbook ha un solo foglio, ma l'API funziona allo stesso modo per più fogli. Prendi il primo foglio (indice 0) – è lì che si trova la pivot originale. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Suggerimento professionale:** +Se hai fogli con nome, puoi recuperarli anche per nome: `workbook.Worksheets["Sheet1"]`. Questo aiuta a evitare di codificare a mano gli indici quando la struttura del workbook cambia. + +## Passo 4: Come copiare le righe – Duplicare la tabella pivot + +Ecco il cuore di **how to duplicate pivot**: copiamo le righe contenenti la pivot in una nuova posizione. Nel nostro caso iniziamo dalla riga 31 (indice zero‑based 30). Il metodo `CopyRows` copia *sia* i dati sia la cache della pivot sottostante, quindi le nuove righe si comportano esattamente come quelle originali. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Cosa succede dietro le quinte?** +`CopyRows` clona ogni riga, preservando formule, stili e definizioni della pivot. Poiché la cache della pivot vive a livello di workbook, la pivot duplicata fa automaticamente riferimento alla stessa fonte dati – non è necessaria alcuna configurazione aggiuntiva. + +**Caso particolare – righe nascoste:** +Se alcune delle righe nell'intervallo di origine sono nascoste, rimarranno nascoste dopo la copia. Se desideri renderle visibili, chiama `worksheet.Rows[destRow].IsHidden = false` dopo la copia. + +## Passo 5: Salvare il workbook – Verificare il duplicato + +Infine, scrivi le modifiche su disco. Puoi sovrascrivere il file originale o, più sicuro, salvare con un nuovo nome così da poter confrontare prima/dopo. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Risultato atteso:** +Apri `CopyWithPivot.xlsx`. Troverai la pivot originale in **A1:J20** e una copia identica che inizia in **A31:J50**. Entrambe le pivot possono essere aggiornate indipendentemente, e qualsiasi slicer collegato all'originale funzionerà ancora per la copia perché condividono la stessa cache. + +## Domande comuni e variazioni + +### Posso duplicare più pivot contemporaneamente? + +Assolutamente. Scorri tutte le tabelle pivot (`worksheet.PivotTables`) e copia l'intervallo di ciascuna in una destinazione diversa. Assicurati solo che gli intervalli di destinazione non si sovrappongano. + +### E se il workbook di origine è protetto da password? + +Aspose.Cells ti consente di aprire un file protetto passando la password al costruttore `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Come copiare le righe senza influire sulle formule? + +Se ti servono solo i *valori* (senza formule), usa `CopyRows` con il flag `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### È possibile copiare le righe in un *diverso* workbook? + +Sì. Dopo aver copiato le righe nel foglio di origine, puoi clonare il foglio in un'altra istanza `Workbook` tramite `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Suggerimenti professionali per una copia affidabile di righe in Excel Automation + +- **Convalida l'intervallo** prima di copiare. Un rapido `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` previene errori fuori intervallo. +- **Disattiva il calcolo** durante la copia di grandi intervalli: `workbook.Settings.CalcMode = CalcMode.Manual;` – questo velocizza notevolmente l'operazione. +- **Rilascia gli oggetti** (`workbook.Dispose()`) se stai elaborando molti file in un ciclo per liberare le risorse native. +- **Registra l'operazione** – soprattutto nei pipeline di produzione – così puoi tracciare quali file sono stati elaborati e rilevare i fallimenti in anticipo. + +## Conclusione + +Ora sai **how to duplicate pivot** tabelle in C# usando Aspose.Cells, e hai visto l'intero flusso di lavoro da **load excel workbook c#** a **excel automation copy rows** fino al salvataggio del risultato. L'esempio è autonomo, funziona subito, e può essere esteso per gestire più pivot, file protetti o copie tra workbook. + +Passi successivi? Prova ad adattare lo script per: + +- Aggiornare la pivot duplicata programmaticamente (`pivotTable.RefreshData();`). +- Esportare l'area duplicata in CSV per l'elaborazione successiva. +- Integrare il codice in un'API ASP.NET Core così gli utenti possono caricare un file e ricevere immediatamente una versione con pivot duplicata. + +Buon coding, e che la tua automazione Excel sia sempre fluida! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/row-and-column-management/_index.md b/cells/italian/net/row-and-column-management/_index.md index c36146a67b..c7fc47a942 100644 --- a/cells/italian/net/row-and-column-management/_index.md +++ b/cells/italian/net/row-and-column-management/_index.md @@ -68,6 +68,9 @@ Scopri come eliminare una colonna in un file Excel utilizzando Aspose.Cells per Scopri come eliminare una riga in Excel con Aspose.Cells per .NET. Questa guida dettagliata illustra i prerequisiti, l'importazione del codice e una procedura dettagliata per una manipolazione dei dati senza problemi. ### [Elimina più righe in Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Impara a eliminare più righe in Excel utilizzando Aspose.Cells per .NET. Questa guida dettagliata e passo passo include prerequisiti, esempi di codice e domande frequenti per gli sviluppatori. +### [Aspose Cells elimina righe – Proteggi la riga di intestazione in Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Scopri come eliminare righe mantenendo intatta la riga di intestazione in Excel con Aspose.Cells per .NET. + ### [Inserire una colonna in Aspose.Cells .NET](./insert-column-aspose-cells/) Scopri come inserire una colonna in Excel utilizzando Aspose.Cells per .NET. Segui la nostra semplice guida passo passo per aggiungere una nuova colonna senza problemi. Perfetto per gli sviluppatori .NET. ### [Inserisci una riga in Aspose.Cells .NET](./insert-row-aspose-cells/) diff --git a/cells/italian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/italian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..cb1fead892 --- /dev/null +++ b/cells/italian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,271 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells elimina righe proteggendo la riga di intestazione. Scopri + come recuperare la prima tabella ed eliminare in modo sicuro le righe della tabella + Excel in C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: it +og_description: Aspose Cells elimina le righe proteggendo la riga di intestazione. + Scopri come recuperare la prima tabella ed eliminare in modo sicuro le righe della + tabella Excel in C#. +og_title: Aspose Cells Elimina righe – Proteggi la riga di intestazione in Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Elimina Righe – Proteggi la Riga di Intestazione in Excel +url: /it/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Proteggi la riga di intestazione in Excel + +Hai mai provato a **aspose cells delete rows** da una tabella solo per scoprire che l'intestazione è scomparsa? È una trappola comune quando si manipolano i fogli Excel programmaticamente. In questa guida ti mostreremo una soluzione completa e funzionante che **protege la riga di intestazione**, ti mostra come **retrieve first table**, e elimina in modo sicuro **delete Excel table rows** senza rompere la struttura. + +Copriamo tutto, dal caricamento della cartella di lavoro alla gestione dell'eccezione che Aspose lancia quando si tenta di abbandonare l'intestazione. Alla fine avrai un modello solido da inserire in qualsiasi progetto .NET che utilizza Aspose.Cells. + +--- + +## Passo 1: Carica la cartella di lavoro e recupera la prima tabella + +La prima cosa da fare è aprire la cartella di lavoro e prendere la tabella che vuoi modificare. È qui che entra in gioco la keyword secondaria **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Perché è importante:** +- `Workbook` legge il file senza necessità di Excel installato. +- `worksheet.ListObjects[0]` è il modo più diretto per **retrieve first table**; se hai più tabelle puoi iterare o usare il nome della tabella. + +> **Pro tip:** Se non sei sicuro che un foglio contenga effettivamente una tabella, controlla prima `worksheet.ListObjects.Count` per evitare un `IndexOutOfRangeException`. + +--- + +## Passo 2: Proteggi la riga di intestazione durante l'eliminazione delle righe + +Ora arriva il cuore della questione: **aspose cells delete rows** senza cancellare l'intestazione. Il metodo `DeleteRows` di Aspose accetta un indice di partenza a base zero e un conteggio. Tentare di cancellare l'intestazione (riga 0) genera un'eccezione, che è esattamente ciò che vogliamo evitare. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Spiegazione della logica:** + +| Passo | Motivo | +|------|--------| +| `table.DeleteRows(1, 2);` | L'indice 1 punta alla **seconda** riga (la prima riga di dati). Eliminare due righe rimuove le righe 2‑3 in termini di Excel, lasciando intatta l'intestazione (riga 1). | +| `catch (Exception ex)` | Aspose lancia un'eccezione **solo** quando l'operazione orphanerebbe l'intestazione. Catturarla ti permette di registrare un messaggio amichevole invece di far crashare l'app. | +| `Save` | Persistere le modifiche ti consente di aprire `Result.xlsx` e vedere che l'intestazione è ancora presente. | + +> **E se avessi davvero bisogno di cancellare l'intestazione?** +> Usa `table.ShowHeaders = false;` prima della cancellazione, oppure elimina l'intera tabella e ricreala. Nella maggior parte degli scenari aziendali vorrai **protect header row**. + +--- + +## Passo 3: Verifica il risultato – Output previsto + +Dopo aver eseguito il programma, apri `Result.xlsx`. Dovresti vedere: + +- La prima riga contiene ancora i titoli originali delle colonne. +- Le righe 2‑3 (quelle che abbiamo mirato) sono scomparse, e i dati rimanenti sono stati spostati verso l'alto. + +La console visualizzerà: + +``` +Rows deleted successfully. +``` + +Se per errore hai provato a cancellare l'intestazione (ad es., `table.DeleteRows(0, 1);`), l'output sarebbe: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Quel messaggio conferma che la protezione integrata di Aspose sta facendo il suo lavoro. + +--- + +## Passo 4: Metodi alternativi per **Delete Excel Table Rows** + +A volte serve più controllo—ad esempio cancellare righe in base a una condizione, o rimuovere righe non contigue. Ecco due pattern rapidi che mantengono l'intestazione al sicuro. + +### 4.1 Elimina righe tramite filtro dati + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Eliminazione massiva usando un intervallo + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Entrambi gli snippet rispettano la regola **protect header row** perché l'indice di partenza non scende mai sotto 1. + +--- + +## Passo 5: Errori comuni e come evitarli + +| Problema | Perché accade | Soluzione | +|----------|----------------|-----------| +| Cancellazione accidentale dell'intestazione | Uso di `0` come indice di partenza | Iniziare sempre da `1` per le righe di dati, o verificare prima `table.ShowHeaders`. | +| `IndexOutOfRangeException` quando il foglio non ha tabelle | Presumere che esista una tabella | Verificare `worksheet.ListObjects.Count > 0` prima di accedere a `[0]`. | +| Modifiche non salvate | Dimenticare di chiamare `Save` | Chiamare `workbook.Save` dopo le modifiche. | +| Eliminare righe nel mezzo sposta gli indici, causando salti | Iterazione in avanti durante l'eliminazione | Iterare **all'indietro** o raccogliere prima le righe da eliminare. | + +--- + +## Passo 6: Metti tutto insieme – Esempio completo funzionante + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Esegui questo programma, apri `Result.xlsx` e vedrai l'intestazione intatta mentre le righe selezionate sono scomparse. Questa è la **complete, self‑contained solution** per **aspose cells delete rows** senza sacrificare l'intestazione. + +--- + +## Conclusione + +Abbiamo appena dimostrato come **aspose cells delete rows** proteggendo la **header row**, come **retrieve first table**, e diversi modi per **delete excel table rows** in sicurezza. I punti chiave sono: + +- Inizia sempre le cancellazioni dall'indice 1 per mantenere l'intestazione intatta. +- Usa `try/catch` per gestire l'eccezione di protezione integrata di Aspose. +- Verifica l'esistenza della tabella prima di operare, e itera all'indietro quando rimuovi righe in modo condizionale. + +Pronto a fare il salto di livello? Prova a combinare questo approccio con le API di styling di **Aspose Cells** per evidenziare le righe cancellate prima della rimozione, o automatizza il processo su più fogli. Le possibilità sono infinite, e ora hai un modello affidabile su cui costruire. + +Se questo tutorial ti è stato utile, metti un like, condividilo con i colleghi, o lascia un commento con le tue soluzioni per casi particolari. Buon coding! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/italian/net/saving-and-exporting-excel-files-with-options/_index.md index 387de291ea..8d8b43cb05 100644 --- a/cells/italian/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/italian/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Scopri come gestire gli avvisi durante il caricamento di file Excel in .NET util Scopri come specificare le proprietà del documento, quali versione, autore e titolo, in un file Excel a livello di programmazione utilizzando Aspose.Cells per .NET con istruzioni dettagliate. ### [Taglio delle righe e delle colonne vuote iniziali durante l'esportazione](./trimming-leading-blank-rows-and-columns/) Semplifica le tue esportazioni CSV eliminando le righe e le colonne vuote iniziali con Aspose.Cells per .NET. Ottieni dati puliti in pochi passaggi. +### [Come salvare una cartella di lavoro in C# – Guida completa all'automazione di Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Scopri come salvare una cartella di lavoro in C# con Aspose.Cells, seguendo una guida completa all'automazione di Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/italian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..f670d1e331 --- /dev/null +++ b/cells/italian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-22 +description: Come salvare una cartella di lavoro in C# usando Aspose.Cells—guida passo + passo che copre come caricare Excel, creare un foglio, riutilizzare il foglio e + generare un report. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: it +og_description: Come salvare una cartella di lavoro in C# con Aspose.Cells. Scopri + come caricare Excel, creare un foglio, riutilizzare il foglio e generare un report + in un unico tutorial. +og_title: Come salvare una cartella di lavoro in C# – Guida completa all’automazione + di Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Come salvare una cartella di lavoro in C# – Guida completa all'automazione + di Excel +url: /it/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come Salvare un Workbook in C# – Guida Completa all'Automazione di Excel + +Ti sei mai chiesto **come salvare un workbook** in C# dopo aver elaborato dei dati? Non sei solo. La maggior parte degli sviluppatori si blocca quando il report sembra perfetto sullo schermo ma rifiuta di scriversi su disco. In questo tutorial percorreremo un esempio completo che non solo ti mostra **come salvare un workbook**, ma copre anche **come caricare Excel**, **come creare un foglio**, **come riutilizzare un foglio**, e **come generare un report**—tutto con Aspose.Cells. + +Pensalo come una chiacchierata durante la pausa caffè, in cui tiro fuori il codice dal mio laptop e spiego ogni riga. Alla fine avrai un programma eseguibile che carica un modello, inietta dati tramite SmartMarker, riutilizza il nome di un foglio di dettaglio esistente e infine scrive il file nella tua cartella. Nessun mistero, solo passaggi chiari da copiare‑incollare. + +## Cosa Ti Serve + +- **Aspose.Cells for .NET** (ultima versione al 2026). Puoi ottenerlo da NuGet con `Install-Package Aspose.Cells`. +- Un ambiente di sviluppo .NET (Visual Studio, Rider o VS Code con l’estensione C# vanno bene). +- Un file modello Excel di base chiamato `MasterTemplate.xlsx` posizionato in una cartella di tua scelta. +- Conoscenze minime di C#—se hai scritto un `Console.WriteLine` prima, sei pronto. + +> **Pro tip:** Tieni il tuo modello in una cartella *Resources* separata e impostala su “Copy if newer” così il percorso rimane coerente tra le build. + +Ora, immergiamoci nel codice. + +## Step 1: How to Load Excel – Open the Template Workbook + +La prima cosa da fare è caricare il workbook in memoria. Aspose.Cells lo rende una singola riga, ma capire il perché aiuta quando devi fare troubleshooting in seguito. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Perché è importante:** Caricare il workbook ti dà accesso a tutti i fogli, stili e intervalli nominati all’interno del modello. Se il file non viene trovato, Aspose lancia una `FileNotFoundException`, quindi verifica il percorso. +- **Caso limite:** Se il modello è protetto da password, passa la password al costruttore `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Step 2: How to Reuse Sheet – Configure SmartMarker Options + +SmartMarker può creare automaticamente un nuovo foglio di dettaglio, ma potresti già avere un foglio chiamato **Detail**. Per evitare conflitti diciamo al processore di riutilizzare quel nome. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Perché è importante:** Senza questa opzione Aspose aggiungerebbe un suffisso numerico (es. “Detail1”) che può rompere macro o formule a valle che si aspettano un nome di foglio fisso. +- **E se il foglio non esiste?** Aspose lo creerà per te—quindi lo stesso codice funziona sia che il foglio sia presente sia che non lo sia. + +## Step 3: How to Create Sheet – Prepare the Data Source + +Anche se qui non aggiungiamo manualmente un foglio, i dati che fornisci a SmartMarker determinano se viene creato un nuovo foglio. Costruiamo un semplice oggetto anonimo che simula una lista di ordini. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Perché è importante:** SmartMarker scansiona il modello alla ricerca di marker come `&=Header` e `&=Items.Id`. La struttura di `orderData` deve corrispondere esattamente a quei marker, altrimenti il processore li ignora silenziosamente. +- **Variante:** Se prendi i dati da un database, sostituisci il tipo anonimo con una lista di DTO o un `DataTable`. Il processore gestisce entrambi. + +## Step 4: How to Generate Report – Process the SmartMarker + +Ora associamo i dati al modello. Il processore attraversa il primo foglio di lavoro, sostituisce i marker e costruisce il foglio di dettaglio. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Perché è importante:** Questa singola riga fa il lavoro pesante—popola l’intestazione, itera su `Items` e rispetta il `DetailSheetNewName` impostato prima. +- **Domanda comune:** *E se ho più fogli con marker?* Loop attraverso ogni foglio e chiama `SmartMarkerProcessor.Process` singolarmente. + +## Step 5: How to Save Workbook – Persist the Resulting File + +Infine, scriviamo il workbook modificato su disco. È il momento in cui **come salvare un workbook** diventa concreto. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Perché è importante:** Il metodo `Save` supporta molti formati (`.xlsx`, `.xls`, `.csv`, `.pdf`, ecc.). Per default scrive un file Excel, ma puoi passare un oggetto `SaveOptions` per cambiare l’output. +- **Caso limite:** Se il file di destinazione è aperto in Excel, `Save` lancia una `IOException`. Assicurati di chiudere eventuali istanze o usa un nome file unico ad ogni esecuzione. + +![Esempio di Come Salvare un Workbook in C#](/images/how-to-save-workbook-csharp.png "Come Salvare un Workbook in C# – panoramica visiva del processo") + +### Esempio Completo Funzionante + +Mettendo tutto insieme, ecco un’app console autonoma che puoi compilare ed eseguire: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Output previsto:** Dopo l’esecuzione troverai `SmartMarkerWithDupDetail.xlsx` in `YOUR_DIRECTORY`. Aprilo e dovresti vedere: + +- L’intestazione originale popolata con “Orders”. +- Un nuovo (o riutilizzato) foglio chiamato **Detail** contenente due righe: `Id=1, Qty=5` e `Id=2, Qty=3`. + +Se il foglio **Detail** esisteva già, il suo contenuto verrà sovrascritto con i nuovi dati—nessun foglio extra che ingombra il tuo file. + +## Frequently Asked Questions (FAQ) + +| Domanda | Risposta | +|----------|--------| +| *Posso salvare in PDF invece di XLSX?* | Sì. Sostituisci `workbook.Save("file.xlsx")` con `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Cosa succede se il mio modello ha più sezioni SmartMarker?* | Chiama `SmartMarkerProcessor.Process` su ogni foglio che contiene marker, oppure passa una collezione di oggetti dati che corrispondono a ciascuna sezione. | +| *C’è un modo per aggiungere dati invece di sovrascrivere il foglio Detail?* | Usa `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (disponibile nelle versioni più recenti di Aspose). | +| *Devo liberare il Workbook?* | La classe `Workbook` implementa `IDisposable`. Avvolgila in un blocco `using` per una gestione pulita delle risorse. | + +## Conclusione + +Abbiamo appena coperto **come salvare un workbook** in C# dall’inizio alla fine, dimostrando l’intero flusso: **come caricare Excel**, **come creare un foglio** (implicitamente via SmartMarker), **come riutilizzare un foglio**, e **come generare un report**. Il codice è pronto per essere inserito in qualsiasi progetto .NET, e le spiegazioni dovrebbero darti abbastanza contesto per adattarlo a scenari più complessi—come report multi‑foglio, formattazione condizionale o esportazione in PDF. + +Pronto per la prossima sfida? Prova ad aggiungere un grafico che visualizzi le quantità degli ordini, o cambia il formato di output in CSV per l’elaborazione a valle. Gli stessi principi—caricamento, elaborazione e salvataggio—si applicano sempre, così potrai riutilizzare questo pattern in molti compiti di reporting. + +Se incontri un problema o hai idee per estensioni, lascia un commento. Buon coding, e goditi l’esperienza fluida di poter finalmente **save workbook** esattamente come ti serve! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/smart-markers-dynamic-data/_index.md b/cells/italian/net/smart-markers-dynamic-data/_index.md index d4ae6dde9a..9e5c4fa189 100644 --- a/cells/italian/net/smart-markers-dynamic-data/_index.md +++ b/cells/italian/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Sfrutta la potenza di Aspose.Cells con questo tutorial dettagliato sull'utilizzo Sfrutta il potenziale dei report di Excel con Aspose.Cells, gestendo senza sforzo gli oggetti annidati tramite gli Smart Marker in una guida dettagliata. ### [Implementare array di variabili con marcatori intelligenti Aspose.Cells](./variable-array-smart-markers/) Sfrutta la potenza di Aspose.Cells. Scopri come implementare matrici di variabili con Smart Markers passo dopo passo per una generazione fluida di report Excel. +### [Come generare un report Excel in C# – Guida completa usando SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/italian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..c9774a2b59 --- /dev/null +++ b/cells/italian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-22 +description: Come generare un report Excel in C# con un modello master‑detail. Impara + a popolare rapidamente un modello Excel in C#, usando SmartMarker per fogli ripetibili. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: it +og_description: Come generare un report Excel in C# utilizzando un modello riutilizzabile. + Questa guida passo passo ti mostra come popolare un modello Excel in C# con dati + master‑detail. +og_title: Come generare un report Excel in C# – Tutorial completo di SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Come generare un report Excel in C# – Guida completa all'uso di SmartMarker +url: /it/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come generare un report Excel in C# – Guida completa con SmartMarker + +Ti sei mai chiesto **come generare un report Excel** in C# senza scrivere codice infinito cella‑per‑cella? Non sei l’unico. La maggior parte degli sviluppatori si blocca quando ha bisogno di un report raffinato, a più fogli, che rifletta relazioni master‑detail—pensa a ordini e righe di ordine—ma non vuole reinventare la ruota ogni volta. + +La buona notizia? Con un modello Excel pronto all’uso e il motore **SmartMarker** di Aspose.Cells, puoi **populate Excel template C#** in poche righe. In questo tutorial percorreremo uno scenario reale, spiegheremo perché ogni passaggio è importante e ti forniremo un esempio completo e funzionante da copiare‑incollare subito. + +> **What you'll get:** un report Excel master‑detail in cui ogni ordine genera il proprio foglio di lavoro, tutto alimentato da semplici oggetti C#. Nessun ciclo manuale sulle celle, nessuna formula fragile—solo codice pulito e manutenibile. + +--- + +## Prerequisites + +Prima di iniziare, assicurati di avere: + +- **.NET 6.0** (o successivo) installato – il codice è destinato a .NET 6 ma funziona anche su .NET Framework 4.7+. +- **Aspose.Cells for .NET** pacchetto NuGet (`Install-Package Aspose.Cells`) – fornisce le classi `Workbook`, `SmartMarkerProcessor` e correlate. +- Un file Excel chiamato **MasterDetailTemplate.xlsx** collocato in `YOUR_DIRECTORY`. Deve contenere un blocco SmartMarker come `{{Orders.OrderId}}` nel primo foglio e un blocco annidato `{{Orders.Items.Prod}}` per le righe di dettaglio. +- Una conoscenza di base dei tipi anonimi C# – li useremo per modellare ordini e articoli. + +Se qualcuno di questi punti ti è poco familiare, non preoccuparti. Menzioneremo alternative (ad esempio, usando EPPlus) più avanti, ma il concetto di base rimane lo stesso. + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +La prima cosa che facciamo è aprire il file modello. Pensa al modello come a uno scheletro; SmartMarker lo riempirà successivamente con dati reali. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Why this matters:** Separando il layout (il modello) dai dati (gli oggetti C#), mantieni felici sia i designer sia gli sviluppatori. I designer possono modificare font, colori o formule senza toccare il codice. + +--- + +## Step 2: Build the Master‑Detail Data Source + +Successivamente, creiamo i dati che popoleranno il modello. Per un tipico report di ordini, hai una collezione di ordini, ognuno con la propria collezione di articoli. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Usa classi tipizzate invece di tipi anonimi se devi riutilizzarle in più report. L’approccio anonimo mantiene l’esempio conciso. + +**Why this matters:** SmartMarker funziona abbinando i nomi delle proprietà (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) ai segnaposto nel modello. La gerarchia deve corrispondere esattamente, altrimenti il motore ignorerà quelle sezioni. + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +Per impostazione predefinita SmartMarker scrive tutte le righe in un unico foglio. Vogliamo che ogni ordine abbia il proprio foglio di lavoro, perfetto per la stampa o per l’invio di PDF per ordine in seguito. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Why this matters:** `EnableRepeatingSheet` elimina la necessità di clonare manualmente i fogli. Il motore copia il foglio originale, inserisce i dati dell’ordine e rinomina automaticamente il foglio (di solito usando il valore della prima colonna). + +--- + +## Step 4: Process the Template with Your Data + +Ora colleghiamo tutto. Il `SmartMarkerProcessor` scorre la cartella di lavoro, sostituisce i tag e crea nuovi fogli secondo le istruzioni. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Why this matters:** Questa singola riga esegue il lavoro pesante—analizza il modello, itera sulle collezioni e gestisce tabelle annidate. È il cuore del **populate Excel template C#** senza alcun ciclo manuale. + +--- + +## Step 5: Save the Finished Report + +Infine, scrivi la cartella di lavoro popolata su disco. Puoi anche trasmetterla direttamente come risposta HTTP per le app web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Why this matters:** Salvare su file ti fornisce un artefatto tangibile che puoi aprire in Excel, condividere con gli stakeholder o inviare a processi successivi come la conversione in PDF. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Di seguito trovi il programma completo, incluse le direttive `using` e il metodo `Main`. Inseriscilo in un’app console, aggiusta i percorsi dei file e avvialo. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +Quando apri `MasterDetailResult.xlsx` vedrai: + +- **Foglio “Order_1”** – contiene l’intestazione dell’Ordine 1 e due righe per i prodotti A e B. +- **Foglio “Order_2”** – contiene l’intestazione dell’Ordine 2 e una sola riga per il prodotto C. +- Tutte le formule, la formattazione e i grafici del modello originale sono preservati. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Testo alternativo immagine: report Excel generato con fogli separati per ogni ordine, esempio di cartella di lavoro popolata usando C# e SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +Imposta `EnableRepeatingSheet = true` **solo** sul foglio che contiene il blocco master. Gli altri fogli rimarranno intatti, così potrai mantenere una pagina di riepilogo nel modello originale. + +### Can I use a DataTable instead of anonymous objects? + +Assolutamente. SmartMarker funziona con qualsiasi oggetto che implementa `IEnumerable`. Sostituisci semplicemente il tipo anonimo con un `DataTable` e assicurati che i nomi delle colonne corrispondano ai tag. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +Implementa un’interfaccia personalizzata `ISmartMarkerSheetNaming` (o manipola `workbook.Worksheets` dopo l’elaborazione). La maggior parte degli sviluppatori rinomina i fogli in base al valore di una cella: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker consente delimitatori personalizzati tramite `SmartMarkerOptions`. Per esempio, per usare `<< >>` invece di `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache the template** in memory se generi molti report per richiesta; il caricamento da disco ad ogni volta aggiunge latenza. +- **Combine with PDF conversion** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) per output adatti alle email. +- **Parameterize the file paths** usando file di configurazione o variabili d’ambiente per rendere la soluzione portabile tra dev, test e prod. +- **Unit‑test the data layer** separatamente; SmartMarker è deterministico, quindi devi solo verificare che i dati forniti corrispondano allo schema previsto. + +--- + +## Conclusion + +Abbiamo coperto **come generare un report Excel** in C# end‑to‑end, dal caricamento di un modello abilitato a SmartMarker al salvataggio di una cartella di lavoro a più fogli che riflette relazioni master‑detail. **Populate Excel template C#** con poche righe di codice ti permette di evitare logiche fragili cella‑per‑cella e di dare libertà ai designer di definire l’aspetto finale. + +Prossimi passi, potresti esplorare: + +- Usare **populate Excel template C#** con grafici che si aggiornano automaticamente per foglio. +- Integrare **excel smartmarker c#** con ASP.NET Core per trasmettere i report direttamente ai browser. +- Automatizzare pipeline **c# excel automation** che estraggono dati da API o database. + +Provalo, modifica il modello e osserva quanto rapidamente puoi trasformare dati grezzi in un report Excel professionale. Hai domande o un caso d’uso interessante? Lascia un commento qui sotto—buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/italian/net/tables-and-lists/_index.md b/cells/italian/net/tables-and-lists/_index.md index c2f6f1409b..114f06cf5f 100644 --- a/cells/italian/net/tables-and-lists/_index.md +++ b/cells/italian/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Converti facilmente le tabelle in intervalli in Excel utilizzando Aspose.Cells p Sfrutta la potenza di Aspose.Cells per .NET. Impara a leggere e scrivere tabelle con origini dati di query in questa guida dettagliata passo dopo passo. ### [Imposta commento di tabella o elenco in Excel](./setting-comment-of-table-or-list/) Scopri come impostare commenti per le tabelle in Excel utilizzando Aspose.Cells per .NET con la nostra semplice guida passo passo. +### [Creare una tabella Excel in C# – Guida passo‑passo](./create-excel-table-in-c-step-by-step-guide/) +Impara a creare una tabella Excel in C# con Aspose.Cells passo dopo passo, semplificando l'importazione e la gestione dei dati. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/italian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/italian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..83680ef374 --- /dev/null +++ b/cells/italian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Crea rapidamente una tabella Excel in C#. Scopri come aggiungere una + tabella, definire l’intervallo della tabella, nascondere l’intestazione della tabella + e disabilitare il filtro della tabella con un esempio di codice completo. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: it +og_description: Crea una tabella Excel in C# con un esempio chiaro. Scopri come aggiungere + la tabella, definire l’intervallo, nascondere l’intestazione e disabilitare il filtro + in poche righe. +og_title: Crea una tabella Excel in C# – Guida completa alla programmazione +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Crea una tabella Excel in C# – Guida passo‑passo +url: /it/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea una tabella Excel in C# – Guida passo‑passo + +Hai mai avuto bisogno di **create Excel table** programmaticamente usando C#? Creare una tabella Excel può essere un gioco da ragazzi quando conosci i passaggi giusti. In questo tutorial percorreremo un esempio completo e eseguibile che mostra **how to add table**, **define table range**, **hide table header**, e persino **disable table filter** – tutto senza uscire dal tuo IDE. + +Se hai mai avuto problemi con l'interfaccia AutoFilter che appare quando non la desideri, sei nel posto giusto. Alla fine di questa guida avrai uno snippet pronto‑da‑eseguire che produce un workbook pulito chiamato *TableNoFilter.xlsx* e comprenderai perché ogni riga è importante. + +## Cosa imparerai + +- Come **create Excel table** da zero con Aspose.Cells. +- La sintassi esatta per **define table range** (A1:D5 nel nostro caso). +- Come abilitare la riga di intestazione in modo che l'interfaccia filtro integrata appaia. +- Il trucco per **hide table header** e **disable table filter** quando non ti servono più. +- Un programma C# completo, pronto per copia‑incolla, che puoi eseguire subito. + +### Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche con .NET Framework 4.7+). +- Aspose.Cells per .NET installato via NuGet (`Install-Package Aspose.Cells`). +- Familiarità di base con C# e Visual Studio (o qualsiasi IDE preferisci). + +--- + +## Passo 1: Configura il progetto e importa i namespace + +Prima di poter **create Excel table**, ti serve un progetto console che faccia riferimento ad Aspose.Cells. Apri un terminale ed esegui: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Ora apri *Program.cs* e aggiungi le dichiarazioni `using` richieste: + +```csharp +using System; +using Aspose.Cells; +``` + +Queste importazioni ti danno accesso alle classi `Workbook`, `Worksheet`, `CellArea` e `ListObject` che alimentano il resto del tutorial. + +## Passo 2: Inizializza un nuovo Workbook e ottieni il primo Worksheet + +Creare un workbook nuovo è il primo passo logico. Pensa al workbook come al contenitore del file Excel, e al worksheet come al foglio individuale dove inseriremo la nostra tabella. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Perché è importante:** Un `Workbook` appena creato parte con un unico foglio vuoto. Prelevando `Worksheets[0]` ci assicuriamo di lavorare sul foglio predefinito senza doverne creare uno manualmente. + +## Passo 3: Definisci l'intervallo della tabella (A1:D5) + +Nel gergo di Excel, una *table* vive all'interno di un blocco rettangolare di celle. La struct `CellArea` ci permette di individuare quel blocco. Qui tratteremo **define table range** per le celle da A1 a D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Suggerimento:** Se mai ti servisse un intervallo dinamico, puoi calcolare `endRow` e `endColumn` in base alla lunghezza dei dati. L'indicizzazione a base zero è una fonte comune di errori di off‑by‑one, quindi ricontrolla i tuoi numeri. + +## Passo 4: Aggiungi la tabella e abilita la riga di intestazione + +Ora arriva il cuore del tutorial: **how to add table** al worksheet. La collezione `ListObjects` gestisce le tabelle, e impostare `ShowHeaders = true` inietta automaticamente l'interfaccia AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Spiegazione:** +> - `Add(tableRange, true)` crea un nuovo `ListObject` (cioè una tabella Excel) all'interno dell'intervallo specificato. +> - Il flag `true` indica ad Aspose.Cells che la prima riga dell'intervallo deve essere trattata come intestazione. +> - Impostare `ShowHeaders` a `true` rende l'intestazione visibile e attiva l'interfaccia filtro integrata. + +A questo punto, se apri il workbook generato, vedrai una tabella ben formattata con le frecce di filtro su ogni intestazione di colonna. + +## Passo 5: Nascondi la riga di intestazione e disabilita l'AutoFilter + +A volte vuoi i dati senza il disordine dell'interfaccia. Forse stai esportando un report pulito dove i filtri non sono necessari. Ecco la tecnica per **hide table header** e **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Perché lo faresti:** +> - `ShowHeaders = false` rimuove la riga di intestazione visiva, trasformando la tabella in un semplice blocco di dati. +> - Impostare `AutoFilter = null` elimina l'oggetto filtro nascosto, assicurando che non rimanga alcuna logica di filtro residua. Questo è ciò che intendiamo con **disable table filter**. + +## Passo 6: Salva il workbook su disco + +Infine, scriviamo il file in una posizione a tua scelta. Sostituisci `"YOUR_DIRECTORY"` con un percorso reale sul tuo computer. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Quando esegui il programma, dovresti vedere: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Aprendo il file si rivela un foglio con il blocco di dati (senza intestazione, senza frecce di filtro). Questo è il ciclo completo — da **create Excel table** a **disable table filter**. + +--- + +## Esempio completo funzionante (pronto per copia‑incolla) + +Di seguito trovi l'intero programma, pronto per la compilazione. Basta sostituire la directory segnaposto con un percorso valido. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Risultato atteso:** Un file chiamato *TableNoFilter.xlsx* contenente un semplice intervallo di dati A1:D5 senza riga di intestazione visibile e senza menu a discesa dei filtri. + +--- + +## Domande frequenti & casi particolari + +### E se ho bisogno di più tabelle nello stesso worksheet? + +Basta ripetere **Step 3** con un nuovo `CellArea` e un nuovo `ListObject`. Ogni tabella mantiene le proprie impostazioni di intestazione e filtro, così puoi nasconderne una e mantenerne un'altra visibile. + +### Posso stilizzare la tabella (righe a bande, colori) prima di nascondere l'intestazione? + +Assolutamente. Il `ListObject` espone una proprietà `TableStyleType`. Per esempio: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Puoi applicare lo stile **prima** di nascondere l'intestazione; la formattazione visiva rimarrà intatta. + +### E se devo mantenere l'intestazione ma nascondere solo le frecce del filtro? + +Imposta `ShowHeaders = true` (mantieni la riga) e poi cancella il filtro: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Questo soddisfa il requisito di **disable table filter** senza perdere le etichette delle colonne. + +### Funziona solo con file .xlsx? + +Aspose.Cells rileva automaticamente il formato in base all'estensione del file che passi a `Save`. Puoi anche esportare in `.xls`, `.csv`, o persino `.pdf` con un'estensione diversa. + +--- + +## Conclusione + +Abbiamo appena coperto tutto ciò di cui hai bisogno per **create Excel table** in C# usando Aspose.Cells, da **define table range** a **hide table header** e **disable table filter**. Il codice è breve, chiaro e pronto per l'uso in produzione. + +Successivamente, potresti esplorare **how to add table** con dati dinamici, applicare stili personalizzati, o esportare lo stesso workbook in PDF. Ognuno di questi argomenti si basa sulla base che hai appena appreso, quindi sentiti libero di sperimentare e adattare lo snippet ai tuoi progetti. + +Hai un trucco da condividere? Lascia un commento qui sotto, e buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/converting-excel-files-to-other-formats/_index.md b/cells/japanese/net/converting-excel-files-to-other-formats/_index.md index d90421e8a9..51c0a58ac9 100644 --- a/cells/japanese/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/japanese/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Aspose.Cells for .NET を使用して、Excel ファイルをアーカイブ用 Aspose.Cellsを使用して、.NETでプログラム的にJSONをCSVに変換する方法を学びましょう。ステップバイステップガイドに従って、シームレスなデータ変換を実現しましょう。 ### [.NET でプログラム的に Excel ファイルを PPTX に変換する](./converting-excel-file-to-pptx/) このステップバイステップ ガイドでは、Aspose.Cells for .NET を使用してプログラムによって Excel ファイルを PowerPoint プレゼンテーション (PPTX) に変換する方法を学習します。 +### [Excel を PowerPoint にエクスポート – 完全 C# ガイド](./export-excel-to-powerpoint-complete-c-guide/) +Aspose.Cells for .NET を使用して、Excel データを PowerPoint スライドに変換する手順を詳しく解説します。 +### [.NET でプログラム的に Excel の印刷範囲を設定し PowerPoint にエクスポートする – ステップバイステップ ガイド](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Excel の印刷範囲を設定し、PowerPoint スライドへエクスポートする手順をステップバイステップで解説します。 ### [.NET でプログラム的に出力 HTML に HTML CrossType を指定する](./specifying-html-crosstype-in-output-html/) Aspose.Cells for .NETでHTML CrossTypeを指定する方法を学びましょう。ステップバイステップのチュートリアルに従って、ExcelファイルをHTMLに正確に変換しましょう。 ### [.NET でプログラム的に数値スプレッドシートを読み取る](./reading-numbers-spreadsheet/) diff --git a/cells/japanese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/japanese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..93b1813df3 --- /dev/null +++ b/cells/japanese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: ExcelをPowerPointにエクスポートする方法、印刷範囲を設定する方法、編集可能なグラフやOLEオブジェクトを含むPPTXとしてExcelを保存する方法を、数ステップで学びましょう。 +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: ja +og_description: Excel を PowerPoint にすばやくエクスポートします。このチュートリアルでは、Excel の印刷範囲の設定方法と、編集可能なチャートや + OLE オブジェクトを含む PPTX として Excel を保存する方法を紹介します。 +og_title: ExcelからPowerPointへエクスポート – 完全なC#ガイド +tags: +- Aspose.Cells +- C# +- Office Automation +title: Excel から PowerPoint へエクスポート – 完全 C# ガイド +url: /ja/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel を PowerPoint にエクスポート – 完全 C# ガイド + +**Excel を PowerPoint にエクスポート**したいですか?ここが正解です。週次の営業デッキを作成する場合でも、レポートパイプラインを自動化する場合でも、Excel のワークシートを PowerPoint のスライドデッキに変換すれば、コピー&ペースト作業に費やす時間を何時間も削減できます。 + +このチュートリアルでは、**export excel to powerpoint** だけでなく、**set print area Excel** と **save excel as pptx** の方法も示すハンズオン例を通して、スライド上のチャートや OLE オブジェクトが完全に編集可能な状態で保持される手順を解説します。最後まで実行すれば、手動で調整することなくプロフェッショナルな `.pptx` ファイルを生成できる C# プログラムが手に入ります。 + +## 必要な環境 + +- **.NET 6+**(最近の .NET ランタイムであればどれでも可;コードは C# 10 構文を使用) +- **Aspose.Cells for .NET** – エクスポートを実現するライブラリ。NuGet から取得できます(`Install-Package Aspose.Cells`)。 +- 少なくとも 1 つのチャートまたは OLE オブジェクトを含む Excel ワークブック(サンプルファイル `ChartAndOle.xlsx` をコードで使用)。 +- お好みの IDE(Visual Studio、Rider、VS Code など)。 + +以上です。COM インタープロや Office のインストールは不要です。 + +> **なぜライブラリを使うのか?** +> 組み込みの Office Interop は脆弱で、サーバーに Office が必要になり、ベクターベースで編集可能な形状が欲しいときにラスタ画像が生成されがちです。Aspose.Cells は重い処理をすべて担い、PowerPoint でもすべてを編集可能な状態で保持します。 + +--- + +## Step 1: Load the Excel Workbook + +まずソースファイルをメモリに読み込みます。`Workbook` クラスは Excel ファイル全体を抽象化し、ワークシート、チャート、OLE オブジェクトへのアクセスを提供します。 + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**重要なポイント:** ワークブックの読み込みは全工程の基盤です。パスが間違っている、またはファイルが破損していると、以降のパイプラインは実行されません。`try…catch` ブロックにより、クラッシュではなくフレンドリーなエラーメッセージが表示されます。 + +--- + +## Step 2: Set the Print Area in Excel + +エクスポート前に、出力範囲を特定の領域に限定したいことが多いです。ここで **set print area excel** が活躍します。印刷領域を設定することで、Aspose.Cells に対し、どのセル(および関連オブジェクト)をスライドに表示すべきかを正確に指示できます。 + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **プロのコツ:** 複数のワークシートがある場合は、エクスポート対象の各シートに対して `PrintArea` の割り当てを繰り返してください。印刷領域を設定しないとシート全体がエクスポートされ、PowerPoint ファイルが肥大化します。 + +--- + +## Step 3: Configure Export Options – Keep Charts & OLE Editable + +Aspose.Cells には豊富な `ImageOrPrintOptions` オブジェクトがあります。`ExportChartObjects` と `ExportOleObjects` を切り替えることで、チャートのベクタ特性と OLE オブジェクトのライブ編集性を保持します(埋め込み Word 文書や PDF など)。 + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**内部で何が起きているか?** +`ExportChartObjects` が `true` の場合、Aspose はチャートを PowerPoint のネイティブチャート形状に変換し、系列、軸、書式設定を保持します。`ExportOleObjects` を有効にすると、埋め込みオブジェクトは OLE フレームとして挿入され、PowerPoint でダブルクリックすると元のアプリケーション(Word、Excel など)が開き、直接編集できます。 + +--- + +## Step 4: Save the Worksheet as an Editable PowerPoint File + +ここまでの設定をまとめて実行します。`Save` メソッドは、構成したオプションを使用して `.pptx` ファイルを書き出します。結果として、各ワークシートが 1 枚のスライド(印刷領域が複数ページに跨る場合は複数スライド)になります。 + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### 期待される結果 + +- **ファイルの場所:** `C:\MyProjects\EditableChartOle.pptx` +- **内容:** + - Excel で表示されている範囲 `A1:H30` がそのままスライドに表示されます。 + - すべてのチャートは PowerPoint のチャートオブジェクトとして保持され、棒グラフをクリックしてデータを編集できます。 + - OLE オブジェクト(例: 埋め込み Word 文書)はスライド上から直接開いて編集可能です。 + +PowerPoint で PPTX を開くと、ラスタ画像ではなく完全に編集可能なコンポーネントだけが表示されたクリーンなスライドが確認できるはずです。 + +--- + +## Edge Cases & Variations + +### Multiple Worksheets → Multiple Slides +各ワークシートを個別のスライドにしたい場合は、`workbook.Worksheets` をループし、特定のシートインデックスを対象とした `SheetToImageOptions` を指定して `Save` を呼び出します。Aspose が自動的にイテレーションごとに新しいスライドを生成します。 + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Large Ranges & Performance +非常に大きな印刷領域(例: `A1:Z1000`)をエクスポートするとメモリ使用量が増加します。対策としては以下を検討してください。 +- 範囲を小さなチャンクに分割し、別々のスライドとしてエクスポートする。 +- `OutOfMemoryException` が発生した場合は、`WorkbookSettings` の `MemorySetting` を増やす。 + +### Compatibility Concerns +生成された PPTX は PowerPoint 2016 以降で動作します。古いバージョンでも開くことは可能ですが、一部高度なチャート機能が失われる可能性があります。広く配布する場合は、対象となる Office バージョンで必ずテストしてください。 + +--- + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **ヒント:** ハードコードされたパスは設定値やコマンドライン引数に置き換えると、より柔軟なツールになります。 + +--- + +## Frequently Asked Questions + +**Q: 周囲のセルを除いてチャートだけをエクスポートできますか?** +A: はい。`ExportChartObjects` のみを使用し、印刷領域をチャートの境界範囲に設定すれば、チャートだけがスライドの中心に表示されます。 + +**Q: ワークブックにマクロが含まれている場合はどうなりますか?** +A: Aspose.Cells はエクスポート時に VBA マクロを無視します。PowerPoint でマクロ機能が必要な場合は、PowerPoint VBA やアドインで再実装する必要があります。 + +**Q: Linux/macOS でも動作しますか?** +A: 完全に対応しています。Aspose.Cells は純粋な .NET ライブラリなので、.NET ランタイムさえあればクロスプラットフォームで実行可能です。 + +--- + +## Conclusion + +これで **export Excel to PowerPoint** と同時に **set print area excel** と **save excel as pptx** を行い、チャートや OLE オブジェクトを完全に編集可能な状態で保持する方法を習得しました。重要な手順は、ワークブックの読み込み、印刷領域の設定、`ImageOrPrintOptions` の構成、そして PPTX の保存です。 + +ここからさらにできること: +- 複数のワークシートを 1 つのデッキにエクスポート +- カスタムスライドタイトルやノートをプログラムで追加 +- PPTX を PDF に変換して配布(`SaveFormat.Pdf` を使用) + +コードを実行して印刷領域を調整すれば、Excel のデータが魔法のように PowerPoint に現れます—手動のコピー&ペーストは不要です。問題が発生したら Aspose.Cells のドキュメントを確認するか、下のコメント欄に質問を残してください。Happy coding! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/japanese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..95c1ac164c --- /dev/null +++ b/cells/japanese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-22 +description: Excelで印刷範囲を設定し、編集可能なシェイプ付きでExcelをPowerPointに変換します。タイトル行を繰り返す方法、ExcelからPowerPointを作成する方法、Excelをpptxにエクスポートする方法を学びましょう。 +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: ja +og_description: Excelで印刷範囲を設定し、編集可能なシェイプを含むPowerPointスライドに変換します。タイトル行を繰り返し、ExcelをPPTXにエクスポートする完全ガイドをご覧ください。 +og_title: Excelで印刷範囲を設定 – PowerPointへのエクスポートチュートリアル +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Excelで印刷範囲を設定し、PowerPointへエクスポートする – ステップバイステップガイド +url: /ja/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excelで印刷範囲を設定しPowerPointへエクスポート – 完全プログラミングチュートリアル + +Excelのワークシートで **印刷範囲を設定** し、そのスライスをPowerPointのスライドに変換したことがありますか? あなただけではありません。多くのレポートパイプラインでは、きれいに印刷できるデータをプレゼンテーションにも表示する必要があり、しばしば最初の行をタイトルとして繰り返すことが求められます。良いニュースは、数行のC#コードで **excel を powerpoint に変換** でき、すべてのテキストボックスを編集可能に保ち、さらに **タイトル行を自動で繰り返す** ことができるということです。 + +このガイドでは、印刷範囲の設定からPowerPoint(PPTX)ファイルの作成まで、必要なすべての手順を解説します。最後まで読めば、 **excel から powerpoint を作成** し、 **excel を pptx にエクスポート** でき、任意の .NET プロジェクトで同じコードを再利用できるようになります。マジックはなく、明確な手順と完全に実行可能なサンプルが揃っています。 + +## 必要なもの + +本題に入る前に、以下をご用意ください。 + +- **.NET 6.0** 以上(APIは .NET Framework でも動作します) +- **Aspose.Cells for .NET**(`Workbook`、`ImageOrPrintOptions` などを提供するライブラリ) +- 基本的な C# IDE(Visual Studio、Rider、または C# 拡張機能付き VS Code) +- エクスポートしたいデータが入った Excel ファイル(`input.xlsx`) + +以上だけです—Aspose.Cells 以外に追加の NuGet パッケージは不要です。まだライブラリを追加していない場合は、次のコマンドを実行してください。 + +```bash +dotnet add package Aspose.Cells +``` + +これで準備完了です。 + +## 手順 1: ワークブックの読み込み – エクスポートの出発点 + +最初に行うべきことは、スライドに変換したいシートが含まれるワークブックを読み込むことです。ワークブックはソースドキュメントと考えてください。これがなければ、以降の操作はすべて意味を成しません。 + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**重要ポイント:** ワークブックを読み込むことで、ワークシートコレクションやページ設定オプション、エクスポートエンジンにアクセスできます。このステップを省略すると **印刷範囲** を設定したり、行を繰り返したりできません。 + +> **プロのコツ:** テスト時は絶対パスを使用し、実運用では相対パスまたは設定ベースのパスに切り替えましょう。 + +## 手順 2: エクスポートオプションの構成 – テキストボックスとシェイプを編集可能に保つ + +PowerPoint にエクスポートする際、スライドを編集可能にしたいことが多いでしょう。Aspose.Cells では `ImageOrPrintOptions` でそれを制御できます。`ExportTextBoxes` と `ExportShapeObjects` を `true` に設定すると、これらのオブジェクトが画像にフラット化されず、PowerPoint のネイティブ要素として保持されます。 + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**重要ポイント:** **excel を powerpoint に変換** した後にスライドを手動で調整したい場合、この設定によりテキストボックスを一から作り直す手間が省けます。また、矢印やチャートなどのシェイプもベクターオブジェクトとして残り、サイズ変更が可能です。 + +## 手順 3: 印刷範囲の設定とタイトル行の繰り返し + +ここがチュートリアルの核心です: **印刷範囲を設定** し、最初の行をすべての印刷ページ(今回の場合はエクスポートスライド)で繰り返します。印刷範囲は、Excel が印刷(またはエクスポート)対象とするセルを指定します。 + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**重要ポイント:** エクスポート範囲を `A1:G20` に限定することで、不要な空白領域の読み込みを防ぎ、変換速度が向上し、スライドがすっきりします。`PrintTitleRows` 行は、最初の行をヘッダーとして扱うようにし、プレゼンテーションで **タイトル行を繰り返す** 際に理想的です。 + +> **エッジケース:** データが 2 行目から始まる場合は、範囲を適宜調整してください(例: `PrintTitleRows = "$2:$2"`)。 + +## 手順 4: ワークシートを PowerPoint ファイルとして保存 + +最後に、スライドをディスクに書き出します。`Save` メソッドは保存先ファイル名と、前述のオプションを受け取ります。結果として、編集可能なテキストボックスとシェイプを含む PPTX ファイルが生成され、PowerPoint で開くことができます。 + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**期待される結果:** `SheetWithEditableShapes.pptx` を PowerPoint で開くと、最初の行がタイトルとして表示され、`A1:G20` のすべてのセルが描画され、Excel で追加したシェイプは依然として移動・編集可能です。ラスタ画像ではなく、ネイティブの PowerPoint オブジェクトです。 + +## 完全動作サンプル – すべての手順を統合 + +以下はコピー&ペーストで実行できる完全版プログラムです。コンソールアプリとして実行するか、任意のソリューションに組み込んで使用してください。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**期待出力:** プログラム実行後、コンソールに成功メッセージが表示され、指定した場所に PPTX ファイルが生成されます。ファイルを開くと、選択した範囲だけが表示された単一スライドが現れ、テキストボックスや元のシェイプがすべて編集可能です。 + +## よくある質問 & 注意点 + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Yes. Loop through `workbook.Worksheets` and repeat the same steps for each sheet, changing the output filename each time. | +| **What if I need to export more than one slide?** | Call `workbook.Save` multiple times with different `ImageOrPrintOptions` objects, each configured with a different `PageSetup` if needed. | +| **Can I change the slide size?** | Use `exportOptions.ImageFormat` to set DPI, or adjust `sheet.PageSetup.PaperSize` before saving. | +| **Is Aspose.Cells free?** | It offers a free evaluation with watermarks. For production, a license is required. | +| **What about Excel formulas?** | The exported values are the **calculated results** at the time of export. If you need live formulas in PowerPoint, you’ll need a different approach. | + +## スムーズなワークフローのためのヒント + +- **プロのコツ:** エクスポート前に `Workbook.Settings.CalcMode = CalculationModeType.Automatic` を設定し、すべての数式が最新の状態であることを保証しましょう。 | +- **注意点:** 非常に大きな範囲はメモリ圧迫の原因となります。印刷範囲は必要最小限に絞ってください。 | +- **パフォーマンスのコツ:** 多数のシートをエクスポートする場合は、`ImageOrPrintOptions` のインスタンスを再利用すると、毎回新規作成するオーバーヘッドを削減できます。 | +- **バージョン情報:** 上記コードは Aspose.Cells 23.10(2023年11月リリース)を対象としています。以降のバージョンでも API は基本的に同じですが、破壊的変更がないかリリースノートを必ず確認してください。 | + +## 結論 + +Excel ワークシートで **印刷範囲を設定** し、最初の行をタイトルとして繰り返し、 **excel を pptx にエクスポート** すると同時にテキストボックスやシェイプを編集可能に保つ方法を解説しました。要するに、数行の C# で **excel を powerpoint に変換**、 **タイトル行を繰り返す**、そして **excel から powerpoint を作成** できる信頼性の高い手法を習得したことになります。 + +次のステップに進みませんか?数十件のレポートをバッチ変換したり、エクスポート後に PowerPoint SDK を使ってカスタムスライドレイアウトを追加したりしてみましょう。可能性は無限大です—実験し、試行錯誤し、プログラムによる文書生成の力を存分に楽しんでください。 + +このチュートリアルが役に立ったら、シェアしたり、独自の工夫をコメントで共有したり、 **excel を pptx にエクスポート** や関連自動化トピックに関する他のガイドもぜひご覧ください。ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/csv-file-handling/_index.md b/cells/japanese/net/csv-file-handling/_index.md index efa94b2014..16e0f163e1 100644 --- a/cells/japanese/net/csv-file-handling/_index.md +++ b/cells/japanese/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ CSVファイルを開いて解析したら、レポート作成やさらなる Aspose.Cells for .NET を使用してCSVファイルを開く方法を、包括的なステップバイステップガイドで学びましょう。データ操作をマスターしましょう。 ### [優先パーサーでCSVファイルを開く](./csv-file-opening-csv-files-with-preferred-parser/) Aspose.Cells for .NET のカスタムパーサーを使って、CSV ファイルを開いて解析する方法を学びましょう。テキストと日付を簡単に処理できます。開発者に最適です。 +### [C# でブックを CSV として保存 – Excel を CSV にエクスポート](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aspose.Cells for .NET を使用して、C# で Excel ワークブックを CSV 形式でエクスポートする手順を学びます。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/japanese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..2631e019ab --- /dev/null +++ b/cells/japanese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: C#でブックをCSVとして素早く保存。ExcelをCSVにエクスポートする方法、精度の設定、Aspose.Cellsを使用してxlsxを数行でCSVに変換する方法を学びましょう。 +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: ja +og_description: C#でブックをCSVとしてすばやく保存します。このガイドでは、ExcelをCSVにエクスポートする方法、精度の設定方法、そして Aspose.Cells + を使用して xlsx を CSV に変換する方法を示します。 +og_title: C#でブックをCSVとして保存 – ExcelをCSVにエクスポート +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: C#でブックをCSVとして保存 – ExcelをCSVにエクスポート +url: /ja/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# でブックを CSV として保存 – Excel を CSV にエクスポート + +**ブックを CSV として保存**したいけど、数値の桁数を整える方法が分からない…ということはありませんか?同じ悩みを抱える方は多いです。データパイプラインのシナリオでは、**Excel を CSV にエクスポート**しつつ、特定の有効数字を保持したいことがよくありますが、Aspose.Cells ライブラリを使えばそれは簡単です。 + +このチュートリアルでは、**ブックを CSV として保存**する完全な実行可能サンプルを示し、*有効数字の設定方法* を解説し、さらに実務で役立つ *.xlsx から .csv への変換* 方法も説明します。曖昧な説明は一切なく、すぐにコピー&ペーストして実行できるコードだけを提供します。 + +## 学べること + +- カスタム精度設定で **ブックを CSV として保存**する正確な手順。 +- `CsvSaveOptions` を使って **Excel を CSV にエクスポート**する方法と、`SignificantDigits` プロパティが重要な理由。 +- 異なる精度要件に対応するバリエーションと、大きな数値を扱う際の一般的な落とし穴。 +- データの整合性を失わずに `.xlsx` ファイルを `.csv` に変換する簡単な手順。 + +### 前提条件 + +- .NET 6.0 以上(コードは .NET Framework 4.6+ でも動作します)。 +- **Aspose.Cells for .NET** NuGet パッケージ(`Install-Package Aspose.Cells`)。 +- C# とファイル I/O の基本的な知識。 + +これらが揃っていれば、さっそく始めましょう。 + +![ブックを CSV として保存する例](image.png "ブックを CSV として保存する例") + +## ブックを CSV として保存 – ステップバイステップガイド + +以下がフルプログラムです。各行にコメントを入れているので、*何をしているか* だけでなく、*なぜそのコードが必要か* も分かります。 + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### なぜ `CsvSaveOptions.SignificantDigits` を使うのか? + +CSV エクスポート時に **精度を設定する方法** を決めるということは、浮動小数点数の何桁までを保持するかを決めることです。Excel は最大 15 桁の精度で数値を保持しますが、下流システム(データベースや分析パイプライン)では数桁で十分なことが多いです。`SignificantDigits = 4` と設定すれば、ライブラリは `123.456789` を `123.5` に丸め、ファイルをコンパクトかつ人間が読みやすい形にします。 + +> **プロのコツ:** 金融データなど正確な値が必要な場合は、`SignificantDigits` をより大きな数に設定するか、設定自体を省略してください。デフォルトは 15 で、Excel の内部精度と同等です。 + +## Excel を CSV にエクスポート – よくあるバリエーション + +### 区切り文字の変更 + +システムによってはカンマ (`,`) の代わりにセミコロン (`;`) を期待することがあります。以下のように変更できます。 + +```csharp +csvOptions.Delimiter = ';'; +``` + +### 特定のワークシートだけをエクスポート + +2 番目のシートだけをエクスポートしたい場合は、オプションブロックを次のように置き換えます。 + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +その後は従来通り `workbook.Save` を呼び出します。この手法は **xlsx を csv に変換** する際に、特定のタブだけが必要なケースで便利です。 + +### 大規模データセットの取り扱い + +数百万行のデータを扱う場合は、ブック全体をメモリに読み込むのではなく、CSV をストリーミングすることを検討してください。Aspose.Cells には `CsvSaveOptions` の `ExportDataOnly` プロパティがあり、スタイル情報を省略してメモリ使用量を削減できます。 + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## CSV のエクスポート結果を確認する方法 + +プログラム実行後、`Numbers_4sd.csv` をテキストエディタで開きます。以下のような内容が表示されるはずです。 + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +数値が 4 桁の有効数字に制限されていることが確認できます。Excel で開いても、エクスポート時に適用された丸めがそのまま表示されます。 + +## エッジケースとトラブルシューティング + +| 状況 | 確認すべきこと | 対処法 | +|-----------|---------------|-----| +| **ファイルが見つからない** | `sourcePath` が実際の `.xlsx` ファイルを指しているか確認 | `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")` を使用 | +| **丸めが期待通りでない** | `Save` を呼び出す前に `SignificantDigits` が設定されているか確認 | `CsvSaveOptions` の代入を早めに行うか、値を再チェック | +| **特殊文字が � と表示される** | CSV のエンコーディングはデフォルトで BOM なし UTF‑8 | `csvOptions.Encoding = System.Text.Encoding.UTF8` または `Encoding.Unicode` を設定 | +| **余分な空列が出る** | 使用範囲外に余計な書式が残っていることがある | エクスポート前に `worksheet.Cells.MaxDisplayRange` を呼び出して未使用列をトリム | + +## 動的に精度を設定する方法 + +コンパイル時に精度が決まっていないケースもあります。その場合は設定ファイルやコマンドライン引数から取得できます。 + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +次のように実行します。 + +``` +dotnet run -- 6 +``` + +これで有効数字 6 の CSV が生成されます。この小さな調整により、**CSV のエクスポート方法** をさまざまな環境で柔軟に扱えるようになります。 + +## 完全動作サンプルのまとめ + +すべてを統合した完全プログラム(オプションの調整を含む)は以下の通りです。 + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +プログラムを実行し、生成された CSV を開くと、要求した精度が反映されていることが確認できます。これで **ブックを CSV として保存** に成功したことになります。 + +## 結論 + +C# で **ブックを CSV として保存** するための、実務レベルのレシピが手に入りました。本ガイドでは *Excel を CSV にエクスポート* の手順、`CsvSaveOptions.SignificantDigits` による *精度設定*、そして **xlsx を csv に変換** シナリオ向けの複数バリエーションを紹介しました。フルコードスニペットをプロジェクトに組み込めば、すぐにデータエクスポートが可能です。 + +**次のステップは?** + +- TSV エクスポート用に異なる区切り文字(`;`、`\t`)を試す。 +- ファイルウォッチャーと組み合わせて、Excel ファイルが変更されたときに自動で CSV を生成する。 +- 必要に応じて CSV を再びブックに読み込むために、Aspose.Cells の `CsvLoadOptions` を調査する。 + +精度を調整したり、カスタムヘッダーを追加したり、エクスポーターにフックを組み込んだりして、自由にカスタマイズしてください。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/document-properties/_index.md b/cells/japanese/net/document-properties/_index.md index e39aa39417..d5ea07ec77 100644 --- a/cells/japanese/net/document-properties/_index.md +++ b/cells/japanese/net/document-properties/_index.md @@ -35,6 +35,8 @@ Aspose.Cells for .NET を使用して Excel のドキュメントプロパティ Aspose.Cells for .NET を使用して Excel のドキュメントプロパティにアクセスする方法を、ステップバイステップガイドで学習しましょう。スプレッドシートを効率的に管理できます。 ### [.NET でのドキュメント プロパティの追加](./adding-document-properties/) この詳細なステップバイステップ ガイドでは、Aspose.Cells for .NET を使用して Excel にドキュメント プロパティを追加する方法を学習します。 +### [Excel ワークブックの作成 – カスタム プロパティを追加し XLSB 形式で保存](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Aspose.Cells for .NET を使用して、Excel ワークブックを作成し、カスタム プロパティを追加して XLSB 形式で保存する手順を解説します。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/japanese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..5f57be8b5f --- /dev/null +++ b/cells/japanese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-22 +description: Excelブックを作成し、カスタムプロパティを追加し、ワークシート名を設定し、C#でXLSBバイナリファイルとして保存する。 +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: ja +og_description: C# を使用して Excel ワークブックを作成し、カスタム プロパティを追加し、ワークシート名を設定し、XLSB バイナリ ファイルとして保存する。 +og_title: Excelブックを作成 – カスタムプロパティを追加し、XLSB形式で保存 +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excelブックを作成 – カスタムプロパティを追加し、XLSBとして保存 +url: /ja/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel ワークブックの作成 – カスタム プロパティの追加と XLSB 形式での保存 + +プログラムから **Excel ワークブックを作成** しつつ、メタデータを添付したいことはありませんか?たとえば、レポート ID、作成者名、バージョン番号などを各ファイルにタグ付けするレポートエンジンを構築している場合です。そのようなとき、**カスタム プロパティを追加** しながら **ワークシート名を設定** し、最終的に **XLSB 形式で保存** する方法を学んでおくと、手作業の後処理が大幅に削減できます。 + +このチュートリアルでは、C# を使って **バイナリ Excel ファイルを書き込む** 完全な実行可能サンプルを順を追って解説します。XLSB 形式がカスタム プロパティの転送に最適な理由、よくある落とし穴の回避方法、古い Excel バージョンへの対応方法も併せて紹介します。 + +--- + +## 必要なもの + +- **.NET 6+**(または .NET Framework 4.6+)。コードは最新のランタイムであればどれでも動作します。 +- **Aspose.Cells for .NET**(無料トライアルまたはライセンス版)。以下で使用する `Workbook`、`Worksheet`、`CustomProperties` クラスを提供します。 +- お好みの IDE – Visual Studio、Rider、あるいは VS Code でも構いません。 +- 生成されたファイルを保存するフォルダーへの書き込み権限。 + +他のサードパーティ ライブラリは不要です。 + +--- + +## 手順 1: Aspose.Cells のインストール + +まず、プロジェクトに Aspose.Cells の NuGet パッケージを追加します。 + +```bash +dotnet add package Aspose.Cells +``` + +> **プロのコツ:** CI サーバー上で実行する場合は、ライセンスキーを環境変数に保存し、実行時に読み込むようにすると「評価版」透かしが出力に混入するのを防げます。 + +--- + +## 手順 2: Excel ワークブックの作成 – 概要 + +最初の本格的な操作は **Excel ワークブックを作成** することです。このオブジェクトはメモリ上のファイル全体を表し、ワークシート、スタイル、カスタム プロパティへのアクセスを提供します。 + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +なぜテンプレートを読み込むのではなく新規 `Workbook` をインスタンス化するのでしょうか? 空のワークブックは隠れたスタイルや残存するカスタム プロパティがないことを保証し、**バイナリ Excel ファイルを書き込む** 必要がある下流システムに対してクリーンな状態を提供します。 + +--- + +## 手順 3: ワークシート名の設定(重要性) + +Excel のシートはデフォルトで “Sheet1”、 “Sheet2” と命名されます。シートに意味のある名前を付けることで、Power Query や VBA マクロなどの下流処理が格段に読みやすくなります。 + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +重複した名前を割り当てようとすると、Aspose.Cells は `ArgumentException` をスローします。安全策として、リネーム前に `Worksheets.Exists("Data")` で存在チェックを行うとよいでしょう。 + +--- + +## 手順 4: カスタム プロパティの追加 + +カスタム プロパティはワークブック内部の XML に保存され、形式に関係なくファイルと共に搬送されます。`ReportId` や `GeneratedBy` といった情報を埋め込むのに最適です。 + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **カスタム プロパティを使う理由** +> • Excel の “ファイル → 情報 → プロパティ” パネルから直接参照できる。 +> • ワークブックを消費するコードはセル内容を走査せずにプロパティを取得できる。 +> • XLSX ↔ XLSB の形式変換でも保持される。なぜならメタデータの一部として保存されているからです。 + +日付、ブール値、さらにはバイナリ データも格納できますが、ペイロードは小さめに抑えてください – Excel はデータベースではありません。 + +--- + +## 手順 5: XLSB 形式で保存(バイナリ Excel ファイルの書き込み) + +XLSB 形式はデータをバイナリ構造で保存するため、ファイルサイズが小さくなり、開く速度も速くなります。本チュートリアルのポイントは、**カスタム プロパティがバイナリ ストリームに組み込まれる** ため、必ずファイルと共に搬送される点です。 + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### 期待される結果 + +プログラムを実行すると、デスクトップに `WithCustomProps.xlsb` が作成されます。Excel で開き、**ファイル → 情報 → プロパティ** に移動すると、*カスタム* 項目の下に `ReportId` と `GeneratedBy` が表示されます。 + +--- + +## 手順 6: エッジケースとよくある質問 + +### 対象フォルダーが読み取り専用の場合は? + +`Save` 呼び出しを `try/catch` で囲み、代替として `%TEMP%` など書き込み可能な場所に保存先を切り替えると、権限エラーでアプリがクラッシュするのを防げます。 + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### **XLSX** 形式で保存してもカスタム プロパティは保持できますか? + +はい。`SaveFormat.Xlsb` を `SaveFormat.Xlsx` に変更すれば OK です。プロパティは同じ XML パートに保存されるため、形式変更後も残ります。ただし、XLSX は XML を ZIP 圧縮したものなのでファイルサイズは大きくなります。一方、XLSB は大規模データセットでのパフォーマンスが優れています。 + +### 後でカスタム プロパティを読むには? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +このコードはすべてのカスタム プロパティをコンソールに出力し、下流サービスがファイルの出所を簡単に検証できるようにします。 + +--- + +## 完全な動作例 + +以下は新規コンソール プロジェクトにコピー&ペーストできる完全プログラムです。`using` 文から最後の `Console.WriteLine` まで、抜け落ちている部分はありません。 + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +プログラムを実行し、生成されたファイルを開いてカスタム プロパティを確認してください。これが **Excel ワークブックの作成**、**カスタム プロパティの追加**、**ワークシート名の設定**、そして **XLSB 形式で保存** を一連の流れで行う手順です。 + +--- + +## 結論 + +これで **Excel ワークブックを作成** し、シートに明確な **ワークシート名を設定**、有用なメタデータを **カスタム プロパティで埋め込み**、最終的に **XLSB 形式で保存** してコンパクトなバイナリ Excel ファイルを生成する方法が完全に理解できました。このワークフローは信頼性が高く、.NET のバージョンを問わず動作し、1 件のレポートから数千件のレポートまでスケールします。 + +次のステップは? “Data” シートにデータテーブルを追加したり、日付やブール値など異なるプロパティ型を試したり、膨大なデータセット向けに **XLSB 形式で保存** に切り替えてみてください。また、ワークブックにパスワード保護を施すことも可能です – Aspose.Cells ならワンライナーで実装できます。 + +ご質問や実装上の課題があればコメントで教えてください。ご自身のプロジェクトでこのパターンを拡張した事例もぜひ共有してください。Happy coding! + +--- + +![Create Excel workbook screenshot](image.png){alt="Create Excel workbook with custom properties"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/excel-advanced-named-ranges/_index.md b/cells/japanese/net/excel-advanced-named-ranges/_index.md index 7cf0852ab2..2bf3155e7d 100644 --- a/cells/japanese/net/excel-advanced-named-ranges/_index.md +++ b/cells/japanese/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Excelの高度な機能を使う際に、名前付き範囲が特に役立ちま この包括的なステップバイステップのチュートリアルでは、Aspose.Cells for .NET を使用して、Excel の名前付き範囲内のセルを簡単に識別できます。 ### [Excelで名前付き範囲内のセルを結合する](./merge-cells-in-named-range/) このステップバイステップのチュートリアルでは、Aspose.Cells for .NET を使用して名前付き範囲内のセルを結合する方法を学びます。Excel レポートの書式設定、スタイル設定、自動化の方法も学びます。 +### [Excel ワークブックの作成 – テーブル追加と名前付けルールのステップバイステップガイド](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +このチュートリアルでは、Aspose.Cells for .NET を使用して、Excel ワークブックを作成し、テーブルを追加し、名前付けルールを設定する方法をステップバイステップで解説します。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/japanese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..d6f31c2212 --- /dev/null +++ b/cells/japanese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Excelブックにテーブルを作成し、Excelテーブルの命名規則を学び、名前付き範囲エラーを回避し、C#でテーブル名を正しく設定する。 +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: ja +og_description: C#でExcelブックを作成し、Excelテーブルの命名規則をマスターしよう。テーブルシートの追加方法、Excelテーブル名の設定方法、名前付き範囲エラーの修正方法を学べます。 +og_title: Excelブックの作成 – 完全なC#テーブルと命名ガイド +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excelワークブックの作成 – テーブルの追加と命名規則のステップバイステップガイド +url: /ja/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel ワークブックの作成 – テーブルと命名に関する完全 C# ガイド + +プログラムで **Excel ワークブックを作成** したいときに、テーブル名が名前付き範囲と衝突してしまうことに悩んだことはありませんか? あなたは一人ではありません。多くの自動化プロジェクトで、テーブルにフレンドリーな識別子を付けようとした瞬間に、Excel が *名前付き範囲エラー* を投げてプロセス全体が停止してしまいます。 + +このチュートリアルでは、**Excel ワークブックを作成**し、**ワークシートにテーブルを追加**し、**Excel テーブル命名規則**を解説する、完全に実行可能なサンプルを順を追って説明します。最後まで読めば、**テーブルをワークシートに追加**し、**Excel テーブル名を設定**し、名前の衝突を優雅に処理する方法が正確に分かります。 + +> **プロのコツ:** 混乱の多くは、Excel がテーブル名とブックレベルの名前付き範囲を単一の名前空間として扱うことに起因します。このルールを早めに理解しておくと、デバッグに費やす時間を何時間も節約できます。 + +## 必要なもの + +- **Aspose.Cells for .NET**(または `Workbook`、`Worksheet`、`ListObject` クラスを提供する任意のライブラリ)。 +- .NET 6+ または .NET Framework 4.8 – コードはどちらでも動作します。 +- C# の基本的な構文理解 – 高度なテクニックは不要です。 + +これらが揃ったら、さっそく始めましょう。 + +![新しく作成されたExcelブックのスクリーンショット(テーブル名はSalesData)](create_excel_workbook_example.png "Excelブック作成例") + +## 手順 1: Excel ワークブックを作成し、最初のワークシートにアクセス + +**Excel ワークブックを作成** するときに最初に行うのは、`Workbook` クラスのインスタンスを生成し、作業対象のシートへの参照を取得することです。Aspose.Cells では、ワークブックはデフォルトで「Sheet1」という名前のシートを持っています。 + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +このステップが重要なのは、ワークブックオブジェクトがなければテーブルを貼り付ける対象がなく、`Worksheet` の参照が **テーブルをワークシートに追加** するためのキャンバスになるからです。 + +## 手順 2: 特定の範囲をカバーするテーブル(ListObject)を追加 + +次に **テーブルをワークシートに追加** します。`ListObjects.Add` メソッドは範囲文字列と、最初の行がヘッダーかどうかを示すブール値を受け取ります。 + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +`salesTable.Name = "SalesData"` の呼び出しに注目してください。ここで **Excel テーブル命名規則** が適用されます。名前はシートだけでなくブック全体で一意である必要があり、スペースや特殊文字を含めず、文字またはアンダースコアで始めなければなりません。 + +## 手順 3: 同一識別子でブックレベルの名前付き範囲を作成しようとする + +ここでは意図的に **名前付き範囲エラー** を引き起こし、名前が衝突したときに何が起こるかを確認します。 + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +この行のコメントを外すと、Aspose.Cells は `ArgumentException` をスローし、名前がすでに存在すると通知します。エラーメッセージは次のようになります: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +このメッセージこそが、前述した **名前付き範囲エラー** です。**Excel テーブル命名規則** がテーブル名と名前付き範囲を単一の名前空間として扱うことを示しています。 + +## 手順 4: 名前の衝突を優雅に処理する + +実務コードでは、この例外を捕捉し、テーブル名を変更するか別の範囲名を選択したいでしょう。以下はそのためのすっきりした実装例です: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +`try/catch` で呼び出しをラップすることで、ハードクラッシュを防ぎ、ユーザー(または呼び出し元コード)に明確な説明を提供できます。これこそが、将来のバグを防ぐ **Excel テーブル命名規則** の洞察です。 + +## 手順 5: ワークブックを保存し、結果を確認 + +最後にファイルをディスクに保存し、Excel で開いてテーブルと名前付き範囲が正しく作成されているか確認します。 + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +*SalesReport.xlsx* を開くと次のようになります: + +- **A1:C5** に広がるテーブル **SalesData**。 +- 代替の範囲を残した場合は、**D1** を指すブックレベルの名前付き範囲 **SalesData_Range**。 + +実行時エラーは発生せず、名前の衝突も解消されています。 + +## Excel テーブル命名規則を深く理解する + +規則が存在する理由を見てみましょう: + +| ルール | 意味 | 例 | +|------|------|----| +| **ブック全体で一意** | テーブルや名前付き範囲は同じ識別子を共有できません。 | `Table1` と `Table1` → 衝突 | +| **文字またはアンダースコアで開始** | 名前は数字で始められません。 | `_Q1Sales` ✅、`1QSales` ❌ | +| **スペースや特殊文字なし** | CamelCase またはアンダースコアを使用します。 | `QuarterSales` ✅、`Quarter Sales` ❌ | +| **長さ ≤ 255 文字** | 実質的に常に満たされます。 | 該当なし | + +これらの規則を守りながら **Excel テーブル名を設定** すれば、恐ろしい *名前付き範囲エラー* を回避できます。 + +## よくあるバリエーションとエッジケース + +1. **複数テーブルの追加** – 各テーブルは固有の名前が必要です。 +2. **既存テーブルの名前変更** – 競合する名前付き範囲を作成する前に `salesTable.Name = "NewName"` を使用します。 +3. **動的範囲の使用** – 静的アドレスの代わりに `=SalesData[Amount]` のような構造化参照を使用します。 +4. **シート間名前付き範囲** – 依然として同一名前空間に属するため、Sheet1 のテーブルが Sheet2 の同名範囲をブロックします。 + +## スムーズな Excel 自動化のためのプロ・ティップ + +- **追加前に存在確認**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **安全な名前をプログラムで生成**: 不確かな場合は GUID やインクリメンタルカウンタを付加 (`SalesData_{Guid.NewGuid()}`) +- **`ListObject.ShowHeaders = true`** を使用してテーブルを自己文書化。 +- **保存後に検証**: 軽量ライブラリ(例: EPPlus)でファイルを開き、テーブルが正しく作成されたか確認。 + +## まとめ: 本チュートリアルで学んだこと + +- Aspose.Cells を使って **Excel ワークブックを最初から作成**する方法。 +- テーブルと名前付き範囲の識別子を支配する正確な **Excel テーブル命名規則**。 +- 名前を再利用したときに表示される **名前付き範囲エラー** の原因。 +- 衝突なしで **テーブルをワークシートに追加**し、**Excel テーブル名を設定**する正しい手順。 +- 名前の衝突を優雅に処理する堅牢なパターン。 + +## 次にやることは? + +基本をマスターした今、以下を検討してみてください: + +- `ListObject.Resize` を使った **動的テーブル拡張**。 +- テーブルにスタイルを適用(例: `salesTable.TableStyleType = TableStyleType.TableStyleMedium9`)。 +- テーブル構造を保持したまま **CSV へエクスポート**。 +- **Office Open XML** と統合し、ワークブック内部をさらに細かく制御。 + +自由に実験してみてください – 範囲を変えたり、テーブルを増やしたり、さまざまな命名スキームを試したり。手を動かせば動くほど、**Excel テーブル命名規則** の理解が深まります。 + +--- + +*Happy coding, and may your workbooks never clash again!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/excel-custom-number-date-formatting/_index.md b/cells/japanese/net/excel-custom-number-date-formatting/_index.md index a3345de06d..28e39de843 100644 --- a/cells/japanese/net/excel-custom-number-date-formatting/_index.md +++ b/cells/japanese/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ このステップバイステップのチュートリアルでは、Aspose.Cells for .NET を使用して、Excel セルの値をカスタム数値形式と照合する方法を学習します。 ### [Excelシートにデータをインポートするときに数式フィールドを指定する](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) この詳細なチュートリアルでは、Aspose.Cells for .NET を使用して、指定された数式フィールドを持つ Excel シートにデータをインポートする方法を学習します。 +### [C#でExcelのカスタム数値書式 完全ガイド](./custom-number-format-excel-in-c-complete-guide/) +この包括的なガイドでは、Aspose.Cells for .NET を使用して、C#でExcelのカスタム数値書式を設定する方法を学びます。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/japanese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..29546af9a5 --- /dev/null +++ b/cells/japanese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,293 @@ +--- +category: general +date: 2026-03-22 +description: カスタム数値形式のExcelチュートリアル:データテーブルをExcelにインポートし、列の背景色を設定し、列を通貨形式にフォーマットし、ブックをxlsxとして保存する方法を示す。 +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: ja +og_description: DataTableのインポート、列の背景色設定、列を通貨形式に書式設定し、ブックをxlsxとして保存するまでを順に解説するカスタム数値書式Excelチュートリアルです。 +og_title: C#でExcelのカスタム数値書式 – ステップバイステップガイド +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C#でExcelのカスタム数値書式 – 完全ガイド +url: /ja/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# カスタム数値形式 Excel – フルスタック C# チュートリアル + +C# から直接 **custom number format excel** スタイルを適用したことはありますか?DataTable をスプレッドシートにダンプしたら、数字はそのままで色も通貨書式も付いていない…という経験はありませんか。これは特にステークホルダー向けに洗練されたレポートが必要なときに痛いポイントです。 + +このガイドではその問題を一緒に解決します。**import datatable to excel**、**set column background color**、**format column as currency**、そして **save workbook as xlsx** を、カスタム数値形式で数字を際立たせる方法を学びます。曖昧な説明はなく、プロジェクトにコピペできる完全な実装例を提供します。 + +--- + +## What You’ll Build + +このチュートリアルの最後までに、以下を実現する単体の C# コンソール アプリが完成します。 + +1. `DataTable` を取得します(スタブは任意のクエリに置き換え可能)。 +2. Aspose.Cells(または互換ライブラリ)を使って新しい Excel ワークブックを作成します。 +3. 1 列目に青の太字フォント、2 列目に薄黄色の背景、3 列目に通貨書式(`$#,##0.00`)を適用します。 +4. 任意のフォルダーに `DataTableWithStyleArray.xlsx` として保存します。 + +各行が最終的な Excel ファイルにどのように影響するかを丁寧に解説し、保守性とパフォーマンスの観点から選択理由を説明します。 + +--- + +## Prerequisites + +- .NET 6.0 以上(.NET Framework 4.7+ でも動作します)。 +- Aspose.Cells for .NET(無料トライアルまたはライセンス版)。NuGet でインストール: + +```bash +dotnet add package Aspose.Cells +``` + +- `DataTable` と C# コンソール アプリケーションの基本的な知識。 + +--- + +## Step 1: Retrieve the Source Data as a DataTable + +まず、エクスポートするデータが必要です。実務ではリポジトリを呼び出すか SQL クエリを実行するでしょう。ここではメモリ上にシンプルなテーブルを作成します。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** `DataTable` を使用すると、スキーマ情報を持った表形式のデータソースが得られ、Excel の行・列にきれいにマッピングできます。また、同じエクスポートロジックをデータセット全体で再利用でき、コードの重複を防げます。 + +--- + +## Step 2: Create a New Workbook and Grab the First Worksheet + +次に Excel ワークブックを作成します。`Workbook` クラスがファイル全体を表し、`Worksheets[0]` がデフォルトシートとしてデータを書き込む対象になります。 + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** 複数シートが必要な場合は `workbook.Worksheets.Add("SheetName")` を呼び出し、各シートに対して同様のスタイリング手順を繰り返してください。 + +--- + +## Step 3: Define Column Styles – Font, Background, and Number Format + +Aspose.Cells のスタイリングは `Style` オブジェクトで行います。ここでは DataTable の各列に対応する配列を作成します。 + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** `ImportDataTable` に配列を渡すことで、1 回の呼び出しで列ごとに異なるスタイルを適用でき、コードが簡潔になるだけでなくパフォーマンスも向上します。データ順序と書式が常に同期することが保証されます。 + +--- + +## Step 4: Import the DataTable While Applying the Styles + +操作の核心です。`DataTable` をワークシートにインポートし、ヘッダー行を含め、先ほど作成した `columnStyles` 配列を渡します。 + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose は各列を走査し、まずヘッダーを書き込み、続いて各行の値を書き込みます。その過程で配列から対応する `Style` を適用するため、たとえば「Product」列は青いヘッダー、「Quantity」列は黄色背景、「Revenue」列は通貨書式で出力されます。 + +--- + +## Step 5: Save the Workbook as an XLSX File + +最後にワークブックをディスクに保存します。`Save` メソッドはファイル拡張子から自動的に XLSX 形式を選択します。 + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** Web API などでストリームとして返す場合は、`workbook.Save(stream, SaveFormat.Xlsx)` を使用し、ファイルパスではなくストリームを指定してください。 + +--- + +## Full Working Example + +以下は新規コンソール プロジェクトに貼り付けてそのままビルド・実行できる完全なプログラムです。 + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Expected Result + +`DataTableWithStyleArray.xlsx` を開くと次のように表示されます。 + +| **Product** (青・太字) | **Quantity** (薄黄色) | **Revenue** (通貨) | +|------------------------|------------------------|--------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +指定した **custom number format excel** (`$#,##0.00`) により、すべての収益セルがドル記号、千位区切り、2 桁の小数点で表示され、財務チームが期待する形式になります。 + +--- + +## Frequently Asked Questions & Edge Cases + +### Can I use this with a different Excel library? + +もちろんです。スタイルを列ごとに作成しインポート時に適用するという考え方は、EPPlus、ClosedXML、NPOI でも同様に活用できます。API 呼び出しは異なりますがパターンは変わりません。 + +### What if my DataTable has more columns than styles? + +Aspose は `columnStyles` 配列に対応するエントリがない列に対してデフォルトスタイルを適用します。予期せぬ書式になるのを防ぐには、配列のサイズを `dataTable.Columns.Count` に合わせるか、ループで動的にスタイルを生成してください。 + +### How do I set a custom number format for dates? + +`style.Custom = "dd‑mm‑yyyy"` のように設定すれば OK です。日付、パーセンテージ、指数表記など、任意の Excel 書式文字列に対して同じ配列ベースのアプローチが使えます。 + +### Is there a way to auto‑size columns after import? + +あります。インポート後に `worksheet.AutoFitColumns();` を呼び出すだけで、セル内容に基づいた最適幅が自動計算されます。 + +### What about large data sets (100k+ rows)? + +`ImportDataTable` は大量データ向けに最適化されていますが、メモリ上限に達する可能性があります。その場合は `Cells[i, j].PutValue(...)` で行単位にストリーミングし、単一の `Style` オブジェクトを再利用してオーバーヘッドを削減する方法を検討してください。 + +--- + +## Pro Tips & Common Pitfalls + +- **パスのハードコーディングは避ける**:本番コードでは `Environment.GetFolderPath` や設定ファイルから取得してください。 +- **Workbook の破棄**:長時間稼働するサービスでは `using` ブロックでラップし、ネイティブリソースを確実に解放しましょう。 +- **ロケール依存の区切り文字に注意**:`$#,##0.00` は OS のロケールに関係なく小数点はピリオド、千位区切りはカンマになります。金融レポートでは通常これが望ましいです。 +- **System.Drawing の参照**:スタイリングで使用する色構造体のために `System.Drawing`(.NET Core では `System.Drawing.Common`)を参照に追加してください。 +- **Excel のバージョン差異**:古いバージョンの Excel では一部カスタム書式の解釈が若干異なることがあります。必ず複数バージョンで出力を確認しましょう。 + +--- + +## Conclusion + +C# から **custom number format excel** ファイルを作成するために必要なすべてを網羅しました:`DataTable` からデータ取得、**import datatable to excel**、**set column background color**、**format column as currency**、そして最終的に **save workbook as x**(続きはコード例をご参照ください)。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/excel-workbook/_index.md b/cells/japanese/net/excel-workbook/_index.md index 8c104831a8..6486220b3e 100644 --- a/cells/japanese/net/excel-workbook/_index.md +++ b/cells/japanese/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Excelスキルを向上させるチャンスをぜひ活用してください。 | [ワークブックの印刷プレビュー](./workbook-print-preview/) Aspose.Cells for .NET を使用して Excel ファイルの印刷プレビューを作成する方法を学びます。詳細でわかりやすいチュートリアルでコーディング手順を学びます。 | | [コンテンツタイプのプロパティの操作](./working-with-content-type-properties/) Aspose.Cells for .NET を使用してコンテンツタイプのプロパティを操作し、Excel メタデータ管理を強化する方法を学びましょう。簡単なステップバイステップガイドに従ってください。 | | [Xades 署名サポート](./xades-signature-support/) Aspose.Cells for .NET を使用して Excel ファイルに Xades 署名を追加する方法をステップバイステップで解説します。ドキュメントを保護しましょう。 | +| [C# で新しいワークブックを作成 – スピル数式のステップバイステップガイド](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) このステップバイステップ ガイドでは、Aspose.Cells for .NET を使用して、C# でスピル数式を含む新しいワークブックを作成する方法を学びます。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/japanese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..152e4651b9 --- /dev/null +++ b/cells/japanese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells を使用して C# で新しいブックを素早く作成します。SEQUENCE のスピル数式を追加し、自動的に再計算させ、依存セルを処理する方法を学びましょう。 +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: ja +og_description: Aspose.Cells を使用して C# で新しいブックを作成します。このチュートリアルでは、SEQUENCE スピル数式を追加し、ブックを再計算し、依存セルを管理する方法を示します。 +og_title: C#で新しいワークブックを作成する – 完全ガイド +tags: +- C# +- Excel automation +- Aspose.Cells +title: C#で新しいワークブックを作成 – スピル数式付きステップバイステップガイド +url: /ja/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 新しいワークブックを作成する C# – 完全プログラミングウォークスルー + +COMインタープロを使わずに **create new workbook C#** を行う方法を考えたことはありませんか? あなたは一人ではありません。多くのプロジェクトでは、Excelファイルをその場で作成し、動的配列数式を挿入し、すべてを自動的に更新させる必要があります。 + +このガイドでは、最新の **Aspose.Cells** ライブラリを使用し、スピルする `SEQUENCE` 数式を追加し、依存セルを調整し、再計算を強制して結果を常に最新に保つ方法を正確に示します。最後までに、任意の .NET アプリにコピー&ペーストできる自己完結型の実行可能サンプルが手に入ります。 + +## 学べること + +- プログラムで **create new workbook C#** を作成する方法。 +- **spilled array formula** の仕組みとその便利さ。 +- C# コードから **Excel SEQUENCE function** を使用する方法。 +- **C# workbook calculation** をトリガーし、依存セルを即座に更新する方法。 +- 一般的な落とし穴(例:`Calculate` の呼び出し忘れ)と迅速な対処法。 + +外部ドキュメントは不要です—必要なものはすべてここにあります。 + +## 前提条件 + +- .NET 6+(または .NET Framework 4.7.2+)がインストールされていること。 +- Visual Studio 2022 またはお好みの IDE。 +- **Aspose.Cells** NuGet パッケージ(`Install-Package Aspose.Cells`)。 +- C# 構文の基本的な知識(初心者の場合、コードには詳細なコメントがあります)。 + +--- + +## ステップ 1: C# で新しいワークブックを作成する + +この H2 見出しは、SEO チェックリストが要求する場所に **primary keyword** を正確に含んでいます。 + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **なぜ重要か:** +> `Workbook` をインスタンス化すると、Excel ファイルのメモリ内表現が得られます。COM もインタープロも不要で、純粋な .NET オブジェクトとして安全に操作できます。 + +--- + +## ステップ 2: スピルする SEQUENCE 数式を追加する + +**spilled array formula** は自動的に隣接セルへ展開され、動的リストの生成に最適です。 + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **動作概要:** +> `SEQUENCE` 関数(Excel 365 で導入)は、縦方向の数値配列を作成します。*スピル* 数式を使用しているため、Excel(および Aspose.Cells)は `A1` の下の範囲を自動的に埋め、ループを書く必要がありません。 + +--- + +## ステップ 3: 依存セルを変更して自動更新を確認する + +`B1` を変更して、ワークブックがスピル配列を再計算する様子を観察しましょう。 + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **ヒント:** +> 後で他の数式でスピル範囲を参照する場合、スピル内の任意のセルを変更すると、`Calculate` を呼び出した後にそれらの数式が更新されます。 + +--- + +## ステップ 4: C# ワークブック計算を強制する + +明示的に呼び出さない限り、Aspose.Cells は数式を自動的に再計算しません。 + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` の動作:** +> `Calculate` はすべての数式セルを走査し、評価して結果をシートに書き戻します。これが **C# workbook calculation** の核心であり、スピル配列が依存データと同期し続けることを保証します。 + +### 期待される出力 + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +`SpilledSequenceDemo.xlsx` を開くと、`A1:A5` に 1‑5 の数字が埋め込まれ、`B1` には `10` が入っているのが確認できます。スピル内の任意のセルを変更し、再度 `Calculate` を実行すると、新しい値が即座に表示されます。 + +--- + +## C# における Excel SEQUENCE 関数の理解 + +`SEQUENCE` が手動ループより好まれる理由が気になる場合、次の点を考慮してください: + +1. **Performance** – エンジンは配列全体を一度のパスで評価します。 +2. **Readability** – 1 行のコードで多数の `PutValue` 呼び出しを置き換えます。 +3. **Dynamic sizing** – 静的な `5` を別のセル参照に置き換えることで、実行時に長さを調整可能です。 + +これはデータ生成タスクを簡素化する **spilled array formula** の典型的な例です。 + +--- + +## よくある落とし穴とプロのコツ + +| 落とし穴 | 対策 | +|---------|-----| +| `workbook.Calculate()` の呼び忘れ | 数式を変更した後は必ず呼び出すこと;呼び出さないとシートは古いキャッシュ値を表示します。 | +| 古い Aspose.Cells バージョンの使用 | 最新の NuGet パッケージにアップグレードし、`SEQUENCE` などの動的配列関数のサポートを確保してください。 | +| 計算前に保存 | `Calculate` の **後** に保存し、ファイルに最新の結果が含まれるようにします。 | +| スピルが既存データを上書きすると想定 | Aspose.Cells はスピル範囲外の既存データを保持します。クリーンな状態が必要な場合は事前に領域をクリアしてください。 | + +**プロのコツ:** シーケンスの長さを設定可能にしたい場合は、セル(例: `C1`)に数を保存し、`=SEQUENCE(C1)` を使用します—計算エンジンは実行時にその値を読み取ります。 + +--- + +## サンプルの拡張 + +Now that you know how to **create new workbook C#**, you can: + +- スピル範囲を参照するより複雑な数式を追加する(例: `=SUM(A1#)`、`#` はスピルを示す)。 +- `workbook.Save("output.pdf", SaveFormat.Pdf)` で PDF にエクスポートする。 +- 動的配列サイズに自動調整するチャートを挿入する。 + +これらすべては、先ほど説明した **C# workbook calculation** の基盤の上に構築されています。 + +--- + +## 結論 + +私たちは **create new workbook C#** の全プロセスを順に解説しました。`Workbook` オブジェクトのインスタンス化からスピルする `SEQUENCE` 数式の挿入、依存セルの調整、最終的に再計算を強制してすべてを最新の状態に保つまでです。上記の完全なコードスニペットはすぐに実行可能で、コンソールアプリに貼り付け、Aspose.Cells NuGet パッケージを追加すれば、数秒で機能する Excel ファイルが得られます。 + +次のステップに進む準備はできましたか? 静的な `5` をセル参照に置き換えてみたり、`FILTER` や `UNIQUE` といった他の動的配列関数を試したりして、**Aspose.Cells C#** がフルスケールのレポートエンジンをどのように支えるかを探求してください。コーディングを楽しんで! + +--- + +*Image placeholder:* + +![スピルする SEQUENCE 数式が含まれた新規作成ワークブックのスクリーンショット – create new workbook C# の例](/images/create-new-workbook-csharp.png) + +--- + +*このチュートリアルが役に立ったと思ったら、リポジトリにスターを付けたり、チームメンバーと共有したり、下にコメントを残したりしてください。皆様のフィードバックが今後のガイドの原動力になります!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/formulas-functions/_index.md b/cells/japanese/net/formulas-functions/_index.md index f849e54659..44e39263b1 100644 --- a/cells/japanese/net/formulas-functions/_index.md +++ b/cells/japanese/net/formulas-functions/_index.md @@ -40,67 +40,48 @@ Aspose.Cells を使用した数式操作を習得すると、C# コードから ## 数式と関数のチュートリアル ### [Aspose.Cells を使用して .NET ワークブック内の数式テキストを抽出する](./aspose-cells-formula-text-net) -.NETでAspose.Cellsを使用して、Excelファイルからプログラム的に数式テキストを抽出する方法を学びます。スプレッドシートに埋め込まれた数式ロジックの監査とドキュメント作成に最適です。 ### [Aspose.Cells .NET を使用した Excel タスクの自動化: 範囲内の数式の設定](./aspose-cells-net-set-formulas-ranges) -Aspose.Cells for .NET を使って、範囲内の数式設定を自動化する方法を学びましょう。C# を使って、同じ数式を複数のセルに同時に適用することで、Excel ワークフローを効率化できます。 ### [Aspose.Cells .NET ガイドを使用した数式による効率的な CSV インポート](./csv-imports-formulas-aspose-cells-net-guide) -Aspose.Cells for .NET を使用して、複雑な数式を含むCSVファイルを機能を損なうことなくExcelにインポートする方法を学びます。データのインポート時に数式のロジックを維持する方法を習得します。 ### [Aspose.Cells .NET でのセルの数式のカスタマイズ: グローバリゼーション設定ガイド](./custom-aspose-cells-net-globalization-settings) -Aspose.Cells .NET を使ってセルの数式をカスタマイズする方法を学びます。特に多言語アプリケーションのグローバリゼーション設定に焦点を当てています。国際的な数式形式を扱う開発者向けの包括的なガイドです。 ### [Aspose.Cells .NET を使用して Excel で数式を表示する: 効率的なワークブック管理のための包括的なガイド](./display-excel-formulas-aspose-cells-net) -Aspose.Cells .NET を使用して Excel ブック内の数式を効率的に表示する方法を学びます。このガイドでは、セットアップ、ブックの操作、そして数式の監査とドキュメント化のための実用的なアプリケーションについて説明します。 ### [Aspose.Cells for .NET で動的な Excel 数式とコンボボックスを実装する](./dynamic-excel-formulas-combobox-aspose-cells-net) -Aspose.Cells for .NET を使用して動的な Excel レポートを自動化する方法を学びます。名前付き範囲を作成し、ComboBox コントロールを追加し、ユーザーの選択に基づいて更新されるレスポンシブな数式を生成します。 ### [Excel オートメーション: Aspose.Cells .NET による数式処理](./excel-automation-aspose-cells-net-formulas) -Aspose.Cells for .NET を使って Excel の数式自動化をマスターしましょう。このチュートリアルでは、効率的なスプレッドシート操作のために、プログラムで数式を作成、計算、最適化する方法を学びます。 ### [Aspose.Cells .NET による Excel 自動化: ワークブックと数式計算のマスター](./excel-automation-aspose-cells-net-workbook-formulas) -Aspose.Cells for .NET を使用して Excel タスクを自動化する方法を学びましょう。ワークブックを作成し、IFNA や VLOOKUP などの数式を適用し、Excel をインストールすることなくデータ処理を効率化できます。 ### [Aspose.Cells for .NET を使用した Excel での直接計算式: 包括的なガイド](./excel-direct-calculation-aspose-cells-dotnet) -Aspose.Cells for .NET を使って、Excel で直接計算を効率的に実行する方法を学びましょう。オンデマンド計算機能により、数式処理を自動化し、データ管理を改善します。 ### [Aspose.Cells for .NET を使用した Excel 数式検索](./excel-formula-search-aspose-cells-net) -Aspose.Cells for .NET を使用して、Excel ブック内の特定の数式を検索する方法を学びます。このチュートリアルでは、ワークシート全体にわたって数式を検索するためのパターンマッチング、数式の検索、抽出テクニックについて説明します。 ### [Aspose.Cells コールバックを使用した .NET での Excel 警告処理: 包括的なガイド](./excel-warning-handling-net-aspose-cells-callbacks) -Aspose.Cells for .NET を使用して Excel の警告を管理する方法を学びます。IWarningCallback を実装し、数式計算の問題やその他の警告シナリオに対するアプリケーションのエラー処理を強化します。 ### [Aspose.Cells で Excel を拡張: .NET でユーザー定義関数 (UDF) を登録して呼び出す](./extend-excel-aspose-cells-register-call-udfs) -Aspose.Cells for .NET を使用して UDF を登録および呼び出し、Excel ブックを強化する方法を学びます。カスタム関数を習得し、独自の計算ルーチンでデータ処理の効率を高めます。 ### [Aspose.Cells for .NET を使用して Excel の数式セルを検索および管理する](./find-formula-cells-in-excel-using-aspose-cells-net) -Aspose.Cells for .NET を使用して、Excel ブック内の数式セルを効率的に検索する方法を学びます。このガイドでは、数式を含むセルの検索と管理に関する設定、使用方法、パフォーマンスの最適化について説明します。 ### [Aspose.Cells for .NET でのカスタム計算の実装: 包括的なガイド](./guide-implement-custom-calculations-aspose-cells-dotnet) -Aspose.Cells for .NET を使い、カスタムロジックで Excel 風の計算機能を強化する方法を学びましょう。このガイドでは、数式機能を拡張するための設定、実装、そして実践的な応用例を解説します。 ### [Aspose.Cells for .NET でカスタム関数を実装する方法: ステップバイステップガイド](./implement-custom-functions-aspose-cells-net) -Aspose.Cells for .NET を使用して、Excel でカスタム関数を作成および実装する方法を学びます。Excel の組み込み関数を拡張したカスタマイズされた計算機能で、スプレッドシートの機能を強化します。 ### [Aspose.Cells for Excel Automation を使用して .NET で名前付き範囲数式を実装する方法](./implement-named-range-formulas-net-aspose-cells) -Aspose.Cells for .NET を使用して、ローカライズされた Excel ソリューションで名前付き範囲の数式を自動化する方法を学びます。名前付き範囲を使用した数式参照により、ワークフローを効率化し、生産性を向上させます。 ### [Aspose.Cells .NET を使って Excel セルの依存関係を追跡し、正確なデータ分析を実現する](./master-cell-dependency-tracking-aspose-cells-net) -Aspose.Cells .NET を使用して、Excel のセルの依存関係を追跡および管理する方法を学びます。このガイドでは、数式の関係を理解することでデータの精度と効率性を向上させるためのステップバイステップのアプローチを紹介します。 ### [Aspose.Cells for .NET を使って Excel の共有数式をマスターする: 総合ガイド](./master-shared-formulas-excel-aspose-cells-net) -Aspose.Cells for .NET を使用して、Excel で共有数式を実装する方法を学びます。このガイドでは、ステップバイステップの手順を説明し、パフォーマンスが最適化された数式適用によって Excel タスクを自動化するメリットを強調します。 ### [Aspose.Cells を使用した .NET の配列数式をマスターする: 総合ガイド](./mastering-aspose-cells-net-array-formulas) -Aspose.Cells for .NET を使って配列数式をマスターする方法を学びましょう。このガイドでは、強力な複数セル計算の設定、実装、そして実際の応用例を解説します。 ### [Aspose.Cells .NET を使用して Excel ファイルの言語を設定し、多言語サポートを実現する方法](./specify-language-excel-aspose-cells-net) -Aspose.Cells .NET を使用して Excel ファイルの言語を指定する方法を学びましょう。数式設定を国際化するためのステップバイステップガイドで、ドキュメントのアクセシビリティとコンプライアンスを強化しましょう。 ### [Aspose.Cells .NET で Excel Power Query の数式を更新する](./update-power-query-formulas-aspose-cells-net) -Aspose.Cells for .NET を使用して、Excel ブック内の Power Query 数式をプログラムで更新する方法を学びます。動的なレポート作成のためのデータソース管理をマスターします。 + +### [C# のラムダ式を Excel の数式で使用する方法 – 完全ガイド](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) ## Excelの数式の種類を理解する diff --git a/cells/japanese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/japanese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..0f1a261def --- /dev/null +++ b/cells/japanese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-03-22 +description: C#でラムダ式を使用してExcelの数式を操作する方法。セルに数式を書き込む方法、範囲を配列に変換する方法、配列をコンソールに表示する方法、そしてExcelで余接(cotangent)を計算する方法を学びます。 +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: ja +og_description: C#でラムダ式を使用してExcelの数式を操作し、範囲を配列に変換し、セルに数式を書き込み、コンソールに配列を表示し、Excelで余接を計算する方法。 +og_title: C#でラムダ式をExcelの数式と共に使用する方法 – ステップバイステップ +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: C#でラムダ式をExcel数式と共に使用する方法 – 完全ガイド +url: /ja/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# と Excel の数式で Lambda を使用する方法 – 完全ガイド + +C# から Excel を自動化するときに **lambda の使い方** を考えたことはありませんか? あなただけではありません。多くの開発者が、Excel の新しい動的配列関数の力と C# の `LAMBDA` 機能を組み合わせる必要があるときに壁にぶつかります。良いニュースは、部品がどのように組み合わさるかが分かれば、実はかなりシンプルだということです。 + +このチュートリアルでは、**セルに数式を書き込む**、**範囲を配列に変換する**、**コンソールにその配列を表示する**、さらには **Excel で余接(cotangent)を計算する** までを順に解説し、`REDUCE` 呼び出しの中で **lambda の使い方** を示します。最後まで読むと、Aspose.Cells(または類似のライブラリ)を参照した任意の .NET プロジェクトに貼り付けられる実行可能なコードスニペットが手に入ります。 + +--- + +## 学習内容 + +- C# を使用して **セルに数式を書き込む** 方法。 +- `EXPAND` 関数を使用して **範囲を配列に変換する** 方法。 +- 計算後に **コンソールに配列を表示する** 方法。 +- `COT` と `COTH` を使用して **Excel で余接(cotangent)を計算する** 方法。 +- C# から Excel の `REDUCE` 関数内で **lambda の使い方** の正確な構文。 + +> **前提条件:** .NET の最新バージョン(Core 6 以上または .NET Framework 4.7 以上)と、NuGet 経由でインストールした Aspose.Cells for .NET ライブラリが必要です。 + +--- + +## 手順 1: ワークブックの設定とセルへの数式書き込み + +最初に新しいワークブックを作成し、最初のワークシートを取得します。その後、**セルに数式を書き込む** – この例では `A1` に `EXPAND` 呼び出しの結果が格納されます。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**なぜ重要か:** コードから直接数式を書き込むことで、Excel を開くことなく動的に複雑なスプレッドシートを生成できます。また、次のステップで **範囲を配列に変換する** 準備にもなります。 + +--- + +## 手順 2: EXPAND で範囲を配列に変換 + +`EXPAND` は、Excel が小さな範囲を大きな行列に変換する方法です。数式を `A1` に配置すると、Excel はそのセルから 4 × 5 のブロックをスピルします。C# からは値を手動でコピーする必要はなく、`Calculate` を呼び出すとライブラリが重い処理を行ってくれます。 + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**lambda の使い方:** まだですが、続きにご期待ください。まずシートにデータを用意し、次に lambda で集約します。 + +--- + +## 手順 3: REDUCE 内で LAMBDA を使用 – “lambda の使い方” の核心 + +Excel 365 で導入された `REDUCE` は、**初期値**、**範囲**、そして各要素をどのように結合するかを指示する **LAMBDA** を受け取ります。C# からは単に数式文字列を割り当てるだけで、lambda は Excel の数式内にあり、C# のコードには存在しません。 + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**説明:** +- `0` は開始時のアキュムレータ(`acc`)です。 +- `A1:D4` は処理対象の範囲(スピルの最初の 4 列)です。 +- `LAMBDA(acc, x, acc + x)` は、各セル(`x`)をアキュムレータに加算するよう Excel に指示します。 + +これがスプレッドシート上で集計するための **lambda の使い方** の本質です。 + +--- + +## 手順 4: Excel で余接(cotangent)を計算 – 度数から双曲線へ + +三角関数の結果が必要な場合、Excel の `COT` と `COTH` 関数はとても簡単です。これらをそれぞれ `G1` と `G2` に配置します。 + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**便利な理由:** **Excel で余接を計算する** 方法を知っていれば、特にワークブックが開発者以外と共有される場合に、カスタムの数学コードを書く手間を省けます。 + +--- + +## 手順 5: 計算を強制し、拡張された配列を取得 + +ここでワークブックにすべての数式を評価させ、`A1` からスピルされた配列を取得します。これが **コンソールに配列を表示** する段階です。 + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**表示内容:** +- 行ごとに整形された 4 × 5 行列が出力されます。 +- `REDUCE` lambda によって計算された合計。 +- 2 つの余接(cotangent)値。 + +これで **セルに数式を書き込む** から **コンソールに配列を表示** までの流れが完了です。 + +--- + +## 完全動作例(コピー&ペースト可能) + +以下はコンソールアプリに貼り付けて使用できる完全なプログラムです。まず `Aspose.Cells` NuGet パッケージを追加することを忘れずに(`dotnet add package Aspose.Cells`)。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**期待されるコンソール出力(値はデフォルトの B1:C2 の内容により変わります。デフォルトでは 0 です):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +実行前に `B1:C2` に任意の数値を入力しても構いません。マトリックスはその値を反映します。 + +--- + +## プロのコツとよくある落とし穴 + +- **Pro tip:** スピル範囲の開始位置を変更したい場合は、対象セル(`A1`)を変更するだけです。`EXPAND` 関数はアンカーを尊重します。 +- **Watch out for:** 元範囲の空セルはスピルされた配列で `0` となり、`REDUCE` の合計に影響を与える可能性があります。 +- **Edge case:** ワークブックに揮発性関数(例: `NOW()`)に依存する数式がある場合、すべての数式を設定した後に `workbook.Calculate()` を呼び出して、最新の状態にしてください。 +- **Performance note:** 大規模なスピルの場合、`EXPAND` 呼び出しでサイズを制限することを検討してください。そうしないと不要なメモリを確保してしまう可能性があります。 +- **互換性:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/number-and-display-formats-in-excel/_index.md b/cells/japanese/net/number-and-display-formats-in-excel/_index.md index 8e52b61c05..073682de5d 100644 --- a/cells/japanese/net/number-and-display-formats-in-excel/_index.md +++ b/cells/japanese/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Excelシートに個性的なタッチを加えたいなら、表示形式のカ Aspose.Cells for .NET を使用して、Excel の数値書式設定を自動化します。日付、パーセンテージ、通貨の書式をプログラムで適用する方法を学びます。 ### [ユーザー定義の数値による表示形式のカスタマイズ](./customizing-display-formats-with-user-defined-numbers/) Aspose.Cells for .NET を使って表示形式をカスタマイズする方法を学びましょう。このステップバイステップガイドに従って、日付、パーセンテージ、通貨の書式を設定します。 +### [書式付きで Excel をエクスポートする方法 – 数値書式を保持](./how-to-export-excel-with-formatting-preserve-number-format/) +Aspose.Cells for .NET を使用して、書式設定を保持したまま Excel ファイルをエクスポートする手順を学びます。 +### [C# で DateTime を ISO 形式に変換する – 完全ガイド](./format-datetime-to-iso-in-c-complete-guide/) +C# で DateTime を ISO 形式に変換する方法を詳しく解説し、実装例を紹介します。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/japanese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..1ad79fcc95 --- /dev/null +++ b/cells/japanese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-22 +description: Excelから日付を抽出し、datetime を ISO 形式にフォーマットし、Aspose.Cells を使用して C# で ISO 日付を表示する方法を学びましょう。 +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: ja +og_description: 日付時刻をISO形式に変換するのが簡単です。このガイドでは、Excelから日付を抽出し、Aspose.CellsでISO日付を表示する方法を示します。 +og_title: C#で日時をISO形式にフォーマットする – ステップバイステップチュートリアル +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: C#で日時をISO形式にフォーマットする – 完全ガイド +url: /ja/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でdatetimeをISO形式にフォーマットする – 完全ガイド + +Excelブック内にデータがある状態で **format datetime to iso** が必要になったことはありませんか?セルに「令和3年5月1日」のような和暦が入っていて、これをきれいな `2021‑05‑01` 文字列に変換する方法に頭を抱えているかもしれません。あなたは一人ではありません。このチュートリアルでは **extract date from excel** を行い、和暦をパースし、そしてコンソールに **display iso date** を表示します—すべて数行の C# と Aspose.Cells で実現します。 + +必要なものすべてを順に解説します:必要な NuGet パッケージ、コピー&ペーストできる正確なコード、各行が重要な理由、そしていくつかのエッジケースに関するヒント。最後には、元の Excel の値がどんなに変則的でも datetime を ISO にフォーマットできる再利用可能なスニペットが手に入ります。 + +## 必要なもの + +- .NET 6.0 以降(コードは .NET Framework 4.6+ でもコンパイル可能です) +- Visual Studio 2022(またはお好みのエディタ) +- **Aspose.Cells for .NET** NuGet パッケージ – `Install-Package Aspose.Cells` +- 和暦形式の日付が入っている Excel ファイル(または新規ブック) + +以上です。余計なライブラリや COM インタープ、ただ 1 つの十分にドキュメント化されたメソッドだけです。 + +## ステップ 1: ワークブックを作成し、和暦日付を書き込む + +最初に操作対象となるワークブックが必要です。既に Excel ファイルがある場合は `new Workbook("path")` で読み込めます。この例ではメモリ上に新しいブックを作成し、セル **A1** に和暦文字列を投入します。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells はセルの値をデフォルトで文字列として扱います。生の和暦テキストを挿入することで、和暦で日付を入力した日本のクライアントが実際に使うシナリオをシミュレートしています。 + +## ステップ 2: 和暦パースを有効にして日付を抽出する + +Aspose.Cells は日本の和暦文字列を .NET の `DateTime` オブジェクトに自動変換できます—ただしその旨を指示する必要があります。`DateTimeParseOptions.EnableJapaneseEra` フラグがその重い作業を担います。 + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** `EnableJapaneseEra` オプションを忘れると、ライブラリは元の文字列を返し、続く変換が失敗します。混在コンテンツを扱う場合は必ず `parsed.Type` を確認してください。 + +## ステップ 3: パースした DateTime を ISO 8601 に変換する + +適切な `DateTime` が手に入ったら、ISO 形式の文字列への変換は楽々です。`"yyyy-MM-dd"` パターンは ISO 8601 の日付部分に準拠しており、ほとんどの API が期待する形式です。 + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +プログラムを実行すると次が出力されます: + +``` +ISO date: 2021-05-01 +``` + +それが求めていた **display iso date** です。 + +## 完全な実行可能サンプル + +以下はコンソールプロジェクトにそのまま貼り付けられる完全なコードブロックです。隠れた依存関係や余計な設定はありません。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## ステップバイステップの内訳(各部分が重要な理由) + +| Step | What Happens | Why It’s Important | +|------|--------------|--------------------| +| **Create workbook** | インメモリの Excel コンテナを初期化します。 | ファイルシステムに触れずにテストできるサンドボックスを提供します。 | +| **PutValue** | 生の和暦文字列を **A1** に格納します。 | 実際のデータ入力を模倣し、パーサが正確なテキストを取得できるようにします。 | +| **GetValue with `EnableJapaneseEra`** | 和暦文字列を .NET の `DateTime` に変換します。 | カレンダー変換を自動で処理し、手作業の変換表は不要です。 | +| **`ToString("yyyy-MM-dd")`** | `DateTime` を ISO 8601 形式にフォーマットします。 | 文化に依存しない、ソート可能な日付文字列を REST API やデータベースで確実に使用できます。 | +| **Console.WriteLine** | 最終的な ISO 日付を表示します。 | パイプライン全体がエンドツーエンドで機能していることを確認できます。 | + +## 一般的なバリエーションの取り扱い + +### 1. 異なるセル位置 + +日付が **B2** や名前付き範囲にある場合は、単に `"A1"` を適切なアドレスに置き換えるだけです: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. 列内の複数日付 + +多数の行で **extract date from excel** が必要なときは、使用範囲をループします: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. 和暦以外の日付のフォールバック + +セルにすでに標準的な日付文字列が入っている場合でもパーサは動作しますが、安全策を設けると良いでしょう: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` フラグは例外を防ぎ、変換に失敗した場合は元の値を返します。 + +### 4. 時間コンポーネント + +時間まで必要な場合は `"yyyy-MM-ddTHH:mm:ss"` を使用します: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +これにより完全な ISO 8601 タイムスタンプ(`2021-05-01T00:00:00`)が得られます。 + +## ビジュアルエイド + +![format datetime to iso example](image.png "An example of formatting datetime to iso in C#") + +*代替テキスト:* *コンソール出力を示す format datetime to iso の例* + +## よくある質問 + +- **Can I use this with .xls files?** + はい。Aspose.Cells は `.xls`, `.xlsx`, `.csv` など多数のフォーマットを標準でサポートしています。 + +- **What if the workbook is password‑protected?** + `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` で読み込みます。 + +- **Is the ISO format locale‑dependent?** + いいえ。`"yyyy-MM-dd"` パターンは文化に依存せず、どのマシンでも同じ文字列が保証されます。 + +- **Does this work on .NET Core?** + 完全に対応しています—Aspose.Cells は .NET Standard 2.0 に準拠しています。 + +## まとめ + +**format datetime to iso** を **extract date from excel** で取得し、和暦文字列をパースし、最終的にコンソールに **display iso date** を表示する方法を解説しました。コアステップ—ワークブック作成、和暦テキストの書き込みまたは読み込み、和暦パースの有効化、`ToString("yyyy-MM-dd")` でのフォーマット—はほとんどのシナリオで必要なすべてです。 + +次にやってみたいこと: + +- ISO 日付を別の列に書き戻して下流処理に利用する。 +- 変換したブックを CSV にエクスポートして一括インポートに備える。 +- Excel アップロードを受け取り JSON‑encoded の ISO 日付を返す Web API と組み合わせる。 + +さまざまな日付形式、タイムゾーン、あるいは独自カレンダーで実験してみてください。Aspose.Cells の柔軟性のおかげで壁にぶつかることはほとんどありません。 + +Happy coding, and may all your dates be perfectly ISO‑compliant! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/japanese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..a837692d9c --- /dev/null +++ b/cells/japanese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-22 +description: 書式付きでExcelをエクスポートし、数値形式を保持する方法。Excelの範囲を変換し、数式の結果を取得し、Aspose.Cells を使用して書式付きでExcelをエクスポートする方法を学びます。 +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: ja +og_description: 書式付きでExcelをエクスポートし、数値形式を保持する方法。Excelの範囲を変換し、数式結果を取得し、C#で書式付きExcelをエクスポートするステップバイステップガイド。 +og_title: Excelを書式付きでエクスポートする方法 – 数値形式を保持する +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excelを書式付きでエクスポートする方法 – 数値書式を保持 +url: /ja/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excelを書式付きでエクスポートする方法 – 数値書式を保持する + +Excelデータをエクスポートする際に、ワークブックで見える通りにすべてのセルの見た目をそのまま保ちたいと思ったことはありませんか? クライアントにレポートを送付したり、グリッドコントロールにデータを供給したり、単にデータベースに値を保存したりする必要があるかもしれません。 主な問題は、数値の書式が失われたり、数式が生の文字列に変換されてしまうことです。 + +このチュートリアルでは、**数値書式を保持**し、**Excelの範囲を** `DataTable` に **変換**し、**数式の結果を取得**し、最後に Aspose.Cells を使用して **書式付きでExcelをエクスポート**する、完全に実行可能な C# のサンプルを順を追って解説します。 最後まで読むと、任意のプロジェクトに貼り付けてワークシート参照で呼び出せる単一メソッドが手に入ります。 + +> **クイックプレビュー:** コードはブックを作成し、値と数式を書き込み、Aspose.Cells にセルを書式付き文字列としてエクスポートするよう指示し、`123.456 | 246.912` を出力します – まさに Excel で見える通りです。 + +--- + +## 必要なもの + +- **Aspose.Cells for .NET**(無料トライアルで学習は問題ありません) +- .NET 6.0 以降(API は .NET Framework でも同じです) +- 基本的な C# 開発環境(Visual Studio、VS Code、Rider… お好きなもの) + +追加の NuGet パッケージは Aspose.Cells 以外不要です。まだインストールしていない場合は、以下を実行してください: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## ステップ 1 – ワークブックを作成し、値(数式含む)を書き込む + +まず新しいブックを作成し、数値を **A1** に入力します。次に **B1** に、最初のセルを 2 倍するシンプルな数式を追加します。これにより、後で **数式の結果を取得** するデモの土台ができます。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**なぜ重要か:** +- `PutValue` は生の数値を格納し、`PutFormula` は計算式を格納します。 +- Aspose.Cells は数式を **生きたまま** 保持するため、後でセルの値を取得すると `246.912` が得られ、文字列 `"=A1*2"` ではありません。 + +--- + +## ステップ 2 – Aspose.Cells に書式付き文字列として値をエクスポートさせる + +`ExportDataTable` をデフォルト設定で呼び出すだけだと、数値セルは基になる `double` 値として返されます。これにより、千区切りや通貨記号、カスタム小数点など、設定した書式がすべて失われます。`ExportTableOptions` クラスを使うと、**数値書式を保持**し、**文字列としてエクスポート**できます。 + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**重要ポイント:** `ExportNumberFormat = true` が **数値書式を保持** するフラグです。これが無いと、`"123.456"` や `"246.912"` が生の数値として出力され、コード上は問題なくても、Excel と同じ書式を期待する UI に貼り付けたときに見た目が変わってしまいます。 + +--- + +## ステップ 3 – エクスポートされたデータを出力(検証) + +`DataTable` に書式付き文字列が入ったので、コンソールに内容をダンプしましょう。これにより、数式を自分で評価せずに **数式の結果を取得** できていることも確認できます。 + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +プログラムを実行すると次のように出力されます: + +``` +123.456 | 246.912 +``` + +2 列目が **数式の結果** を示しており、数式そのもののテキストではないことに注目してください。これが **書式付きで Excel をエクスポート** して下流処理に渡す際に必要な動作です。 + +--- + +## ステップ 4 – 大きな Excel 範囲の変換(オプション) + +上記の例は小さな `A1:B1` のスライスだけを扱っていますが、実務ではテーブル全体をエクスポートする必要があることが多いです。同じメソッドは任意の矩形ブロックで機能します – `firstRow`、`firstColumn`、`totalRows`、`totalColumns` の引数を調整するだけです。 + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**プロのコツ:** シートにすでにヘッダー行がある場合は、`includeColumnNames` を `true` に設定してください。Aspose.Cells は範囲の最初の行を列名として使用し、後で `DataTable` を UI グリッドにバインドする際に便利です。 + +--- + +## ステップ 5 – よくある落とし穴と回避方法 + +| 問題 | 発生原因 | 対策 | +|-------|----------------|-----| +| **数値からカンマや通貨記号が失われる** | `ExportAsString` が `false` になっている、または `ExportNumberFormat` が省略されている | `ExportAsString = true` と `ExportNumberFormat = true` の両方を設定する。 | +| **数式セルが数式テキストを返す** | エクスポート前に `CalculateFormula` を呼び出していない(ワークブックが自動計算設定でない場合に必要) | `workbook.CalculateFormula()` で自動計算を有効にするか、`ExportAsString` を使用して評価を強制する。 | +| **ヘッダーがデータ行として表示される** | 範囲にヘッダー行が含まれているのに `includeColumnNames` が `false` に設定されている | `includeColumnNames = true` に設定し、最初の行を列名として扱う。 | +| **大きな範囲でメモリ使用量が増える** | シート全体を一度にエクスポートすると、すべてがメモリにロードされるため | 500 行ずつなどのチャンクに分けてエクスポートし、必要に応じて `DataTable` を結合する。 | + +--- + +## ステップ 6 – 完全動作サンプル(コピー&ペースト可能) + +以下は `using` 文から `Main` までの全プログラムです。コンソールアプリに貼り付けて **F5** キーを押すだけで、書式付きの出力がすぐに確認できます。 + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**期待される出力** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +これが **Excel をエクスポートする方法** の全工程です。書式はそのまま保持され、数式結果が評価され、.NET で利用できるクリーンな `DataTable` が得られます。 + +--- + +## 結論 + +ここでは、**Excel をエクスポートする方法** として、**数値書式を保持**し、**Excel の範囲を** `DataTable` に **変換**し、**数式結果を取得**するために必要なすべてを解説しました。ポイントは `ExportTableOptions` の設定で、`ExportAsString` と `ExportNumberFormat` を `true` にすれば、Aspose.Cells が重い処理をすべて引き受けてくれます。 + +ここからできること: + +- `DataTable` を WPF の `DataGrid` や ASP.NET MVC のビューにバインドする。 +- テーブルを CSV ファイルに書き出し、見た目を完全に保持する。 +- この手法を複数シートや動的範囲に拡張する。 + +さまざまな書式(通貨、パーセンテージなど)や大きなデータブロックで試してみてください。問題が発生した場合は、**よくある落とし穴** の表を参照してください – **書式付きで Excel をエクスポート** する際に最も頻繁に起こるトラブルがまとめられています。 + +コーディングを楽しんで、エクスポートしたスプレッドシートが常にオリジナルと同じく美しく整っていることを願っています! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/japanese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..6b2339efa1 --- /dev/null +++ b/cells/japanese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells を使用した C# でのピボットテーブルの複製方法を学びます。このガイドでは、行のコピー方法と、シームレスな Excel + 自動化のための C# での Excel ワークブックの読み込み方法も示しています。 +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: ja +og_description: C#でピボットを複製する方法は?この簡潔なチュートリアルに従って、ExcelブックをC#で読み込み、行をコピーし、Excel自動化で行をマスターしましょう。 +og_title: C#でピボットを複製する方法 – 完全ガイド +tags: +- C# +- Excel Automation +- Aspose.Cells +title: C#でピボットを複製する方法 – 完全ステップバイステップガイド +url: /ja/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# でピボットを複製する方法 – 完全ステップバイステップガイド + +Excel でピボットテーブルを手動でドラッグせずにプログラムで **ピボットを複製する方法** を考えたことはありませんか? あなただけではありません。多くのレポートパイプラインでは、同じピボットレイアウトを新しい行セットに適用する必要があり、手作業は時間の無駄です。 + +良いニュースは、数行の C# コードで Excel ワークブックを読み込み、ピボットが配置されている領域を定義し、**行をコピーする方法** を指定すれば、ピボットを新しい場所に自動で表示できるということです。このチュートリアルでは **load excel workbook c#** の基本もカバーし、**excel automation copy rows** タスクの確固たる基礎を提供します。 + +> **このチュートリアルで得られるもの** +> • ピボットテーブルを複製する完全な実行可能サンプル。 +> • 各行が重要である理由の解説。 +> • 非表示シートや複数ピボットなどのエッジケースへの対処法。 + +--- + +## 前提条件 + +本題に入る前に、以下が揃っていることを確認してください。 + +- **.NET 6.0**(またはそれ以降の .NET バージョン)をインストール済み。 +- **Aspose.Cells for .NET** – Excel ファイル操作に使用するライブラリ。NuGet で取得できます: + +```bash +dotnet add package Aspose.Cells +``` + +- ピボットテーブルが **A1:J20** の範囲に存在するソースワークブック(`Source.xlsx`)。この範囲を複製対象とします。 +- C# の基本構文に慣れていること – 特別な知識は不要で、通常の `using` 文と `Main` メソッドが書ければ OK。 + +これらに心当たりがない場合は、一度パッケージをインストールしてから続行してください。以降の手順はライブラリが利用可能であることを前提としています。 + +--- + +![C# と Aspose.Cells を使用してピボットを複製する方法のイラスト](https://example.com/duplicate-pivot.png "C# でピボットを複製する方法のイラスト") + +*画像代替テキスト: 「C# でピボットを複製する例 – ソースと複製されたピボット行を示す」* + +--- + +## 手順 1: Load Excel Workbook C# – ファイルを開く + +**load excel workbook c#** を行う最初のステップは、対象ファイルを指す `Workbook` インスタンスを作成することです。このオブジェクトにより、ワークシート、セル、ピボットすべてにアクセスできます。 + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**重要ポイント:** +`Workbook` は Excel ファイル全体をメモリ上のモデルに抽象化します。先にロードしなければ、ピボットの位置を確認したり行をコピーしたりできません。また、コンストラクタはファイル形式(XLS、XLSX、CSV など)を自動判別するため、形式判定用のコードは不要です。 + +--- + +## 手順 2: How to Copy Rows – ピボット領域の定義 + +ワークブックがメモリ上にあるので、次に Aspose.Cells に対してピボットが含まれる行を指示します。例ではピボットは **A1:J20** にあり、行インデックスは **0‑19**(ゼロベース)に相当します。これを `CellArea` 構造体でラップします。 + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**`CellArea` を使用する理由:** +矩形領域を軽量に表現できるためです。後で `CopyRows` を呼び出す際に、このオブジェクトを基に正確な行範囲を取得します。範囲を変更したい場合(例: ピボットが列 K まで拡張された場合)は `endColumn` のみを変更すれば済みます。 + +--- + +## 手順 3: ターゲットワークシートへのアクセス + +ほとんどのワークブックはシートが 1 枚ですが、API は複数シートでも同様に機能します。最初のシート(インデックス 0)を取得します – ここに元のピボットが存在します。 + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**プロのコツ:** +シートに名前が付いている場合は、`workbook.Worksheets["Sheet1"]` のように名前で取得できます。これにより、ワークブック構造が変わってもインデックスハードコーディングを避けられます。 + +--- + +## 手順 4: How to Copy Rows – ピボットテーブルの複製 + +**how to duplicate pivot** の核心です。ピボットを含む行を新しい場所へコピーします。ここではコピー先を行 31(ゼロベースインデックス 30)から開始します。`CopyRows` メソッドはデータとピボットキャッシュの両方をコピーするため、複製行は元と同様に機能します。 + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**内部で何が起きているか:** +`CopyRows` は各行をクローンし、数式、スタイル、ピボット定義を保持します。ピボットのキャッシュはブックレベルにあるため、複製されたピボットは自動的に同じデータソースを参照し、追加設定は不要です。 + +**エッジケース – 非表示行:** +元範囲に非表示行が含まれている場合、コピー後も非表示のままです。非表示を解除したい場合は、コピー後に `worksheet.Rows[destRow].IsHidden = false` を実行してください。 + +--- + +## 手順 5: Save the Workbook – 複製の検証 + +最後に変更をディスクに書き出します。元ファイルを上書きするか、比較しやすいように新しい名前で保存するかはお好みで。 + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**期待される結果:** +`CopyWithPivot.xlsx` を開くと、元のピボットが **A1:J20** に、同一コピーが **A31:J50** から始まっているはずです。両方のピボットは個別に更新でき、元に付随していたスライサーもコピーに対して機能します(同じキャッシュを共有しているため)。 + +--- + +## よくある質問とバリエーション + +### 複数のピボットを一度に複製できますか? + +もちろん可能です。`worksheet.PivotTables` をループし、各ピボットの範囲を別々の宛先にコピーします。その際、宛先範囲が重複しないよう注意してください。 + +### ソースワークブックがパスワード保護されている場合は? + +Aspose.Cells は `Workbook` コンストラクタにパスワードを渡すことで保護されたファイルを開くことができます: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### 数式に影響を与えずに行だけコピーする方法は? + +値のみが必要な場合は、`CopyRows` に `CopyOptions` フラグを指定します: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### 別のワークブックへ行をコピーする方法は? + +可能です。ソースシートで行をコピーした後、`targetWorkbook.Worksheets.AddCopy(worksheet)` を使ってシート全体を別の `Workbook` インスタンスにクローンできます。 + +--- + +## 信頼性の高い Excel Automation Copy Rows のプロティップ + +- **コピー前に範囲を検証** する。`if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` のようなチェックで範囲外エラーを防げます。 +- **大規模コピー時は計算をオフ** にする: `workbook.Settings.CalcMode = CalcMode.Manual;` – これで処理速度が大幅に向上します。 +- **オブジェクトを破棄** する(`workbook.Dispose()`)ことで、ループ処理中のネイティブリソースを解放します。 +- **操作をログに残す** – 特に本番パイプラインでは、どのファイルが処理されたかを記録し、失敗を早期に検知できるようにします。 + +--- + +## 結論 + +これで **C# と Aspose.Cells を使用したピボットの複製方法** がマスターできました。**load excel workbook c#** から **excel automation copy rows** までの全工程を体験し、結果を保存するまで完了です。サンプルは単体で動作し、複数ピボット、保護ファイル、別ブックへのコピーなどにも拡張可能です。 + +次のステップとして以下に挑戦してみてください: + +- 複製したピボットをプログラムで更新する (`pivotTable.RefreshData();`)。 +- 複製領域を CSV にエクスポートし、下流処理に利用する。 +- ASP.NET Core API に組み込み、ユーザーがファイルをアップロードすると即座にピボット複製版を返す機能を実装する。 + +コーディングを楽しんで、Excel 自動化がますますスムーズになることを願っています! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/row-and-column-management/_index.md b/cells/japanese/net/row-and-column-management/_index.md index 64acc81194..58cc755e39 100644 --- a/cells/japanese/net/row-and-column-management/_index.md +++ b/cells/japanese/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Aspose.Cells for .NET を使用して Excel の行と列を表示する方法を Aspose.Cells for .NET を使用して Excel ファイル内の列を削除する方法を学びましょう。詳細なステップバイステップガイドに従って、Excel ファイルの変更を効率化しましょう。 ### [Aspose.Cells .NET で行を削除する](./delete-row-aspose-cells/) Aspose.Cells for .NET を使って Excel の行を削除する方法を学びましょう。このステップバイステップガイドでは、前提条件、コードのインポート、そしてシームレスなデータ操作のための詳細なチュートリアルを解説します。 +### [Aspose.Cells for .NET を使用してヘッダー行を保護しながら行を削除する](./aspose-cells-delete-rows-protect-header-row-in-excel/) +ヘッダー行を削除せずに、データ行だけを安全に削除する方法をステップバイステップで解説します。 ### [Aspose.Cells .NET で複数の行を削除する](./delete-multiple-rows-aspose-cells/) Aspose.Cells for .NET を使用して、Excel で複数の行を削除する方法を学びます。この詳細なステップバイステップガイドでは、前提条件、コーディング例、開発者向けの FAQ を網羅しています。 ### [Aspose.Cells .NET に列を挿入する](./insert-column-aspose-cells/) diff --git a/cells/japanese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/japanese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..4c809340c7 --- /dev/null +++ b/cells/japanese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cellsでヘッダー行を保護しながら行を削除する。最初のテーブルを取得し、C#でExcelテーブルの行を安全に削除する方法を学びましょう。 +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: ja +og_description: Aspose Cellsでヘッダー行を保護しながら行を削除する。最初のテーブルを取得し、C#でExcelテーブルの行を安全に削除する方法を学びましょう。 +og_title: Aspose Cellsで行を削除 – Excelのヘッダー行を保護 +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cellsで行を削除 – Excelでヘッダー行を保護 +url: /ja/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – ヘッダー行を保護する Excel + +テーブルから **aspose cells delete rows** を実行したら、ヘッダーが消えてしまったことはありませんか? これは Excel シートをプログラムで操作する際によくある落とし穴です。このガイドでは、**ヘッダー行を保護**し、**retrieve first table** の方法を示し、構造を壊さずに **delete Excel table rows** を安全に行う完全な実行可能ソリューションをステップバイステップで解説します。 + +ワークブックの読み込みから、ヘッダーを孤立させようとしたときに Aspose がスローする例外の処理までカバーします。最後まで読めば、Aspose.Cells を使用する任意の .NET プロジェクトにすぐに組み込める堅牢なパターンが手に入ります。 + +--- + +## 必要なもの + +- **Aspose.Cells for .NET**(v23.12 以降) – Office がインストールされていなくても Excel ファイルを操作できるライブラリ。 +- 基本的な C# 開発環境(Visual Studio、Rider、または `dotnet` CLI)。 +- ヘッダー行が 1 行目にある **ListObject**(Excel テーブル)を少なくとも 1 つ含む Excel ファイル(`TableWithHeader.xlsx`)。 + +Aspose.Cells 以外に追加の NuGet パッケージは必要ありません。 + +--- + +## Step 1: Load the Workbook and Retrieve the First Table + +最初に行うべきことは、ワークブックを開き、変更したいテーブルを取得することです。ここで二次キーワード **retrieve first table** が登場します。 + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**この処理が重要な理由:** +- `Workbook` は Excel がインストールされていなくてもファイルを読み取ります。 +- `worksheet.ListObjects[0]` は **retrieve first table** する最もシンプルな方法です。複数のテーブルがある場合はループさせるか、テーブル名で取得してください。 + +> **プロのコツ:** ワークシートにテーブルが存在するか不明な場合は、`worksheet.ListObjects.Count` を先にチェックして `IndexOutOfRangeException` を回避しましょう。 + +--- + +## Step 2: Protect Header Row While Deleting Rows + +本題です: **aspose cells delete rows** を実行してもヘッダーが消えないようにします。Aspose の `DeleteRows` メソッドは 0 基準の開始インデックスと削除件数を受け取ります。ヘッダー(行 0)を削除しようとすると例外が発生しますが、これを回避したいわけです。 + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**ロジックの説明:** + +| ステップ | 理由 | +|------|--------| +| `table.DeleteRows(1, 2);` | インデックス 1 は **2 行目**(最初のデータ行)を指します。2 行削除すると Excel では行 2‑3 が削除され、ヘッダー(行 1)はそのまま残ります。 | +| `catch (Exception ex)` | Aspose はヘッダーが孤立する操作を行ったときにのみ例外をスローします。例外を捕捉してフレンドリーなメッセージをログに残すことで、アプリのクラッシュを防げます。 | +| `Save` | 変更を保存すれば `Result.xlsx` を開いたときにヘッダーが残っていることを確認できます。 | + +> **ヘッダー自体を削除したい場合は?** +> 削除前に `table.ShowHeaders = false;` と設定するか、テーブル全体を削除して再作成してください。ただし、ほとんどの業務シナリオでは **protect header row** が求められます。 + +--- + +## Step 3: Verify the Result – Expected Output + +プログラム実行後、`Result.xlsx` を開くと次のようになります: + +- 1 行目には元の列見出しがそのまま残っている。 +- ターゲットにした 2‑3 行目が削除され、残りのデータが上にシフトしている。 + +コンソールには以下が表示されます: + +``` +Rows deleted successfully. +``` + +もし誤ってヘッダーを削除しようとした場合(例: `table.DeleteRows(0, 1);`)は、次のような出力になります: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +このメッセージは、Aspose の組み込み保護機能が正しく働いていることを示しています。 + +--- + +## Step 4: Alternative Ways to **Delete Excel Table Rows** + +条件に基づいて行を削除したり、非連続行を除去したりする場合、ヘッダーを安全に保つための 2 つのパターンをご紹介します。 + +### 4.1 Delete Rows by Data Filter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Delete Using a Range + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +どちらのスニペットも開始インデックスが 1 未満にならないようにしているため、**protect header row** のルールを遵守しています。 + +--- + +## Step 5: Common Pitfalls & How to Avoid Them + +| 落とし穴 | 発生原因 | 対策 | +|---------|----------------|-----| +| ヘッダーを誤って削除してしまう | 開始インデックスに `0` を使用した | データ行は必ず `1` から開始するか、先に `table.ShowHeaders` を確認する。 | +| シートにテーブルがない場合の `IndexOutOfRangeException` | テーブルが存在すると想定した | `worksheet.ListObjects.Count > 0` を確認してから `[0]` にアクセスする。 | +| 変更が保存されない | `Save` 呼び出しを忘れた | 変更後は必ず `workbook.Save` を実行する。 | +| 中間で行を削除するとインデックスがずれ、スキップが発生する | 前方イテレーションで削除した | 逆方向にイテレーションするか、削除対象行を事前に収集してから削除する。 | + +--- + +## Step 6: Put It All Together – Full Working Example + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +このプログラムを実行し、`Result.xlsx` を開くとヘッダーはそのままで選択した行だけが削除されていることが確認できます。これが **aspose cells delete rows** をヘッダーを犠牲にせずに実現する **完全かつ自己完結型のソリューション** です。 + +--- + +## Conclusion + +本稿では **aspose cells delete rows** を実行しつつ **protect header row** を保つ方法、**retrieve first table** の手順、そして安全に **delete excel table rows** する複数のアプローチをご紹介しました。重要なポイントは次の通りです: + +- 削除は必ずインデックス 1 から開始してヘッダーを残す。 +- Aspose の保護例外は `try/catch` でハンドリングする。 +- テーブルの存在を事前に確認し、条件付き削除時は逆順にイテレーションする。 + +次のステップとして、**Aspose Cells** のスタイリング API と組み合わせて削除前に行をハイライトしたり、複数シートにわたって自動化したりしてみてください。可能性は無限大です。今回のパターンを基に、ぜひ自分のプロジェクトに活かしてください。 + +このチュートリアルが役立ったら、いいねやシェア、または独自のエッジケース解決策をコメントで共有してください。Happy coding! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/japanese/net/saving-and-exporting-excel-files-with-options/_index.md index fbbe07d2c1..328cbf4b98 100644 --- a/cells/japanese/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/japanese/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells for .NET を使用して、Excel ファイルを HTML 形式で保 Aspose.Cells for .NET を使用して、Excel ファイル内のバージョン、作成者、タイトルなどのドキュメント プロパティをプログラムで指定する方法を、ステップ バイ ステップの手順で学習します。 ### [エクスポート時に先頭の空白行と列をトリミングする](./trimming-leading-blank-rows-and-columns/) Aspose.Cells for .NET を使えば、先頭の空白行と列を削除することで、CSV エクスポートを効率化できます。わずか数ステップでクリーンなデータを作成できます。 +### [C# でワークブックを保存する方法 – 完全な Excel 自動化ガイド](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Aspose.Cells for .NET を使用して、C# でワークブックを保存し、完全な Excel 自動化プロセスを学びます。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/japanese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..3199ff0bfd --- /dev/null +++ b/cells/japanese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-22 +description: C#でAspose.Cellsを使用してブックを保存する方法—Excelの読み込み、シートの作成、シートの再利用、レポートの生成をカバーしたステップバイステップガイド +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: ja +og_description: C#でAspose.Cellsを使用してブックを保存する方法。Excelの読み込み、シートの作成、シートの再利用、レポートの生成を1つのチュートリアルで学びましょう。 +og_title: C#でワークブックを保存する方法 – 完全なExcel自動化ガイド +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: C#でワークブックを保存する方法 – 完全なExcel自動化ガイド +url: /ja/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でワークブックを保存する方法 – 完全なExcel自動化ガイド + +データを加工した後、**ワークブックを保存する方法**を知りたくありませんか? あなたは一人ではありません。画面上ではレポートが完璧に見えても、ディスクに書き込めない壁にぶつかる開発者は多いです。このチュートリアルでは、**ワークブックを保存する方法**を示すだけでなく、**Excelの読み込み方法**、**シートの作成方法**、**シートの再利用方法**、そして**レポートの生成方法**もすべて Aspose.Cells を使って解説します。 + +ノートパソコンからコードを取り出しながら、コーヒーブレイクの会話感覚で各行を説明していくイメージです。最後まで読めば、テンプレートを読み込み、SmartMarker でデータを注入し、既存の詳細シート名を再利用し、最終的にファイルをフォルダーに書き出す実行可能なプログラムが手に入ります。謎はなく、コピー&ペーストできる明確な手順だけです。 + +## 必要なもの + +- **Aspose.Cells for .NET**(2026年時点の最新バージョン)。`Install-Package Aspose.Cells` で NuGet から取得できます。 +- .NET 開発環境(Visual Studio、Rider、または C# 拡張機能が入った VS Code で OK)。 +- `MasterTemplate.xlsx` という名前の基本的な Excel テンプレートファイルを、管理しやすいフォルダーに配置しておくこと。 +- 最低限の C# 知識 – `Console.WriteLine` が書ければ問題ありません。 + +> **プロのコツ:** テンプレートは別の *Resources* フォルダーに入れ、ビルド時に「Copy if newer」に設定しておくと、パスがビルド間で一貫します。 + +それではコードに入りましょう。 + +## Step 1: How to Load Excel – Open the Template Workbook + +最初に行うべきことは、ワークブックをメモリに読み込むことです。Aspose.Cells ならワンライナーで実現できますが、なぜそうするのかを理解しておくと後々のトラブルシューティングに役立ちます。 + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **重要ポイント:** ワークブックを読み込むことで、テンプレート内のすべてのワークシート、スタイル、名前付き範囲にアクセスできるようになります。ファイルが見つからない場合、Aspose は `FileNotFoundException` をスローするので、パスを必ず確認してください。 +- **エッジケース:** テンプレートがパスワード保護されている場合は、`Workbook` コンストラクタにパスワードを渡します: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Step 2: How to Reuse Sheet – Configure SmartMarker Options + +SmartMarker は自動的に新しい詳細シートを作成できますが、すでに **Detail** というシートが存在することもあります。名前衝突を防ぐために、プロセッサにその名前を再利用させます。 + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **重要ポイント:** このオプションを設定しないと、Aspose は数値サフィックス(例: “Detail1”)を付加します。これにより、固定シート名を前提としたマクロや数式が壊れる可能性があります。 +- **シートが存在しない場合は?** Aspose が自動で作成してくれるので、シートの有無に関わらず同じコードが機能します。 + +## Step 3: How to Create Sheet – Prepare the Data Source + +ここでシートを手動で追加しているわけではありませんが、SmartMarker に渡すデータが新しいシートの生成を決定します。注文リストを模したシンプルな匿名オブジェクトを作成しましょう。 + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **重要ポイント:** SmartMarker はテンプレート内の `&=Header` や `&=Items.Id` といったマーカーを走査します。`orderData` の構造がこれらのマーカーと完全に一致しないと、プロセッサは静かにスキップしてしまいます。 +- **バリエーション:** データベースから取得する場合は、匿名型の代わりに DTO のリストや `DataTable` を使用してください。どちらもプロセッサが扱えます。 + +## Step 4: How to Generate Report – Process the SmartMarker + +データをテンプレートにバインドします。プロセッサは最初のワークシートを走査し、マーカーを置換し、詳細シートを構築します。 + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **重要ポイント:** この一行でヘッダーの埋め込み、`Items` の反復、そして先ほど設定した `DetailSheetNewName` の適用という重い処理がすべて行われます。 +- **よくある質問:** *マーカーが複数のワークシートにある場合は?* 各ワークシートをループし、`SmartMarkerProcessor.Process` を個別に呼び出します。 + +## Step 5: How to Save Workbook – Persist the Resulting File + +最後に、変更されたワークブックをディスクに書き出します。ここで **ワークブックを保存する方法** が具体化します。 + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **重要ポイント:** `Save` メソッドは多数のフォーマット(`.xlsx`, `.xls`, `.csv`, `.pdf` など)をサポートしています。デフォルトは Excel ファイルですが、`SaveOptions` オブジェクトを渡すことで出力形式を変更できます。 +- **エッジケース:** 保存先ファイルが Excel で開かれていると、`Save` は `IOException` をスローします。インスタンスをすべて閉じるか、実行ごとにユニークなファイル名を使用してください。 + +![How to Save Workbook in C# example](/images/how-to-save-workbook-csharp.png "How to Save Workbook in C# – visual overview of the process") + +### 完全動作サンプル + +すべてをまとめた、コンパイルして実行できるコンソールアプリの例です。 + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**期待される出力:** 実行後、`SmartMarkerWithDupDetail.xlsx` が `YOUR_DIRECTORY` に作成されます。開くと次のようになります。 + +- 元のヘッダーが “Orders” で埋め込まれている。 +- **Detail** という名前の新しい(または再利用された)シートに、2 行のデータ `Id=1, Qty=5` と `Id=2, Qty=3` が入っている。 + +**Detail** シートがすでに存在していた場合、その内容は新しいデータで上書きされ、余計なシートが増えることはありません。 + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| *Can I save to PDF instead of XLSX?* | Yes. Replace `workbook.Save("file.xlsx")` with `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *What if my template has multiple SmartMarker sections?* | Call `SmartMarkerProcessor.Process` on each worksheet that contains markers, or pass a collection of data objects that match each section. | +| *Is there a way to append data instead of overwriting the Detail sheet?* | Use `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (available in newer Aspose versions). | +| *Do I need to dispose the Workbook?* | The `Workbook` class implements `IDisposable`. Wrap it in a `using` block for clean resource management. | + +## Conclusion + +私たちは **C#でワークブックを保存する方法** を、**Excelの読み込み方法**、**シートの作成方法**(SmartMarker による暗黙的生成)、**シートの再利用方法**、そして **レポートの生成方法** とともに、最初から最後まで網羅しました。コードは任意の .NET プロジェクトにそのまま組み込めますし、解説はマルチシートレポート、条件付き書式、PDF 出力など、より複雑なシナリオへ拡張するための十分なコンテキストを提供します。 + +次のチャレンジはどうですか? 注文数量を可視化するチャートを追加したり、下流処理用に CSV 形式で出力したりしてみましょう。ロード、プロセス、セーブという同じ原則が適用されるので、多くのレポート作成タスクでこのパターンを再利用できるはずです。 + +問題が発生したり、拡張アイデアがあればぜひコメントを残してください。コーディングを楽しみながら、**ワークブックを保存する** という作業を思い通りに実現できる快適さを体感してください! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/smart-markers-dynamic-data/_index.md b/cells/japanese/net/smart-markers-dynamic-data/_index.md index 3aae99b952..df25cb0e9a 100644 --- a/cells/japanese/net/smart-markers-dynamic-data/_index.md +++ b/cells/japanese/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Aspose.Cells for .NET の汎用リストとスマートマーカーをマスタ ステップバイステップ ガイドに従ってスマート マーカーを使用してネストされたオブジェクトを簡単に処理することにより、Aspose.Cells による Excel レポートの可能性を最大限に引き出します。 ### [スマートマーカーAspose.Cellsで変数配列を実装する](./variable-array-smart-markers/) Aspose.Cells のパワーを解き放ちましょう。スマートマーカーを使用して変数配列を実装し、シームレスな Excel レポートを生成する方法を段階的に学びます。 +### [C# で Excel レポートを生成する方法 – SmartMarker を使用した完全ガイド](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/japanese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..d66bb72ce1 --- /dev/null +++ b/cells/japanese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-22 +description: C#でマスタ‑デティールテンプレートを使用してExcelレポートを生成する方法。SmartMarkerを使って繰り返しシートを作成し、Excelテンプレートへのデータ投入を迅速に学びましょう。 +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: ja +og_description: 再利用可能なテンプレートを使用してC#でExcelレポートを生成する方法。ステップバイステップのガイドで、マスターディテールデータを用いてC#のExcelテンプレートにデータを入力する手順を示します。 +og_title: C#でExcelレポートを生成する方法 – 完全なSmartMarkerチュートリアル +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: C#でExcelレポートを生成する方法 – SmartMarkerを使用した完全ガイド +url: /ja/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でExcelレポートを生成する方法 – SmartMarkerを使用した完全ガイド + +セルごとにコードを書き続けることなく、C#で **Excelレポートを生成する方法** を考えたことはありませんか? あなただけではありません。多くの開発者は、注文と明細のようなマスタ‑詳細関係を反映した洗練されたマルチシートレポートが必要になると壁にぶつかりますが、毎回車輪の再発明はしたくありません。 + +朗報です。既成のExcelテンプレートと Aspose.Cells の **SmartMarker** エンジンを使えば、数行のコードで **populate Excel template C#** が可能です。このチュートリアルでは実践的なシナリオを順に解説し、各ステップの重要性を説明し、すぐにコピー&ペーストできる完全な実行可能サンプルを提供します。 + +> **得られるもの:** 各注文が独自のワークシートを生成するマスタ‑詳細Excelレポートで、すべてプレーンな C# オブジェクトで駆動します。セルを手動でループする必要も、壊れやすい数式もなく、クリーンで保守しやすいコードです。 + +--- + +## 前提条件 + +- **.NET 6.0**(またはそれ以降)がインストールされていること – コードは .NET 6 を対象としていますが、.NET Framework 4.7+ でも動作します。 +- **Aspose.Cells for .NET** NuGet パッケージ (`Install-Package Aspose.Cells`) – これにより `Workbook`、`SmartMarkerProcessor`、その他のクラスが利用可能になります。 +- `YOUR_DIRECTORY` に配置された **MasterDetailTemplate.xlsx** という名前の Excel ファイル。最初のシートに `{{Orders.OrderId}}` のような SmartMarker ブロックがあり、明細行には `{{Orders.Items.Prod}}` の入れ子ブロックが含まれている必要があります。 +- C# の匿名型に関する基本的な理解 – これを使用して注文と明細をモデル化します。 + +これらのいずれかが馴染みがない場合でも心配ありません。後ほど代替手段(例:EPPlus の使用)について触れますが、基本的な概念は変わりません。 + +## 手順 1: SmartMarker ブロックを保持する Excel テンプレートをロードする + +最初に行うのはテンプレートファイルを開くことです。テンプレートは骨格と考えてください。SmartMarker が後で実データで肉付けします。 + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**この重要性:** レイアウト(テンプレート)とデータ(C# オブジェクト)を分離することで、デザイナーも開発者も満足できます。デザイナーはコードに触れずにフォントや色、数式を調整できます。 + +## 手順 2: マスタ‑詳細データソースを構築する + +次に、テンプレートに入力するデータを作成します。典型的な注文レポートでは、注文のコレクションがあり、各注文はそれぞれの明細コレクションを持ちます。 + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **プロのコツ:** 複数のレポートで再利用が必要な場合は、匿名型の代わりに強く型付けされたクラスを使用してください。匿名型は例を簡潔に保つためのアプローチです。 + +**この重要性:** SmartMarker はプロパティ名(`Orders`、`OrderId`、`Items`、`Prod`、`Qty`)とテンプレート内のプレースホルダーを照合して動作します。階層が正確に一致しないと、エンジンはそのセクションをスキップします。 + +## 手順 3: SmartMarker にマスターレコードごとに新しいシートを作成させる + +デフォルトでは SmartMarker はすべての行を単一シートに書き込みます。ここでは各注文を個別のワークシートにしたいので、後で印刷や注文ごとの PDF メール送信に最適です。 + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**この重要性:** `EnableRepeatingSheet` を使用すると、手動でシートをクローンする必要がなくなります。エンジンは元のシートをコピーし、注文データを注入し、シート名を自動的に(通常は最初の列の値を使用して)リネームします。 + +## 手順 4: データでテンプレートを処理する + +ここで全てを結びつけます。`SmartMarkerProcessor` がブック全体を走査し、タグを置換し、指示通りに新しいシートを作成します。 + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**この重要性:** この1行で重い処理を行います—テンプレートの解析、コレクションの反復、入れ子テーブルの処理です。手動ループなしで **populate Excel template C#** の核心となります。 + +## 手順 5: 完成したレポートを保存する + +最後に、データが入ったワークブックをディスクに書き出します。Web アプリの場合は、直接 HTTP 応答にストリームすることも可能です。 + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**この重要性:** ファイルに保存することで、Excel で開いたり、ステークホルダーと共有したり、PDF 変換などの下流プロセスに渡したりできる具体的な成果物が得られます。 + +## 完全動作例(コピー&ペースト可能) + +以下は `using` ディレクティブと `Main` メソッドを含む完全なプログラムです。コンソールアプリに貼り付け、ファイルパスを調整して実行してください。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### 期待される出力 + +`MasterDetailResult.xlsx` を開くと、以下が確認できます: + +- **シート “Order_1”** – 注文 1 のヘッダーと製品 A と B の 2 行が含まれます。 +- **シート “Order_2”** – 注文 2 のヘッダーと製品 C の 1 行が含まれます。 +- 元のテンプレートのすべての数式、書式設定、チャートが保持されています。 + +![各注文ごとに別々のシートがあるExcelレポート – 生成されたワークブックの例](/images/excel-report-example.png "マスタ‑詳細データを含む生成されたExcelレポート") + +*画像の代替テキスト: 各注文ごとに別々のシートがある生成されたExcelレポート、C# と SmartMarker を使用して Excel レポートを生成する方法を示しています。* + +## よくある質問とエッジケース + +### 繰り返しシートと併せて静的シート(例:サマリー)が必要な場合は? + +`EnableRepeatingSheet = true` をマスターブロックを含むワークシート **のみ** に設定します。他のシートは変更されないため、元のテンプレートにサマリーページを保持できます。 + +### 匿名オブジェクトの代わりに DataTable を使用できますか? + +もちろんです。SmartMarker は `IEnumerable` を実装する任意のオブジェクトで動作します。匿名型を `DataTable` に置き換え、列名がタグと一致していることを確認してください。 + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### 生成されたシートの命名規則を変更するには? + +`ISmartMarkerSheetNaming` インターフェイスをカスタム実装する(または処理後に `workbook.Worksheets` を操作する)ことで実現できます。多くの開発者はセルの値に基づいてシート名を変更します: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### テンプレートが別のプレースホルダー構文を使用している場合は? + +SmartMarker は `SmartMarkerOptions` を使用してカスタム区切り文字を設定できます。例えば、`{{ }}` の代わりに `<< >>` を使用する場合は次のようにします: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## このアプローチをスケールするためのヒント + +- **テンプレートをメモリにキャッシュ** してください。リクエストごとに多数のレポートを生成する場合、毎回ディスクから読み込むと遅延が増えます。 +- **PDF 変換と組み合わせる**(`workbook.Save("report.pdf", SaveFormat.Pdf)`)ことで、メールフレンドリーな出力が得られます。 +- **ファイルパスをパラメータ化** し、設定ファイルや環境変数を使用して、開発・テスト・本番間で移植性を確保します。 +- **データ層を個別にユニットテスト** してください。SmartMarker 自体は決定的なので、提供するデータが期待されるスキーマと一致しているかを検証すれば十分です。 + +## 結論 + +C# で **Excelレポートを生成する方法** をエンドツーエンドで解説しました。SmartMarker 対応テンプレートのロードから、マスタ‑詳細関係を反映したマルチシートブックの保存まで。数行のコードで **populate Excel template C#** を行うことで、壊れやすいセル単位のロジックを回避し、デザイナーに最終的な外観を自由に設計させることができます。 + +次に検討できること: + +- シートごとに自動更新されるチャートと共に **populate Excel template C#** を使用する。 +- **excel smartmarker c#** を ASP.NET Core と統合し、レポートをブラウザへ直接ストリームする。 +- API やデータベースからデータを取得する **c# excel automation** パイプラインを自動化する。 + +ぜひ試してみて、テンプレートを調整し、生データを洗練された Excel レポートに変換できる速さを体感してください。質問や面白いユースケースがあれば、下のコメント欄にどうぞ—ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/japanese/net/tables-and-lists/_index.md b/cells/japanese/net/tables-and-lists/_index.md index ed804c18cd..d93e5457da 100644 --- a/cells/japanese/net/tables-and-lists/_index.md +++ b/cells/japanese/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Aspose.Cells for .NET を使えば、ステップバイステップのガイド Aspose.Cells for .NET のパワーを解き放ちましょう。この詳細なステップバイステップガイドで、クエリデータソースを使用したテーブルの読み書き方法を学びましょう。 ### [Excelで表やリストにコメントを設定する](./setting-comment-of-table-or-list/) 簡単なステップバイステップ ガイドを使用して、Aspose.Cells for .NET を使用して Excel のテーブルにコメントを設定する方法を学習します。 +### [C# で Excel テーブルを作成する – ステップバイステップ ガイド](./create-excel-table-in-c-step-by-step-guide/) +Aspose.Cells for .NET を使用して、C# で Excel テーブルを作成する手順を詳しく解説します。 {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/japanese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/japanese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..bee948dc0f --- /dev/null +++ b/cells/japanese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-22 +description: C#でExcelテーブルを素早く作成する。テーブルの追加方法、テーブル範囲の定義、テーブルヘッダーの非表示、テーブルフィルターの無効化を、完全なコード例とともに学びましょう。 +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: ja +og_description: C#でExcelテーブルを作成する明確な例。テーブルの追加、テーブル範囲の定義、ヘッダーの非表示、フィルターの無効化を数行で学びましょう。 +og_title: C#でExcelテーブルを作成する – 完全プログラミングガイド +tags: +- Aspose.Cells +- C# +- Excel Automation +title: C#でExcelテーブルを作成する – ステップバイステップガイド +url: /ja/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でExcelテーブルを作成する – ステップバイステップガイド + +C# を使ってプログラムで **create Excel table** が必要になったことはありませんか? Excelテーブルの作成は、正しい手順さえ分かっていれば簡単です。このチュートリアルでは、**how to add table**、**define table range**、**hide table header**、さらには **disable table filter** を示す、完全に実行可能な例を順に解説します – すべて IDE を離れることなく行えます。 + +不要なときに AutoFilter UI が表示されて困ったことがあるなら、ここが適切な場所です。このガイドの最後までに、*TableNoFilter.xlsx* というクリーンなブックを生成する実行準備が整ったスニペットが手に入り、各行がなぜ重要なのかが理解できるようになります。 + +## 学べること + +- Aspose.Cells を使用して、**create Excel table** をゼロから作成する方法。 +- **define table range** の正確な構文(この例では A1:D5)。 +- ヘッダー行を有効にして、組み込みのフィルター UI を表示させる方法。 +- 不要になったときに **hide table header** と **disable table filter** を行うコツ。 +- 今日すぐに実行できる、完全なコピー&ペースト対応の C# プログラム。 + +### 前提条件 + +- .NET 6.0 以上(コードは .NET Framework 4.7+ でも動作します)。 +- NuGet でインストールした Aspose.Cells for .NET(`Install-Package Aspose.Cells`)。 +- C# と Visual Studio(またはお好みの IDE)に関する基本的な知識。 + +--- + +## ステップ 1: プロジェクトの設定と名前空間のインポート + +**create Excel table** を行う前に、Aspose.Cells を参照するコンソールプロジェクトが必要です。ターミナルを開いて次を実行します: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +*Program.cs* を開き、必要な `using` 文を追加します: + +```csharp +using System; +using Aspose.Cells; +``` + +これらのインポートにより、チュートリアル全体で使用する `Workbook`、`Worksheet`、`CellArea`、`ListObject` クラスにアクセスできます。 + +## ステップ 2: 新しい Workbook を初期化し、最初の Worksheet を取得する + +新しい Workbook を作成することが最初の論理的なステップです。Workbook は Excel ファイルのコンテナ、Worksheet はテーブルを配置する個々のシートと考えてください。 + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Why this matters:** 新規の `Workbook` は空のシートが1枚だけで開始します。`Worksheets[0]` を取得することで、手動でシートを作成することなくデフォルトシート上で作業していることが保証されます。 + +## ステップ 3: テーブル範囲を定義する (A1:D5) + +Excel 用語で、*テーブル* はセルの矩形ブロック内に存在します。`CellArea` 構造体を使ってそのブロックを特定できます。ここではセル A1 から D5 までの **define table range** を扱います。 + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** 動的な範囲が必要な場合は、データ長に基づいて `endRow` と `endColumn` を計算できます。0 ベースのインデックスはオフバイワンバグの一般的な原因となるため、数値を必ず確認してください。 + +## ステップ 4: テーブルを追加し、ヘッダー行を有効にする + +ここからがチュートリアルの核心です: ワークシートに **how to add table** を行います。`ListObjects` コレクションがテーブルを管理し、`ShowHeaders = true` を設定すると AutoFilter UI が自動的に挿入されます。 + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **説明:** +> - `Add(tableRange, true)` は、指定された範囲内に新しい `ListObject`(すなわち Excel テーブル)を作成します。 +> - `true` フラグは、範囲の最初の行をヘッダーとして扱うよう Aspose.Cells に指示します。 +> - `ShowHeaders` を `true` に設定すると、ヘッダーが表示され、組み込みのフィルター UI が起動します。 + +この時点で生成されたブックを開くと、各列ヘッダーにフィルター矢印が付いた整ったテーブルが表示されます。 + +## ステップ 5: ヘッダー行を非表示にし、AutoFilter を無効にする + +UI の煩わしさを除いたデータだけが欲しいことがあります。フィルターが不要なクリーンなレポートをエクスポートする場合などです。以下が **hide table header** と **disable table filter** の手法です: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **なぜこれを行うか:** +> - `ShowHeaders = false` は視覚的なヘッダー行を削除し、テーブルを単なるデータブロックに変えます。 +> - `AutoFilter = null` を設定すると、隠れたフィルターオブジェクトがクリアされ、残存するフィルターロジックがなくなります。これが **disable table filter** の意味です。 + +## ステップ 6: ワークブックをディスクに保存する + +最後に、ファイルを任意の場所に書き出します。`"YOUR_DIRECTORY"` を実際のパスに置き換えてください。 + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +プログラムを実行すると、次のように表示されます: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +ファイルを開くと、ヘッダーもフィルター矢印もないデータブロック(A1:D5)がシートに表示されます。これで **create Excel table** から **disable table filter** までの一連の流れが完了です。 + +--- + +## 完全動作サンプル(コピー&ペースト対応) + +以下はそのままコンパイルできる全プログラムです。プレースホルダーのディレクトリを有効なパスに置き換えるだけです。 + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**期待される結果:** ヘッダー行が非表示でフィルタードロップダウンもない、A1:D5 のプレーンなデータ範囲を含む *TableNoFilter.xlsx* というファイルが生成されます。 + +--- + +## よくある質問とエッジケース + +### 同じシートに複数のテーブルが必要な場合は? + +新しい `CellArea` と新しい `ListObject` を使って **Step 3** を繰り返すだけです。各テーブルは独自のヘッダーとフィルター設定を保持するので、片方だけを非表示にし、もう片方は表示したままにできます。 + +### ヘッダーを非表示にする前にテーブルのスタイル(バンド行、色)を設定できますか? + +もちろん可能です。`ListObject` は `TableStyleType` プロパティを公開しています。例: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +ヘッダーを非表示にする **前** にスタイルを適用すれば、視覚的な書式はそのまま保持されます。 + +### ヘッダーは残したままでフィルター矢印だけ非表示にしたい場合は? + +`ShowHeaders = true`(行は残す)にした上で、フィルターだけクリアします: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +これにより **disable table filter** の要件を満たしつつ、列ラベルは保持できます。 + +### .xlsx ファイルだけで動作しますか? + +Aspose.Cells は `Save` に渡すファイル拡張子に基づいてフォーマットを自動検出します。`.xls`、`.csv`、さらには `.pdf` など、別の拡張子を指定すればそれらの形式でも出力可能です。 + +--- + +## 結論 + +Aspose.Cells を使用した C# での **create Excel table** の手順、**define table range**、**hide table header**、**disable table filter** までをすべてカバーしました。コードは短く分かりやすく、実運用にもすぐに使える形です。 + +次のステップとしては、動的データで **how to add table** を行う方法やカスタムスタイルの適用、同じブックを PDF にエクスポートする方法などに挑戦してみてください。これらは今回習得した基礎の上に構築できるテーマですので、ぜひ実験しながら自分のプロジェクトに合わせてカスタマイズしてください。 + +何か独自の工夫や質問があれば、下のコメント欄でシェアしてください。ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/converting-excel-files-to-other-formats/_index.md b/cells/korean/net/converting-excel-files-to-other-formats/_index.md index 5ece0ad182..65562afc29 100644 --- a/cells/korean/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/korean/net/converting-excel-files-to-other-formats/_index.md @@ -19,7 +19,7 @@ .NET에서 Excel 파일을 다루는 개발자에게 효율적인 파일 변환은 큰 변화를 가져올 수 있습니다. Aspose.Cells for .NET은 Excel 파일을 다양한 형식으로 변환하는 강력한 기능을 제공하여 애플리케이션 전반에서 유연한 데이터 처리를 지원합니다. 아래에서는 Aspose.Cells를 사용하여 Excel 파일을 다양한 파일 형식으로 변환하는 과정을 보여주는 유용한 튜토리얼을 소개합니다. -## Excel 파일을 JSON, DOCX, HTML 등으로 변환 +## Excel 파일을 JSON, DOCX 등으로 변환 1. [.NET에서 CSV를 JSON으로 프로그래밍 방식으로 변환](./converting-csv-to-json/)CSV 파일을 JSON 형식으로 변환하는 것이 그 어느 때보다 쉬워졌습니다. 이 가이드는 원시 CSV 입력에서 구조화된 JSON 데이터가 필요한 애플리케이션에 적합한, 직관적인 코드 기반 데이터 변환 방식을 제공합니다. @@ -56,6 +56,10 @@ Aspose.Cells for .NET을 사용하여 Excel 파일을 보관용 PDF/A-1a로 변 Aspose.Cells를 사용하여 .NET에서 JSON을 CSV로 프로그래밍 방식으로 변환하는 방법을 알아보세요. 단계별 가이드를 따라 데이터를 원활하게 변환하세요. ### [.NET에서 Excel 파일을 PPTX로 프로그래밍 방식으로 변환](./converting-excel-file-to-pptx/) 이 단계별 가이드를 통해 Aspose.Cells for .NET을 사용하여 Excel 파일을 PowerPoint 프레젠테이션(PPTX)으로 프로그래밍 방식으로 변환하는 방법을 알아보세요. +### [Excel을 PowerPoint로 내보내기 – 완전한 C# 가이드](./export-excel-to-powerpoint-complete-c-guide/) +Aspose.Cells for .NET을 사용하여 Excel 데이터를 PowerPoint 프레젠테이션으로 변환하는 전체 C# 단계별 가이드입니다. +### [Excel에서 인쇄 영역 설정 및 PowerPoint로 내보내기 – 단계별 가이드](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Aspose.Cells를 사용하여 Excel에서 인쇄 영역을 설정하고 이를 PowerPoint 프레젠테이션으로 내보내는 방법을 단계별로 안내합니다. ### [.NET에서 프로그래밍 방식으로 출력 HTML에 HTML CrossType 지정](./specifying-html-crosstype-in-output-html/) Aspose.Cells for .NET에서 HTML CrossType을 지정하는 방법을 알아보세요. 단계별 튜토리얼을 따라 Excel 파일을 정확하게 HTML로 변환하세요. ### [.NET에서 숫자 스프레드시트를 프로그래밍 방식으로 읽기](./reading-numbers-spreadsheet/) diff --git a/cells/korean/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/korean/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..13c00221e9 --- /dev/null +++ b/cells/korean/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-22 +description: 몇 단계만으로 Excel을 PowerPoint로 내보내고, 인쇄 영역을 설정하며, 편집 가능한 차트와 OLE 개체가 포함된 + PPTX 파일로 저장하는 방법을 배워보세요. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: ko +og_description: Excel을 빠르게 PowerPoint로 내보내기. 이 튜토리얼에서는 Excel에서 인쇄 영역을 설정하고 편집 가능한 + 차트와 OLE 개체가 포함된 PPTX 파일로 저장하는 방법을 보여줍니다. +og_title: Excel을 PowerPoint로 내보내기 – 완전 C# 가이드 +tags: +- Aspose.Cells +- C# +- Office Automation +title: Excel을 PowerPoint로 내보내기 – 완전한 C# 가이드 +url: /ko/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel을 PowerPoint로 내보내기 – 완전한 C# 가이드 + +Excel을 **PowerPoint로 내보내**야 하나요? 올바른 곳에 오셨습니다. 주간 영업 프레젠테이션을 만들든 보고 파이프라인을 자동화하든, Excel 워크시트를 PowerPoint 슬라이드 데크로 변환하면 복사‑붙여넣기 작업에 소요되는 시간을 크게 절약할 수 있습니다. + +이 튜토리얼에서는 **Excel을 PowerPoint로 내보내기**뿐만 아니라 **Excel 인쇄 영역 설정** 및 **Excel을 pptx로 저장**하는 방법도 보여주는 실습 예제를 단계별로 살펴보겠습니다. 결과 슬라이드에는 차트와 OLE 개체가 완전히 편집 가능하도록 유지됩니다. 끝까지 진행하면 수동 조정 없이도 전문가 수준의 `.pptx` 파일을 생성하는 실행 준비가 된 C# 프로그램을 얻게 됩니다. + +## 필요 사항 + +- **.NET 6+** (최근 .NET 런타임이면 모두 작동합니다; 코드는 C# 10 구문을 사용합니다) +- **Aspose.Cells for .NET** – 내보내기를 지원하는 라이브러리입니다. NuGet(`Install-Package Aspose.Cells`)에서 가져올 수 있습니다. +- 차트 및/또는 OLE 개체가 최소 하나 포함된 Excel 워크북(코드에서는 샘플 파일 `ChartAndOle.xlsx`를 사용합니다). +- 선호하는 IDE(Visual Studio, Rider, 또는 VS Code – 원하는 것을 사용하세요). + +이것으로 충분합니다. COM 인터옵이나 Office 설치가 필요 없습니다. + +> **왜 라이브러리를 사용해야 할까요?** +> 기본 제공 Office Interop은 불안정하고 서버에 Office가 필요하며, 실제로는 벡터 기반의 편집 가능한 도형을 원할 때 종종 래스터 이미지가 생성됩니다. Aspose.Cells는 무거운 작업을 처리하고 PowerPoint에서 모든 것을 편집 가능하게 유지합니다. + +--- + +## 단계 1: Excel 워크북 로드 + +먼저 소스 파일을 메모리로 가져옵니다. `Workbook` 클래스는 전체 Excel 파일을 추상화하여 워크시트, 차트 및 OLE 개체에 접근할 수 있게 해줍니다. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**왜 중요한가:** 워크북을 로드하는 것이 기본입니다. 경로가 잘못되었거나 파일이 손상되면 파이프라인의 나머지 부분이 실행되지 않습니다. `try…catch` 블록은 충돌 대신 친절한 오류 메시지를 제공합니다. + +--- + +## 단계 2: Excel에서 인쇄 영역 설정 + +내보내기 전에 일반적으로 출력 범위를 특정 영역으로 제한하고 싶습니다. 여기서 **set print area excel**이 활용됩니다. 인쇄 영역을 정의하면 Aspose.Cells에 어떤 셀(및 관련 개체)이 슬라이드에 표시될지 정확히 알려줄 수 있습니다. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **전문가 팁:** 여러 워크시트가 있는 경우 내보낼 각 워크시트에 대해 `PrintArea` 할당을 반복하세요. 인쇄 영역을 설정하지 않으면 전체 시트가 내보내져 PowerPoint 파일이 커질 수 있습니다. + +--- + +## 단계 3: 내보내기 옵션 구성 – 차트 및 OLE 편집 가능 유지 + +Aspose.Cells는 풍부한 `ImageOrPrintOptions` 객체를 제공합니다. `ExportChartObjects`와 `ExportOleObjects`를 토글하면 차트의 벡터 특성과 OLE 개체(예: 삽입된 Word 문서나 PDF)의 실시간 편집 가능성을 유지합니다. + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**내부 동작:** +`ExportChartObjects`가 `true`이면 Aspose는 차트를 기본 PowerPoint 차트 형태로 변환하여 시리즈, 축 및 서식을 보존합니다. `ExportOleObjects`가 활성화되면 삽입된 개체가 OLE 프레임으로 삽입되어 PowerPoint에서 더블 클릭하면 원본 애플리케이션(Word, Excel 등)이 열려 편집할 수 있습니다. + +--- + +## 단계 4: 워크시트를 편집 가능한 PowerPoint 파일로 저장 + +이제 모든 것을 연결합니다. `Save` 메서드는 구성한 옵션을 사용해 `.pptx` 파일을 작성합니다. 결과는 각 워크시트가 슬라이드가 되거나(인쇄 영역이 여러 페이지에 걸치면 여러 슬라이드가 되는) 슬라이드 데크가 됩니다. + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### 예상 결과 + +- **파일 위치:** `C:\MyProjects\EditableChartOle.pptx` +- **내용:** + - Excel에 표시된 대로 `A1:H30` 범위를 정확히 보여주는 슬라이드. + - 모든 차트가 PowerPoint 차트 개체이며, 막대를 클릭하면 데이터를 편집할 수 있습니다. + - OLE 개체(예: 삽입된 Word 문서)는 슬라이드에서 직접 열고 편집할 수 있습니다. + +PowerPoint에서 PPTX를 열면 완전히 편집 가능한 구성 요소가 포함된 깔끔한 슬라이드가 표시됩니다—래스터화된 스크린샷이 없습니다. + +--- + +## 엣지 케이스 및 변형 + +### 여러 워크시트 → 여러 슬라이드 +각 워크시트를 개별 슬라이드로 만들고 싶다면 `workbook.Worksheets`를 반복하고 특정 시트 인덱스를 대상으로 하는 `SheetToImageOptions`와 함께 `Save`를 호출하면 됩니다. Aspose는 각 반복마다 자동으로 새 슬라이드를 생성합니다. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### 큰 범위 및 성능 +대규모 인쇄 영역(예: `A1:Z1000`)을 내보내면 메모리 사용량이 증가할 수 있습니다. 이를 완화하려면 다음을 고려하세요: +- 범위를 더 작은 청크로 나누어 별도 슬라이드로 내보내기. +- `OutOfMemoryException`이 발생하면 `WorkbookSettings`를 사용해 `MemorySetting`을 증가시키기. + +### 호환성 우려 +생성된 PPTX는 PowerPoint 2016 및 이후 버전에서 작동합니다. 오래된 버전에서도 파일을 열 수 있지만 일부 고급 차트 기능이 손실될 수 있습니다. 데크를 널리 배포할 경우 대상 Office 버전에서 항상 테스트하세요. + +--- + +## 전체 작업 예제 (복사‑붙여넣기 준비됨) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **팁:** 하드코딩된 경로를 구성 값이나 명령줄 인수로 교체하면 더 유연한 도구가 됩니다. + +--- + +## 자주 묻는 질문 + +**Q: 주변 셀 없이 차트만 내보낼 수 있나요?** +A: 예. `ExportChartObjects`만 사용하고 인쇄 영역을 차트의 경계 범위로 설정하면 차트가 슬라이드 중앙에 표시됩니다. + +**Q: 워크북에 매크로가 포함되어 있으면 어떻게 되나요?** +A: Aspose.Cells는 내보내기 중 VBA 매크로를 무시합니다. PowerPoint에서 매크로 기능이 필요하면 PowerPoint VBA나 애드인으로 다시 구현해야 합니다. + +**Q: Linux/macOS에서도 작동하나요?** +A: 전혀 문제 없습니다. Aspose.Cells는 순수 .NET 라이브러리이며 .NET 런타임만 있으면 코드가 크로스‑플랫폼으로 실행됩니다. + +--- + +## 결론 + +여러분은 이제 **Excel을 PowerPoint로 내보내기**와 정확한 **set print area excel** 및 **save excel as pptx**를 수행하여 완전히 편집 가능한 차트와 OLE 개체를 포함한 PPTX를 만드는 방법을 배웠습니다. 핵심 단계는 워크북 로드, 인쇄 영역 정의, `ImageOrPrintOptions` 구성, 그리고 최종적으로 PPTX 저장입니다. + +여기서부터는 다음을 탐색할 수 있습니다: +- 여러 워크시트를 하나의 데크로 내보내기. +- 프로그래밍 방식으로 사용자 지정 슬라이드 제목이나 메모 추가하기. +- 배포를 위해 PPTX를 PDF로 변환하기(`SaveFormat.Pdf` 사용). + +코드를 실행해 보고 인쇄 영역을 조정하면 Excel 데이터가 마법처럼 PowerPoint에 나타나는 것을 확인할 수 있습니다—수동 복사‑붙여넣기가 필요 없습니다. 문제가 발생하면 Aspose.Cells 문서를 확인하거나 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/korean/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..28b9e853e4 --- /dev/null +++ b/cells/korean/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-22 +description: Excel에서 인쇄 영역을 설정하고 편집 가능한 도형으로 Excel을 PowerPoint로 변환합니다. 제목 행을 반복하는 + 방법, Excel에서 PowerPoint를 만드는 방법 및 Excel을 pptx 파일로 내보내는 방법을 배워보세요. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: ko +og_description: Excel에서 인쇄 영역을 설정하고 편집 가능한 도형이 포함된 PowerPoint 슬라이드로 변환합니다. 이 완전한 가이드를 + 따라 제목 행을 반복하고 Excel을 pptx 파일로 내보내세요. +og_title: Excel에서 인쇄 영역 설정 – PowerPoint로 내보내기 튜토리얼 +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Excel에서 인쇄 영역 설정 및 PowerPoint로 내보내기 – 단계별 가이드 +url: /ko/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel에서 인쇄 영역 설정하고 PowerPoint로 내보내기 – 완전 프로그래밍 튜토리얼 + +Excel 워크시트에서 **인쇄 영역을 설정**하고 그 영역을 PowerPoint 슬라이드로 바꾸고 싶었던 적 있나요? 당신만 그런 것이 아닙니다. 많은 보고 파이프라인에서 깔끔하게 인쇄되는 데이터가 프레젠테이션에도 나타나야 하는 경우가 많으며, 보통 첫 번째 행을 제목으로 반복해서 표시합니다. 좋은 소식은? 몇 줄의 C# 코드만으로 **excel to powerpoint 변환**이 가능하고, 모든 텍스트 상자를 편집 가능하게 유지하며 **제목 행 반복**도 자동으로 할 수 있다는 것입니다. + +이 가이드에서는 인쇄 영역을 구성하는 방법부터 PowerPoint에서 바로 편집 가능한 PPTX 파일을 만드는 방법까지 모든 과정을 단계별로 살펴봅니다. 최종적으로 **excel에서 powerpoint 만들기**, **excel을 pptx로 내보내기**를 수행하고, 동일한 코드를 어떤 .NET 프로젝트에서도 재사용할 수 있게 됩니다. 마법은 없습니다, 명확한 단계와 실행 가능한 전체 예제가 전부입니다. + +## 준비물 + +본격적으로 시작하기 전에 아래 항목을 준비하세요: + +- **.NET 6.0** 이상 (API는 .NET Framework에서도 동작합니다) +- **Aspose.Cells for .NET** (`Workbook`, `ImageOrPrintOptions` 등을 제공하는 라이브러리) +- 기본 C# IDE (Visual Studio, Rider, 혹은 C# 확장 기능이 설치된 VS Code) +- 내보내고 싶은 데이터가 들어 있는 Excel 파일 (`input.xlsx`) + +이것만 있으면 됩니다—Aspose.Cells 외에 추가 NuGet 패키지는 필요 없습니다. 아직 라이브러리를 추가하지 않았다면 다음 명령을 실행하세요: + +```bash +dotnet add package Aspose.Cells +``` + +이제 준비 완료입니다. + +## Step 1: Load the Workbook – the Starting Point for Export + +첫 번째 단계는 슬라이드로 변환하고자 하는 시트가 들어 있는 워크북을 로드하는 것입니다. 워크북은 원본 문서와 같으며, 이것이 없으면 이후 작업은 의미가 없습니다. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**왜 중요한가:** 워크북을 로드하면 워크시트 컬렉션, 페이지 설정 옵션, 그리고 내보내기 엔진에 접근할 수 있습니다. 이 단계가 없으면 **인쇄 영역**을 설정하거나 행을 반복할 수 없습니다. + +> **Pro tip:** 테스트 단계에서는 절대 경로를 사용하고, 프로덕션에서는 상대 경로나 설정 기반 경로로 전환하세요. + +## Step 2: Configure Export Options – Keep Text Boxes and Shapes Editable + +PowerPoint로 내보낼 때 슬라이드가 편집 가능하도록 하고 싶을 것입니다. Aspose.Cells는 `ImageOrPrintOptions` 로 이를 제어합니다. `ExportTextBoxes`와 `ExportShapeObjects`를 `true` 로 설정하면 해당 객체들이 이미지가 아니라 PowerPoint 고유 요소로 보존됩니다. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**왜 중요한가:** **excel to powerpoint 변환** 후 슬라이드를 수동으로 수정해야 할 경우, 이 설정 덕분에 텍스트 상자를 처음부터 다시 만들 필요가 없습니다. 또한 화살표나 차트 같은 도형도 벡터 객체로 남아 크기 조절이 가능합니다. + +## Step 3: Set Print Area and Repeat the Title Row + +이제 튜토리얼의 핵심인 **인쇄 영역 설정**과 첫 번째 행을 모든 페이지(또는 여기서는 내보낸 슬라이드)에서 반복하도록 하는 작업을 합니다. 인쇄 영역은 Excel이 인쇄하거나 내보낼 셀 범위를 지정합니다. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**왜 중요한가:** `A1:G20` 으로 내보내기를 제한하면 불필요한 빈 영역을 제외할 수 있어 변환 속도가 빨라지고 슬라이드가 깔끔해집니다. `PrintTitleRows` 라인은 첫 번째 행을 헤더처럼 동작하게 하여 프레젠테이션에서 **제목 행 반복**을 구현합니다. + +> **Edge case:** 데이터가 2행부터 시작한다면 범위를 적절히 조정하세요 (예: `PrintTitleRows = "$2:$2"`). + +## Step 4: Save the Worksheet as a PowerPoint File + +마지막으로 슬라이드를 디스크에 저장합니다. `Save` 메서드는 대상 파일명과 앞서 구성한 옵션을 인수로 받습니다. 결과물은 편집 가능한 텍스트 상자와 도형을 포함한 PPTX 파일이며, PowerPoint에서 바로 열 수 있습니다. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**결과 확인:** `SheetWithEditableShapes.pptx` 를 PowerPoint에서 열면 첫 번째 행이 제목으로 표시되고, `A1:G20` 범위의 모든 셀이 렌더링되며, Excel에서 추가한 도형도 그대로 이동·편집이 가능합니다. 래스터 이미지가 아니라 PowerPoint 고유 객체입니다. + +## Full Working Example – All Steps Combined + +아래는 복사‑붙여넣기만 하면 바로 실행 가능한 전체 프로그램입니다. 콘솔 앱으로 실행하거나 더 큰 솔루션에 포함시켜 사용하세요. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**예상 출력:** 프로그램 실행 후 콘솔에 성공 메시지가 표시되고, 지정한 위치에 PPTX 파일이 생성됩니다. 파일을 열면 선택된 범위와 편집 가능한 텍스트 상자, 원본 도형이 포함된 단일 슬라이드가 나타납니다. + +## Common Questions & Gotchas + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Yes. Loop through `workbook.Worksheets` and repeat the same steps for each sheet, changing the output filename each time. | +| **What if I need to export more than one slide?** | Call `workbook.Save` multiple times with different `ImageOrPrintOptions` objects, each configured with a different `PageSetup` if needed. | +| **Can I change the slide size?** | Use `exportOptions.ImageFormat` to set DPI, or adjust `sheet.PageSetup.PaperSize` before saving. | +| **Is Aspose.Cells free?** | It offers a free evaluation with watermarks. For production, a license is required. | +| **What about Excel formulas?** | The exported values are the **calculated results** at the time of export. If you need live formulas in PowerPoint, you’ll need a different approach. | + +## Tips for a Smooth Workflow + +- **Pro tip:** Set `Workbook.Settings.CalcMode = CalculationModeType.Automatic` before export to guarantee all formulas are up‑to‑date. +- **Watch out for:** Very large ranges can cause memory pressure. Trim the print area to the smallest necessary range. +- **Performance tip:** Reuse a single `ImageOrPrintOptions` instance if you’re exporting many sheets; creating a new one each time adds overhead. +- **Version note:** The code above targets Aspose.Cells 23.10 (released November 2023). Later versions keep the same API, but always double‑check the release notes for breaking changes. + +## Conclusion + +우리는 Excel 워크시트에서 **인쇄 영역을 설정**하고 첫 번째 행을 제목으로 반복한 뒤, **excel을 pptx로 내보내기**하면서 텍스트 상자와 도형을 편집 가능하게 유지하는 방법을 다뤘습니다. 요약하면, 몇 줄의 C# 코드만으로 **excel to powerpoint 변환**, **제목 행 반복**, **excel에서 powerpoint 만들기**를 신뢰성 있게 수행할 수 있게 되었습니다. + +다음 단계가 준비되셨나요? 수십 개의 보고서를 일괄 변환하도록 자동화하거나, 내보낸 후 PowerPoint SDK를 사용해 맞춤 슬라이드 레이아웃을 추가해 보세요. 가능성은 무한합니다—실험하고, 깨고, 프로그래밍 문서 생성의 힘을 즐기세요. + +이 튜토리얼이 도움이 되었다면 공유하고, 여러분만의 팁을 댓글로 남기거나 **excel을 pptx로 내보내기**와 관련된 다른 가이드를 살펴보세요. Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/csv-file-handling/_index.md b/cells/korean/net/csv-file-handling/_index.md index be872070ab..d80904e137 100644 --- a/cells/korean/net/csv-file-handling/_index.md +++ b/cells/korean/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Aspose.Cells for .NET을 사용하여 CSV 파일을 여는 방법을 단계별 가이드를 통해 자세히 알아보세요. 데이터 조작의 달인이 되어 보세요. ### [선호하는 파서로 CSV 파일 열기](./csv-file-opening-csv-files-with-preferred-parser/) Aspose.Cells for .NET에서 사용자 지정 파서를 사용하여 CSV 파일을 열고 파싱하는 방법을 알아보세요. 텍스트와 날짜를 손쉽게 처리할 수 있습니다. 개발자에게 안성맞춤입니다. +### [C#에서 워크북을 CSV로 저장 – Excel을 CSV로 내보내기](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aspose.Cells for .NET을 사용해 C#에서 Excel 워크북을 CSV 파일로 내보내는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/korean/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..4d3893fec3 --- /dev/null +++ b/cells/korean/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: C#에서 워크북을 CSV로 빠르게 저장하세요. Excel을 CSV로 내보내는 방법, 정밀도 설정, Aspose.Cells를 + 사용해 xlsx를 CSV로 변환하는 방법을 몇 줄만으로 배우세요. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: ko +og_description: C#에서 워크북을 빠르게 CSV로 저장합니다. 이 가이드는 Excel을 CSV로 내보내는 방법, 정밀도 설정, 그리고 + Aspose.Cells를 사용하여 xlsx를 CSV로 변환하는 방법을 보여줍니다. +og_title: C#에서 워크북을 CSV로 저장 – Excel을 CSV로 내보내기 +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: C#에서 워크북을 CSV로 저장 – Excel을 CSV로 내보내기 +url: /ko/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 워크북을 CSV로 저장 – Excel을 CSV로 내보내기 + +Ever needed to **save workbook as CSV** but weren’t sure how to keep the numbers tidy? You’re not alone. In many data‑pipeline scenarios we have to **export Excel to CSV** while preserving a specific number of significant digits, and the Aspose.Cells library makes it a piece of cake. + +이 튜토리얼에서는 **saves a workbook as CSV** 하는 완전한 실행 가능한 예제를 보여주고, *how to set precision* 를 설명하며, 실제 프로젝트에 적용할 수 있도록 *how to convert xlsx to CSV* 도 안내합니다. 모호한 설명이 아니라 바로 복사·붙여넣기·실행할 수 있는 코드만 제공합니다. + +## 배울 내용 + +- 맞춤 정밀도 설정으로 **save workbook as CSV** 하는 정확한 단계. +- `CsvSaveOptions` 를 사용해 **export Excel to CSV** 하는 방법과 `SignificantDigits` 속성이 중요한 이유. +- 다양한 정밀도 요구에 대한 변형과 큰 숫자를 다룰 때 흔히 발생하는 함정. +- 데이터 무결성을 유지하면서 `.xlsx` 파일을 `.csv` 로 변환하는 간단한 살펴보기. + +### 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.6+에서도 동작합니다). +- **Aspose.Cells for .NET** NuGet 패키지 (`Install-Package Aspose.Cells`). +- C# 및 파일 I/O에 대한 기본 이해. + +위 조건을 갖추셨다면, 바로 시작해 봅시다. + +![save workbook as csv example](image.png "save workbook as csv example") + +## 워크북을 CSV로 저장 – 단계별 가이드 + +아래는 전체 프로그램입니다. 각 줄마다 주석이 달려 있어 *왜* 해당 코드가 필요한지, *무엇을* 하는지 알 수 있습니다. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### `CsvSaveOptions.SignificantDigits` 를 사용하는 이유 + +CSV 내보내기에서 **how to set precision** 를 할 때, 부동소수점 숫자의 몇 자리까지 보존할지를 결정하는 것입니다. Excel은 최대 15자리 정밀도로 숫자를 저장하지만, 대부분의 하위 시스템(데이터베이스, 분석 파이프라인)은 몇 자리만 필요합니다. `SignificantDigits = 4` 로 설정하면 라이브러리는 `123.456789` 를 `123.5` 로 반올림하여 파일을 작고 사람이 읽기 쉽게 만듭니다. + +> **Pro tip:** 정확한 값이 필요할 경우(예: 재무 데이터), `SignificantDigits` 를 더 높은 값으로 설정하거나 완전히 생략하세요. 기본값은 15이며, 이는 Excel의 내부 정밀도와 동일합니다. + +## Excel을 CSV로 내보내기 – 일반적인 변형 + +### 구분자 변경 + +일부 시스템은 쉼표 대신 세미콜론(`;`)을 구분자로 기대합니다. 다음과 같이 조정할 수 있습니다: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### 특정 워크시트 내보내기 + +두 번째 시트만 내보내고 싶다면, 선택 블록을 다음으로 교체하세요: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +그런 다음 이전과 같이 `workbook.Save` 를 호출합니다. 이 기술은 **convert xlsx to csv** 할 때 특정 탭만 필요할 경우 유용합니다. + +### 대용량 데이터 처리 + +수백만 행을 다룰 때는 전체 워크북을 메모리에 로드하는 대신 CSV를 스트리밍하는 것을 고려하세요. Aspose.Cells는 스타일 정보를 건너뛰어 메모리 사용량을 줄이는 `CsvSaveOptions` 의 `ExportDataOnly` 속성을 제공합니다: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## CSV 내보내기 – 결과 확인 + +프로그램을 실행한 뒤, 일반 텍스트 편집기에서 `Numbers_4sd.csv` 를 열어보세요. 다음과 같은 내용이 보일 것입니다: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +숫자가 네 자리 유효숫자로 제한된 것을 확인할 수 있습니다. 이는 우리가 요청한 대로입니다. Excel에서 파일을 열면 값이 동일하게 표시되는데, 이는 Excel이 내보내기 시 적용된 반올림을 그대로 유지하기 때문입니다. + +## 엣지 케이스 및 문제 해결 + +| 상황 | 확인 사항 | 해결 방법 | +|-----------|---------------|-----| +| **File not found** | `sourcePath` 가 실제 `.xlsx` 파일을 가리키는지 확인하세요. | `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")` 를 사용하세요. | +| **Incorrect rounding** | `Save` 를 호출하기 전에 `SignificantDigits` 가 설정되었는지 확인하세요. | `CsvSaveOptions` 할당을 더 앞쪽으로 옮기거나 값을 다시 확인하세요. | +| **Special characters appear as �** | CSV 인코딩이 기본적으로 BOM 없는 UTF‑8 입니다. | `csvOptions.Encoding = System.Text.Encoding.UTF8` 또는 `Encoding.Unicode` 로 설정하세요. | +| **Extra empty columns** | 일부 워크시트는 사용 범위를 넘어선 형식이 남아 있을 수 있습니다. | 내보내기 전에 `worksheet.Cells.MaxDisplayRange` 를 호출해 사용되지 않은 열을 잘라내세요. | + +## 정밀도를 동적으로 설정하기 + +때때로 필요한 정밀도가 컴파일 시점에 알려지지 않을 수 있습니다. 구성 파일이나 명령줄 인수에서 읽어올 수 있습니다: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +이제 다음과 같이 실행할 수 있습니다: + +``` +dotnet run -- 6 +``` + +그리고 6자리 유효숫자를 가진 CSV를 얻을 수 있습니다. 이 작은 조정으로 다양한 환경에서 **how to export csv** 를 유연하게 처리할 수 있습니다. + +## 전체 작업 예제 요약 + +모두 합치면, 선택적 조정을 포함한 전체 프로그램은 다음과 같습니다: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +프로그램을 실행하고 생성된 CSV를 열면 요청한 정밀도가 적용된 것을 확인할 수 있으며, 이는 **saved workbook as CSV** 를 성공적으로 수행했음을 의미합니다. + +## 결론 + +이제 C#에서 **saving a workbook as CSV** 를 위한 견고하고 프로덕션 수준의 레시피를 갖추었습니다. 이 가이드는 *how to export Excel to CSV* 를 다루고, `CsvSaveOptions.SignificantDigits` 로 *how to set precision* 를 시연했으며, **convert xlsx to csv** 상황에 대한 여러 변형을 보여줍니다. 전체 코드 스니펫을 통해 어떤 .NET 프로젝트에든 바로 삽입해 데이터를 즉시 내보낼 수 있습니다. + +**다음은?** + +- 다양한 구분자(`;`, `\t`)를 사용해 TSV 내보내기를 실험해 보세요. +- 파일 감시자를 결합해 Excel 파일이 변경될 때마다 CSV 생성을 자동화하세요. +- CSV를 워크북으로 다시 읽어야 할 경우 Aspose.Cells의 `CsvLoadOptions` 를 살펴보세요. + +정밀도를 자유롭게 조정하고, 사용자 정의 헤더를 추가하거나, 익스포터를 연결해 보세요. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/document-properties/_index.md b/cells/korean/net/document-properties/_index.md index 5e30810b4e..300906b598 100644 --- a/cells/korean/net/document-properties/_index.md +++ b/cells/korean/net/document-properties/_index.md @@ -35,6 +35,8 @@ Aspose.Cells for .NET을 사용하여 Excel에서 문서 속성에 액세스하 단계별 가이드를 통해 Aspose.Cells for .NET을 사용하여 Excel에서 문서 속성에 액세스하는 방법을 알아보세요. 스프레드시트를 효율적으로 관리하세요. ### [.NET에 문서 속성 추가](./adding-document-properties/) 이 자세한 단계별 가이드를 통해 Aspose.Cells for .NET을 사용하여 Excel에 문서 속성을 추가하는 방법을 알아보세요. +### [Excel 통합 문서 만들기 – 사용자 정의 속성 추가 및 XLSB로 저장](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Aspose.Cells for .NET을 사용해 Excel 통합 문서를 만들고, 사용자 정의 속성을 추가한 뒤 XLSB 형식으로 저장하는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/korean/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..0128b45fdf --- /dev/null +++ b/cells/korean/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: C#를 사용하여 Excel 워크북을 만들고, 사용자 정의 속성을 추가하고, 워크시트 이름을 설정한 뒤, XLSB 바이너리 파일로 + 저장합니다. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: ko +og_description: C#를 사용하여 Excel 워크북을 만들고, 사용자 정의 속성을 추가하고, 워크시트 이름을 설정한 뒤 XLSB 바이너리 + 파일로 저장합니다. +og_title: Excel 워크북 만들기 – 사용자 정의 속성 추가 및 XLSB로 저장 +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excel 워크북 만들기 – 사용자 정의 속성 추가 및 XLSB로 저장 +url: /ko/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel 워크북 만들기 – 사용자 정의 속성 추가 및 XLSB로 저장 + +프로그래밍으로 **Excel 워크북을 만들** 필요가 있었지만 메타데이터도 함께 보관해야 했던 적이 있나요? 보고서 ID, 작성자 이름, 버전 번호와 같은 태그를 각 파일에 붙이는 보고 엔진을 구축하고 있을지도 모릅니다. 이런 경우 **사용자 정의 속성을 추가**하고 **워크시트 이름을 설정**한 뒤 최종적으로 **XLSB로 저장**하는 방법을 배우면 수많은 수동 후처리를 줄일 수 있습니다. + +이 튜토리얼에서는 C#을 사용해 **바이너리 Excel 파일을 쓰는** 방법을 정확히 보여주는 완전한 실행 가능한 예제를 단계별로 살펴봅니다. XLSB 형식이 사용자 정의 속성을 전달하기에 적합한 이유, 흔히 발생하는 함정을 피하는 방법, 그리고 오래된 Excel 버전을 지원해야 할 때의 대처 방법을 확인할 수 있습니다. + +--- + +## 필요 사항 + +- **.NET 6+** (또는 .NET Framework 4.6+). 코드는 최신 런타임에서 모두 동작합니다. +- **Aspose.Cells for .NET** (무료 체험 또는 라이선스). 아래에서 사용되는 `Workbook`, `Worksheet`, `CustomProperties` 클래스를 제공합니다. +- 편하게 사용할 수 있는 IDE – Visual Studio, Rider, 혹은 VS Code도 충분합니다. +- 생성된 파일을 저장할 폴더에 대한 쓰기 권한. + +다른 서드파티 라이브러리는 필요하지 않습니다. + +--- + +## 단계 1: Aspose.Cells 설치 + +시작하려면 프로젝트에 Aspose.Cells NuGet 패키지를 추가합니다: + +```bash +dotnet add package Aspose.Cells +``` + +> **팁:** CI 서버를 사용 중이라면 라이선스 키를 환경 변수에 저장하고 런타임에 로드하세요 – 이렇게 하면 “평가판” 워터마크가 출력에 삽입되는 것을 방지할 수 있습니다. + +--- + +## 단계 2: Excel 워크북 만들기 – 개요 + +첫 번째 실제 작업은 **Excel 워크북을 만들** 것입니다. 이 객체는 메모리 내 전체 파일을 나타내며 워크시트, 스타일, 사용자 정의 속성에 접근할 수 있게 해줍니다. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +`Workbook`을 새로 인스턴스화하는 이유는 템플릿을 로드하지 않기 때문입니다. 빈 워크북은 숨겨진 스타일이나 남아있는 사용자 정의 속성이 없음을 보장하므로, **바이너리 Excel 파일을 쓰기**를 기대하는 하위 시스템에 깨끗한 상태를 제공할 때 특히 중요합니다. + +--- + +## 단계 3: 워크시트 이름 설정 (중요성) + +Excel 시트는 기본적으로 “Sheet1”, “Sheet2” 등으로 이름이 지정됩니다. 시트에 의미 있는 이름을 부여하면 Power Query나 VBA 매크로와 같은 하위 처리 과정이 훨씬 읽기 쉬워집니다. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +중복된 이름을 지정하면 Aspose.Cells가 `ArgumentException`을 발생시킵니다. 안전하게 하려면 이름을 바꾸기 전에 `Worksheets.Exists("Data")`를 확인할 수 있습니다. + +--- + +## 단계 4: 사용자 정의 속성 추가 + +사용자 정의 속성은 워크북 내부 XML에 저장되며 형식에 관계없이 파일과 함께 이동합니다. `ReportId`나 `GeneratedBy`와 같은 정보를 삽입하기에 최적입니다. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **왜 사용자 정의 속성을 사용할까요?** +> • Excel의 “파일 → 정보 → 속성” 패널에서 접근할 수 있습니다. +> • 워크북을 사용하는 코드는 셀 내용을 스캔하지 않고도 속성을 읽을 수 있습니다. +> • 파일 메타데이터의 일부이기 때문에 형식 변환(XLSX ↔ XLSB)에서도 유지됩니다. + +날짜, 불리언, 심지어 바이너리 블롭도 저장할 수 있지만, 페이로드는 작게 유지하세요—Excel은 데이터베이스가 아닙니다. + +--- + +## 단계 5: XLSB로 저장 (바이너리 Excel 파일 쓰기) + +XLSB 형식은 데이터를 바이너리 구조로 저장하므로 파일 크기가 작아지고 열기가 빨라집니다. 이 튜토리얼에서 더 중요한 점은 **사용자 정의 속성이 바이너리 스트림에 포함**되어 파일과 함께 전달된다는 것입니다. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### 예상 결과 + +프로그램을 실행하면 데스크톱에 `WithCustomProps.xlsb` 파일이 생성됩니다. Excel에서 열고 **파일 → 정보 → 속성**으로 이동하면 *사용자 정의* 항목에 `ReportId`와 `GeneratedBy`가 표시됩니다. + +--- + +## 단계 6: 엣지 케이스 및 일반 질문 + +### 대상 폴더가 읽기 전용이면 어떻게 하나요? + +`Save` 호출을 `try/catch` 블록으로 감싸고 `%TEMP%`와 같은 사용자가 쓸 수 있는 위치로 대체하세요. 이렇게 하면 권한 오류로 인한 애플리케이션 충돌을 방지할 수 있습니다. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### **XLSX**로 저장하면서도 사용자 정의 속성을 유지할 수 있나요? + +네— `SaveFormat.Xlsb`를 `SaveFormat.Xlsx`로 바꾸면 됩니다. 속성은 동일한 XML 파트에 저장되므로 형식 전환 후에도 유지됩니다. 다만 XLSX 파일은 압축된 XML이기 때문에 파일 크기가 크고, 대용량 데이터 세트에서는 XLSB가 더 나은 성능을 제공합니다. + +### 나중에 사용자 정의 속성을 어떻게 읽나요? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +이 스니펫은 모든 사용자 정의 속성을 출력하므로 하위 서비스가 파일 출처를 검증하기가 매우 쉽습니다. + +--- + +## 전체 작업 예제 + +아래는 새 콘솔 프로젝트에 복사‑붙여넣기 할 수 있는 완전한 프로그램입니다. `using` 문부터 마지막 `Console.WriteLine`까지 모든 부분이 포함되어 있어 누락된 것이 없습니다. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +프로그램을 실행하고 결과 파일을 열어 사용자 정의 속성을 확인하세요. 이것이 **Excel 워크북 만들기**, **사용자 정의 속성 추가**, **워크시트 이름 설정**, **XLSB로 저장**을 한 번에 수행하는 전체 흐름입니다. + +--- + +## 결론 + +이제 **Excel 워크북을 만들고**, 시트에 명확한 **워크시트 이름을 설정**하며, **사용자 정의 속성을 추가**해 유용한 메타데이터를 삽입하고, 최종적으로 **XLSB로 저장**해 압축된 바이너리 Excel 파일을 만드는 방법을 정확히 알게 되었습니다. 이 워크플로는 신뢰성이 높고 .NET 버전과 관계없이 작동하며, 하나의 보고서를 만들든 수천 개를 만들든 원활히 확장됩니다. + +다음은 무엇을 할까요? “Data” 시트에 데이터 테이블을 추가하고, 다양한 속성 유형(날짜, 불리언)으로 실험하거나, 대용량 데이터 세트를 위해 출력 형식을 **XLSB로 저장**으로 전환해 보세요. 또한 워크북에 비밀번호를 설정해 보호하는 것도 가능합니다—Aspose.Cells에서는 한 줄 코드로 구현할 수 있습니다. + +문제가 발생하면 언제든 댓글을 남기거나, 이 패턴을 프로젝트에 어떻게 확장했는지 공유해 주세요. 즐거운 코딩 되세요! + +--- + +![Create Excel workbook screenshot](image.png){alt="사용자 정의 속성이 포함된 Excel 워크북 만들기"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/excel-advanced-named-ranges/_index.md b/cells/korean/net/excel-advanced-named-ranges/_index.md index 241572919e..09226ea134 100644 --- a/cells/korean/net/excel-advanced-named-ranges/_index.md +++ b/cells/korean/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Aspose.Cells for .NET을 사용하여 명명된 범위 내에서 셀을 손쉽 이 포괄적인 단계별 튜토리얼을 통해 Aspose.Cells for .NET을 사용하여 Excel에서 명명된 범위의 셀을 손쉽게 식별해 보세요. ### [Excel에서 지정된 범위의 셀 병합](./merge-cells-in-named-range/) 이 단계별 튜토리얼에서는 Aspose.Cells for .NET을 사용하여 명명된 범위의 셀을 병합하는 방법을 알아봅니다. Excel 보고서의 서식, 스타일 지정 및 자동화 방법도 알아보세요. +### [Excel 워크북 만들기 – 테이블 추가 및 명명 규칙 단계별 가이드](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Aspose.Cells for .NET을 사용해 Excel 워크북을 만들고, 테이블을 추가하고, 명명 규칙을 적용하는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/korean/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..f1550dd78e --- /dev/null +++ b/cells/korean/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: 테이블이 포함된 Excel 워크북을 만들고, Excel 테이블 명명 규칙을 학습하며, 명명된 범위 오류를 피하고, C#에서 + Excel 테이블 이름을 올바르게 설정합니다. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: ko +og_description: C#에서 엑셀 워크북을 만들고 엑셀 테이블 명명 규칙을 마스터하세요. 테이블 워크시트를 추가하고, 엑셀 테이블 이름을 + 설정하며, 이름이 지정된 범위 오류를 해결하는 방법을 배워보세요. +og_title: Excel 워크북 만들기 – 완전한 C# 테이블 및 명명 가이드 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excel 워크북 만들기 – 테이블 추가 및 명명 규칙 단계별 가이드 +url: /ko/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel 워크북 만들기 – 테이블 및 명명에 대한 완전한 C# 가이드 + +프로그래밍 방식으로 **create excel workbook**이(가) 필요했고 테이블 이름이 갑자기 명명된 범위와 충돌하는 이유가 궁금했나요? 당신만 그런 것이 아닙니다. 많은 자동화 프로젝트에서 테이블에 친숙한 식별자를 부여하려는 순간, Excel은 전체 프로세스를 중단시키는 *named range error*를 발생시킵니다. + +이 튜토리얼에서는 **creates an Excel workbook**, **adds a table to a worksheet**, 그리고 **excel table naming rules**를 설명하는 완전 실행 가능한 예제를 단계별로 살펴봅니다. 마지막까지 하면 **add table worksheet**, **set excel table name**을 정확히 수행하고 가끔 발생하는 이름 충돌을 우아하게 처리하는 방법을 알게 됩니다. + +> **Pro tip:** 대부분의 혼란은 Excel이 테이블 이름과 워크북‑level 명명된 범위를 단일 네임스페이스로 취급한다는 사실에서 비롯됩니다. 이 규칙을 초기에 이해하면 디버깅에 소요되는 시간을 크게 절약할 수 있습니다. + +## 필요 사항 + +- **Aspose.Cells for .NET** (또는 `Workbook`, `Worksheet`, `ListObject` 클래스를 제공하는 라이브러리). +- .NET 6+ 또는 .NET Framework 4.8 – 코드는 두 환경 모두에서 작동합니다. +- C# 구문에 대한 기본적인 이해 – 고급 트릭은 필요 없습니다. + +이것들을 갖추셨다면, 시작해 봅시다. + +![SalesData라는 테이블이 포함된 새로 만든 Excel 워크북의 스크린샷](create_excel_workbook_example.png "excel 워크북 만들기 예시") + +## 단계 1: Excel 워크북 만들기 및 첫 번째 워크시트 접근 + +Excel 워크북을 **create excel workbook** 할 때 가장 먼저 하는 일은 `Workbook` 클래스를 인스턴스화하고 작업할 시트에 대한 참조를 가져오는 것입니다. Aspose.Cells에서는 워크북이 기본 시트 “Sheet1”으로 시작합니다. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +이 단계가 왜 중요한가요? 워크북 객체가 없으면 테이블을 붙일 대상이 없으며, `Worksheet` 참조는 **add table worksheet** 작업이 수행될 캔버스를 제공합니다. + +## 단계 2: 특정 범위를 포함하는 테이블 (ListObject) 추가 + +다음으로 **add table worksheet**‑ 수준 데이터를 추가합니다. `ListObjects.Add` 메서드는 범위 문자열과 첫 번째 행에 헤더가 포함되는지를 나타내는 부울 값을 기대합니다. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +`salesTable.Name = "SalesData"` 호출을 확인하세요. 여기서 **excel table naming rules**가 적용됩니다: 이름은 시트가 아니라 전체 워크북에서 고유해야 합니다. 또한 공백이나 특수 문자를 포함할 수 없으며, 문자 또는 언더스코어로 시작해야 합니다. + +## 단계 3: 동일한 식별자로 워크북‑레벨 명명된 범위 생성 시도 + +이제 의도적으로 **named range error**를 유발하여 이름 충돌이 발생했을 때 어떤 일이 일어나는지 확인합니다. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +주석을 해제하면 Aspose.Cells는 이름이 이미 존재한다는 `ArgumentException`을 발생시킵니다. 오류 메시지는 다음과 같습니다: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +이 메시지는 앞서 경고한 **named range error**이며, **excel table naming rules**가 테이블 이름과 명명된 범위를 단일 네임스페이스로 취급한다는 것을 알려줍니다. + +## 단계 4: 이름 충돌을 우아하게 처리하기 + +실제 코드에서는 해당 예외를 잡아 테이블 이름을 바꾸거나 다른 범위 이름을 선택하고 싶을 것입니다. 다음은 깔끔하게 처리하는 방법입니다: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +`try/catch`로 호출을 감싸면 강제 종료를 방지하고 사용자(또는 호출 코드)에게 명확한 설명을 제공할 수 있습니다—이는 향후 버그를 방지하는 **excel table naming rules** 통찰과 정확히 일치합니다. + +## 단계 5: 워크북 저장 및 결과 확인 + +마지막으로 파일을 디스크에 저장하고 Excel에서 열어 테이블 및 명명된 범위가 존재하는지 확인합니다. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +*SalesReport.xlsx*를 열면 다음을 확인할 수 있습니다: + +- **A1:C5** 범위를 차지하고 **SalesData**라는 이름을 가진 테이블. +- 대체 범위를 유지했다면 **D1**을 가리키는 워크북‑레벨 명명된 범위 **SalesData_Range**. + +런타임 충돌 없이 이름 충돌이 해결됩니다. + +## Excel 테이블 명명 규칙 심층 이해 + +규칙이 존재하는 이유를 살펴봅시다: + +| 규칙 | 의미 | 예시 | +|------|------|------| +| **워크북 전체에서 고유** | 두 개의 테이블이나 명명된 범위가 동일한 식별자를 공유할 수 없습니다. | `Table1` vs `Table1` → conflict | +| **문자 또는 언더스코어로 시작** | 이름은 숫자로 시작할 수 없습니다. | `_Q1Sales` ✅, `1QSales` ❌ | +| **공백이나 특수 문자 금지** | CamelCase 또는 언더스코어를 사용하세요. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **길이 ≤ 255자** | 실제로 거의 항상 만족합니다. | N/A | + +이 규칙들을 염두에 두고 **set excel table name**을 수행하면 끔찍한 *named range error*를 방지할 수 있습니다. + +## 일반적인 변형 및 엣지 케이스 + +1. **Adding multiple tables** – 각 테이블은 고유한 이름을 가져야 합니다. +2. **Renaming an existing table** – 충돌하는 명명된 범위를 만들기 전에 `salesTable.Name = "NewName"`을 사용하세요. +3. **Using dynamic ranges** – 확장되는 범위가 필요하면 정적 주소 대신 `=SalesData[Amount]`와 같은 구조화된 참조를 사용하세요. +4. **Cross‑sheet named ranges** – 여전히 동일한 네임스페이스에 속하므로 Sheet1의 테이블이 Sheet2에서 같은 이름의 범위를 차단합니다. + +## 원활한 Excel 자동화를 위한 Pro Tips + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: 확실하지 않을 때 GUID 또는 증분 카운터(`SalesData_{Guid.NewGuid()}`)를 추가하세요. +- **Use `ListObject.ShowHeaders = true`** 로 테이블을 자체 문서화하도록 만드세요. +- **Validate after saving**: 파일을 가벼운 라이브러리(예: EPPlus)로 열어 테이블이 올바르게 생성되었는지 확인하세요. + +## 요약: 다룬 내용 + +- Aspose.Cells를 사용하여 처음부터 **create excel workbook** 하는 방법. +- 테이블 및 명명된 범위 식별자를 관리하는 정확한 **excel table naming rules**. +- 이름을 재사용할 때 **named range error**가 발생하는 이유. +- 충돌 없이 **add table worksheet** 및 **set excel table name**을 수행하는 올바른 방법. +- 이름 충돌을 우아하게 처리하기 위한 견고한 패턴. + +## 다음 단계 + +이제 기본을 마스터했으니 다음을 탐색해 보세요: + +- **Dynamic table growth** 를 `ListObject.Resize` 로 사용합니다. +- **Applying styles** 를 테이블에 적용 (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- 테이블 구조를 유지하면서 **Exporting to CSV**. +- 워크북 내부를 더 세밀하게 제어하기 위해 **Integrating with Office Open XML**. + +자유롭게 실험해 보세요—범위를 변경하고, 테이블을 추가하거나, 다양한 명명 방식을 시도해 보세요. 많이 만질수록 **excel table naming rules**에 대한 이해가 깊어집니다. + +--- + +*코딩을 즐기세요, 그리고 워크북이 다시는 충돌하지 않길 바랍니다!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/excel-custom-number-date-formatting/_index.md b/cells/korean/net/excel-custom-number-date-formatting/_index.md index 11ae8f3acc..a32f593dcd 100644 --- a/cells/korean/net/excel-custom-number-date-formatting/_index.md +++ b/cells/korean/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ 이 단계별 튜토리얼을 통해 Aspose.Cells for .NET을 사용하여 Excel 셀 값을 사용자 지정 숫자 형식에 따라 확인하는 방법을 알아보세요. ### [Excel 시트로 데이터를 가져올 때 수식 필드 지정](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) 이 자세한 튜토리얼에서는 Aspose.Cells for .NET을 사용하여 지정된 수식 필드가 있는 Excel 시트로 데이터를 가져오는 방법을 알아봅니다. +### [C#에서 Excel 사용자 지정 숫자 형식 – 완전 가이드](./custom-number-format-excel-in-c-complete-guide/) +Aspose.Cells for .NET을 활용해 C#에서 Excel 사용자 지정 숫자 형식을 적용하고 관리하는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/korean/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..a67285f385 --- /dev/null +++ b/cells/korean/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,295 @@ +--- +category: general +date: 2026-03-22 +description: '사용자 지정 숫자 형식 엑셀 튜토리얼: 데이터테이블을 엑셀로 가져오고, 열 배경색을 설정하고, 열을 통화 형식으로 지정하고, + 워크북을 xlsx로 저장하는 방법.' +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: ko +og_description: 데이터 테이블을 가져오고, 열 배경색을 설정하며, 열을 통화 형식으로 서식 지정하고, 워크북을 xlsx로 저장하는 맞춤 + 숫자 형식 엑셀 튜토리얼. +og_title: C#을 사용한 Excel 사용자 지정 숫자 형식 – 단계별 가이드 +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C#에서 Excel 맞춤 숫자 형식 – 완전 가이드 +url: /ko/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 맞춤 숫자 형식 Excel – 풀스택 C# 튜토리얼 + +C#에서 직접 **custom number format excel** 스타일을 적용하는 방법이 궁금했나요? DataTable을 스프레드시트에 덤프했지만 일반 숫자만 보이고 색상이나 통화 서식이 없었을 수도 있습니다. 이해관계자를 위한 깔끔한 보고서가 필요할 때 흔히 겪는 문제입니다. + +이 가이드에서는 그 문제를 함께 해결합니다: **import datatable to excel**, **set column background color**, **format column as currency**를 배우고, 마지막으로 **save workbook as xlsx**를 수행하여 숫자를 돋보이게 하는 맞춤 숫자 형식을 적용합니다. 애매한 설명 없이, 프로젝트에 복사‑붙여넣기 할 수 있는 완전한 실행 가능한 솔루션을 제공합니다. + +--- + +## 만들게 될 것 + +이 튜토리얼이 끝날 때쯤이면 다음과 같은 독립 실행형 C# 콘솔 앱을 갖게 됩니다: + +1. `DataTable`을 가져옵니다 (스텁을 직접 쿼리로 교체할 수 있습니다). +2. Aspose.Cells(또는 호환 라이브러리)를 사용해 새로운 Excel 워크북을 생성합니다. +3. 첫 번째 열에 파란색 굵은 글꼴을, 두 번째 열에 연노란색 배경을, 세 번째 열에 통화 형식(`$#,##0.00`)을 적용합니다. +4. 선택한 폴더에 파일을 `DataTableWithStyleArray.xlsx` 이름으로 저장합니다. + +각 라인이 최종 Excel 파일에 어떻게 기여하는지 정확히 확인할 수 있으며, 이러한 선택이 유지보수성과 성능에 왜 중요한지 논의합니다. + +--- + +## 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.7+에서도 동작합니다). +- Aspose.Cells for .NET(무료 체험 또는 라이선스 버전). NuGet을 통해 설치합니다: + +```bash +dotnet add package Aspose.Cells +``` + +- `DataTable` 및 C# 콘솔 애플리케이션에 대한 기본적인 이해. + +--- + +## 단계 1: 소스 데이터를 DataTable로 가져오기 + +먼저, 내보낼 데이터를 준비해야 합니다. 실제 상황에서는 보통 리포지토리를 호출하거나 SQL 쿼리를 실행합니다. 예시를 위해 메모리 내에 간단한 테이블을 생성합니다. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** `DataTable`을 사용하면 표 형식의 스키마 인식 소스를 얻어 Excel 행과 열에 깔끔하게 매핑할 수 있습니다. 또한 코드를 다시 작성하지 않고도 모든 데이터셋에 동일한 내보내기 로직을 재사용할 수 있습니다. + +--- + +## 단계 2: 새 워크북을 만들고 첫 번째 워크시트를 가져오기 + +이제 Excel 워크북을 생성합니다. `Workbook` 클래스는 전체 파일을 나타내며, `Worksheets[0]`은 데이터를 넣을 기본 시트입니다. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** 여러 시트가 필요하면 `workbook.Worksheets.Add("SheetName")`를 호출하고 각 시트마다 스타일링 단계를 반복하면 됩니다. + +--- + +## 단계 3: 열 스타일 정의 – 글꼴, 배경 및 숫자 형식 + +Aspose.Cells에서 스타일링은 `Style` 객체를 통해 이루어집니다. 각 요소가 DataTable의 열에 해당하는 배열을 만들겠습니다. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** `ImportDataTable`에 배열을 전달하면 한 번의 호출로 각 열에 개별 스타일을 적용할 수 있어 간결하고 성능도 좋습니다. 또한 서식이 데이터 순서와 동기화된 상태를 보장합니다. + +--- + +## 단계 4: 스타일을 적용하면서 DataTable 가져오기 + +이것이 작업의 핵심입니다: `DataTable`을 워크시트에 넣고, Aspose에 헤더 행을 포함하도록 지시한 뒤, `columnStyles` 배열을 전달합니다. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose는 각 열을 순회하면서 헤더를 쓰고, 이어서 각 행 값을 씁니다. 이 과정에서 배열에 있는 해당 `Style`을 적용하므로 “Product”는 파란색 헤더, “Quantity”는 노란색 배경, “Revenue”는 깔끔하게 서식이 지정된 열이 됩니다. + +--- + +## 단계 5: 워크북을 XLSX 파일로 저장하기 + +마지막으로 워크북을 디스크에 저장합니다. `Save` 메서드는 파일 확장자를 기반으로 자동으로 XLSX 형식을 선택합니다. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** 파일을 스트리밍해야 하는 경우(예: 웹 API) 파일 경로 대신 `workbook.Save(stream, SaveFormat.Xlsx)`를 사용하세요. + +--- + +## 전체 작업 예제 + +아래는 새 콘솔 프로젝트에 붙여넣을 수 있는 전체 프로그램입니다. 그대로 컴파일 및 실행되어 스타일이 적용된 Excel 파일을 생성합니다. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### 예상 결과 + +`DataTableWithStyleArray.xlsx`를 열면 다음과 같이 표시됩니다: + +| **Product** (파란색, 굵게) | **Quantity** (연노란색) | **Revenue** (통화) | +|----------------------------|--------------------------|--------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +지정한 **custom number format excel**(`$#,##0.00`)은 모든 revenue 셀에 달러 기호와 천 단위 구분 기호, 소수점 두 자리 표시를 보장합니다—재무 팀이 기대하는 바로 그 형식입니다. + +--- + +## 자주 묻는 질문 및 엣지 케이스 + +### 다른 Excel 라이브러리와 함께 사용할 수 있나요? + +물론 가능합니다. 열마다 스타일을 생성하고 가져오기 중에 적용하는 개념은 EPPlus, ClosedXML, NPOI에도 적용됩니다. API 호출은 다르지만 패턴은 동일합니다. + +### DataTable에 스타일보다 더 많은 열이 있으면 어떻게 되나요? + +Aspose는 `columnStyles` 배열에 매칭되는 항목이 없는 열에 기본 스타일을 적용합니다. 예기치 않은 상황을 방지하려면 배열 크기를 `dataTable.Columns.Count`와 맞추거나 루프에서 동적으로 스타일을 생성하세요. + +### 날짜에 대한 맞춤 숫자 형식을 어떻게 설정하나요? + +`style.Custom = "dd‑mm‑yyyy"`(또는 유효한 Excel 형식 문자열)로 설정하면 됩니다. 동일한 배열 기반 접근 방식은 날짜, 백분율, 과학적 표기에도 적용됩니다. + +### 가져온 후 열 자동 크기 조정 방법이 있나요? + +네—가져온 후 `worksheet.AutoFitColumns();`를 호출하면 됩니다. 셀 내용에 기반해 빠르게 너비를 계산합니다. + +### 대용량 데이터 세트(100k+ 행)는 어떻게 처리하나요? + +`ImportDataTable`은 대량 작업에 최적화되어 있지만 메모리 한계에 도달할 수 있습니다. 이 경우 `Cells[i, j].PutValue(...)`로 행을 수동 스트리밍하고, 하나의 `Style` 객체를 재사용하여 오버헤드를 줄이는 방식을 고려하세요. + +--- + +## 전문가 팁 및 흔히 발생하는 실수 + +- **Avoid hard‑coding paths**: 프로덕션 코드에서 경로를 하드코딩하지 말고 `Environment.GetFolderPath` 또는 설정을 사용하세요. +- **Dispose of the workbook**: 장기 실행 서비스에서는 `using` 블록으로 감싸 네이티브 리소스를 해제하세요. +- **Watch out for culture‑specific separators**: 맞춤 형식 `$#,##0.00`은 OS 로케일에 관계없이 소수점 구분자로 마침표를 강제합니다. 이는 재무 보고서에 일반적으로 원하는 동작입니다. +- **Remember to reference System.Drawing**: 스타일링에 사용되는 색상 구조체를 위해 `System.Drawing`(또는 .NET Core에서는 `System.Drawing.Common`)을 참조하세요. +- **Test the output on different Excel versions**: 오래된 Excel 버전은 일부 맞춤 형식을 약간 다르게 해석할 수 있으니 테스트하세요. + +--- + +## 결론 + +우리는 C#에서 **custom number format excel** 파일을 다루는 모든 과정을 다루었습니다: `DataTable`에서 데이터를 가져오고, **import datatable to excel**를 수행하며, **set column background color**를 적용하고, **format column as currency**를 사용한 뒤, 마지막으로 **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/excel-workbook/_index.md b/cells/korean/net/excel-workbook/_index.md index e65341fb48..2b74af0d8c 100644 --- a/cells/korean/net/excel-workbook/_index.md +++ b/cells/korean/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Excel 실력을 향상시킬 이 기회를 놓치지 마세요! 각 튜토리얼 | [통합 문서 인쇄 미리보기](./workbook-print-preview/) | Aspose.Cells for .NET을 사용하여 Excel 파일의 인쇄 미리보기를 만드는 방법을 알아보세요. 자세하고 따라하기 쉬운 튜토리얼을 통해 코딩 단계를 익혀보세요. | | [콘텐츠 유형 속성 작업](./working-with-content-type-properties/) | Aspose.Cells for .NET을 사용하여 콘텐츠 유형 속성을 처리하고 향상된 Excel 메타데이터 관리를 구현하는 방법을 알아보세요. 이 간단한 단계별 가이드를 따라 해 보세요. | | [Xades 서명 지원](./xades-signature-support/) | Aspose.Cells for .NET을 사용하여 Excel 파일에 Xades 서명을 추가하는 방법을 단계별 가이드를 통해 알아보세요. 문서를 안전하게 보호하세요. | +| [새 워크북 만들기 C# – 스필드 수식이 포함된 단계별 가이드](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Aspose.Cells for .NET을 사용하여 C#에서 스필드 수식이 포함된 새 워크북을 만드는 단계별 가이드를 제공합니다. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/korean/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..75543275e6 --- /dev/null +++ b/cells/korean/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells를 사용하여 C#에서 새 워크북을 빠르게 만들기. SEQUENCE 스필링 수식을 추가하고 자동으로 재계산하며, + 종속 셀을 처리하는 방법을 배우세요. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: ko +og_description: Aspose.Cells를 사용하여 C#에서 새 워크북을 만들기. 이 튜토리얼에서는 SEQUENCE 스필링 수식을 추가하고 + 워크북을 다시 계산하며 종속 셀을 관리하는 방법을 보여줍니다. +og_title: 새 워크북 만들기 C# – 완전 가이드 +tags: +- C# +- Excel automation +- Aspose.Cells +title: C#로 새 워크북 만들기 – 스필드 수식을 이용한 단계별 가이드 +url: /ko/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 새 워크북 C# – 전체 프로그래밍 워크스루 + +COM interop과 씨름하지 않고 **create new workbook C#** 하는 방법이 궁금하셨나요? 당신만 그런 것이 아닙니다. 많은 프로젝트에서 즉석에서 Excel 파일을 만들고, 동적 배열 수식을 삽입하며, 모든 것이 자동으로 새로 고쳐지길 원합니다. + +이 가이드에서는 바로 그 방법을 보여드립니다—최신 **Aspose.Cells** 라이브러리를 사용하고, 스필링 `SEQUENCE` 수식을 추가하고, 종속 셀을 조정한 뒤, 재계산을 강제 실행하여 결과가 최신 상태를 유지하도록 합니다. 끝까지 따라오시면 .NET 앱 어디에든 복사‑붙여넣기 할 수 있는 자체 포함 실행 예제를 얻게 됩니다. + +## 배울 내용 + +- **create new workbook C#** 를 프로그래밍 방식으로 만드는 방법. +- **spilled array formula** 의 작동 원리와 유용성. +- C# 코드에서 **Excel SEQUENCE function** 사용하기. +- **C# workbook calculation** 을 트리거하여 종속 셀을 즉시 업데이트하기. +- 흔히 발생하는 함정(예: `Calculate` 호출 누락)과 빠른 해결책. + +외부 문서는 필요 없습니다—여기에 모든 것이 준비되어 있습니다. + +## 사전 요구 사항 + +- .NET 6+ (또는 .NET Framework 4.7.2+) 설치. +- Visual Studio 2022 또는 선호하는 IDE. +- **Aspose.Cells** NuGet 패키지 (`Install-Package Aspose.Cells`). +- C# 문법에 대한 기본 이해(완전 초보라면 코드에 주석이 많이 달려 있습니다). + +--- + +## 단계 1: C#에서 새 워크북 만들기 + +This H2 header contains the **primary keyword** exactly where the SEO checklist demands it. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **왜 중요한가:** +> `Workbook`을 인스턴스화하면 Excel 파일의 메모리 내 표현을 얻을 수 있습니다. COM도, interop도 없고, 순수 .NET 객체만으로 안전하게 조작할 수 있습니다. + +--- + +## 단계 2: 스필링 SEQUENCE 수식 추가 + +A **spilled array formula** automatically expands into adjacent cells, which is perfect for generating dynamic lists. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **작동 방식:** +> `SEQUENCE` 함수(Excel 365에서 도입)는 수직 배열의 숫자를 생성합니다. 스필링 수식을 사용하기 때문에 Excel(및 Aspose.Cells)은 `A1` 아래 범위를 자동으로 채워 주며, 루프를 직접 작성할 필요가 없습니다. + +--- + +## 단계 3: 종속 셀을 변경하여 자동 새로 고침 확인 + +Let’s modify `B1` so we can observe how the workbook recalculates the spilled array. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **팁:** +> 나중에 다른 수식에서 스필된 범위를 참조한다면, 스필 내부의 셀을 변경한 뒤 `Calculate`를 호출하면 해당 수식들이 자동으로 업데이트됩니다. + +--- + +## 단계 4: C# 워크북 계산 강제 실행 + +Without an explicit call, Aspose.Cells won’t automatically recompute formulas. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate`가 하는 일:** +> 모든 수식 셀을 순회하면서 평가하고, 결과를 시트에 다시 기록합니다. 이것이 **C# workbook calculation** 의 핵심이며, 스필링 배열이 종속 데이터와 동기화되도록 보장합니다. + +### 예상 출력 + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +`SpilledSequenceDemo.xlsx`을 열면 `A1:A5`에 1‑5가 채워지고, `B1`에 값 `10`이 들어 있는 것을 확인할 수 있습니다. 스필 내부의 셀을 변경하고 `Calculate`를 다시 실행하면 새로운 값이 즉시 나타납니다. + +--- + +## C#에서 Excel SEQUENCE 함수 이해하기 + +If you’re curious why `SEQUENCE` is preferred over a manual loop, consider these points: + +1. **Performance** – The engine evaluates the whole array in one pass. +2. **Readability** – One line of code replaces dozens of `PutValue` calls. +3. **Dynamic sizing** – You can replace the static `5` with a reference to another cell, making the length adjustable at runtime. + +This is a classic example of a **spilled array formula** that simplifies data generation tasks. + +--- + +## 일반적인 함정 및 전문가 팁 + +| 함정 | 해결책 | +|---------|-----| +| `workbook.Calculate()` 호출 누락 | 수식을 수정한 뒤 항상 호출하세요; 그렇지 않으면 시트에 오래된 캐시 값이 표시됩니다. | +| 오래된 Aspose.Cells 버전 사용 | 최신 NuGet 패키지로 업그레이드하여 `SEQUENCE`와 같은 동적 배열 함수 지원을 확보하세요. | +| 계산 전에 저장 | **Calculate** 후에 저장하여 파일에 최신 결과가 포함되도록 하세요. | +| 스필이 기존 데이터를 덮어쓸 것이라 가정 | Aspose.Cells는 스필 범위 밖의 기존 데이터를 보존합니다; 깨끗한 상태가 필요하면 먼저 영역을 지우세요. | + +**전문가 팁:** 시퀀스 길이를 설정 가능하게 하려면 셀(예: `C1`)에 개수를 저장하고 `=SEQUENCE(C1)`을 사용하세요—계산 엔진이 런타임에 값을 읽어 적용합니다. + +--- + +## 예제 확장 + +Now that you know how to **create new workbook C#**, you can: + +- 스필된 범위를 참조하는 더 복잡한 수식 추가(`=SUM(A1#)`에서 `#`는 스필을 의미). +- `workbook.Save("output.pdf", SaveFormat.Pdf)`로 PDF로 내보내기. +- 동적 배열 크기에 자동으로 맞춰지는 차트 삽입. + +이 모든 작업은 방금 다룬 **C# workbook calculation** 기반 위에 구축됩니다. + +--- + +## 결론 + +우리는 **create new workbook C#** 전체 과정을 단계별로 살펴보았습니다—`Workbook` 객체 생성, 스필링 `SEQUENCE` 수식 삽입, 종속 셀 조정, 그리고 재계산 강제로 모든 것이 최신 상태를 유지하도록 했습니다. 위의 전체 코드 스니펫은 바로 실행할 수 있으니 콘솔 앱에 붙여넣고 Aspose.Cells NuGet 패키지만 추가하면 몇 초 만에 작동하는 Excel 파일을 얻을 수 있습니다. + +다음 단계가 준비되셨나요? 정적 `5`를 셀 참조로 바꾸어 보거나, `FILTER`·`UNIQUE`와 같은 다른 동적 배열 함수를 실험해 보세요. **Aspose.Cells C#**가 전체 보고 엔진을 어떻게 구동할 수 있는지 탐구해 보시기 바랍니다. Happy coding! + +--- + +*Image placeholder:* + +![새로 만든 워크북에 스필링 SEQUENCE 수식이 적용된 스크린샷 – create new workbook C# 예제](/images/create-new-workbook-csharp.png) + +--- + +*If you found this tutorial helpful, consider starring the repository, sharing with teammates, or leaving a comment below. Your feedback fuels future guides!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/formulas-functions/_index.md b/cells/korean/net/formulas-functions/_index.md index 061487aa00..97bb6bd490 100644 --- a/cells/korean/net/formulas-functions/_index.md +++ b/cells/korean/net/formulas-functions/_index.md @@ -102,6 +102,8 @@ Aspose.Cells .NET을 사용하여 Excel 파일의 언어를 지정하는 방법 ### [Aspose.Cells .NET을 사용하여 Excel Power Query 수식 업데이트](./update-power-query-formulas-aspose-cells-net) Aspose.Cells for .NET을 사용하여 Excel 통합 문서에서 Power Query 수식을 프로그래밍 방식으로 업데이트하는 방법을 알아보세요. 동적 보고를 위한 마스터 데이터 소스 관리 방법을 알아보세요. +### [C#에서 Lambda를 사용하여 Excel 수식 활용 – 완전 가이드](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) + ## Excel 수식 유형 이해 Excel 수식은 다양한 형태로 제공되며, 각각 Aspose.Cells에서 관리할 수 있는 고유한 특성이 있습니다. diff --git a/cells/korean/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/korean/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..c1ceed8423 --- /dev/null +++ b/cells/korean/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-22 +description: C#에서 람다를 사용해 Excel 수식을 다루는 방법. 셀에 수식을 쓰고, 범위를 배열로 변환하며, 콘솔에 배열을 표시하고, + Excel에서 코탄젠트를 계산하는 방법을 배웁니다. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: ko +og_description: C#에서 람다를 사용하여 Excel 수식을 조작하고, 범위를 배열로 변환하며, 셀에 수식을 작성하고, 콘솔에 배열을 표시하며, + Excel에서 코탄젠트를 계산하는 방법. +og_title: C#에서 람다와 엑셀 수식 사용 방법 – 단계별 가이드 +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: C#에서 람다와 엑셀 수식을 사용하는 방법 – 완전 가이드 +url: /ko/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#와 Excel 수식에서 Lambda 사용 방법 – 완전 가이드 + +Ever wondered **how to use lambda** when you’re automating Excel from C#? You’re not alone. Many developers hit a wall when they need to combine the power of Excel’s new dynamic array functions with C#’s `LAMBDA` capability. The good news? It’s actually pretty straightforward once you see the pieces fit together. + +C#에서 Excel을 자동화할 때 **how to use lambda**가 궁금했던 적이 있나요? 당신만 그런 것이 아닙니다. 많은 개발자들이 Excel의 새로운 동적 배열 함수와 C#의 `LAMBDA` 기능을 결합해야 할 때 벽에 부딪히곤 합니다. 좋은 소식은? 구성 요소가 맞물리는 것을 보면 실제로 꽤 간단하다는 것입니다. + +In this tutorial we’ll walk through **writing a formula to a cell**, **converting a range to an array**, **displaying that array in the console**, and even **calculating cotangent in Excel**—all while showing you **how to use lambda** inside a `REDUCE` call. By the end you’ll have a runnable snippet that you can drop into any .NET project that references Aspose.Cells (or a similar library). + +이 튜토리얼에서는 **writing a formula to a cell**, **converting a range to an array**, **displaying that array in the console**, 그리고 **calculating cotangent in Excel**까지 모두 다루며, `REDUCE` 호출 내부에서 **how to use lambda**를 보여드립니다. 마지막까지 하면 Aspose.Cells(또는 유사 라이브러리)를 참조하는 모든 .NET 프로젝트에 넣을 수 있는 실행 가능한 스니펫을 얻게 됩니다. + +--- + +## 배워게 될 내용 + +- C#를 사용하여 **write formula to cell**하는 방법. +- `EXPAND` 함수를 사용하여 **convert range to array**하는 방법. +- 계산 후 **display array in console**하는 방법. +- `COT` 및 `COTH`를 사용하여 **calculate cotangent in Excel**하는 방법. +- C#에서 Excel의 `REDUCE` 함수 내부에서 **how to use lambda**의 정확한 구문. + +> **Prerequisite:** 최신 버전의 .NET(Core 6+ 또는 .NET Framework 4.7+)과 NuGet을 통해 설치된 Aspose.Cells for .NET 라이브러리가 필요합니다. + +--- + +## Step 1: 워크북 설정 및 셀에 수식 쓰기 + +The first thing we do is spin up a fresh workbook and grab the first worksheet. Then we **write a formula to a cell** – in this case `A1` will hold the result of an `EXPAND` call. + +먼저 새 워크북을 생성하고 첫 번째 워크시트를 가져옵니다. 그런 다음 **write a formula to a cell**을 수행합니다 – 여기서는 `A1`이 `EXPAND` 호출의 결과를 보관하게 됩니다. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Why this matters:** 코드를 통해 직접 수식을 작성하면 Excel을 열지 않고도 복잡한 스프레드시트를 즉시 생성할 수 있습니다. 또한 다음 단계인 **convert range to array**를 위한 기반을 마련합니다. + +--- + +## Step 2: EXPAND로 범위를 배열로 변환 + +`EXPAND`는 작은 범위를 더 큰 행렬로 변환하는 Excel의 방법입니다. 수식을 `A1`에 배치하면 Excel은 해당 셀을 시작으로 4 × 5 블록을 스필합니다. C#에서는 값을 수동으로 복사할 필요가 없으며, `Calculate`를 호출하면 라이브러리가 무거운 작업을 수행합니다. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**How to use lambda:** 아직은 아니지만, 기대해 주세요. 먼저 시트에 데이터를 넣고, 이후에 람다를 사용해 축소합니다. + +--- + +## Step 3: REDUCE 내부에서 LAMBDA 사용 – “How to Use Lambda”의 핵심 + +Excel 365는 `REDUCE`를 도입했으며, **initial value**, **range**, 그리고 각 요소를 어떻게 결합할지 알려주는 **LAMBDA**를 받습니다. C#에서는 단순히 수식 문자열을 할당하면 되며, 람다는 C# 코드가 아니라 Excel 수식 내부에 존재합니다. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explanation:** +- `0`은 시작 누산기(`acc`)입니다. +- `A1:D4`는 처리하려는 범위이며(스필의 첫 네 열) +- `LAMBDA(acc, x, acc + x)`는 각 셀(`x`)을 누산기에 더하도록 Excel에 지시합니다. + +이것이 스프레드시트 컨텍스트에서 집계를 위해 **how to use lambda**의 핵심입니다. + +--- + +## Step 4: Excel에서 코탄젠트 계산 – 각도에서 쌍곡선까지 + +삼각함수 결과가 필요하다면, Excel의 `COT`와 `COTH` 함수는 매우 간단합니다. 각각 `G1`과 `G2`에 배치하겠습니다. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Why this is handy:** **calculate cotangent in Excel**을 알면 특히 워크북을 비개발자와 공유할 때 맞춤 수학 코드를 작성하는 수고를 줄일 수 있습니다. + +--- + +## Step 5: 계산 강제 실행 및 확장된 배열 가져오기 + +Now we tell the workbook to evaluate every formula, then pull the spilled array out of `A1`. This is where we **display array in console**. + +이제 워크북에 모든 수식을 평가하도록 지시하고, `A1`에서 스필된 배열을 가져옵니다. 여기서 **display array in console**을 수행합니다. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**What you’ll see:** +- 줄마다 출력되는 깔끔하게 포맷된 4 × 5 행렬. +- `REDUCE` 람다에 의해 계산된 합계. +- 두 개의 코탄젠트 값. + +이것으로 **write formula to cell**부터 **display array in console**까지의 전체 흐름이 완성됩니다. + +--- + +## 전체 작업 예제 (복사‑붙여넣기 준비) + +아래는 콘솔 앱에 바로 넣을 수 있는 전체 프로그램입니다. 먼저 `Aspose.Cells` NuGet 패키지를 추가하는 것을 잊지 마세요 (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**예상 콘솔 출력 (값은 기본값인 B1:C2의 내용에 따라 달라지며, 기본값은 0입니다):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +`B1:C2`에 원하는 숫자를 채워 실행해 보세요 – 매트릭스가 해당 값들을 반영합니다. + +--- + +## 전문가 팁 및 흔히 발생하는 실수 + +- **Pro tip:** 스필된 범위를 다른 위치에서 시작해야 한다면 대상 셀(`A1`)을 변경하면 됩니다. `EXPAND` 함수는 앵커를 존중합니다. +- **Watch out for:** 원본 범위의 빈 셀은 스필된 배열에서 `0`이 되며, 이는 `REDUCE` 합계에 영향을 줄 수 있습니다. +- **Edge case:** 워크북에 휘발성 함수(예: `NOW()`)에 의존하는 수식이 포함된 경우, 모든 수식을 설정한 후 `workbook.Calculate()`를 호출하여 최신 상태를 유지하십시오. +- **Performance note:** 대규모 스필의 경우 `EXPAND` 호출에서 크기를 제한하는 것을 고려하세요; 그렇지 않으면 필요 이상으로 메모리를 할당할 수 있습니다. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/number-and-display-formats-in-excel/_index.md b/cells/korean/net/number-and-display-formats-in-excel/_index.md index eb70ceaffa..9018abcba9 100644 --- a/cells/korean/net/number-and-display-formats-in-excel/_index.md +++ b/cells/korean/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Excel 시트에 개성을 더하고 싶다면 표시 형식을 사용자 지정 Aspose.Cells for .NET을 사용하여 Excel에서 숫자 서식을 자동화합니다. 날짜, 백분율 및 통화 서식을 프로그래밍 방식으로 적용하는 방법을 알아봅니다. ### [사용자 정의 숫자로 표시 형식 사용자 지정](./customizing-display-formats-with-user-defined-numbers/) Aspose.Cells for .NET을 사용하여 표시 형식을 사용자 지정하는 방법을 알아보세요. 이 단계별 가이드를 사용하여 날짜, 백분율 및 통화 형식을 지정해 보세요. +### [Excel을 서식과 함께 내보내기 – 숫자 형식 유지](./how-to-export-excel-with-formatting-preserve-number-format/) +Aspose.Cells for .NET을 사용해 서식이 적용된 Excel 파일을 내보내고, 숫자 형식을 그대로 유지하는 방법을 알아봅니다. +### [C#에서 날짜 및 시간을 ISO 형식으로 변환 – 완전 가이드](./format-datetime-to-iso-in-c-complete-guide/) +Aspose.Cells for .NET을 사용해 C#에서 날짜와 시간을 ISO 8601 형식으로 변환하는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/korean/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..1a08ac5bd9 --- /dev/null +++ b/cells/korean/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Excel에서 날짜를 추출하면서 datetime을 ISO 형식으로 포맷하고, Aspose.Cells를 사용해 C#에서 ISO + 날짜를 표시하는 방법을 배웁니다. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: ko +og_description: 날짜/시간을 ISO 형식으로 변환하기 쉽게. 이 가이드는 Excel에서 날짜를 추출하고 Aspose.Cells를 사용하여 + ISO 날짜를 표시하는 방법을 보여줍니다. +og_title: C#에서 datetime을 ISO 형식으로 변환 – 단계별 튜토리얼 +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: C#에서 datetime을 ISO 형식으로 포맷하기 – 완전 가이드 +url: /ko/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 datetime을 iso 형식으로 변환 – 완전 가이드 + +Ever needed to **format datetime to iso** but the source lives inside an Excel workbook? Maybe the cell contains a Japanese era like “令和3年5月1日” and you’re scratching your head wondering how to turn that into a clean `2021‑05‑01` string. You’re not alone. In this tutorial we’ll **extract date from excel**, parse the Japanese era, and then **display iso date** on the console—all with a few lines of C# and Aspose.Cells. + +> **왜 이렇게 하는가:** Aspose.Cells는 기본적으로 셀 값을 문자열로 취급합니다. 원시 연호 텍스트를 삽입함으로써 일본 고객이 자체 달력으로 날짜를 입력한 실제 상황을 시뮬레이션합니다. + +## 필요 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.6+에서도 컴파일됩니다) +- Visual Studio 2022 (또는 선호하는 다른 편집기) +- **Aspose.Cells for .NET** NuGet 패키지 – `Install-Package Aspose.Cells` +- 일본 연호 형식으로 날짜가 들어있는 Excel 파일(또는 새 워크북) + +그게 전부입니다. 추가 라이브러리나 COM 인터옵 없이, 단 하나의 잘 문서화된 메서드만 있으면 됩니다. + +## 단계 1: 워크북 생성 및 일본 연호 날짜 입력 + +First, we need a workbook to work with. If you already have an Excel file, you can load it with `new Workbook("path")`. For this example we’ll create a new workbook in memory and drop a Japanese era string into cell **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **왜 이렇게 하는가:** Aspose.Cells는 기본적으로 셀 값을 문자열로 취급합니다. 원시 연호 텍스트를 삽입함으로써 일본 고객이 자체 달력으로 날짜를 입력한 실제 상황을 시뮬레이션합니다. + +## 단계 2: 일본 연호 파싱 활성화 및 날짜 추출 + +Aspose.Cells는 일본 연호 문자열을 .NET `DateTime` 객체로 자동 변환할 수 있습니다—단, 이를 명시적으로 지정해야 합니다. `DateTimeParseOptions.EnableJapaneseEra` 플래그가 핵심 역할을 수행합니다. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **프로 팁:** `EnableJapaneseEra` 옵션을 빼먹으면 라이브러리가 원본 문자열을 반환하고, 이후 변환이 실패합니다. 혼합된 콘텐츠를 처리할 경우 항상 `parsed.Type`을 확인하세요. + +## 단계 3: 파싱된 DateTime을 ISO 8601으로 변환 + +Now that we have a proper `DateTime`, turning it into an ISO‑formatted string is a breeze. The `"yyyy-MM-dd"` pattern complies with the ISO 8601 date portion, which is what most APIs expect. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +프로그램을 실행하면 다음과 같이 출력됩니다: + +``` +ISO date: 2021-05-01 +``` + +이것이 여러분이 원했던 **display iso date**입니다. + +## 전체 실행 가능한 예제 + +Below is the complete code block you can copy straight into a console project. No hidden dependencies, no extra configuration. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **예상 출력:** `ISO date: 2021-05-01` + +## 단계별 분석 (각 부분이 중요한 이유) + +| 단계 | 발생 내용 | 중요한 이유 | +|------|--------------|--------------------| +| **워크북 생성** | 메모리 상의 Excel 컨테이너를 초기화합니다. | 파일 시스템에 접근하지 않고 테스트할 수 있는 샌드박스를 제공합니다. | +| **PutValue** | **A1**에 원시 일본 연호 문자열을 저장합니다. | 실제 데이터 입력을 모방하며, 파서가 정확한 텍스트를 인식하도록 보장합니다. | +| **`EnableJapaneseEra`와 함께 GetValue** | 연호 문자열을 .NET `DateTime` 객체로 변환합니다. | 달력 변환을 자동으로 처리하므로 수동 조회표가 필요 없습니다. | +| **`ToString("yyyy-MM-dd")`** | `DateTime`을 ISO 8601 형식으로 포맷합니다. | 문화에 독립적이며 정렬 가능한 날짜 문자열을 보장해 REST API, 데이터베이스 등에서 사용됩니다. | +| **Console.WriteLine** | 최종 ISO 날짜를 출력합니다. | 전체 파이프라인이 끝까지 정상 작동함을 확인합니다. | + +## 일반적인 변형 처리 + +### 1. 다른 셀 위치 + +If your date lives in **B2** or a named range, simply replace `"A1"` with the appropriate address: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. 열에 여러 날짜가 있는 경우 + +When you need to **extract date from excel** for many rows, loop through the used range: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. 연호가 아닌 날짜에 대한 대체 처리 + +If a cell already contains a standard date string, the parser still works, but you might want a safety net: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` 플래그는 예외를 방지하고 변환에 실패하면 원본 값을 반환합니다. + +### 4. 시간 요소 포함 + +Should you need the time part as well, use `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +그러면 전체 ISO 8601 타임스탬프(`2021-05-01T00:00:00`)가 생성됩니다. + +## 시각 자료 + +![datetime을 iso 형식으로 변환 예시](image.png "C#에서 datetime을 iso 형식으로 변환하는 예시") + +*Alt text:* *콘솔 출력이 표시된 datetime을 iso 형식으로 변환 예시* + +## 자주 묻는 질문 + +- **이것을 .xls 파일과 함께 사용할 수 있나요?** + 예. Aspose.Cells는 `.xls`, `.xlsx`, `.csv` 등 다양한 형식을 기본적으로 지원합니다. + +- **워크북이 비밀번호로 보호되어 있으면 어떻게 하나요?** + `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` 로 로드합니다. + +- **ISO 형식이 로케일에 의존하나요?** + 아니요. `"yyyy-MM-dd"` 패턴은 문화에 독립적이며, 어떤 머신에서도 동일한 문자열을 보장합니다. + +- **.NET Core에서도 작동하나요?** + 물론입니다—Aspose.Cells는 .NET Standard 2.0을 준수합니다. + +## 마무리 + +우리는 **extract date from excel**을 통해 **format datetime to iso**를 수행하고, 일본 연호 문자열을 파싱한 뒤 콘솔에 **display iso date**를 출력하는 방법을 다루었습니다. 핵심 단계인 워크북 생성, 연호 텍스트 쓰기 또는 로드, 일본 연호 파싱 활성화, `ToString("yyyy-MM-dd")` 로 포맷은 대부분의 시나리오에 필요한 전부입니다. + +Next, you might want to: + +- ISO 날짜를 다른 열에 다시 기록하여 후속 처리에 활용하기. +- 변환된 워크북을 CSV로 내보내 대량 가져오기. +- Excel 업로드를 받아 JSON‑인코딩된 ISO 날짜를 반환하는 웹 API와 이 로직을 결합하기. + +다양한 날짜 형식, 시간대, 혹은 사용자 정의 달력 등을 자유롭게 실험해 보세요. Aspose.Cells의 유연성 덕분에 문제에 부딪히는 경우가 거의 없습니다. + +코딩 즐겁게 하시고, 모든 날짜가 완벽히 ISO‑준수되길 바랍니다! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/korean/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..bc328f13be --- /dev/null +++ b/cells/korean/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-22 +description: 서식이 적용된 Excel을 내보내고 숫자 형식을 유지하는 방법. Excel 범위를 변환하고, 수식 결과를 얻으며, Aspose.Cells를 + 사용하여 서식이 적용된 Excel을 내보내는 방법을 배웁니다. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: ko +og_description: 서식이 포함된 Excel을 내보내고 숫자 서식을 유지하는 방법. Excel 범위를 변환하고 수식 결과를 얻으며 C#에서 + 서식이 적용된 Excel을 내보내는 단계별 가이드. +og_title: 서식이 포함된 Excel 내보내기 방법 – 숫자 서식 유지 +tags: +- C# +- Aspose.Cells +- Excel automation +title: 서식이 포함된 Excel 내보내기 방법 – 숫자 서식 유지 +url: /ko/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel을 서식과 함께 내보내는 방법 – 숫자 서식 유지 + +워크북에서 보는 그대로 모든 셀의 모양을 유지하면서 **Excel을 내보내는 방법**을 궁금해 본 적 있나요? 보고서를 클라이언트에게 전달하거나, 그리드 컨트롤에 데이터를 공급하거나, 데이터베이스에 값을 저장해야 할 수도 있습니다. 대부분의 경우 숫자 서식이 사라지거나 수식이 원시 문자열로 변환되는 문제가 발생합니다. + +이 튜토리얼에서는 **숫자 서식 유지**, **Excel 범위를 `DataTable` 로 변환**, **수식 결과 가져오기**, 그리고 마지막으로 Aspose.Cells를 사용해 **서식이 적용된 Excel 내보내기**를 수행하는 완전한 C# 예제를 단계별로 살펴봅니다. 끝까지 따라오면 워크시트 참조만으로 어떤 프로젝트에든 삽입할 수 있는 단일 메서드를 얻게 됩니다. + +> **빠른 미리보기:** 코드는 워크북을 생성하고 값과 수식을 기록한 뒤, Aspose.Cells에 셀을 서식이 적용된 문자열로 내보내도록 지시하고 `123.456 | 246.912` 를 출력합니다 – Excel에서 기대하는 그대로입니다. + +--- + +## 필요 사항 + +- **Aspose.Cells for .NET** (무료 체험판으로 학습에 충분합니다) +- .NET 6.0 이상 (.NET Framework에서도 API는 동일합니다) +- 기본 C# 개발 환경 (Visual Studio, VS Code, Rider 등… 원하는 도구 선택) + +Aspose.Cells 외에 추가 NuGet 패키지는 필요하지 않습니다. 아직 설치하지 않았다면 다음을 실행하세요: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## 단계 1 – 워크북 생성 및 값 쓰기 (수식 포함) + +먼저 새 워크북을 만들고 **A1**에 숫자 값을 입력합니다. 그런 다음 **B1**에 첫 번째 셀을 두 배로 곱하는 간단한 수식을 추가합니다. 이는 이후 **수식 결과 가져오기**를 시연하기 위한 준비 단계입니다. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**왜 중요한가:** +- `PutValue`는 원시 숫자를 저장하고, `PutFormula`는 계산식을 저장합니다. +- Aspose.Cells는 수식을 **활성** 상태로 유지하므로, 나중에 셀 값을 요청하면 실제로 `246.912` 를 얻으며, 문자열 `"=A1*2"` 가 반환되지 않습니다. + +--- + +## 단계 2 – Aspose.Cells에 서식이 적용된 문자열로 값 내보내기 + +기본 설정으로 `ExportDataTable`을 호출하면 숫자 셀은 기본 `double` 값으로 반환됩니다. 이 경우 천 단위 구분 기호, 통화 기호, 사용자 지정 소수점 등 설정한 서식이 모두 사라집니다. `ExportTableOptions` 클래스를 사용하면 **숫자 서식 유지**와 **문자열로 내보내기**를 동시에 할 수 있습니다. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**핵심 포인트:** `ExportNumberFormat = true` 가 **숫자 서식 유지** 기능을 활성화하는 플래그입니다. 이를 설정하지 않으면 `"123.456"` 와 `"246.912"` 가 원시 숫자로 표시되어 코드에서는 괜찮아 보이지만, Excel과 동일한 서식을 기대하는 UI에 붙여넣을 때는 문제가 됩니다. + +--- + +## 단계 3 – 내보낸 데이터 출력 (검증) + +이제 `DataTable`에 서식이 적용된 문자열이 가득하므로, 콘솔에 내용을 덤프해 보겠습니다. 이를 통해 **수식 결과 가져오기**가 수식을 직접 평가하지 않아도 정상적으로 동작함을 확인할 수 있습니다. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +프로그램을 실행하면 다음과 같이 출력됩니다: + +``` +123.456 | 246.912 +``` + +두 번째 열이 **수식 결과**를 보여주고, 수식 텍스트가 아니라는 점에 주목하세요. 이것이 **서식이 적용된 Excel 내보내기**를 할 때 필요한 정확한 동작입니다. + +--- + +## 단계 4 – 큰 Excel 범위 변환 (선택 사항) + +위 예제는 작은 `A1:B1` 영역만 다루지만, 실제 상황에서는 전체 테이블을 내보내야 할 때가 많습니다. 동일한 메서드는 어떤 직사각형 블록에도 적용할 수 있으며, `firstRow`, `firstColumn`, `totalRows`, `totalColumns` 인자를 적절히 조정하면 됩니다. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tip:** 시트에 이미 헤더 행이 있다면 `includeColumnNames` 를 `true` 로 설정하세요. Aspose.Cells는 해당 범위의 첫 번째 행을 열 이름으로 사용하므로, 이후 `DataTable` 을 UI 그리드에 바인딩할 때 편리합니다. + +--- + +## 단계 5 – 일반적인 함정 및 회피 방법 + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Numbers lose commas or currency symbols** | `ExportAsString` 이 `false` 이거나 `ExportNumberFormat` 이 누락됨 | `ExportAsString = true` **와** `ExportNumberFormat = true` 를 모두 설정합니다. | +| **Formula cells return the formula text** | 워크북이 자동 계산으로 설정되지 않은 경우 내보내기 전에 `CalculateFormula` 를 호출하지 않음 | 자동 계산을 활성화(`workbook.CalculateFormula()`)하거나 `ExportAsString` 을 사용해 강제로 평가하도록 합니다. | +| **Headers appear as data rows** | 범위에 헤더 행이 포함되어 있음에도 `includeColumnNames` 가 `false` 로 설정됨 | 첫 번째 행을 열 이름으로 취급하려면 `includeColumnNames = true` 로 설정합니다. | +| **Large ranges cause memory pressure** | 전체 시트를 한 번에 내보내면 메모리에 모두 로드됨 | 500행씩 등 작은 청크로 나누어 내보내고 필요 시 `DataTable` 을 병합합니다. | + +--- + +## 단계 6 – 전체 작업 예제 (복사‑붙여넣기 준비) + +아래는 `using` 구문부터 `Main` 메서드까지 포함한 전체 프로그램입니다. 콘솔 앱에 붙여넣고 **F5** 키를 눌러 실행하면 서식이 적용된 출력이 즉시 표시됩니다. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +이것이 **Excel을 내보내는 방법** 전체 흐름이며, 서식이 유지되고 수식 결과가 평가된 상태의 깔끔한 `DataTable` 을 어떤 .NET 소비자도 사용할 수 있게 제공합니다. + +--- + +## 결론 + +우리는 **Excel을 내보내는 방법**에 대해 **숫자 서식 유지**, **Excel 범위를 `DataTable` 로 변환**, 그리고 **수식 결과 가져오기**를 별도 파싱 없이 수행하는 전체 과정을 다루었습니다. 핵심은 `ExportTableOptions` 설정이며, `ExportAsString` 과 `ExportNumberFormat` 을 `true` 로 지정하면 Aspose.Cells가 모든 복잡한 작업을 대신 처리합니다. + +이제 다음과 같이 활용할 수 있습니다: + +- `DataTable` 을 WPF `DataGrid` 나 ASP.NET MVC 뷰에 연결 +- 정확한 시각적 표현을 유지하면서 CSV 파일로 저장 +- 여러 시트 또는 동적 범위에 대해 동일한 접근 방식 확장 + +다양한 서식(통화, 백분율)과 더 큰 데이터 블록을 실험해 보세요. 문제가 발생하면 **일반적인 함정** 표를 다시 참고하십시오 – **서식이 적용된 Excel 내보내기** 시 가장 흔히 겪는 문제들을 정리했습니다. + +행복한 코딩 되시길 바라며, 내보낸 스프레드시트가 원본만큼 깔끔하게 보이길 바랍니다! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/korean/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..8594a1c4ac --- /dev/null +++ b/cells/korean/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells를 사용하여 C#에서 피벗 테이블을 복제하는 방법을 배웁니다. 이 가이드는 또한 행을 복사하고 C#에서 + Excel 워크북을 로드하여 원활한 Excel 자동화 복사를 수행하는 방법을 보여줍니다. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: ko +og_description: C#에서 피벗을 복제하는 방법? 이 간결한 튜토리얼을 따라 Excel 워크북을 로드하고, 행을 복사하며, Excel 자동화 + 복사 행을 마스터하세요. +og_title: C#에서 피벗을 복제하는 방법 – 완전 가이드 +tags: +- C# +- Excel Automation +- Aspose.Cells +title: C#에서 피벗 복제하는 방법 – 완전 단계별 가이드 +url: /ko/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 피벗 복제하는 방법 – 완전 단계별 가이드 + +Excel에서 직접 끌어다 놓지 않고 프로그래밍으로 **피벗 복제** 테이블을 만들 수 있는지 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다. 많은 보고 파이프라인에서 동일한 피벗 레이아웃을 새로운 행 집합에 적용해야 하는데, 수작업으로 하는 것은 시간 낭비입니다. + +좋은 소식은? 몇 줄의 C# 코드만으로 Excel 워크북을 로드하고, 피벗이 위치한 영역을 정의한 뒤 **행 복사 방법**을 사용해 피벗을 새로운 위치에 나타낼 수 있습니다—모두 자동화된 한 번의 실행으로 가능합니다. 이 튜토리얼에서는 **load excel workbook c#** 기본 사항도 다루고 **excel automation copy rows** 작업을 위한 탄탄한 기반을 제공할 것입니다. + +> **얻을 수 있는 것** +> • 피벗 테이블을 복제하는 완전한 실행 가능한 예제. +> • 각 라인이 왜 중요한지에 대한 설명. +> • 숨겨진 워크시트나 다중 피벗과 같은 엣지 케이스를 처리하는 팁. + +--- + +## 사전 요구 사항 + +- **.NET 6.0**(또는 최신 .NET 버전) 설치. +- **Aspose.Cells for .NET** – Excel 파일을 조작하기 위해 사용할 라이브러리입니다. NuGet을 통해 가져올 수 있습니다: + +```bash +dotnet add package Aspose.Cells +``` + +- 피벗 테이블이 이미 **A1:J20** 범위에 포함된 소스 워크북(`Source.xlsx`). (복제할 범위) +- C# 구문에 대한 기본적인 이해 – 특별한 것이 아니라 일반적인 `using` 문과 `Main` 메서드 정도. + +위 내용 중 익숙하지 않은 것이 있다면 잠시 멈춰 패키지를 설치하세요; 이후 가이드는 라이브러리가 준비되어 있다고 가정합니다. + +![Illustration of how to duplicate pivot in C# using Aspose.Cells](https://example.com/duplicate-pivot.png "C#에서 피벗을 복제하는 방법 일러스트") + +*이미지 대체 텍스트: "C#에서 피벗을 복제하는 방법 예시 – 원본 및 복제된 피벗 행을 보여줍니다".* + +## 단계 1: Load Excel Workbook C# – 파일 열기 + +**load excel workbook c#**를 수행하려면 가장 먼저 해야 할 일은 파일을 가리키는 `Workbook` 인스턴스를 생성하는 것입니다. 이 객체를 통해 파일 안의 모든 워크시트, 셀, 피벗에 접근할 수 있습니다. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**왜 중요한가:** +`Workbook`은 전체 Excel 파일을 메모리 모델로 추상화합니다. 먼저 로드하지 않으면 피벗 위치를 확인하거나 행을 복사할 수 없습니다. 또한 생성자는 파일 형식(XLS, XLSX, CSV 등)을 자동으로 감지하므로 형식 감지를 위한 추가 코드를 작성할 필요가 없습니다. + +## 단계 2: How to Copy Rows – 피벗 영역 정의 + +워크북이 메모리에 로드되었으니 이제 Aspose.Cells에 피벗이 포함된 행을 알려야 합니다. 예시에서는 피벗이 **A1:J20**에 위치하며, 이는 행 **0‑19**(0 기반 인덱스)와 같습니다. 이를 `CellArea` 구조체로 감싸겠습니다. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**왜 `CellArea`를 사용하는가:** +`CellArea`는 직사각형 블록을 가볍게 설명하는 방법입니다. 나중에 `CopyRows`를 호출하면 이 객체를 읽어 정확히 어떤 행을 복제할지 알게 됩니다. 범위를 조정해야 할 경우(예: 피벗이 K 열까지 확장되는 경우) `endColumn` 값만 변경하면 됩니다. + +## 단계 3: 대상 워크시트 접근 + +대부분의 워크북은 단일 시트를 가지고 있지만, API는 다중 시트에서도 동일하게 동작합니다. 첫 번째 워크시트(index 0)를 가져오세요 – 원본 피벗이 바로 여기 있습니다. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**프로 팁:** +시트에 이름이 지정되어 있다면 이름으로도 가져올 수 있습니다: `workbook.Worksheets["Sheet1"]`. 워크북 구조가 변경될 때 인덱스를 하드코딩하는 것을 방지할 수 있습니다. + +## 단계 4: How to Copy Rows – 피벗 테이블 복제 + +**how to duplicate pivot**의 핵심은 다음과 같습니다: 피벗이 포함된 행을 새로운 위치에 복사합니다. 여기서는 행 31(0 기반 인덱스 30)부터 시작합니다. `CopyRows` 메서드는 데이터와 기본 피벗 캐시를 *둘 다* 복사하므로 새로운 행은 원본과 정확히 동일하게 동작합니다. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**내부에서 무슨 일이 일어나고 있나요?** +`CopyRows`는 각 행을 복제하면서 수식, 스타일, 피벗 정의를 보존합니다. 피벗 캐시가 워크북 수준에 존재하기 때문에 복제된 피벗은 자동으로 동일한 데이터 소스를 참조합니다 – 추가 설정이 필요 없습니다. + +**엣지 케이스 – 숨겨진 행:** +소스 범위의 행 중 숨겨진 것이 있다면 복사 후에도 숨겨진 상태로 유지됩니다. 이를 표시하려면 복사 후 `worksheet.Rows[destRow].IsHidden = false`를 호출하세요. + +## 단계 5: 워크북 저장 – 복제 확인 + +마지막으로 변경 사항을 디스크에 기록합니다. 원본 파일을 덮어쓸 수도 있지만, 보다 안전하게 새 이름으로 저장하여 전후를 비교할 수 있습니다. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**예상 결과:** +`CopyWithPivot.xlsx`를 열어보세요. 원본 피벗이 **A1:J20**에 있고, 동일한 복제본이 **A31:J50**부터 시작하는 것을 확인할 수 있습니다. 두 피벗은 각각 독립적으로 새로 고칠 수 있으며, 원본에 연결된 슬라이서도 동일한 캐시를 공유하므로 복제본에서도 그대로 작동합니다. + +## 일반적인 질문 및 변형 + +### 한 번에 여러 피벗을 복제할 수 있나요? + +물론 가능합니다. 모든 피벗 테이블(`worksheet.PivotTables`)을 순회하면서 각 피벗의 범위를 다른 대상 위치에 복사하면 됩니다. 단, 대상 범위가 겹치지 않도록 주의하세요. + +### 소스 워크북이 비밀번호로 보호되어 있다면? + +Aspose.Cells는 `Workbook` 생성자에 비밀번호를 전달하여 보호된 파일을 열 수 있게 해줍니다: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### 수식에 영향을 주지 않고 행을 복사하려면? + +값만 필요하고(수식 없이) 경우 `CopyRows`에 `CopyOptions` 플래그를 사용하세요: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### 행을 *다른* 워크북으로 복사하는 방법이 있나요? + +예. 소스 시트에서 행을 복사한 후 `targetWorkbook.Worksheets.AddCopy(worksheet)`를 통해 워크시트를 다른 `Workbook` 인스턴스로 복제할 수 있습니다. + +## 신뢰할 수 있는 Excel Automation Copy Rows를 위한 프로 팁 + +- **범위 검증**: 복사하기 전에 `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)`와 같은 간단한 검사를 통해 범위 초과 오류를 방지합니다. +- **계산 비활성화**: 큰 범위를 복사할 때 `workbook.Settings.CalcMode = CalcMode.Manual;`로 설정하면 작업 속도가 크게 향상됩니다. +- **객체 해제**: 루프에서 다수의 파일을 처리할 경우 `workbook.Dispose()`를 호출해 네이티브 리소스를 해제합니다. +- **작업 로그 기록**: 특히 프로덕션 파이프라인에서는 어떤 파일이 처리됐는지 추적하고 오류를 조기에 발견할 수 있도록 로그를 남깁니다. + +## 결론 + +이제 Aspose.Cells를 사용해 C#에서 **how to duplicate pivot** 테이블을 복제하는 방법을 알게 되었으며, **load excel workbook c#**부터 **excel automation copy rows**까지 전체 워크플로우를 확인하고 최종 저장까지 수행했습니다. 예제는 독립형이며 바로 실행 가능하고, 다중 피벗, 보호된 파일, 워크북 간 복사 등을 처리하도록 확장할 수 있습니다. + +다음 단계는? 스크립트를 다음과 같이 확장해 보세요: + +- 복제된 피벗을 프로그래밍 방식으로 새로 고치기(`pivotTable.RefreshData();`). +- 복제된 영역을 CSV로 내보내어 후속 처리에 활용하기. +- 코드를 ASP.NET Core API에 통합해 사용자가 파일을 업로드하면 즉시 복제된 피벗 버전을 받을 수 있도록 하기. + +코딩 즐겁게 하시고, Excel 자동화가 언제나 원활하기를 바랍니다! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/row-and-column-management/_index.md b/cells/korean/net/row-and-column-management/_index.md index fbee3fe115..fda33359ae 100644 --- a/cells/korean/net/row-and-column-management/_index.md +++ b/cells/korean/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Aspose.Cells for .NET을 사용하여 Excel에서 행과 열을 숨기기 해제 Aspose.Cells for .NET을 사용하여 Excel 파일에서 열을 삭제하는 방법을 알아보세요. 자세한 단계별 가이드를 따라 Excel 파일 수정 작업을 간소화하세요. ### [Aspose.Cells .NET에서 행 삭제](./delete-row-aspose-cells/) Aspose.Cells for .NET을 사용하여 Excel에서 행을 삭제하는 방법을 알아보세요. 이 단계별 가이드에서는 필수 구성 요소, 코드 가져오기, 그리고 원활한 데이터 조작을 위한 자세한 안내를 제공합니다. +### [Aspose Cells 행 삭제 – Excel에서 헤더 행 보호](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Aspose.Cells for .NET을 사용하여 헤더 행을 보호하면서 Excel에서 행을 삭제하는 방법을 단계별로 안내합니다. ### [Aspose.Cells .NET에서 여러 행 삭제](./delete-multiple-rows-aspose-cells/) Aspose.Cells for .NET을 사용하여 Excel에서 여러 행을 삭제하는 방법을 알아보세요. 이 상세하고 단계별 가이드는 개발자를 위한 필수 조건, 코딩 예제, FAQ를 다룹니다. ### [Aspose.Cells .NET에 열 삽입](./insert-column-aspose-cells/) diff --git a/cells/korean/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/korean/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..774ef48af0 --- /dev/null +++ b/cells/korean/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells를 사용하여 헤더 행을 보호하면서 행을 삭제합니다. 첫 번째 테이블을 가져오고 C#에서 Excel 테이블 + 행을 안전하게 삭제하는 방법을 배워보세요. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: ko +og_description: Aspose Cells에서 헤더 행을 보호하면서 행을 삭제합니다. 첫 번째 테이블을 가져오고 C#에서 Excel 테이블 + 행을 안전하게 삭제하는 방법을 알아보세요. +og_title: Aspose Cells 행 삭제 – Excel에서 헤더 행 보호하기 +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells 행 삭제 – Excel에서 헤더 행 보호 +url: /ko/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Excel에서 헤더 행 보호 + +테이블에서 **aspose cells delete rows**를 시도했는데 헤더가 사라진 적이 있나요? 이는 Excel 시트를 프로그래밍으로 조작할 때 흔히 발생하는 함정입니다. 이 가이드에서는 **헤더 행을 보호**하고, **첫 번째 테이블을 가져오는 방법**을 보여주며, 구조를 손상시키지 않고 **Excel 테이블 행을 안전하게 삭제**하는 완전하고 실행 가능한 솔루션을 단계별로 안내합니다. + +워크북을 로드하는 것부터 헤더를 고립시키려 할 때 Aspose가 발생시키는 예외를 처리하는 방법까지 모두 다룹니다. 마지막까지 진행하면 Aspose.Cells를 사용하는 모든 .NET 프로젝트에 바로 적용할 수 있는 견고한 패턴을 얻게 됩니다. + +--- + +## What You’ll Need + +- **Aspose.Cells for .NET** (v23.12 이상) – Office가 설치되지 않아도 Excel 파일을 작업할 수 있게 해주는 라이브러리. +- 기본 C# 개발 환경 (Visual Studio, Rider 또는 `dotnet` CLI). +- 최소 하나의 **ListObject**(Excel 테이블)와 첫 번째 행에 헤더가 포함된 Excel 파일 (`TableWithHeader.xlsx`). + +Aspose.Cells 외에 추가 NuGet 패키지는 필요하지 않습니다. + +--- + +## Step 1: Load the Workbook and Retrieve the First Table + +먼저 해야 할 일은 워크북을 열고 수정하려는 테이블을 가져오는 것입니다. 여기서 보조 키워드 **retrieve first table**이 등장합니다. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Why this matters:** +- `Workbook`은 Excel이 설치되지 않아도 파일을 읽어들입니다. +- `worksheet.ListObjects[0]`은 **첫 번째 테이블을 가져오는** 가장 직관적인 방법이며, 테이블이 여러 개 있을 경우 반복하거나 테이블 이름을 사용할 수 있습니다. + +> **Pro tip:** 워크시트에 실제로 테이블이 있는지 확신이 서지 않을 경우, `worksheet.ListObjects.Count`를 먼저 확인하여 `IndexOutOfRangeException`을 방지하세요. + +--- + +## Step 2: Protect Header Row While Deleting Rows + +이제 핵심 단계입니다: **aspose cells delete rows**를 수행하면서 헤더를 삭제하지 않도록 합니다. Aspose의 `DeleteRows` 메서드는 0 기반 시작 인덱스와 삭제할 개수를 받습니다. 헤더(행 0)를 삭제하려 하면 예외가 발생하는데, 이것을 피해야 합니다. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explanation of the logic:** + +| Step | Reason | +|------|--------| +| `table.DeleteRows(1, 2);` | 인덱스 1은 **두 번째** 행(첫 데이터 행)을 가리킵니다. 두 행을 삭제하면 Excel 기준으로 2‑3행이 사라지고 헤더(1행)는 그대로 남습니다. | +| `catch (Exception ex)` | Aspose는 헤더가 고립될 경우에만 예외를 **발생**시킵니다. 이를 잡아 친절한 메시지를 기록하면 애플리케이션이 중단되지 않습니다. | +| `Save` | 변경 사항을 저장하면 `Result.xlsx`를 열어도 헤더가 여전히 존재함을 확인할 수 있습니다. | + +> **What if you really need to delete the header?** +> 삭제가 꼭 필요하다면 삭제 전에 `table.ShowHeaders = false;`를 설정하거나 전체 테이블을 삭제한 뒤 다시 만들면 됩니다. 하지만 대부분의 비즈니스 시나리오에서는 **헤더 행을 보호**하는 것이 바람직합니다. + +--- + +## Step 3: Verify the Result – Expected Output + +프로그램을 실행한 뒤 `Result.xlsx`를 열면 다음과 같은 결과가 나타납니다: + +- 첫 번째 행에 원래 컬럼 제목이 그대로 남아 있습니다. +- 목표로 한 2‑3행이 사라지고 나머지 데이터가 위로 이동했습니다. + +콘솔에는 다음과 같이 표시됩니다: + +``` +Rows deleted successfully. +``` + +만약 실수로 헤더를 삭제하려 시도했을 경우(예: `table.DeleteRows(0, 1);`) 출력은 다음과 같습니다: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +이 메시지는 Aspose의 내장 보호 기능이 정상적으로 작동하고 있음을 확인시켜 줍니다. + +--- + +## Step 4: Alternative Ways to **Delete Excel Table Rows** + +때때로 조건에 따라 행을 삭제하거나 비연속적인 행을 제거해야 할 때가 있습니다. 헤더를 안전하게 유지하면서 사용할 수 있는 두 가지 간단한 패턴을 소개합니다. + +### 4.1 Delete Rows by Data Filter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Delete Using a Range + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +두 스니펫 모두 시작 인덱스가 1 이하로 내려가지 않기 때문에 **헤더 행 보호** 규칙을 준수합니다. + +--- + +## Step 5: Common Pitfalls & How to Avoid Them + +| Pitfall | Why it Happens | Fix | +|---------|----------------|-----| +| 헤더를 실수로 삭제함 | 시작 인덱스로 `0`을 사용 | 데이터 행은 항상 `1`부터 시작하거나 먼저 `table.ShowHeaders`를 확인 | +| 시트에 테이블이 없을 때 `IndexOutOfRangeException` 발생 | 테이블이 존재한다는 가정 | 접근하기 전에 `worksheet.ListObjects.Count > 0`을 검증 | +| 변경 사항이 저장되지 않음 | `Save` 호출 누락 | 수정 후 반드시 `workbook.Save` 호출 | +| 중간에 행을 삭제하면 인덱스가 이동해 건너뛰는 경우 | 삭제하면서 순방향 반복 | **역순**으로 반복하거나 삭제할 행을 미리 수집 | + +--- + +## Step 6: Put It All Together – Full Working Example + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +이 프로그램을 실행하고 `Result.xlsx`를 열면 헤더는 그대로 유지되고 선택한 행만 사라진 것을 확인할 수 있습니다. 이것이 **aspose cells delete rows**를 수행하면서 헤더를 손상시키지 않는 **완전하고 독립적인 솔루션**입니다. + +--- + +## Conclusion + +이번 튜토리얼에서는 **aspose cells delete rows**를 수행하면서 **헤더 행을 보호**하는 방법, **첫 번째 테이블을 가져오는** 방법, 그리고 **Excel 테이블 행을 안전하게 삭제**하는 여러 방식을 시연했습니다. 주요 포인트는 다음과 같습니다: + +- 헤더를 유지하려면 항상 인덱스 1부터 삭제를 시작합니다. +- Aspose의 내장 보호 예외를 처리하려면 `try/catch`를 사용합니다. +- 작업 전에 테이블 존재 여부를 확인하고, 조건부 삭제 시에는 역순으로 반복합니다. + +다음 단계로, **Aspose Cells**의 스타일링 API와 결합해 삭제 전 행을 강조 표시하거나 여러 워크시트에 걸쳐 자동화해 보세요. 가능성은 무궁무진하며, 이제 신뢰할 수 있는 패턴을 갖추게 되었습니다. + +이 튜토리얼이 도움이 되었다면 좋아요를 눌러주시고, 팀원과 공유하거나 **자신만의 엣지 케이스 해결책**을 댓글로 남겨 주세요. 즐거운 코딩 되세요! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/korean/net/saving-and-exporting-excel-files-with-options/_index.md index c27e136655..01c7fc621f 100644 --- a/cells/korean/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/korean/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells를 사용하여 .NET에서 Excel 파일을 로드할 때 발생하 Aspose.Cells for .NET을 사용하여 단계별 지침을 통해 Excel 파일에서 버전, 작성자, 제목과 같은 문서 속성을 프로그래밍 방식으로 지정하는 방법을 알아보세요. ### [내보내는 동안 선행 빈 행과 열 자르기](./trimming-leading-blank-rows-and-columns/) Aspose.Cells for .NET을 사용하여 앞의 빈 행과 열을 잘라 CSV 내보내기를 간소화하세요. 몇 단계만 거치면 정리된 데이터를 얻을 수 있습니다. +### [C#에서 워크북 저장하기 – 완전한 Excel 자동화 가이드](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Aspose.Cells for .NET을 사용하여 C#에서 워크북을 저장하고 자동화하는 전체 단계별 가이드를 확인하세요. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/korean/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..e16f023824 --- /dev/null +++ b/cells/korean/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells를 사용하여 C#에서 워크북을 저장하는 방법—Excel을 로드하고, 시트를 생성하고, 시트를 재사용하며, + 보고서를 생성하는 단계별 가이드. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: ko +og_description: C#에서 Aspose.Cells를 사용하여 워크북을 저장하는 방법. Excel을 로드하고, 시트를 생성하고, 시트를 재사용하며, + 보고서를 생성하는 방법을 하나의 튜토리얼에서 배웁니다. +og_title: C#에서 워크북 저장 방법 – 완전한 Excel 자동화 가이드 +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: C#에서 워크북 저장 방법 – 완벽한 엑셀 자동화 가이드 +url: /ko/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 워크북 저장하는 방법 – 완전한 Excel 자동화 가이드 + +데이터를 처리한 후 C#에서 **워크북을 저장하는 방법**이 궁금하셨나요? 혼자가 아닙니다. 대부분의 개발자는 화면에서는 보고서가 완벽해 보이지만 디스크에 저장되지 않을 때 난관에 부딪힙니다. 이 튜토리얼에서는 **워크북을 저장하는 방법**을 보여줄 뿐만 아니라 **Excel을 로드하는 방법**, **시트를 생성하는 방법**, **시트를 재사용하는 방법**, **보고서를 생성하는 방법**까지 Aspose.Cells를 사용해 전체 예제로 안내합니다. + +마치 커피 타임에 노트북에서 코드를 꺼내어 한 줄씩 설명하는 대화라고 생각하세요. 끝까지 따라 하면 템플릿을 로드하고, SmartMarker로 데이터를 주입하고, 기존 상세 시트 이름을 재사용한 뒤, 최종적으로 파일을 폴더에 저장하는 실행 가능한 프로그램을 얻을 수 있습니다. 미스터리 없이 복사‑붙여넣기 할 수 있는 명확한 단계만 제공합니다. + +## 필요 사항 + +- **Aspose.Cells for .NET** (2026년 현재 최신 버전). NuGet에서 `Install-Package Aspose.Cells` 로 설치할 수 있습니다. +- .NET 개발 환경 (Visual Studio, Rider, 혹은 C# 확장 기능이 설치된 VS Code 등). +- `MasterTemplate.xlsx` 라는 기본 Excel 템플릿 파일을 여러분이 관리하는 폴더에 배치합니다. +- 최소한의 C# 지식—`Console.WriteLine` 를 한 번이라도 써본 적 있다면 충분합니다. + +> **팁:** 템플릿을 별도의 *Resources* 폴더에 두고 “Copy if newer” 로 설정하면 빌드마다 경로가 일관됩니다. + +이제 코드를 살펴보겠습니다. + +## 1단계: Excel 로드 방법 – 템플릿 워크북 열기 + +먼저 워크북을 메모리로 로드해야 합니다. Aspose.Cells는 이를 한 줄 코드로 처리하지만, 그 이유를 이해하면 나중에 문제를 해결할 때 도움이 됩니다. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **왜 중요한가:** 워크북을 로드하면 템플릿 안의 모든 워크시트, 스타일, 이름이 지정된 범위에 접근할 수 있습니다. 파일을 찾을 수 없으면 Aspose가 `FileNotFoundException` 을 발생시키므로 경로를 다시 확인하세요. +- **예외 상황:** 템플릿이 비밀번호로 보호된 경우 `Workbook` 생성자에 비밀번호를 전달합니다: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## 2단계: 시트 재사용 방법 – SmartMarker 옵션 설정 + +SmartMarker는 자동으로 새로운 상세 시트를 만들 수 있지만, 이미 **Detail**이라는 시트가 존재할 수도 있습니다. 충돌을 방지하기 위해 프로세서에 해당 이름을 재사용하도록 지정합니다. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **왜 중요한가:** 이 옵션이 없으면 Aspose가 숫자 접미사(예: “Detail1”)를 붙여서 고정된 시트 이름을 기대하는 매크로나 수식이 깨질 수 있습니다. +- **시트가 없으면?** Aspose가 자동으로 생성해 주므로, 시트가 있든 없든 동일한 코드가 동작합니다. + +## 3단계: 시트 생성 방법 – 데이터 소스 준비 + +여기서는 직접 시트를 추가하지 않지만, SmartMarker에 전달하는 데이터가 새로운 시트 생성 여부를 결정합니다. 주문 목록을 흉내 내는 간단한 익명 객체를 만들어 보겠습니다. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **왜 중요한가:** SmartMarker는 템플릿에서 `&=Header` 와 `&=Items.Id` 같은 마커를 스캔합니다. `orderData` 구조가 이 마커와 정확히 일치해야 하며, 그렇지 않으면 프로세서가 조용히 무시합니다. +- **변형:** 데이터베이스에서 데이터를 가져오는 경우 익명 타입을 DTO 리스트나 `DataTable` 로 교체하면 됩니다. 프로세서는 두 형태를 모두 지원합니다. + +## 4단계: 보고서 생성 방법 – SmartMarker 처리 + +이제 데이터를 템플릿에 바인딩합니다. 프로세서는 첫 번째 워크시트를 순회하면서 마커를 교체하고 상세 시트를 생성합니다. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **왜 중요한가:** 이 한 줄이 핵심 작업을 수행합니다—헤더를 채우고 `Items` 를 반복하며 앞서 설정한 `DetailSheetNewName` 을 적용합니다. +- **자주 묻는 질문:** *마커가 있는 워크시트가 여러 개라면?* 각 워크시트를 순회하면서 `SmartMarkerProcessor.Process` 를 개별적으로 호출하면 됩니다. + +## 5단계: 워크북 저장 방법 – 결과 파일 저장 + +마지막으로 수정된 워크북을 디스크에 저장합니다. 바로 이 순간에 **워크북을 저장하는 방법**이 구체화됩니다. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **왜 중요한가:** `Save` 메서드는 다양한 형식(`.xlsx`, `.xls`, `.csv`, `.pdf` 등)을 지원합니다. 기본적으로 Excel 파일을 저장하지만 `SaveOptions` 객체를 전달해 출력 형식을 바꿀 수 있습니다. +- **예외 상황:** 대상 파일이 Excel에서 열려 있으면 `Save` 가 `IOException` 을 발생시킵니다. 모든 인스턴스를 닫거나 매 실행마다 고유 파일명을 사용하세요. + +![C#에서 워크북 저장 예시](/images/how-to-save-workbook-csharp.png "C#에서 워크북 저장 – 프로세스 시각적 개요") + +### 전체 작업 예제 + +모든 코드를 합치면, 컴파일하고 실행할 수 있는 독립형 콘솔 앱 예제가 아래와 같습니다: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**예상 출력:** 실행 후 `YOUR_DIRECTORY` 에 `SmartMarkerWithDupDetail.xlsx` 파일이 생성됩니다. 열어 보면 다음과 같습니다: + +- 원본 헤더가 “Orders” 로 채워짐. +- **Detail**이라는 새(또는 재사용된) 시트에 두 행이 포함됩니다: `Id=1, Qty=5` 와 `Id=2, Qty=3`. + +만약 **Detail** 시트가 이미 존재한다면, 내용이 새 데이터로 덮어써져서 파일에 불필요한 시트가 추가되지 않습니다. + +## 자주 묻는 질문 (FAQ) + +| Question | Answer | +|----------|--------| +| *XLSX 대신 PDF로 저장할 수 있나요?* | 예. `workbook.Save("file.xlsx")` 를 `workbook.Save("file.pdf", SaveFormat.Pdf);` 로 교체하면 됩니다. | +| *템플릿에 SmartMarker 섹션이 여러 개 있으면 어떻게 하나요?* | `SmartMarkerProcessor.Process` 를 마커가 포함된 각 워크시트에 호출하거나, 각 섹션에 맞는 데이터 객체 컬렉션을 전달하면 됩니다. | +| *Detail 시트를 덮어쓰는 대신 데이터를 추가할 수 있나요?* | `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` 를 사용합니다 (새로운 Aspose 버전에서 지원). | +| *Workbook을 Dispose 해야 하나요?* | `Workbook` 클래스는 `IDisposable` 을 구현합니다. `using` 블록으로 감싸서 리소스를 깔끔히 관리하세요. | + +## 결론 + +우리는 이제 **C#에서 워크북을 저장하는 방법**을 처음부터 끝까지 다루었으며, 전체 파이프라인인 **Excel 로드 방법**, **시트 생성 방법**(SmartMarker를 통한 암시적 생성), **시트 재사용 방법**, **보고서 생성 방법**을 시연했습니다. 코드는 어떤 .NET 프로젝트에도 바로 적용할 수 있으며, 설명을 통해 다중 시트 보고서, 조건부 서식, PDF 내보내기 등 더 복잡한 시나리오에도 쉽게 확장할 수 있습니다. + +다음 도전 과제가 준비되셨나요? 주문 수량을 시각화하는 차트를 추가하거나, 출력 형식을 CSV로 바꿔서 후속 처리에 활용해 보세요. 로드, 처리, 저장이라는 동일한 원칙이 적용되므로 많은 보고 작업에서 이 패턴을 재사용하게 될 것입니다. + +문제가 발생하거나 확장 아이디어가 있으면 자유롭게 댓글을 남겨 주세요. 즐거운 코딩 되시고, **워크북을 원하는 대로 저장**하는 부드러운 경험을 만끽하시길 바랍니다! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/smart-markers-dynamic-data/_index.md b/cells/korean/net/smart-markers-dynamic-data/_index.md index d218a7575f..42ea109db8 100644 --- a/cells/korean/net/smart-markers-dynamic-data/_index.md +++ b/cells/korean/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Aspose.Cells for .NET을 사용하여 스마트 마커에서 수식 매개변수 Aspose.Cells를 사용하여 단계별 가이드에 따라 스마트 마커를 사용하여 중첩된 개체를 손쉽게 처리함으로써 Excel 보고서의 잠재력을 활용하세요. ### [스마트 마커 Aspose.Cells를 사용하여 변수 배열 구현](./variable-array-smart-markers/) Aspose.Cells의 강력한 기능을 활용하세요. 스마트 마커를 사용하여 변수 배열을 구현하고 Excel 보고서를 원활하게 생성하는 방법을 단계별로 알아보세요. +### [C#에서 Excel 보고서 생성 방법 – SmartMarker를 사용한 전체 가이드](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +C#와 SmartMarker를 활용해 전체 단계별로 Excel 보고서를 생성하는 방법을 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/korean/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..3c36855591 --- /dev/null +++ b/cells/korean/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-22 +description: C#에서 마스터‑디테일 템플릿으로 Excel 보고서를 생성하는 방법. SmartMarker를 사용하여 반복 가능한 시트를 빠르게 + 채우는 방법을 배워보세요. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: ko +og_description: C#에서 재사용 가능한 템플릿을 사용해 Excel 보고서를 생성하는 방법. 이 단계별 가이드는 마스터‑디테일 데이터를 + 사용해 Excel 템플릿을 C#으로 채우는 방법을 보여줍니다. +og_title: C#에서 Excel 보고서 생성 방법 – 완전한 SmartMarker 튜토리얼 +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: C#에서 Excel 보고서 생성 방법 – SmartMarker를 활용한 전체 가이드 +url: /ko/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 Excel 보고서 생성 방법 – SmartMarker를 사용한 전체 가이드 + +끝없이 셀 단위 코드를 작성하지 않고 C#에서 **Excel 보고서를 생성하는 방법**을 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다. 대부분의 개발자는 마스터‑디테일 관계(예: 주문 및 라인 아이템)를 반영하는 깔끔한 다중 시트 보고서가 필요하지만, 매번 휠을 다시 만들고 싶지는 않습니다. + +좋은 소식은? 준비된 Excel 템플릿과 Aspose.Cells의 **SmartMarker** 엔진을 사용하면 몇 줄만으로 **populate Excel template C#**을 할 수 있습니다. 이 튜토리얼에서는 실제 시나리오를 따라가며 각 단계가 왜 중요한지 설명하고, 오늘 바로 복사‑붙여넣기 할 수 있는 완전한 실행 가능한 예제를 제공합니다. + +> **What you'll get:** 마스터‑디테일 Excel 보고서로, 각 주문마다 자체 워크시트가 생성되며 모든 것이 순수 C# 객체에 의해 구동됩니다. 셀을 수동으로 반복하지 않고, 깨지기 쉬운 수식도 없으며—깨끗하고 유지 보수 가능한 코드만 있습니다. + +--- + +## 사전 요구 사항 + +- **.NET 6.0**(또는 이후 버전) 설치 – 코드는 .NET 6을 대상으로 하지만 .NET Framework 4.7+에서도 작동합니다. +- **Aspose.Cells for .NET** NuGet 패키지 (`Install-Package Aspose.Cells`) – `Workbook`, `SmartMarkerProcessor` 및 관련 클래스를 제공합니다. +- `YOUR_DIRECTORY`에 위치한 **MasterDetailTemplate.xlsx**라는 Excel 파일. 첫 번째 시트에 `{{Orders.OrderId}}`와 같은 SmartMarker 블록이 포함되어 있고, 라인 아이템을 위한 중첩 블록 `{{Orders.Items.Prod}}`이 있어야 합니다. +- C# 익명 타입에 대한 기본 이해 – 주문 및 아이템 모델링에 사용할 것입니다. + +위 내용이 익숙하지 않더라도 걱정하지 마세요. 나중에 대안(예: EPPlus 사용)을 언급하겠지만, 핵심 개념은 동일합니다. + +## 단계 1: SmartMarker 블록이 포함된 Excel 템플릿 로드 + +먼저 템플릿 파일을 엽니다. 템플릿을 골격이라고 생각하면 됩니다; SmartMarker가 나중에 실제 데이터로 채워줄 것입니다. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Why this matters:** 레이아웃(템플릿)과 데이터(C# 객체)를 분리함으로써 디자이너와 개발자 모두가 만족합니다. 디자이너는 코드를 건드리지 않고도 글꼴, 색상 또는 수식을 조정할 수 있습니다. + +## 단계 2: 마스터‑디테일 데이터 소스 구축 + +다음으로 템플릿에 채워질 데이터를 생성합니다. 일반적인 주문 보고서에서는 주문 컬렉션이 있으며, 각 주문마다 자체 아이템 컬렉션이 있습니다. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** 여러 보고서에서 재사용이 필요하면 익명 타입 대신 강력히 타입 지정된 클래스를 사용하세요. 익명 접근 방식은 예제를 간결하게 유지합니다. + +**Why this matters:** SmartMarker는 속성 이름(`Orders`, `OrderId`, `Items`, `Prod`, `Qty`)을 템플릿의 플레이스홀더와 매칭하여 작동합니다. 계층 구조가 정확히 일치해야 하며, 그렇지 않으면 엔진이 해당 섹션을 건너뜁니다. + +## 단계 3: SmartMarker에게 각 마스터 레코드마다 새 시트를 만들도록 지시 + +기본적으로 SmartMarker는 모든 행을 하나의 시트에 씁니다. 우리는 각 주문을 자체 워크시트에 두고 싶으며, 이는 나중에 주문별 PDF를 인쇄하거나 이메일로 보내기에 완벽합니다. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Why this matters:** `EnableRepeatingSheet`는 수동 시트 복제 필요성을 없앱니다. 엔진은 원본 시트를 복사하고, 주문 데이터를 삽입한 뒤 시트를 자동으로 이름을 바꿉니다(보통 첫 번째 열 값을 사용). + +## 단계 4: 데이터와 함께 템플릿 처리 + +이제 모든 것을 연결합니다. `SmartMarkerProcessor`가 워크북을 순회하면서 태그를 교체하고 지시대로 새 시트를 생성합니다. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Why this matters:** 이 한 줄이 핵심 작업을 수행합니다—템플릿 파싱, 컬렉션 반복, 중첩 테이블 처리 등. 이는 수동 루프 없이 **populate Excel template C#**의 핵심입니다. + +## 단계 5: 완성된 보고서 저장 + +마지막으로, 채워진 워크북을 디스크에 저장합니다. 웹 앱에서는 HTTP 응답으로 직접 스트리밍할 수도 있습니다. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Why this matters:** 파일로 저장하면 Excel에서 열고, 이해관계자와 공유하거나 PDF 변환과 같은 다운스트림 프로세스에 활용할 수 있는 실질적인 결과물을 얻습니다. + +## 전체 작업 예제 (복사‑붙여넣기 준비 완료) + +아래는 `using` 지시문과 `Main` 메서드를 포함한 전체 프로그램입니다. 콘솔 앱에 붙여넣고 파일 경로를 조정한 뒤 실행하세요. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### 예상 출력 + +`MasterDetailResult.xlsx`를 열면 다음을 볼 수 있습니다: + +- **Sheet “Order_1”** – 주문 1의 헤더와 제품 A와 B에 대한 두 행이 포함됩니다. +- **Sheet “Order_2”** – 주문 2의 헤더와 제품 C에 대한 한 행이 포함됩니다. +- 원본 템플릿의 모든 수식, 서식 및 차트가 그대로 유지됩니다. + +![각 주문마다 별도 시트가 있는 Excel 보고서 – 채워진 워크북 예시](/images/excel-report-example.png "마스터‑디테일 데이터가 포함된 생성된 Excel 보고서") + +*이미지 대체 텍스트: C#와 SmartMarker를 사용하여 Excel 보고서를 생성하는 방법을 보여주는, 각 주문마다 별도 시트가 있는 생성된 Excel 보고서.* + +## 일반적인 질문 및 엣지 케이스 + +### 반복 시트와 함께 정적 시트(예: 요약)가 필요하면 어떻게 해야 하나요? + +`EnableRepeatingSheet = true`를 마스터 블록이 있는 워크시트에 **만** 설정하세요. 다른 시트는 그대로 유지되므로 원본 템플릿에 요약 페이지를 유지할 수 있습니다. + +### 익명 객체 대신 DataTable을 사용할 수 있나요? + +물론 가능합니다. SmartMarker는 `IEnumerable`을 구현하는 모든 객체와 함께 작동합니다. 익명 타입을 `DataTable`로 교체하고 열 이름이 태그와 일치하도록 하면 됩니다. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### 생성된 시트의 명명 규칙을 어떻게 변경하나요? + +사용자 정의 `ISmartMarkerSheetNaming` 인터페이스를 구현하거나(또는 처리 후 `workbook.Worksheets`를 조작) 대부분의 개발자는 셀 값을 기반으로 시트 이름을 바꿉니다: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### 템플릿이 다른 플레이스홀더 구문을 사용한다면 어떻게 하나요? + +SmartMarker는 `SmartMarkerOptions`를 통해 사용자 정의 구분자를 허용합니다. 예를 들어 `{{ }}` 대신 `<< >>`를 사용하려면: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## 이 접근 방식을 확장하기 위한 팁 + +- **템플릿을 메모리에 캐시**하세요. 요청당 많은 보고서를 생성하는 경우, 매번 디스크에서 로드하면 지연이 발생합니다. +- **PDF 변환과 결합** (`workbook.Save("report.pdf", SaveFormat.Pdf)`)하여 이메일에 적합한 출력물을 만들 수 있습니다. +- 구성 파일이나 환경 변수를 사용해 **파일 경로를 매개변수화**하면 개발, 테스트, 프로덕션 전반에 걸쳐 솔루션을 이식할 수 있습니다. +- **데이터 레이어를 별도로 단위 테스트**하세요. SmartMarker 자체는 결정적이므로, 제공하는 데이터가 예상 스키마와 일치하는지만 확인하면 됩니다. + +## 결론 + +우리는 C#에서 **Excel 보고서를 생성하는 방법**을 처음부터 끝까지 다루었습니다. SmartMarker가 적용된 템플릿을 로드하고, 마스터‑디테일 관계를 반영하는 다중 시트 워크북을 저장하는 과정까지. 몇 줄의 코드만으로 **populate Excel template C#**를 수행하면, 깨지기 쉬운 셀 단위 로직을 피하고 디자이너가 최종 모습을 자유롭게 설계할 수 있습니다. + +다음으로 탐색해 볼 수 있는 내용: + +- 시트별로 자동 업데이트되는 차트와 함께 **populate Excel template C#** 사용. +- **excel smartmarker c#**를 ASP.NET Core와 통합하여 보고서를 브라우저로 직접 스트리밍. +- API 또는 데이터베이스에서 데이터를 가져오는 **c# excel automation** 파이프라인 자동화. + +시도해 보고 템플릿을 조정해 보세요. 원시 데이터를 빠르게 깔끔한 Excel 보고서로 변환하는 모습을 확인할 수 있습니다. 질문이나 멋진 사용 사례가 있나요? 아래에 댓글을 남겨 주세요—코딩 즐겁게! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/korean/net/tables-and-lists/_index.md b/cells/korean/net/tables-and-lists/_index.md index ae781c8261..31e2d02baa 100644 --- a/cells/korean/net/tables-and-lists/_index.md +++ b/cells/korean/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Aspose.Cells for .NET을 사용하여 Excel에서 표를 범위로 쉽게 변환 Aspose.Cells for .NET의 강력한 기능을 활용하세요. 이 자세한 단계별 가이드를 통해 쿼리 데이터 소스를 사용하여 테이블을 읽고 쓰는 방법을 알아보세요. ### [Excel에서 표 또는 목록의 주석 설정](./setting-comment-of-table-or-list/) 간단한 단계별 가이드를 통해 Aspose.Cells for .NET을 사용하여 Excel에서 표에 주석을 설정하는 방법을 알아보세요. +### [C#에서 Excel 표 만들기 – 단계별 가이드](./create-excel-table-in-c-step-by-step-guide/) +C# 코드를 사용해 Excel 표를 만드는 방법을 단계별로 안내합니다. Aspose.Cells for .NET으로 손쉽게 구현하세요. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/korean/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/korean/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..e2429a6058 --- /dev/null +++ b/cells/korean/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-22 +description: C#에서 Excel 테이블을 빠르게 만들기. 테이블 추가, 테이블 범위 정의, 테이블 헤더 숨기기 및 테이블 필터 비활성화 + 방법을 전체 코드 예제로 배우세요. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: ko +og_description: C#에서 명확한 예제로 Excel 테이블을 만들기. 몇 줄만으로 테이블 추가, 테이블 범위 정의, 헤더 숨기기 및 필터 + 비활성화 방법을 배워보세요. +og_title: C#로 Excel 테이블 만들기 – 완전 프로그래밍 가이드 +tags: +- Aspose.Cells +- C# +- Excel Automation +title: C#에서 Excel 테이블 만들기 – 단계별 가이드 +url: /ko/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 Excel 테이블 만들기 – 단계별 가이드 + +C#를 사용하여 프로그래밍 방식으로 **Excel 테이블 만들기**가 필요했던 적이 있나요? 올바른 단계를 알면 Excel 테이블 만들기가 아주 쉬워집니다. 이 튜토리얼에서는 **테이블 추가 방법**, **테이블 범위 정의**, **테이블 헤더 숨기기**, 그리고 **테이블 필터 비활성화**까지 보여주는 전체 실행 가능한 예제를 단계별로 살펴보겠습니다 – IDE를 떠나지 않고도 가능합니다. + +필요하지 않을 때 AutoFilter UI가 나타나는 문제를 겪어본 적이 있다면, 여기가 바로 해결책입니다. 이 가이드를 끝까지 따라오면 *TableNoFilter.xlsx*라는 깔끔한 워크북을 생성하는 바로 실행 가능한 코드 스니펫을 얻게 되며, 각 줄이 왜 중요한지도 이해하게 될 것입니다. + +## 배울 내용 + +- Aspose.Cells를 사용하여 처음부터 **Excel 테이블 만들기** 방법. +- 우리 예시에서 (A1:D5) **테이블 범위 정의**에 대한 정확한 구문. +- 헤더 행을 활성화하여 내장 필터 UI가 나타나도록 하는 방법. +- 더 이상 필요하지 않을 때 **테이블 헤더 숨기기**와 **테이블 필터 비활성화** 트릭. +- 오늘 바로 실행할 수 있는 완전한 복사‑붙여넣기 가능한 C# 프로그램. + +### 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.7+에서도 작동합니다). +- NuGet을 통해 설치한 Aspose.Cells for .NET (`Install-Package Aspose.Cells`). +- C#와 Visual Studio(또는 선호하는 IDE)에 대한 기본적인 이해. + +--- + +## Step 1: 프로젝트 설정 및 네임스페이스 가져오기 + +**Excel 테이블 만들기**를 하기 전에, Aspose.Cells를 참조하는 콘솔 프로젝트가 필요합니다. 터미널을 열고 다음을 실행하세요: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +이제 *Program.cs*를 열고 필요한 `using` 문을 추가합니다: + +```csharp +using System; +using Aspose.Cells; +``` + +이러한 import를 통해 튜토리얼의 나머지 부분에서 사용할 `Workbook`, `Worksheet`, `CellArea`, `ListObject` 클래스를 사용할 수 있게 됩니다. + +## Step 2: 새 Workbook 초기화 및 첫 번째 Worksheet 가져오기 + +새 Workbook을 만드는 것이 첫 번째 논리적 단계입니다. Workbook은 Excel 파일 컨테이너이며, Worksheet는 테이블을 배치할 개별 시트라고 생각하면 됩니다. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **왜 중요한가:** 새 `Workbook`은 하나의 빈 시트로 시작합니다. `Worksheets[0]`을 가져옴으로써 별도로 시트를 만들 필요 없이 기본 시트에서 작업하고 있음을 보장합니다. + +## Step 3: 테이블 범위 정의 (A1:D5) + +Excel 용어로 *테이블*은 직사각형 셀 블록 안에 존재합니다. `CellArea` 구조체를 사용하면 해당 블록을 정확히 지정할 수 있습니다. 여기서는 A1부터 D5까지의 셀에 대한 **테이블 범위 정의**를 다룹니다. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **팁:** 동적 범위가 필요하면 데이터 길이에 따라 `endRow`와 `endColumn`을 계산할 수 있습니다. 0부터 시작하는 인덱스는 흔히 발생하는 오프‑바이‑원 버그의 원인이므로 숫자를 한 번 더 확인하세요. + +## Step 4: 테이블 추가 및 헤더 행 활성화 + +이제 튜토리얼의 핵심 단계인 워크시트에 **테이블 추가 방법**을 살펴보겠습니다. `ListObjects` 컬렉션이 테이블을 관리하며, `ShowHeaders = true`로 설정하면 AutoFilter UI가 자동으로 삽입됩니다. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **설명:** +> - `Add(tableRange, true)`는 지정된 범위 안에 새로운 `ListObject`(즉, Excel 테이블)를 생성합니다. +> - `true` 플래그는 Aspose.Cells에 해당 범위의 첫 번째 행을 헤더로 취급하도록 알려줍니다. +> - `ShowHeaders`를 `true`로 설정하면 헤더가 표시되고 내장 필터 UI가 활성화됩니다. + +이 단계까지 진행하면 생성된 워크북을 열었을 때 각 열 헤더에 필터 화살표가 있는 깔끔하게 서식이 지정된 테이블을 확인할 수 있습니다. + +## Step 5: 헤더 행 숨기기 및 AutoFilter 비활성화 + +때때로 UI 요소 없이 데이터만 원할 때가 있습니다. 필터가 필요 없는 깔끔한 보고서를 내보내는 경우가 그 예입니다. 여기서는 **테이블 헤더 숨기기**와 **테이블 필터 비활성화** 기술을 보여드립니다: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **왜 이렇게 하는가:** +> - `ShowHeaders = false`는 시각적인 헤더 행을 제거하여 테이블을 일반 데이터 블록으로 변환합니다. +> - `AutoFilter = null`로 설정하면 숨겨진 필터 객체가 삭제되어 남아있는 필터 로직이 없도록 합니다. 이것이 우리가 **테이블 필터 비활성화**라고 부르는 의미입니다. + +## Step 6: 워크북을 디스크에 저장하기 + +마지막으로 파일을 원하는 위치에 저장합니다. `"YOUR_DIRECTORY"`를 실제 경로로 교체하세요. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +프로그램을 실행하면 다음과 같은 출력이 나타납니다: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +파일을 열면 헤더와 필터 화살표가 없는 데이터 블록이 있는 시트를 확인할 수 있습니다. 이것이 **Excel 테이블 만들기**에서 **테이블 필터 비활성화**까지의 전체 흐름입니다. + +--- + +## 전체 작업 예제 (복사‑붙여넣기 준비됨) + +아래는 전체 프로그램이며, 바로 컴파일할 수 있습니다. 자리표시자 디렉터리를 유효한 경로로 교체하면 됩니다. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**예상 결과:** *TableNoFilter.xlsx*라는 파일이 생성되며, A1:D5 범위의 일반 데이터가 헤더 행 없이, 필터 드롭다운도 없이 포함됩니다. + +--- + +## 자주 묻는 질문 및 엣지 케이스 + +### 같은 워크시트에 여러 테이블이 필요하면 어떻게 하나요? + +새 `CellArea`와 새로운 `ListObject`로 **Step 3**을 반복하면 됩니다. 각 테이블은 자체 헤더와 필터 설정을 유지하므로 하나는 숨기고 다른 하나는 보이게 할 수 있습니다. + +### 헤더를 숨기기 전에 테이블 스타일(줄 무늬, 색상)을 적용할 수 있나요? + +Absolutely. The `ListObject` exposes a `TableStyleType` property. For example: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +스타일을 **헤더를 숨기기 전에** 적용할 수 있습니다; 시각적 서식은 그대로 유지됩니다. + +### 헤더는 유지하고 필터 화살표만 숨기고 싶다면? + +Set `ShowHeaders = true` (keep the row) and then clear the filter: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +이렇게 하면 열 레이블을 유지하면서 **테이블 필터 비활성화** 요구 사항을 충족할 수 있습니다. + +### 이것은 .xlsx 파일에만 적용되나요? + +Aspose.Cells는 `Save`에 전달한 파일 확장자를 기반으로 형식을 자동으로 감지합니다. `.xls`, `.csv`, 혹은 `.pdf`와 같은 다른 확장자로도 출력할 수 있습니다. + +--- + +## 결론 + +우리는 이제 Aspose.Cells를 사용하여 C#에서 **Excel 테이블 만들기**에 필요한 모든 것을, **테이블 범위 정의**부터 **테이블 헤더 숨기기** 및 **테이블 필터 비활성화**까지 다루었습니다. 코드는 짧고 명확하며 실제 프로젝트에 바로 사용할 수 있습니다. + +다음으로는 동적 데이터로 **테이블 추가**하기, 사용자 정의 스타일 적용하기, 혹은 동일 워크북을 PDF로 내보내기 등을 탐색해 볼 수 있습니다. 이러한 주제들은 방금 익힌 기반 위에 구축되므로, 자유롭게 실험하고 코드를 자신의 프로젝트에 맞게 적용해 보세요. + +특별히 공유하고 싶은 팁이 있나요? 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/converting-excel-files-to-other-formats/_index.md b/cells/polish/net/converting-excel-files-to-other-formats/_index.md index 83879f17dd..74ad6c9ca8 100644 --- a/cells/polish/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/polish/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,12 @@ Dowiedz się, jak konwertować pliki Excel do PDF/A-1a w celach archiwalnych, u Dowiedz się, jak programowo przekonwertować JSON na CSV w .NET przy użyciu Aspose.Cells. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby zapewnić bezproblemową transformację danych. ### [Konwersja pliku Excel do formatu PPTX programowo w środowisku .NET](./converting-excel-file-to-pptx/) Dowiedz się, jak programowo przekonwertować plik Excela na prezentację PowerPoint (PPTX) przy użyciu Aspose.Cells dla .NET, korzystając z tego przewodnika krok po kroku. + +### [Eksportuj Excel do PowerPoint – Kompletny przewodnik C#](./export-excel-to-powerpoint-complete-c-guide/) +Pełny przewodnik C# pokazujący, jak programowo eksportować arkusz Excel do prezentacji PowerPoint przy użyciu Aspose.Cells. + +### [Ustaw obszar drukowania w Excelu i wyeksportuj do PowerPoint – przewodnik krok po kroku](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Dowiedz się, jak ustawić obszar drukowania w Excelu i wyeksportować arkusz do prezentacji PowerPoint przy użyciu Aspose.Cells dla .NET. ### [Określanie HTML CrossType w wyjściowym HTML programowo w .NET](./specifying-html-crosstype-in-output-html/) Dowiedz się, jak określić HTML CrossType w Aspose.Cells dla .NET. Postępuj zgodnie z naszym samouczkiem krok po kroku, aby precyzyjnie przekonwertować pliki Excel na HTML. ### [Odczyt arkusza kalkulacyjnego liczb programowo w .NET](./reading-numbers-spreadsheet/) diff --git a/cells/polish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/polish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..23f9937e1b --- /dev/null +++ b/cells/polish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Dowiedz się, jak wyeksportować Excel do PowerPoint, ustawić obszar wydruku + w Excelu i zapisać plik Excel jako PPTX z edytowalnymi wykresami oraz obiektami + OLE w kilku prostych krokach. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: pl +og_description: Szybko eksportuj Excel do PowerPointa. Ten tutorial pokazuje, jak + ustawić obszar wydruku w Excelu i zapisać plik Excel jako PPTX z edytowalnymi wykresami + oraz obiektami OLE. +og_title: Eksportuj Excel do PowerPoint – Kompletny przewodnik C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Eksportuj Excel do PowerPoint – Kompletny przewodnik C# +url: /pl/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Export Excel to PowerPoint – Complete C# Guide + +Potrzebujesz **export Excel to PowerPoint**? Jesteś we właściwym miejscu. Niezależnie od tego, czy tworzysz cotygodniową prezentację sprzedażową, czy automatyzujesz pipeline raportowy, przekształcenie arkusza Excel w zestaw slajdów PowerPoint może zaoszczędzić Ci godziny ręcznego kopiowania‑i‑wklejania. + +W tym tutorialu przeprowadzimy praktyczny przykład, który nie tylko **export excel to powerpoint**, ale także pokaże, jak **set print area Excel** i **save excel as pptx**, aby powstałe slajdy zachowały wykresy i obiekty OLE w pełni edytowalne. Po zakończeniu będziesz mieć gotowy do uruchomienia program C#, który generuje profesjonalnie wyglądający plik `.pptx` bez żadnej ręcznej ingerencji. + +## What You’ll Need + +- **.NET 6+** (dowolny nowoczesny runtime .NET działa; kod używa składni C# 10) +- **Aspose.Cells for .NET** – biblioteka napędzająca eksport. Możesz ją pobrać z NuGet (`Install-Package Aspose.Cells`). +- Plik Excel zawierający przynajmniej jeden wykres i/lub obiekt OLE (w kodzie używany jest przykładowy plik `ChartAndOle.xlsx`). +- Ulubione IDE (Visual Studio, Rider lub VS Code – cokolwiek wolisz). + +To wszystko. Bez COM interop, bez wymaganego zainstalowanego Office. + +> **Why bother with a library?** +> Wbudowany Office Interop jest kruchy, wymaga Office na serwerze i często generuje obrazy rastrowe, gdy naprawdę potrzebujesz wektorowych, edytowalnych kształtów. Aspose.Cells zajmuje się ciężką pracą i utrzymuje wszystko edytowalne w PowerPoint. + +--- + +## Step 1: Load the Excel Workbook + +Najpierw wczytujemy plik źródłowy do pamięci. Klasa `Workbook` abstrahuje cały plik Excel, dając dostęp do arkuszy, wykresów i obiektów OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Why this matters:** Ładowanie skoroszytu jest podstawą. Jeśli ścieżka jest nieprawidłowa lub plik jest uszkodzony, reszta pipeline nie zostanie uruchomiona. Blok `try…catch` zapewnia przyjazny komunikat o błędzie zamiast awarii. + +--- + +## Step 2: Set the Print Area in Excel + +Przed eksportem zazwyczaj chcesz ograniczyć wynik do określonego zakresu. Tu wkracza **set print area excel**. Definiując obszar wydruku, informujesz Aspose.Cells, które komórki (i powiązane obiekty) mają pojawić się na slajdzie. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Pro tip:** Jeśli masz wiele arkuszy, powtórz przypisanie `PrintArea` dla każdego, który planujesz wyeksportować. Nieustawiony obszar wydruku spowoduje eksport całego arkusza, co może zwiększyć rozmiar pliku PowerPoint. + +--- + +## Step 3: Configure Export Options – Keep Charts & OLE Editable + +Aspose.Cells oferuje rozbudowany obiekt `ImageOrPrintOptions`. Przełączając `ExportChartObjects` i `ExportOleObjects` zachowujemy wektorowy charakter wykresów oraz możliwość edycji obiektów OLE (np. osadzonych dokumentów Word czy PDF). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**What happens under the hood?** +Gdy `ExportChartObjects` jest `true`, Aspose konwertuje wykres na natywny kształt wykresu PowerPoint, zachowując serie, osie i formatowanie. Przy włączonym `ExportOleObjects` osadzone obiekty są wstawiane jako ramki OLE, więc podwójne kliknięcie w PowerPoint otwiera oryginalną aplikację (Word, Excel itp.) w celu edycji. + +--- + +## Step 4: Save the Worksheet as an Editable PowerPoint File + +Teraz łączymy wszystko. Metoda `Save` zapisuje plik `.pptx` używając skonfigurowanych opcji. Efektem jest zestaw slajdów, w którym każdy arkusz staje się slajdem (lub serią slajdów, jeśli obszar wydruku obejmuje wiele stron). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Expected Result + +- **File location:** `C:\MyProjects\EditableChartOle.pptx` +- **Content:** + - Slajd pokazujący zakres `A1:H30` dokładnie tak, jak wygląda w Excelu. + - Wszystkie wykresy są obiektami wykresów PowerPoint — kliknij słupek i edytuj dane. + - Obiekty OLE (np. osadzony dokument Word) mogą być otwierane i edytowane bezpośrednio ze slajdu. + +Jeśli otworzysz plik PPTX w PowerPoint, zobaczysz czysty slajd z w pełni edytowalnymi komponentami — bez rastrowych zrzutów ekranu. + +--- + +## Edge Cases & Variations + +### Multiple Worksheets → Multiple Slides +Jeśli chcesz, aby każdy arkusz stał się własnym slajdem, po prostu iteruj po `workbook.Worksheets` i wywołuj `Save` z `SheetToImageOptions` skierowanym na konkretny indeks arkusza. Aspose automatycznie wygeneruje nowy slajd dla każdej iteracji. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Large Ranges & Performance +Eksportowanie ogromnego obszaru wydruku (np. `A1:Z1000`) może zwiększyć zużycie pamięci. Aby to złagodzić, rozważ: +- Podzielenie zakresu na mniejsze fragmenty i eksportowanie ich jako oddzielne slajdy. +- Użycie `WorkbookSettings` do zwiększenia `MemorySetting`, jeśli napotkasz `OutOfMemoryException`. + +### Compatibility Concerns +Wygenerowany PPTX działa w PowerPoint 2016 i nowszych. Starsze wersje mogą otworzyć plik, ale mogą utracić niektóre zaawansowane funkcje wykresów. Zawsze testuj na docelowej wersji Office, jeśli zamierzasz szeroko dystrybuować prezentację. + +--- + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tip:** Zamień ścieżki zakodowane na sztywno na wartości konfiguracyjne lub argumenty wiersza poleceń, aby narzędzie było bardziej elastyczne. + +--- + +## Frequently Asked Questions + +**Q: Can I export only a chart without the surrounding cells?** +A: Tak. Użyj samego `ExportChartObjects` i ustaw obszar wydruku na zakres obejmujący wykres. Wykres pojawi się wyśrodkowany na slajdzie. + +**Q: What if my workbook contains macros?** +A: Aspose.Cells ignoruje makra VBA podczas eksportu. Jeśli potrzebujesz funkcjonalności makr w PowerPoint, będziesz musiał odtworzyć je przy użyciu VBA PowerPoint lub dodatków. + +**Q: Does this work on Linux/macOS?** +A: Absolutnie. Aspose.Cells jest czystą biblioteką .NET; pod warunkiem posiadania środowiska uruchomieniowego .NET kod działa wieloplatformowo. + +--- + +## Conclusion + +Właśnie nauczyłeś się, jak **export Excel to PowerPoint**, jednocześnie precyzyjnie **set print area excel** i **save excel as pptx** z w pełni edytowalnymi wykresami i obiektami OLE. Kluczowe kroki to: załadowanie skoroszytu, określenie obszaru wydruku, skonfigurowanie `ImageOrPrintOptions` i ostateczne zapisanie pliku PPTX. + +Od tego momentu możesz: +- Eksportować wiele arkuszy do jednej prezentacji. +- Dodawać niestandardowe tytuły slajdów lub notatki programowo. +- Konwertować PPTX do PDF w celu dystrybucji (użyj `SaveFormat.Pdf`). + +Wypróbuj kod, dostosuj obszar wydruku i zobacz, jak Twoje dane z Excela magicznie pojawiają się w PowerPoint — bez ręcznego kopiowania‑i‑wklejania. Jeśli napotkasz problemy, sprawdź dokumentację Aspose.Cells lub zostaw komentarz poniżej. Happy coding! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/polish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..60b79a4acf --- /dev/null +++ b/cells/polish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-22 +description: Ustaw obszar wydruku w Excelu i konwertuj Excel na PowerPoint z edytowalnymi + kształtami. Dowiedz się, jak powielać wiersz tytułowy, tworzyć PowerPoint z Excela + oraz eksportować Excel do pliku pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: pl +og_description: Ustaw obszar wydruku w Excelu i przekształć go w slajd PowerPointa + z edytowalnymi kształtami. Skorzystaj z tego pełnego przewodnika, aby powielić wiersz + tytułowy i wyeksportować Excel do pliku pptx. +og_title: Ustaw obszar drukowania w Excelu – samouczek eksportu do PowerPointa +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Ustaw obszar drukowania w Excelu i wyeksportuj do PowerPoint – przewodnik krok + po kroku +url: /pl/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ustaw obszar wydruku w Excelu i wyeksportuj do PowerPoint – Kompletny samouczek programistyczny + +Czy kiedykolwiek potrzebowałeś **set print area** w arkuszu Excel i potem przekształcić ten fragment w slajd PowerPoint? Nie jesteś jedyny. W wielu przepływach raportowania te same dane, które ładnie drukują się, muszą także pojawić się w prezentacji, często z pierwszym wierszem powtarzanym jako tytuł. Dobra wiadomość? Kilkoma wierszami C# możesz **convert excel to powerpoint**, zachować wszystkie pola tekstowe edytowalne i nawet **repeat title row** automatycznie. + +W tym przewodniku przejdziemy przez wszystko, co musisz wiedzieć: od konfigurowania obszaru wydruku po tworzenie pliku PPTX, który możesz edytować bezpośrednio w PowerPoint. Po zakończeniu będziesz w stanie **create powerpoint from excel**, wyeksportować wynik jako **export excel to pptx** i ponownie używać tego samego kodu w dowolnym projekcie .NET. Bez magii, tylko jasne kroki i pełny, działający przykład. + +## Czego będziesz potrzebować + +- **.NET 6.0** lub nowszy (API działa również z .NET Framework) +- **Aspose.Cells for .NET** (biblioteka dostarczająca `Workbook`, `ImageOrPrintOptions` itd.) +- Podstawowe IDE C# (Visual Studio, Rider lub VS Code z rozszerzeniem C#) +- Plik Excel (`input.xlsx`) zawierający dane, które chcesz wyeksportować + +To wszystko — żadnych dodatkowych pakietów NuGet poza Aspose.Cells. Jeśli jeszcze nie dodałeś biblioteki, uruchom: + +```bash +dotnet add package Aspose.Cells +``` + +Teraz jesteśmy gotowi do działania. + +## Krok 1: Załaduj skoroszyt – punkt wyjścia dla eksportu + +Pierwszą rzeczą, którą musisz zrobić, jest załadowanie skoroszytu, który zawiera arkusz, który chcesz przekształcić w slajd. Traktuj skoroszyt jako dokument źródłowy; bez niego nic innego nie ma znaczenia. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Dlaczego to ważne:** Załadowanie skoroszytu daje dostęp do kolekcji arkuszy, opcji ustawień strony oraz silnika eksportu. Jeśli pominiesz ten krok, nie będziesz w stanie ustawić **print area** ani powtórzyć żadnych wierszy. + +> **Pro tip:** Używaj ścieżki bezwzględnej podczas testów, a potem przełącz się na ścieżkę względną lub opartą na konfiguracji w środowisku produkcyjnym. + +## Krok 2: Skonfiguruj opcje eksportu – zachowaj edytowalne pola tekstowe i kształty + +Podczas eksportu do PowerPoint prawdopodobnie chcesz, aby otrzymany slajd był edytowalny. Aspose.Cells umożliwia kontrolowanie tego za pomocą `ImageOrPrintOptions`. Ustawienie `ExportTextBoxes` i `ExportShapeObjects` na `true` informuje bibliotekę, aby zachowała te obiekty jako natywne elementy PowerPoint, zamiast spłaszczać je do obrazu. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Dlaczego to ważne:** Jeśli kiedykolwiek potrzebowałeś **convert excel to powerpoint**, a potem ręcznie dostosować slajd, to ustawienie chroni Cię przed ponownym tworzeniem pól tekstowych od zera. Zapewnia również, że wszystkie kształty (np. strzałki lub wykresy) pozostają obiektami wektorowymi, które możesz skalować. + +## Krok 3: Ustaw obszar wydruku i powtórz wiersz tytułowy + +Teraz przechodzimy do sedna samouczka: **set print area** i sprawiamy, że pierwszy wiersz powtarza się na każdej drukowanej stronie (lub, w naszym przypadku, na wyeksportowanym slajdzie). Obszar wydruku informuje Excel, które komórki mają być brane pod uwagę przy drukowaniu — lub eksportowaniu w naszym scenariuszu. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Dlaczego to ważne:** Ograniczając eksport do `A1:G20` unikasz wciągania ogromnych pustych zakresów, co przyspiesza konwersję i utrzymuje slajd w porządku. Linia `PrintTitleRows` sprawia, że pierwszy wiersz zachowuje się jak nagłówek — dokładnie to, czego potrzebujesz, gdy **repeat title row** w prezentacji. + +> **Edge case:** Jeśli Twoje dane zaczynają się od wiersza 2, dostosuj zakres odpowiednio (np. `PrintTitleRows = "$2:$2"`). + +## Krok 4: Zapisz arkusz jako plik PowerPoint + +Na koniec zapisujemy slajd na dysku. Metoda `Save` przyjmuje docelową nazwę pliku oraz wcześniej skonfigurowane opcje. Wynikiem jest plik PPTX z edytowalnymi polami tekstowymi i kształtami, gotowy do otwarcia w PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Co zobaczysz:** Otwórz `SheetWithEditableShapes.pptx` w PowerPoint. Pierwszy wiersz pojawia się jako tytuł, wszystkie komórki od `A1:G20` są renderowane, a wszystkie kształty dodane w Excelu są nadal przenośne i edytowalne. Brak rastrowych obrazów — tylko natywne obiekty PowerPoint. + +## Pełny działający przykład – wszystkie kroki połączone + +Poniżej znajduje się kompletny, gotowy do skopiowania program. Uruchom go jako aplikację konsolową lub osadź w dowolnym większym rozwiązaniu. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Oczekiwany wynik:** Po uruchomieniu programu konsola wyświetli komunikat o sukcesie, a plik PPTX pojawi się w określonej lokalizacji. Otwarcie pliku pokaże pojedynczy slajd z wybranym zakresem, edytowalnymi polami tekstowymi i wszelkimi oryginalnymi kształtami. + +## Częste pytania i pułapki + +| Pytanie | Odpowiedź | +|----------|--------| +| **Czy to działa z wieloma arkuszami?** | Tak. Przejdź pętlą przez `workbook.Worksheets` i powtórz te same kroki dla każdego arkusza, zmieniając nazwę pliku wyjściowego przy każdym przebiegu. | +| **Co zrobić, jeśli potrzebuję wyeksportować więcej niż jeden slajd?** | Wywołaj `workbook.Save` wielokrotnie z różnymi obiektami `ImageOrPrintOptions`, każdy skonfigurowany z innym `PageSetup`, jeśli to konieczne. | +| **Czy mogę zmienić rozmiar slajdu?** | Użyj `exportOptions.ImageFormat`, aby ustawić DPI, lub dostosuj `sheet.PageSetup.PaperSize` przed zapisem. | +| **Czy Aspose.Cells jest darmowy?** | Oferuje darmową wersję ewaluacyjną z znakami wodnymi. W produkcji wymagana jest licencja. | +| **Co z formułami Excel?** | Eksportowane wartości to **obliczone wyniki** w momencie eksportu. Jeśli potrzebujesz żywych formuł w PowerPoint, będziesz musiał zastosować inne podejście. | + +## Wskazówki dla płynnego przepływu pracy + +- **Pro tip:** Ustaw `Workbook.Settings.CalcMode = CalculationModeType.Automatic` przed eksportem, aby zapewnić, że wszystkie formuły są aktualne. +- **Watch out for:** Bardzo duże zakresy mogą powodować obciążenie pamięci. Przytnij obszar wydruku do najmniejszego niezbędnego zakresu. +- **Performance tip:** Ponownie używaj jednej instancji `ImageOrPrintOptions`, jeśli eksportujesz wiele arkuszy; tworzenie nowej przy każdym wywołaniu zwiększa narzut. +- **Version note:** Powyższy kod jest przeznaczony dla Aspose.Cells 23.10 (wydany listopada 2023). Nowsze wersje zachowują to samo API, ale zawsze sprawdzaj notatki wydawnicze pod kątem zmian łamiących kompatybilność. + +## Zakończenie + +Omówiliśmy, jak **set print area** w arkuszu Excel, powtórzyć pierwszy wiersz jako tytuł oraz **export excel to pptx** zachowując edytowalne pola tekstowe i kształty. Krótko mówiąc, teraz znasz niezawodny sposób na **convert excel to powerpoint**, **repeat title row** i **create powerpoint from excel** przy użyciu kilku wierszy C#. + +Gotowy na kolejny krok? Spróbuj zautomatyzować konwersję wsadową dziesiątek raportów lub dodać własne układy slajdów przy użyciu PowerPoint SDK po eksporcie. Nie ma ograniczeń — eksperymentuj, łam zasady i ciesz się mocą programowego generowania dokumentów. + +Jeśli ten samouczek okazał się przydatny, udostępnij go, zostaw komentarz z własnymi modyfikacjami lub zapoznaj się z naszymi innymi przewodnikami o **export excel to pptx** i pokrewnych tematach automatyzacji. Szczęśliwego kodowania! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/csv-file-handling/_index.md b/cells/polish/net/csv-file-handling/_index.md index 8395602c07..43c02f0f8a 100644 --- a/cells/polish/net/csv-file-handling/_index.md +++ b/cells/polish/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Aby uzyskać dodatkowe informacje, zapoznaj się z naszymi szczegółowymi samou Dowiedz się, jak otwierać pliki CSV za pomocą Aspose.Cells dla .NET dzięki naszemu kompleksowemu przewodnikowi krok po kroku. Opanuj manipulację danymi. ### [Otwieranie plików CSV za pomocą preferowanego parsera](./csv-file-opening-csv-files-with-preferred-parser/) Dowiedz się, jak otwierać i analizować pliki CSV za pomocą niestandardowych parserów w Aspose.Cells dla .NET. Bezproblemowo obsługuj tekst i daty. Idealne dla programistów. +### [Zapisz skoroszyt jako CSV w C# – Eksportuj Excel do CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Dowiedz się, jak zapisać skoroszyt jako plik CSV w C# przy użyciu Aspose.Cells dla .NET. Szybki i prosty eksport danych z Excela. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/polish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..26b776a1f2 --- /dev/null +++ b/cells/polish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Szybko zapisz skoroszyt jako CSV w C#. Dowiedz się, jak wyeksportować + Excel do CSV, ustawić precyzję i przekonwertować xlsx na CSV przy użyciu Aspose.Cells + w kilku linijkach. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: pl +og_description: Szybko zapisz skoroszyt jako CSV w C#. Ten przewodnik pokazuje, jak + wyeksportować Excel do CSV, ustawić precyzję i konwertować xlsx na CSV przy użyciu + Aspose.Cells. +og_title: Zapisz skoroszyt jako CSV w C# – Eksportuj Excel do CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Zapisz skoroszyt jako CSV w C# – Eksportuj Excel do CSV +url: /pl/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz skoroszyt jako CSV w C# – Eksportuj Excel do CSV + +Czy kiedykolwiek potrzebowałeś **save workbook as CSV**, ale nie byłeś pewien, jak utrzymać liczby w porządku? Nie jesteś sam. W wielu scenariuszach pipeline'ów danych musimy **export Excel to CSV**, zachowując określoną liczbę cyfr znaczących, a biblioteka Aspose.Cells sprawia, że to pestka. + +W tym samouczku zobaczysz kompletny, gotowy do uruchomienia przykład, który **saves a workbook as CSV**, pokazuje *how to set precision* i nawet wyjaśnia *how to convert xlsx to CSV* dla projektów rzeczywistych. Bez niejasnych odniesień — tylko kod, który możesz skopiować, wkleić i uruchomić już dziś. + +## Czego się nauczysz + +- Dokładne kroki, aby **save workbook as CSV** z niestandardowym ustawieniem precyzji. +- Jak **export Excel to CSV** przy użyciu `CsvSaveOptions` i dlaczego właściwość `SignificantDigits` ma znaczenie. +- Różne warianty dla różnych potrzeb precyzji oraz typowe pułapki przy pracy z dużymi liczbami. +- Szybki przegląd konwersji pliku `.xlsx` do `.csv` bez utraty integralności danych. + +### Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również na .NET Framework 4.6+). +- Pakiet NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Podstawowa znajomość C# i operacji wejścia/wyjścia plików. + +Jeśli masz to wszystko, zanurzmy się. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Zapisz skoroszyt jako CSV – Przewodnik krok po kroku + +Poniżej znajduje się pełny program. Każda linia jest skomentowana, abyś mógł zobaczyć *dlaczego* dany fragment jest potrzebny, a nie tylko *co* robi. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Dlaczego używać `CsvSaveOptions.SignificantDigits`? + +Kiedy **how to set precision** dla eksportu CSV, naprawdę decydujesz, ile cyfr liczby zmiennoprzecinkowej przetrwa konwersję. Excel przechowuje liczby z precyzją do 15 cyfr, ale większość systemów downstream (bazy danych, pipeline'y analityczne) potrzebuje tylko kilku. Ustawiając `SignificantDigits = 4`, biblioteka zaokrągla `123.456789` do `123.5`, utrzymując plik kompaktowy i czytelny dla człowieka. + +> **Pro tip:** Jeśli potrzebujesz *dokładnych* wartości (np. danych finansowych), ustaw `SignificantDigits` na wyższą liczbę lub całkowicie go pomiń. Domyślna wartość to 15, co odzwierciedla wewnętrzną precyzję Excela. + +## Eksport Excel do CSV – Typowe warianty + +### Zmiana separatora + +Niektóre systemy oczekują średnika (`;`) zamiast przecinka. Możesz to dostosować w ten sposób: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Eksport konkretnego arkusza + +Jeśli chcesz wyeksportować tylko drugi arkusz, zamień opcjonalny blok na: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Następnie wywołaj `workbook.Save` jak wcześniej. Ta technika jest przydatna, gdy **convert xlsx to csv**, ale zależy Ci tylko na konkretnej zakładce. + +### Obsługa dużych zestawów danych + +Przy pracy z milionami wierszy rozważ strumieniowanie CSV zamiast ładowania całego skoroszytu do pamięci. Aspose.Cells oferuje właściwość `CsvSaveOptions` `ExportDataOnly`, która pomija informacje o stylach, zmniejszając obciążenie pamięci: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Jak wyeksportować CSV – Weryfikacja wyniku + +Po uruchomieniu programu otwórz `Numbers_4sd.csv` w edytorze tekstowym. Powinieneś zobaczyć coś takiego: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Zauważ, że liczby są ograniczone do czterech cyfr znaczących, dokładnie tak, jak prosiliśmy. Jeśli otworzysz plik w Excelu, wartości będą wyglądały identycznie, ponieważ Excel respektuje zaokrąglenie zastosowane podczas eksportu. + +## Przypadki brzegowe i rozwiązywanie problemów + +| Sytuacja | Co sprawdzić | Naprawa | +|-----------|---------------|-----| +| **File not found** | Zweryfikuj, że `sourcePath` wskazuje na istniejący plik `.xlsx`. | Użyj `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Upewnij się, że `SignificantDigits` jest ustawione przed wywołaniem `Save`. | Przenieś przypisanie `CsvSaveOptions` wcześniej lub podwójnie sprawdź wartość. | +| **Special characters appear as �** | Domyślne kodowanie CSV to UTF‑8 bez BOM. | Ustaw `csvOptions.Encoding = System.Text.Encoding.UTF8` lub `Encoding.Unicode`. | +| **Extra empty columns** | Niektóre arkusze mają niepotrzebne formatowanie poza używanym zakresem. | Wywołaj `worksheet.Cells.MaxDisplayRange`, aby przyciąć nieużywane kolumny przed eksportem. | + +## Jak ustawić precyzję dynamicznie + +Czasami wymagana precyzja nie jest znana w czasie kompilacji. Możesz odczytać ją z pliku konfiguracyjnego lub argumentu wiersza poleceń: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Teraz możesz uruchomić: + +``` +dotnet run -- 6 +``` + +i otrzymać CSV z sześcioma cyframi znaczącymi. Ta mała zmiana sprawia, że rozwiązanie jest elastyczne dla **how to export csv** w różnych środowiskach. + +## Podsumowanie pełnego działającego przykładu + +Łącząc wszystko razem, kompletny program (z opcjonalnymi modyfikacjami) wygląda tak: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Uruchom program, otwórz wygenerowany CSV i zobaczysz precyzję, o którą prosiłeś, co potwierdza, że pomyślnie **saved workbook as CSV**. + +## Zakończenie + +Masz teraz solidny, gotowy do produkcji przepis na **saving a workbook as CSV** w C#. Poradnik omówił *how to export Excel to CSV*, pokazał *how to set precision* za pomocą `CsvSaveOptions.SignificantDigits` oraz przedstawił kilka wariantów scenariuszy **convert xlsx to csv**. Dzięki pełnemu fragmentowi kodu możesz wstawić go do dowolnego projektu .NET i natychmiast rozpocząć eksport danych. + +**Co dalej?** + +- Eksperymentuj z różnymi separatorami (`;`, `\t`) przy eksportach TSV. +- Połącz to podejście z obserwatorem plików, aby automatycznie generować CSV przy każdej zmianie pliku Excel. +- Zbadaj `CsvLoadOptions` Aspose.Cells, jeśli kiedykolwiek będziesz potrzebował odczytać CSV z powrotem do skoroszytu. + +Śmiało dostosuj precyzję, dodaj własne nagłówki lub podłącz eksporter + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/document-properties/_index.md b/cells/polish/net/document-properties/_index.md index 38850c6c58..63112c7e91 100644 --- a/cells/polish/net/document-properties/_index.md +++ b/cells/polish/net/document-properties/_index.md @@ -35,6 +35,8 @@ Dowiedz się, jak uzyskać dostęp do właściwości dokumentu w programie Excel Dowiedz się, jak uzyskać dostęp do właściwości dokumentu w programie Excel za pomocą Aspose.Cells dla .NET dzięki naszemu przewodnikowi krok po kroku. Zarządzaj arkuszami kalkulacyjnymi wydajnie. ### [Dodawanie właściwości dokumentu w .NET](./adding-document-properties/) Dowiedz się, jak dodawać właściwości dokumentu w programie Excel za pomocą Aspose.Cells dla platformy .NET, korzystając ze szczegółowego przewodnika krok po kroku. +### [Utwórz skoroszyt Excel – Dodaj własne właściwości i zapisz jako XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Dowiedz się, jak utworzyć nowy skoroszyt Excel, dodać własne właściwości i zapisać go w formacie XLSB przy użyciu Aspose.Cells dla .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/polish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..f8784cc58f --- /dev/null +++ b/cells/polish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Utwórz skoroszyt Excel, dodaj własne właściwości, ustaw nazwę arkusza + i zapisz jako plik binarny XLSB przy użyciu C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: pl +og_description: Utwórz skoroszyt Excel, dodaj własne właściwości, ustaw nazwę arkusza + i zapisz jako plik binarny XLSB przy użyciu C#. +og_title: Utwórz skoroszyt Excel – Dodaj własne właściwości i zapisz jako XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Utwórz skoroszyt Excel – Dodaj własne właściwości i zapisz jako XLSB +url: /pl/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz skoroszyt Excel – Dodaj własne właściwości i zapisz jako XLSB + +Czy kiedykolwiek potrzebowałeś **utworzyć skoroszyt Excel** programowo, ale także zachować pewne metadane? Być może tworzysz silnik raportujący, który oznacza każdy plik identyfikatorem raportu, nazwą autora lub numerem wersji. W takim wypadku nauka, jak **dodać własne właściwości** podczas **ustawiania nazwy arkusza** i w końcu **zapisać jako XLSB**, zaoszczędzi Ci wiele ręcznego przetwarzania. + +W tym samouczku przeprowadzimy Cię przez kompletny, działający przykład, który dokładnie pokazuje, jak **zapisować binarny plik Excel** przy użyciu C#. Zobaczysz, dlaczego format XLSB jest właściwym wyborem do przenoszenia własnych właściwości, jak unikać najczęstszych pułapek oraz co zrobić, gdy potrzebujesz obsługi starszych wersji Excela. + +--- + +## Czego będziesz potrzebować + +- **.NET 6+** (lub .NET Framework 4.6+). Kod działa na każdym nowoczesnym środowisku uruchomieniowym. +- **Aspose.Cells for .NET** (bezpłatna wersja próbna lub licencjonowana). Dostarcza klasy `Workbook`, `Worksheet` i `CustomProperties` używane poniżej. +- IDE, z którym czujesz się komfortowo – Visual Studio, Rider lub nawet VS Code będą odpowiednie. +- Uprawnienia do zapisu w folderze, w którym zostanie zapisany wygenerowany plik. + +Nie są wymagane żadne inne biblioteki firm trzecich. + +## Krok 1: Zainstaluj Aspose.Cells + +Na początek dodaj pakiet NuGet Aspose.Cells do swojego projektu: + +```bash +dotnet add package Aspose.Cells +``` + +> **Wskazówka:** Jeśli pracujesz na serwerze CI, przechowuj klucz licencyjny w zmiennej środowiskowej i wczytuj go w czasie działania – zapobiega to pojawieniu się znaku wodnego „evaluation” w Twoim wyniku. + +## Krok 2: Utwórz skoroszyt Excel – przegląd + +Pierwszym rzeczywistym działaniem jest **utworzenie skoroszytu Excel**. Ten obiekt reprezentuje cały plik w pamięci i daje dostęp do arkuszy, stylów oraz własnych właściwości. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Dlaczego tworzyć nowy `Workbook` zamiast wczytywać szablon? Pusty skoroszyt zapewnia brak ukrytych stylów czy pozostawionych własnych właściwości, co jest szczególnie ważne, gdy zamierzasz **zapisować binarny plik Excel** dla systemów downstream oczekujących czystego stanu. + +## Krok 3: Ustaw nazwę arkusza (i dlaczego ma to znaczenie) + +Arkusze w Excelu domyślnie noszą nazwy „Sheet1”, „Sheet2” itd. Nadanie arkuszowi znaczącej nazwy ułatwia przetwarzanie downstream — takim jak Power Query czy makra VBA — i sprawia, że jest bardziej czytelny. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Jeśli spróbujesz przypisać zduplikowaną nazwę, Aspose.Cells zgłosi `ArgumentException`. Dla bezpieczeństwa możesz sprawdzić `Worksheets.Exists("Data")` przed zmianą nazwy. + +## Krok 4: Dodaj własne właściwości + +Własne właściwości są przechowywane w wewnętrznym XML skoroszytu i podróżują wraz z plikiem niezależnie od formatu. Są idealne do osadzania takich elementów jak `ReportId` czy `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Dlaczego używać własnych właściwości?** +> • Są dostępne w panelu Excela „Plik → Informacje → Właściwości”. +> • Kod, który konsumuje skoroszyt, może je odczytać bez skanowania zawartości komórek. +> • Przetrwają konwersje formatów (XLSX ↔ XLSB), ponieważ są częścią metadanych pliku. + +Możesz także przechowywać daty, wartości logiczne lub nawet binarne blob’y, ale zachowaj mały rozmiar danych — Excel nie jest bazą danych. + +## Krok 5: Zapisz jako XLSB (zapis binarnego pliku Excel) + +Format XLSB przechowuje dane w strukturze binarnej, co sprawia, że plik jest mniejszy i szybciej się otwiera. Co ważniejsze w tym samouczku, **własne właściwości są wbudowane w strumień binarny**, co zapewnia ich przenoszenie wraz z plikiem. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Oczekiwany wynik + +Po uruchomieniu programu znajdziesz plik `WithCustomProps.xlsb` na pulpicie. Otwórz go w Excelu, przejdź do **Plik → Informacje → Właściwości** i zobaczysz `ReportId` oraz `GeneratedBy` wymienione w sekcji *Własne*. + +## Krok 6: Przypadki brzegowe i typowe pytania + +### Co zrobić, gdy docelowy folder jest tylko do odczytu? + +Umieść wywołanie `Save` w bloku `try/catch` i przejdź do lokalizacji zapisywalnej przez użytkownika, takiej jak `%TEMP%`. Zapobiega to awarii aplikacji w przypadku błędów uprawnień. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Czy mogę **zapisować jako XLSX** i nadal zachować własne właściwości? + +Tak — wystarczy zmienić `SaveFormat.Xlsb` na `SaveFormat.Xlsx`. Właściwości są przechowywane w tej samej części XML, więc przetrwają zmianę formatu. Jednak pliki XLSX są większe, ponieważ są spakowanym XML, podczas gdy XLSB zapewnia lepszą wydajność przy dużych zestawach danych. + +### Jak odczytać własne właściwości później? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Ten fragment wypisuje każdą własną właściwość, co ułatwia usługom downstream weryfikację pochodzenia pliku. + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do nowego projektu konsolowego. Nie brakuje żadnych elementów — wszystko od instrukcji `using` po końcowe `Console.WriteLine` jest zawarte. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Uruchom program, otwórz powstały plik i zweryfikuj własne właściwości. To cały proces **utworzenia skoroszytu Excel**, **dodania własnych właściwości**, **ustawienia nazwy arkusza** i **zapisania jako xlsb** w jednym spójnym przebiegu. + +## Zakończenie + +Teraz wiesz dokładnie, jak **utworzyć skoroszyt Excel**, nadać jego arkuszowi wyraźną **nazwę arkusza**, osadzić przydatne metadane za pomocą **dodania własnych właściwości**, a na koniec **zapisać jako XLSB**, aby uzyskać kompaktowy, binarny plik Excel. Ten przepływ pracy jest niezawodny, działa na różnych wersjach .NET i dobrze się skalowuje, niezależnie od tego, czy generujesz jeden raport, czy tysiąc. + +Co dalej? Spróbuj dodać tabelę danych do arkusza „Data”, poeksperymentuj z różnymi typami właściwości (daty, wartości logiczne) lub zmień wyjście na **zapis jako xlsb** dla ogromnych zestawów danych. Możesz także zbadać ochronę skoroszytu hasłem — Aspose.Cells umożliwia to w jednej linii kodu. + +Śmiało zostaw komentarz, jeśli napotkasz problemy, lub podziel się, jak rozbudowałeś ten wzorzec w swoich projektach. Szczęśliwego kodowania! + +--- + +![Zrzut ekranu tworzenia skoroszytu Excel](image.png){alt="Utwórz skoroszyt Excel z własnymi właściwościami"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/excel-advanced-named-ranges/_index.md b/cells/polish/net/excel-advanced-named-ranges/_index.md index b3a02da85d..055c778b09 100644 --- a/cells/polish/net/excel-advanced-named-ranges/_index.md +++ b/cells/polish/net/excel-advanced-named-ranges/_index.md @@ -29,13 +29,15 @@ Rozważ to: masz raport sprzedaży z różnymi regionami oznaczonymi nazwanymi z Następna jest jedna z najbardziej atrakcyjnych wizualnie, a jednocześnie praktycznych operacji — scalanie komórek w nazwanym zakresie. Chcesz, aby Twoje arkusze kalkulacyjne były bardziej zorganizowane? Scalanie komórek może pomóc Ci tworzyć nagłówki obejmujące wiele kolumn lub wierszy, nadając raportowi czysty, profesjonalny wygląd. Używając Aspose.Cells dla .NET, scalanie komórek nie mogłoby być prostsze. -Piękno tej funkcjonalności tkwi w łatwości użytkowania. Komórki można scalać programowo, co oznacza, że formatowanie można zautomatyzować. Wyobraź sobie tworzenie cotygodniowych raportów, w których nagłówek jest automatycznie scalany za każdym razem. Dzięki Aspose to zadanie wymaga tylko kilku kliknięć i linijek kodu. Ciekawi Cię, jak to zrobić? Przejdź do naszego przewodnika na temat [Łączenie komórek w nazwanym zakresie](./merge-cells-in-named-range/). +Piękno tej funkcjonalności tkwi w łatwości użytkowania. Komórki można scalać programowo, co oznacza, że formatowanie można zautomatyzować. Wyobraź sobie tworzenie cotygodniowych raportów, w których nagłówek jest automatycznie scalony za każdym razem. Dzięki Aspose to zadanie wymaga tylko kilku kliknięć i linijek kodu. Ciekawi Cię, jak to zrobić? Przejdź do naszego przewodnika na temat [Łączenie komórek w nazwanym zakresie](./merge-cells-in-named-range/). ## Zaawansowane operacje na zakresach nazwanych w samouczkach programu Excel ### [Identyfikuj komórki w nazwanym zakresie w programie Excel](./identify-cells-in-named-range/) Bez trudu zidentyfikujesz komórki w nazwanym zakresie w programie Excel, korzystając z Aspose.Cells dla .NET dzięki temu kompleksowemu samouczkowi krok po kroku. ### [Scalanie komórek w nazwanym zakresie w programie Excel](./merge-cells-in-named-range/) Dowiedz się, jak scalać komórki w nazwanym zakresie za pomocą Aspose.Cells dla .NET w tym samouczku krok po kroku. Odkryj, jak formatować, stylizować i automatyzować raporty programu Excel. +### [Utworzenie skoroszytu Excel – Przewodnik krok po kroku po dodawaniu tabel i reguł nazewnictwa](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Dowiedz się, jak utworzyć skoroszyt Excel, dodać tabele i zdefiniować reguły nazewnictwa przy użyciu Aspose.Cells dla .NET w tym samouczku krok po kroku. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/polish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..3640b46709 --- /dev/null +++ b/cells/polish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Utwórz skoroszyt Excela z tabelą, poznaj zasady nazewnictwa tabel w Excelu, + unikaj błędu zakresu nazw i poprawnie ustaw nazwę tabeli w C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: pl +og_description: Utwórz skoroszyt Excel w C# i opanuj zasady nazewnictwa tabel w Excelu. + Dowiedz się, jak dodać arkusz tabeli, ustawić nazwę tabeli Excel oraz naprawić błędy + zakresów nazwanych. +og_title: Utwórz skoroszyt Excel – Kompletny przewodnik po tabelach i nazewnictwie + w C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Utwórz skoroszyt Excel – Przewodnik krok po kroku po dodawaniu tabel i zasadach + nazewnictwa +url: /pl/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz skoroszyt Excel – Kompletny przewodnik C# po tabelach i nazewnictwie + +Czy kiedykolwiek potrzebowałeś **create excel workbook** programowo i zastanawiałeś się, dlaczego nazwa twojej tabeli nagle koliduje z nazwanym zakresem? Nie jesteś sam. W wielu projektach automatyzacji w momencie, gdy próbujesz nadać tabeli przyjazny identyfikator, Excel wyrzuca *named range error*, który zatrzymuje cały proces. + +W tym samouczku przeprowadzimy Cię przez w pełni uruchamialny przykład, który **creates an Excel workbook**, **adds a table to a worksheet**, i wyjaśnia **excel table naming rules**, które chronią przed potknięciami. Po zakończeniu dokładnie będziesz wiedział, jak **add table worksheet**, **set excel table name**, oraz jak elegancko obsłużyć sporadyczne konflikty nazw. + +> **Pro tip:** Większość zamieszania wynika z faktu, że Excel traktuje nazwy tabel i nazwane zakresy na poziomie skoroszytu jako jedną przestrzeń nazw. Zrozumienie tej zasady od początku oszczędza godziny debugowania. + +## Czego będziesz potrzebować + +- **Aspose.Cells for .NET** (lub dowolna biblioteka udostępniająca klasy `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ lub .NET Framework 4.8 – kod działa w obu środowiskach. +- Podstawowa znajomość składni C# – nie są wymagane zaawansowane triki. + +Jeśli masz to wszystko, zanurzmy się. + +![Zrzut ekranu nowo utworzonego skoroszytu Excel z tabelą o nazwie SalesData](create_excel_workbook_example.png "przykład tworzenia skoroszytu Excel") + +## Krok 1: Utwórz skoroszyt Excel i uzyskaj dostęp do pierwszego arkusza + +Pierwszą rzeczą, którą robisz przy **create excel workbook**, jest utworzenie instancji klasy `Workbook` i pobranie referencji do arkusza, na którym będziesz pracować. W Aspose.Cells skoroszyt rozpoczyna się domyślnym arkuszem o nazwie „Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Dlaczego ten krok jest kluczowy? Bez obiektu skoroszytu nie masz czego podłączyć tabeli, a referencja `Worksheet` daje Ci płótno, na którym zostanie wykonana operacja **add table worksheet**. + +## Krok 2: Dodaj tabelę (ListObject) obejmującą określony zakres + +Następnie **add table worksheet**‑poziomowe dane. Metoda `ListObjects.Add` oczekuje ciągu określającego zakres oraz wartości logicznej wskazującej, czy pierwszy wiersz zawiera nagłówki. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Zwróć uwagę na wywołanie `salesTable.Name = "SalesData"`. To właśnie tutaj wchodzą w grę **excel table naming rules**: nazwa musi być unikalna w całym skoroszycie, nie tylko w arkuszu. Nie może również zawierać spacji ani znaków specjalnych oraz musi zaczynać się od litery lub podkreślenia. + +## Krok 3: Próba utworzenia nazwanej zakresu na poziomie skoroszytu o tym samym identyfikatorze + +Teraz celowo wywołujemy **named range error**, aby zobaczyć, co się dzieje, gdy wystąpi konflikt nazw. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Jeśli odkomentujesz tę linię, Aspose.Cells zgłosi `ArgumentException` informujący, że nazwa już istnieje. Komunikat błędu wygląda następująco: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Ten komunikat to **named range error**, o którym ostrzegaliśmy wcześniej. Informuje, że **excel table naming rules** traktują nazwy tabel i nazwane zakresy jako jedną przestrzeń nazw. + +## Krok 4: Eleganckie radzenie sobie z konfliktem nazw + +W rzeczywistym kodzie będziesz chciał przechwycić ten wyjątek i albo zmienić nazwę tabeli, albo wybrać inną nazwę zakresu. Oto schludny sposób, aby to zrobić: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Poprzez otoczenie wywołania w `try/catch` unikniesz poważnego awarii i zapewnisz użytkownikowi (lub wywołującemu kodowi) jasne wyjaśnienie — dokładnie taką wiedzę o **excel table naming rules**, która zapobiega przyszłym błędom. + +## Krok 5: Zapisz skoroszyt i zweryfikuj wynik + +Na koniec zapisz plik na dysku i otwórz go w Excelu, aby potwierdzić, że tabela i ewentualne nazwane zakresy są obecne. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Gdy otworzysz *SalesReport.xlsx*, zobaczysz: + +- Tabelę obejmującą **A1:C5** o nazwie **SalesData**. +- Jeśli zachowałeś alternatywny zakres, nazwany zakres na poziomie skoroszytu **SalesData_Range** wskazujący na **D1**. + +Brak awarii w czasie wykonywania, a konflikt nazw został rozwiązany. + +## Zrozumienie zasad nazewnictwa tabel Excel w szczegółach + +Rozłóżmy, dlaczego te zasady istnieją: + +| Zasada | Co to oznacza | Przykład | +|------|----------------|---------| +| **Unikalna w całym skoroszycie** | Żadne dwie tabele ani nazwane zakresy nie mogą mieć tego samego identyfikatora. | `Table1` vs `Table1` → konflikt | +| **Zaczyna się literą lub podkreśleniem** | Nazwy nie mogą zaczynać się od liczby. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Bez spacji i znaków specjalnych** | Używaj CamelCase lub podkreśleń. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Długość ≤ 255 znaków** | Praktycznie zawsze spełniona. | N/D | + +Pamiętanie o tych zasadach podczas **set excel table name** eliminuje przerażający *named range error*. + +## Częste warianty i przypadki brzegowe + +1. **Adding multiple tables** – Każda tabela musi mieć własną unikalną nazwę. +2. **Renaming an existing table** – Użyj `salesTable.Name = "NewName"` przed tworzeniem jakichkolwiek konfliktujących nazwanych zakresów. +3. **Using dynamic ranges** – Jeśli potrzebujesz zakresu, który się rozszerza, użyj odwołania strukturalnego takiego jak `=SalesData[Amount]` zamiast statycznego adresu. +4. **Cross‑sheet named ranges** – Nadal są częścią tej samej przestrzeni nazw, więc tabela na Sheet1 blokuje zakres o tej samej nazwie na Sheet2. + +## Pro Tips for Smooth Excel Automation + +- **Sprawdź istnienie przed dodaniem**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generuj bezpieczne nazwy programowo**: Dodaj GUID lub licznik inkrementalny (`SalesData_{Guid.NewGuid()}`), gdy nie jesteś pewien. +- **Użyj `ListObject.ShowHeaders = true`**, aby Twoje tabele były samodokumentujące. +- **Waliduj po zapisaniu**: Otwórz plik przy użyciu lekkiej biblioteki (np. EPPlus), aby upewnić się, że tabela została utworzona poprawnie. + +## Podsumowanie: Co omówiliśmy + +- Jak **create excel workbook** od podstaw przy użyciu Aspose.Cells. +- Dokładne **excel table naming rules**, które regulują identyfikatory tabel i nazwanych zakresów. +- Dlaczego pojawia się **named range error**, gdy ponownie używasz nazwy. +- Poprawny sposób na **add table worksheet** i **set excel table name** bez kolizji. +- Solidny wzorzec radzenia sobie z konfliktami nazw w elegancki sposób. + +## Co dalej? + +Teraz, gdy opanowałeś podstawy, rozważ dalsze eksplorowanie: + +- **Dynamic table growth** przy użyciu `ListObject.Resize`. +- **Applying styles** do tabel (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** zachowując struktury tabel. +- **Integrating with Office Open XML** dla jeszcze większej kontroli nad wewnętrzną strukturą skoroszytu. + +Śmiało eksperymentuj — zmieniaj zakres, dodawaj kolejne tabele lub baw się różnymi schematami nazewnictwa. Im więcej się bawisz, tym głębsze zrozumienie **excel table naming rules** nabierze. + +--- + +*​Szczęśliwego kodowania i niech Twoje skoroszyty nigdy nie kolidują!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/excel-custom-number-date-formatting/_index.md b/cells/polish/net/excel-custom-number-date-formatting/_index.md index 90165acefb..7c21173c70 100644 --- a/cells/polish/net/excel-custom-number-date-formatting/_index.md +++ b/cells/polish/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Ten samouczek wyposaży Cię w umiejętności importowania zestawów danych przy Dowiedz się, jak sprawdzić wartości komórek programu Excel pod kątem niestandardowych formatów liczbowych za pomocą Aspose.Cells dla platformy .NET, korzystając z tego samouczka krok po kroku. ### [Określ pola formuły podczas importowania danych do arkusza programu Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) W tym szczegółowym samouczku dowiesz się, jak importować dane do arkuszy Excela z określonymi polami formuły za pomocą Aspose.Cells for .NET. +### [Niestandardowy format liczby w Excelu w C# – kompletny przewodnik](./custom-number-format-excel-in-c-complete-guide/) +Poznaj pełny przewodnik po tworzeniu i stosowaniu niestandardowych formatów liczbowych w Excelu przy użyciu C# i Aspose.Cells. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/polish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..1e5dd9eb3d --- /dev/null +++ b/cells/polish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-22 +description: Samouczek niestandardowego formatu liczb w Excelu, pokazujący, jak zaimportować + tabelę danych do Excela, ustawić kolor tła kolumny, sformatować kolumnę jako walutę + i zapisać skoroszyt jako xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: pl +og_description: Samouczek Excel o niestandardowym formacie liczb, który krok po kroku + pokazuje, jak zaimportować DataTable, ustawić kolor tła kolumny, sformatować kolumnę + jako walutę i zapisać skoroszyt w formacie xlsx. +og_title: Niestandardowy format liczb w Excelu w C# – Przewodnik krok po kroku +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Niestandardowy format liczb w Excelu w C# – Kompletny przewodnik +url: /pl/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Niestandardowy format liczb w Excel – Pełny samouczek C# + +Zastanawiałeś się kiedyś, jak zastosować **custom number format excel** bezpośrednio z C#? Być może próbowałeś wyeksportować DataTable do arkusza kalkulacyjnego i zobaczyłeś tylko zwykłe liczby, bez kolorów i formatowania walutowego. To powszechny problem — szczególnie gdy potrzebny jest dopracowany raport dla interesariuszy. + +W tym przewodniku rozwiążemy ten problem razem: nauczysz się **import datatable to excel**, **set column background color**, **format column as currency**, a na koniec **save workbook as xlsx** z niestandardowym formatem liczb, który sprawi, że Twoje dane będą się wyróżniać. Bez niejasnych odniesień, tylko kompletny, gotowy do uruchomienia kod, który możesz skopiować i wkleić do swojego projektu. + +--- + +## Co zbudujesz + +Pod koniec tego samouczka będziesz mieć samodzielną aplikację konsolową C#, która: + +1. Pobiera `DataTable` (możesz zamienić szkielet na własne zapytanie). +2. Tworzy nowy skoroszyt Excel przy użyciu Aspose.Cells (lub dowolnej kompatybilnej biblioteki). +3. Stosuje niebieską, pogrubioną czcionkę w pierwszej kolumnie, jasno‑żółte tło w drugiej oraz format waluty (`$#,##0.00`) w trzeciej. +4. Zapisuje plik jako `DataTableWithStyleArray.xlsx` w wybranym folderze. + +Zobaczysz dokładnie, jak każda linia przyczynia się do ostatecznego pliku Excel, i omówimy, dlaczego te wybory mają znaczenie dla utrzymania i wydajności. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również z .NET Framework 4.7+). +- Aspose.Cells for .NET (free trial or licensed version). Install via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Podstawowa znajomość `DataTable` oraz aplikacji konsolowych C#. + +## Krok 1: Pobranie danych źródłowych jako DataTable + +Najpierw potrzebujemy danych do eksportu. W rzeczywistym scenariuszu prawdopodobnie wywołasz repozytorium lub uruchomisz zapytanie SQL. Dla ilustracji stworzymy prostą tabelę w pamięci. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Why this matters:** Użycie `DataTable` zapewnia tabelaryczne, świadome schematu źródło, które łatwo mapuje się na wiersze i kolumny Excela. Pozwala także ponownie wykorzystać tę samą logikę eksportu dla dowolnego zestawu danych bez przepisywania kodu. + +## Krok 2: Utworzenie nowego skoroszytu i pobranie pierwszego arkusza + +Teraz uruchamiamy skoroszyt Excel. Klasa `Workbook` reprezentuje cały plik; jej `Worksheets[0]` to domyślny arkusz, w którym umieścimy nasze dane. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro tip:** Jeśli potrzebujesz wielu arkuszy, po prostu wywołaj `workbook.Worksheets.Add("SheetName")` i powtórz kroki stylizacji dla każdego. + +## Krok 3: Definiowanie stylów kolumn – czcionka, tło i format liczbowy + +Stylizacja w Aspose.Cells odbywa się za pomocą obiektów `Style`. Zbudujemy tablicę, w której każdy element odpowiada kolumnie w DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Why a style array?** Przekazanie tablicy do `ImportDataTable` pozwala zastosować odrębny styl dla każdej kolumny w jednym wywołaniu, co jest zarówno zwięzłe, jak i wydajne. Gwarantuje to także, że formatowanie pozostaje zsynchronizowane z kolejnością danych. + +## Krok 4: Importowanie DataTable przy zastosowaniu stylów + +Oto serce operacji: wprowadzamy `DataTable` do arkusza, informujemy Aspose, aby uwzględnił wiersz nagłówka, i przekazujemy naszą tablicę `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **What happens under the hood?** Aspose iteruje po każdej kolumnie, zapisuje nagłówek, a następnie zapisuje wartości kolejnych wierszy. Podczas tego procesu stosuje odpowiedni `Style` z tablicy, dzięki czemu otrzymujesz niebieski nagłówek dla „Product”, żółtą kolumnę „Quantity” i ładnie sformatowaną kolumnę „Revenue”. + +## Krok 5: Zapisanie skoroszytu jako plik XLSX + +Na koniec zapisujemy skoroszyt na dysku. Metoda `Save` automatycznie wybiera format XLSX na podstawie rozszerzenia pliku. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tip:** Jeśli potrzebujesz strumieniować plik (np. dla API webowego), użyj `workbook.Save(stream, SaveFormat.Xlsx)` zamiast ścieżki do pliku. + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz wkleić do nowego projektu konsolowego. Kompiluje się i działa od razu, generując sformatowany plik Excel. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Oczekiwany wynik + +Po otwarciu `DataTableWithStyleArray.xlsx` zobaczysz: + +| **Product** (niebieski, pogrubiony) | **Quantity** (jasno‑żółty) | **Revenue** (waluta) | +|--------------------------------------|----------------------------|-----------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +**custom number format excel**, który określiłeś (`$#,##0.00`), zapewnia, że każda komórka przychodu wyświetla znak dolara, separator tysięcy i dwie miejsca po przecinku — dokładnie to, czego oczekują zespoły finansowe. + +## Najczęściej zadawane pytania i przypadki brzegowe + +### Czy mogę używać tego z inną biblioteką Excel? + +Oczywiście. Koncepcja — tworzenie stylu dla każdej kolumny i stosowanie go podczas importu — przekłada się na EPPlus, ClosedXML lub NPOI. Wywołania API różnią się, ale wzorzec pozostaje ten sam. + +### Co zrobić, gdy mój DataTable ma więcej kolumn niż stylów? + +Aspose zastosuje domyślny styl do każdej kolumny, która nie ma odpowiadającego wpisu w tablicy `columnStyles`. Aby uniknąć niespodzianek, dopasuj rozmiar tablicy do `dataTable.Columns.Count` lub generuj style dynamicznie w pętli. + +### Jak ustawić niestandardowy format liczbowy dla dat? + +Po prostu ustaw `style.Custom = "dd‑mm‑yyyy"` (lub dowolny prawidłowy ciąg formatu Excel). To samo podejście oparte na tablicy działa dla dat, procentów czy notacji naukowej. + +### Czy istnieje sposób na automatyczne dopasowanie szerokości kolumn po imporcie? + +Tak — wywołaj `worksheet.AutoFitColumns();` po imporcie. Przeprowadza szybkie obliczenie szerokości na podstawie zawartości komórek. + +### Co z dużymi zestawami danych (100 tys.+ wierszy)? + +`ImportDataTable` jest zoptymalizowany pod kątem operacji zbiorczych, ale możesz napotkać limity pamięci. W takim wypadku rozważ strumieniowe wprowadzanie wierszy ręcznie przy użyciu `Cells[i, j].PutValue(...)` i ponowne użycie jednego obiektu `Style`, aby zmniejszyć narzut. + +## Porady profesjonalne i typowe pułapki + +- **Unikaj twardego kodowania ścieżek** w kodzie produkcyjnym; używaj `Environment.GetFolderPath` lub ustawień konfiguracyjnych. +- **Zwolnij zasoby workbooka** jeśli działa w długotrwałej usłudze — otocz go blokiem `using`, aby zwolnić zasoby natywne. +- **Uważaj na separatory specyficzne dla kultury**. Niestandardowy format `$#,##0.00` wymusza kropkę jako separator dziesiętny niezależnie od ustawień systemu operacyjnego, co zazwyczaj jest pożądane w raportach finansowych. +- **Pamiętaj o odwołaniu do System.Drawing** (lub `System.Drawing.Common` w .NET Core) dla struktur kolorów używanych w stylizacji. +- **Testuj wynik na różnych wersjach Excela**; starsze wersje mogą nieco inaczej interpretować niektóre niestandardowe formaty. + +## Zakończenie + +Omówiliśmy wszystko, co potrzebne, aby **custom number format excel** pliki z C#: pobieranie danych z `DataTable`, **import datatable to excel**, zastosowanie **set column background color**, użycie **format column as currency**, i w końcu **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/excel-workbook/_index.md b/cells/polish/net/excel-workbook/_index.md index 5ffa80199a..042d4c52b1 100644 --- a/cells/polish/net/excel-workbook/_index.md +++ b/cells/polish/net/excel-workbook/_index.md @@ -45,7 +45,7 @@ Bezpieczeństwo jest niezbędne, szczególnie w przypadku współdzielonych skor ## Zwiększanie produktywności za pomocą wyrażeń regularnych -Czy jesteś fanem wyrażeń regularnych? Jeśli nie, możesz chcieć zostać jednym z nich! Wyrażenia regularne mogą znacznie usprawnić Twoje zadania, zwłaszcza podczas pracy z dużymi zestawami danych w programie Excel. Nasz samouczek na temat [Zamień wyrażenie regularne](./regex-replace/) uczy, jak wdrażać funkcje zamiany wyrażeń regularnych w arkuszach kalkulacyjnych, co pozwala zwiększyć produktywność i dokładność. +Czy jesteś fanem wyrażeń regularnych? Jeśli nie, możesz chcieć zostać jednym z nich! Wyrażenia regularne mogą znacznie usprawnić Twoje zadania, szczególnie podczas pracy z dużymi zestawami danych w programie Excel. Nasz samouczek na temat [Zamień wyrażenie regularne](./regex-replace/) uczy, jak wdrażać funkcje zamiany wyrażeń regularnych w arkuszach kalkulacyjnych, co pozwala zwiększyć produktywność i dokładność. ## Aktualizowanie elementów Power Query @@ -86,6 +86,7 @@ Więc dlaczego nie skorzystać z tej szansy na rozwinięcie swoich umiejętnośc | [Podgląd wydruku skoroszytu](./workbook-print-preview/) | Dowiedz się, jak tworzyć podglądy wydruku plików Excela przy użyciu Aspose.Cells dla .NET. Poznaj kroki kodowania w szczegółowym, łatwym do naśladowania samouczku. | | [Praca z właściwościami typu zawartości](./working-with-content-type-properties/) | Dowiedz się, jak używać Aspose.Cells dla .NET do pracy z właściwościami typu zawartości w celu ulepszonego zarządzania metadanymi programu Excel. Postępuj zgodnie z tym prostym przewodnikiem krok po kroku. | | [Wsparcie dla podpisu Xades](./xades-signature-support/) | Dowiedz się, jak dodawać podpisy Xades do plików Excela za pomocą Aspose.Cells dla .NET dzięki temu przewodnikowi krok po kroku. Zabezpiecz swoje dokumenty. | +| [Utwórz nowy skoroszyt C# – Przewodnik krok po kroku z formułami rozlewającymi się](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Dowiedz się, jak w C# utworzyć nowy skoroszyt z formułami rozlewającymi się, używając Aspose.Cells dla .NET. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/polish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..3a767a276c --- /dev/null +++ b/cells/polish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Szybko utwórz nowy skoroszyt w C# przy użyciu Aspose.Cells. Dowiedz się, + jak dodać formułę SEQUENCE z rozlewaniem, automatycznie przeliczać i obsługiwać + komórki zależne. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: pl +og_description: Utwórz nowy skoroszyt w C# przy użyciu Aspose.Cells. Ten samouczek + pokazuje, jak dodać formułę SEQUENCE z rozlewaniem, przeliczyć skoroszyt i zarządzać + zależnymi komórkami. +og_title: Utwórz nowy skoroszyt w C# – Kompletny przewodnik +tags: +- C# +- Excel automation +- Aspose.Cells +title: Utwórz nowy skoroszyt w C# – Przewodnik krok po kroku z formułami rozlewającymi + się +url: /pl/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz nowy skoroszyt C# – Kompletny przewodnik programistyczny + +Zastanawiałeś się kiedyś, jak **create new workbook C#** bez walki z COM interop? Nie jesteś sam. W wielu projektach trzeba w locie wygenerować plik Excel, wstawić dynamiczną formułę tablicową i mieć wszystko automatycznie odświeżane. + +W tym przewodniku pokażemy dokładnie to — przy użyciu nowoczesnej biblioteki **Aspose.Cells**, dodając rozlewającą się formułę `SEQUENCE`, modyfikując komórkę zależną i wymuszając przeliczenie, aby wyniki były aktualne. Po zakończeniu będziesz mieć samodzielny, gotowy do uruchomienia przykład, który możesz skopiować i wkleić do dowolnej aplikacji .NET. + +## Czego się nauczysz + +- Jak programowo **create new workbook C#**. +- Mechanikę **spilled array formula** i dlaczego jest przydatna. +- Użycie **Excel SEQUENCE function** z kodu C#. +- Wywoływanie **C# workbook calculation**, aby komórki zależne aktualizowały się natychmiast. +- Typowe pułapki (np. zapomnienie wywołania `Calculate`) i szybkie rozwiązania. + +Nie potrzebujesz zewnętrznej dokumentacji — wszystko, co potrzebne, znajduje się tutaj. + +## Wymagania wstępne + +- .NET 6+ (lub .NET Framework 4.7.2+) zainstalowany. +- Visual Studio 2022 lub dowolne IDE, które preferujesz. +- Pakiet NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Podstawowa znajomość składni C# (jeśli dopiero zaczynasz, kod jest obficie skomentowany). + +--- + +## Krok 1: Utwórz nowy skoroszyt w C# + +Ten nagłówek H2 zawiera **primary keyword** dokładnie tam, gdzie wymaga tego lista SEO. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Dlaczego to ważne:** +> Tworzenie instancji `Workbook` daje Ci reprezentację pliku Excel w pamięci. Bez COM, bez interopu, tylko czyste obiekty .NET, które możesz bezpiecznie manipulować. + +--- + +## Krok 2: Dodaj rozlewającą się formułę SEQUENCE + +**Spilled array formula** automatycznie rozciąga się na sąsiednie komórki, co jest idealne do generowania dynamicznych list. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Jak to działa:** +> Funkcja `SEQUENCE` (wprowadzona w Excel 365) tworzy pionową tablicę liczb. Ponieważ używamy formuły *spilling*, Excel (i Aspose.Cells) automatycznie wypełni zakres pod `A1`, bez konieczności pisania pętli. + +--- + +## Krok 3: Zmień komórkę zależną, aby zobaczyć auto‑odświeżanie + +Zmienimy `B1`, aby móc zaobserwować, jak skoroszyt przelicza rozlewającą się tablicę. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Wskazówka:** +> Jeśli później odwołujesz się do rozlewanego zakresu w innych formułach, zmiana dowolnej komórki wewnątrz spill spowoduje aktualizację tych formuł po wywołaniu `Calculate`. + +--- + +## Krok 4: Wymuś przeliczenie skoroszytu C# + +Bez wyraźnego wywołania Aspose.Cells nie przeliczy formuł automatycznie. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Co robi `Calculate`:** +> Przechodzi przez każdą komórkę z formułą, ocenia ją i zapisuje wynik z powrotem na arkusz. To jest sedno **C# workbook calculation** i zapewnia, że Twoja rozlewana tablica pozostaje zsynchronizowana z wszelkimi danymi zależnymi. + +### Oczekiwany wynik + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Otwórz `SpilledSequenceDemo.xlsx`, a zobaczysz liczby 1‑5 wypełniające `A1:A5`, podczas gdy `B1` zawiera wartość `10`. Zmień dowolną komórkę wewnątrz spill, uruchom ponownie `Calculate` i nowe wartości pojawią się natychmiast. + +--- + +## Zrozumienie funkcji Excel SEQUENCE w C# + +Jeśli zastanawiasz się, dlaczego `SEQUENCE` jest lepsza od ręcznej pętli, rozważ następujące kwestie: + +1. **Performance** – Silnik ocenia całą tablicę w jednym przebiegu. +2. **Readability** – Jedna linia kodu zastępuje dziesiątki wywołań `PutValue`. +3. **Dynamic sizing** – Możesz zamienić statyczną wartość `5` na odwołanie do innej komórki, co pozwala na regulację długości w czasie wykonywania. + +To klasyczny przykład **spilled array formula**, który upraszcza zadania generowania danych. + +--- + +## Typowe pułapki i wskazówki profesjonalne + +| Pułapka | Rozwiązanie | +|---------|-------------| +| Zapomnienie o `workbook.Calculate()` | Zawsze wywołuj ją po modyfikacji formuł; w przeciwnym razie arkusz pokaże stare, zbuforowane wartości. | +| Używanie starszej wersji Aspose.Cells | Zaktualizuj do najnowszego pakietu NuGet, aby uzyskać wsparcie dla dynamicznych funkcji tablicowych, takich jak `SEQUENCE`. | +| Zapisywanie przed przeliczeniem | Zapisz **po** wywołaniu `Calculate`, aby plik zawierał najnowsze wyniki. | +| Założenie, że spill nadpisze istniejące dane | Aspose.Cells respektuje istniejące dane poza zakresem spill; wyczyść obszar najpierw, jeśli potrzebujesz czystej płaszczyzny. | + +**Pro tip:** Jeśli potrzebujesz, aby długość sekwencji była konfigurowalna, przechowaj liczbę w komórce (np. `C1`) i użyj `=SEQUENCE(C1)` — silnik przeliczeniowy odczyta wartość w czasie wykonywania. + +--- + +## Rozszerzenie przykładu + +Teraz, gdy wiesz, jak **create new workbook C#**, możesz: + +- Dodać bardziej złożone formuły odwołujące się do rozlewanego zakresu (`=SUM(A1#)`, gdzie `#` oznacza spill). +- Eksportować do PDF za pomocą `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Wstawiać wykresy, które automatycznie dopasowują się do rozmiaru dynamicznej tablicy. + +Wszystko to opiera się na tej samej podstawie **C# workbook calculation**, którą właśnie omówiliśmy. + +--- + +## Zakończenie + +Przeszliśmy cały proces **create new workbook C#**, od utworzenia obiektu `Workbook`, przez wstawienie rozlewającej się formuły `SEQUENCE`, modyfikację komórki zależnej, aż po wymuszenie przeliczenia, aby wszystko było aktualne. Pełny fragment kodu powyżej jest gotowy do uruchomienia — wystarczy wkleić go do aplikacji konsolowej, dodać pakiet NuGet Aspose.Cells i w kilka sekund będziesz mieć działający plik Excel. + +Gotowy na kolejny krok? Spróbuj zamienić statyczną wartość `5` na odwołanie do komórki, poeksperymentuj z innymi dynamicznymi funkcjami tablicowymi, takimi jak `FILTER` czy `UNIQUE`, i odkryj, jak **Aspose.Cells C#** może zasilać pełnoprawne silniki raportowania. Powodzenia w kodowaniu! + +--- + +*Placeholder obrazu:* + +![Screenshot showing a freshly created workbook with spilled SEQUENCE formula – create new workbook C# example](/images/create-new-workbook-csharp.png) + +--- + +*Jeśli ten tutorial był dla Ciebie pomocny, rozważ nadanie gwiazdki repozytorium, podzielenie się nim z zespołem lub zostawienie komentarza poniżej. Twoja opinia napędza przyszłe poradniki!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/formulas-functions/_index.md b/cells/polish/net/formulas-functions/_index.md index e7f79db9b0..00f6a748ad 100644 --- a/cells/polish/net/formulas-functions/_index.md +++ b/cells/polish/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ Dowiedz się, jak określić język plików Excel za pomocą Aspose.Cells .NET. ### [Aktualizuj formuły programu Excel Power Query za pomocą Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Dowiedz się, jak programowo aktualizować formuły Power Query w skoroszytach programu Excel przy użyciu Aspose.Cells dla .NET. Zarządzanie głównym źródłem danych na potrzeby dynamicznego raportowania. +### [Jak używać wyrażeń lambda w C# z formułami Excela – kompletny przewodnik](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Poznaj, jak wykorzystać wyrażenia lambda w C# do dynamicznego generowania i obliczania formuł Excela przy użyciu Aspose.Cells. + ## Zrozumienie typów formuł programu Excel Formuły programu Excel występują w różnych formach, z których każda ma unikalne cechy, którymi może zarządzać Aspose.Cells: @@ -156,7 +159,7 @@ celu solidnej implementacji formuły: 1. **Obsługa błędów**: Implementacja obsługi błędów formuły za pomocą funkcji IFERROR lub podobnych 2. **Analiza zależności komórkowych**:Zrozum zależności formuł, aby uniknąć odwołań cyklicznych -3. **Audyt formuły**: Przed wdrożeniem sprawdź logikę formuły +3. **Audyt formuły**:Przed wdrożeniem sprawdź logikę formuły 4. **Dokumentacja**:Prowadź przejrzystą dokumentację złożonych struktur formuł Dzięki opanowaniu możliwości formuł w pakiecie Aspose.Cells for .NET możesz tworzyć w arkuszach kalkulacyjnych zaawansowane silniki obliczeniowe, które będą dostarczać dokładne, dynamiczne wyniki bez konieczności instalowania programu Excel. diff --git a/cells/polish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/polish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..3033294dda --- /dev/null +++ b/cells/polish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Jak używać wyrażeń lambda w C# do pracy z formułami Excela. Naucz się + zapisywać formułę do komórki, konwertować zakres na tablicę, wyświetlać tablicę + w konsoli oraz obliczać cotangens w Excelu. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: pl +og_description: Jak używać wyrażeń lambda w C# do manipulacji formułami Excela, konwertowania + zakresu na tablicę, zapisywania formuły w komórce, wyświetlania tablicy w konsoli + oraz obliczania cotangensa w Excelu. +og_title: Jak używać lambdy w C# z formułami Excela – krok po kroku +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Jak używać lambdy w C# z formułami Excela – Kompletny przewodnik +url: /pl/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak używać Lambda w C# z formułami Excel – Kompletny przewodnik + +Zastanawiałeś się kiedyś **jak używać lambda**, gdy automatyzujesz Excel z C#? Nie jesteś sam. Wielu programistów napotyka trudności, gdy muszą połączyć moc nowych funkcji dynamicznych tablic Excela z możliwościami `LAMBDA` w C#. Dobra wiadomość? To w rzeczywistości dość proste, gdy zobaczysz, jak elementy do siebie pasują. + +W tym tutorialu przejdziemy przez **zapisywanie formuły do komórki**, **przekształcanie zakresu w tablicę**, **wyświetlanie tej tablicy w konsoli**, a nawet **obliczanie cotangensa w Excelu** — wszystko pokazując **jak używać lambda** wewnątrz wywołania `REDUCE`. Na końcu będziesz mieć działający fragment kodu, który możesz wkleić do dowolnego projektu .NET odwołującego się do Aspose.Cells (lub podobnej biblioteki). + +--- + +## Co się nauczysz + +- Jak **zapisać formułę do komórki** przy użyciu C#. +- Jak **przekształcić zakres w tablicę** przy użyciu funkcji `EXPAND`. +- Jak **wyświetlić tablicę w konsoli** po obliczeniach. +- Jak **obliczyć cotangens w Excelu** używając `COT` i `COTH`. +- Dokładna składnia **jak używać lambda** wewnątrz funkcji `REDUCE` Excela z poziomu C#. + +> **Wymagania wstępne:** Potrzebujesz aktualnej wersji .NET (Core 6+ lub .NET Framework 4.7+) oraz biblioteki Aspose.Cells dla .NET zainstalowanej przez NuGet. + +--- + +## Krok 1: Przygotuj skoroszyt i zapisz formułę do komórki + +Pierwszą rzeczą, którą robimy, jest utworzenie nowego skoroszytu i pobranie pierwszego arkusza. Następnie **zapisujemy formułę do komórki** – w tym przypadku `A1` będzie zawierać wynik wywołania `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Dlaczego to ważne:** Zapisywanie formuły bezpośrednio z kodu oznacza, że możesz generować złożone arkusze w locie, nie otwierając nigdy Excela. To także przygotowuje scenę do kolejnego kroku, w którym **przekształcamy zakres w tablicę**. + +--- + +## Krok 2: Przekształć zakres w tablicę przy użyciu EXPAND + +`EXPAND` to sposób Excela na zamianę małego zakresu w większą macierz. Umieszczając formułę w `A1`, Excel rozleje blok 4 × 5 zaczynający się od tej komórki. Z poziomu C# nie musimy ręcznie kopiować wartości – biblioteka wykona ciężką pracę, gdy wywołamy `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Jak używać lambda:** Jeszcze nie, ale bądźcie czujni. Najpierw potrzebujemy danych w arkuszu, potem zredukujemy je przy pomocy lambda. + +--- + +## Krok 3: Użyj LAMBDA wewnątrz REDUCE – rdzeń „Jak używać lambda” + +Excel 365 wprowadził `REDUCE`, który przyjmuje **wartość początkową**, **zakres** oraz **LAMBDA**, określającą, jak połączyć każdy element. Z poziomu C# po prostu przypisujemy ciąg znaków formuły; lambda żyje wewnątrz formuły Excela, nie w kodzie C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Wyjaśnienie:** +- `0` to początkowy akumulator (`acc`). +- `A1:D4` to zakres, który chcemy przetworzyć (pierwsze cztery kolumny rozlewu). +- `LAMBDA(acc, x, acc + x)` mówi Excelowi, aby dodał każdą komórkę (`x`) do akumulatora. + +To istota **jak używać lambda** do agregacji w kontekście arkusza kalkulacyjnego. + +--- + +## Krok 4: Oblicz cotangens w Excelu – od stopni do hiperbolicznych + +Jeśli potrzebujesz wyników trygonometrycznych, funkcje `COT` i `COTH` Excela są bardzo proste w użyciu. Umieścimy je odpowiednio w `G1` i `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Dlaczego to przydatne:** Znajomość **obliczania cotangensa w Excelu** może zaoszczędzić Ci pisania własnego kodu matematycznego, szczególnie gdy skoroszyt będzie udostępniany osobom niebędącym programistami. + +--- + +## Krok 5: Wymuś obliczenia i pobierz rozszerzoną tablicę + +Teraz nakazujemy skoroszytowi ocenić każdą formułę, a potem wyciągamy rozlewaną tablicę z `A1`. To właśnie miejsce, w którym **wyświetlamy tablicę w konsoli**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Co zobaczysz:** +- Ładnie sformatowaną macierz 4 × 5 wydrukowaną wiersz po wierszu. +- Sumę obliczoną przez lambda w `REDUCE`. +- Dwie wartości cotangensa. + +To kończy przepływ od **zapisu formuły do komórki** aż po **wyświetlenie tablicy w konsoli**. + +--- + +## Pełny działający przykład (gotowy do kopiowania i wklejenia) + +Poniżej znajduje się cały program, który możesz wkleić do aplikacji konsolowej. Pamiętaj, aby najpierw dodać pakiet NuGet `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Oczekiwany wynik w konsoli (wartości będą się różnić w zależności od domyślnej zawartości B1:C2, które domyślnie wynoszą 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Śmiało wypełnij `B1:C2` własnymi liczbami przed uruchomieniem – macierz odzwierciedli te wartości. + +--- + +## Porady profesjonalne i typowe pułapki + +- **Porada:** Jeśli potrzebujesz, aby rozlewający się zakres zaczynał się w innym miejscu, po prostu zmień docelową komórkę (`A1`). Funkcja `EXPAND` respektuje punkt zaczepienia. +- **Uwaga:** Puste komórki w źródłowym zakresie stają się `0` w rozlewającej się tablicy, co może wpłynąć na sumę w `REDUCE`. +- **Przypadek brzegowy:** Gdy skoroszyt zawiera formuły zależne od funkcji zmiennych (np. `NOW()`), wywołaj `workbook.Calculate()` po ustawieniu wszystkich formuł, aby zapewnić aktualność danych. +- **Uwaga dotycząca wydajności:** Przy dużych rozlewach rozważ ograniczenie rozmiaru w wywołaniu `EXPAND`; w przeciwnym razie możesz przydzielić więcej pamięci niż potrzebne. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/number-and-display-formats-in-excel/_index.md b/cells/polish/net/number-and-display-formats-in-excel/_index.md index f3ad317590..98f96e9923 100644 --- a/cells/polish/net/number-and-display-formats-in-excel/_index.md +++ b/cells/polish/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Jeśli chcesz dodać osobisty akcent do swoich arkuszy Excela, dostosowanie form Zautomatyzuj formatowanie liczb w programie Excel za pomocą Aspose.Cells dla .NET. Dowiedz się, jak programowo stosować formaty daty, procentów i walut. ### [Dostosowywanie formatów wyświetlania za pomocą liczb zdefiniowanych przez użytkownika](./customizing-display-formats-with-user-defined-numbers/) Dowiedz się, jak dostosować formaty wyświetlania za pomocą Aspose.Cells dla .NET. Formatuj daty, procenty i waluty za pomocą tego przewodnika krok po kroku. +### [Jak wyeksportować arkusz Excel z zachowaniem formatowania liczb](./how-to-export-excel-with-formatting-preserve-number-format/) +Dowiedz się, jak wyeksportować arkusz Excel zachowując formatowanie liczb przy użyciu Aspose.Cells dla .NET. +### [Formatowanie daty i czasu do ISO w C# – Kompletny przewodnik](./format-datetime-to-iso-in-c-complete-guide/) +Dowiedz się, jak w C# konwertować daty i czasy do formatu ISO przy użyciu Aspose.Cells dla .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/polish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..4653306655 --- /dev/null +++ b/cells/polish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-22 +description: Dowiedz się, jak sformatować datę i godzinę do formatu ISO podczas wyodrębniania + daty z Excela i wyświetlić datę w formacie ISO przy użyciu Aspose.Cells w C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: pl +og_description: Formatowanie daty i czasu do ISO stało się proste. Ten przewodnik + pokazuje, jak wyodrębnić datę z Excela i wyświetlić datę w formacie ISO przy użyciu + Aspose.Cells. +og_title: formatowanie daty i czasu do ISO w C# – Samouczek krok po kroku +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formatowanie daty i czasu do ISO w C# – Kompletny przewodnik +url: /pl/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime to iso w C# – Kompletny przewodnik + +Czy kiedykolwiek potrzebowałeś **format datetime to iso**, ale źródło znajduje się w skoroszycie Excel? Może komórka zawiera japoński era, taki jak “令和3年5月1日” i drapiesz się po głowie, zastanawiając się, jak przekształcić to w czysty ciąg `2021‑05‑01`. Nie jesteś sam. W tym samouczku **extract date from excel**, przetworzymy japoński era, a następnie **display iso date** w konsoli — wszystko w kilku linijkach C# i Aspose.Cells. + +Przejdziemy przez wszystko, czego potrzebujesz: wymagany pakiet NuGet, dokładny kod, który możesz skopiować‑wkleić, dlaczego każda linia ma znaczenie oraz kilka wskazówek dotyczących przypadków brzegowych. Po zakończeniu będziesz mieć wielokrotnego użytku fragment, który **format datetime to iso** niezależnie od tego, jak dziwnie wygląda oryginalna wartość w Excelu. + +## Co będziesz potrzebował + +- .NET 6.0 lub nowszy (kod kompiluje się również na .NET Framework 4.6+) +- Visual Studio 2022 (lub dowolny edytor, którego preferujesz) +- **Aspose.Cells for .NET** pakiet NuGet – `Install-Package Aspose.Cells` +- Plik Excel (lub nowy skoroszyt), który zawiera datę w formacie japońskiego era + +To wszystko. Żadnych dodatkowych bibliotek, żadnego COM interopu, tylko jedna, dobrze udokumentowana metoda. + +## Krok 1: Utwórz skoroszyt i wpisz datę w japońskim erze + +Najpierw potrzebujemy skoroszytu, na którym będziemy pracować. Jeśli już masz plik Excel, możesz go załadować przy pomocy `new Workbook("path")`. W tym przykładzie stworzymy nowy skoroszyt w pamięci i wstawimy ciąg japońskiego era do komórki **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells treats cell values as strings by default. By inserting the raw era text we simulate a real‑world scenario where a Japanese client has entered dates in their native calendar. + +## Krok 2: Włącz parsowanie japońskiego era i wyodrębnij datę + +Aspose.Cells może automatycznie przetłumaczyć ciągi japońskiego era na obiekty .NET `DateTime` — pod warunkiem, że mu to wskażesz. Flaga `DateTimeParseOptions.EnableJapaneseEra` wykonuje ciężką pracę. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** If you forget the `EnableJapaneseEra` option, the library will return the original string, and your subsequent conversion will fail. Always verify `parsed.Type` if you’re handling mixed content. + +## Krok 3: Konwertuj sparsowanego DateTime na ISO 8601 + +Teraz, gdy mamy prawidłowy `DateTime`, przekształcenie go w ciąg w formacie ISO jest dziecinnie proste. Wzorzec `"yyyy-MM-dd"` spełnia wymóg części datowej ISO 8601, której oczekuje większość API. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Uruchomienie programu wypisuje: + +``` +ISO date: 2021-05-01 +``` + +To jest **display iso date**, którego szukałeś. + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się kompletny blok kodu, który możesz skopiować bezpośrednio do projektu konsolowego. Bez ukrytych zależności, bez dodatkowej konfiguracji. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## Szczegółowy podział krok po kroku (Dlaczego każdy element ma znaczenie) + +| Krok | Co się dzieje | Dlaczego jest ważne | +|------|---------------|---------------------| +| **Create workbook** | Initializes an in‑memory Excel container. | Gives you a sandbox to test without touching the file system. | +| **PutValue** | Stores the raw Japanese era string in **A1**. | Mimics real data entry; ensures the parser sees the exact text. | +| **GetValue with `EnableJapaneseEra`** | Converts the era string into a .NET `DateTime`. | Handles the calendar conversion automatically—no manual lookup tables needed. | +| **`ToString("yyyy-MM-dd")`** | Formats the `DateTime` to ISO 8601. | Guarantees a culture‑invariant, sortable date string accepted by REST APIs, databases, etc. | +| **Console.WriteLine** | Shows the final ISO date. | Confirms the whole pipeline works end‑to‑end. | + +## Obsługa typowych wariantów + +### 1. Inne lokalizacje komórek + +Jeśli Twoja data znajduje się w **B2** lub w nazwanym zakresie, po prostu zamień `"A1"` na odpowiedni adres: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Wiele dat w kolumnie + +Gdy potrzebujesz **extract date from excel** dla wielu wierszy, przeiteruj używany zakres: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Awaryjne rozwiązanie dla dat nie‑era + +Jeśli komórka już zawiera standardowy ciąg daty, parser nadal działa, ale możesz chcieć dodatkowego zabezpieczenia: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Flaga `TryParse` zapobiega wyjątkom i zwraca oryginalną wartość, jeśli konwersja się nie powiedzie. + +### 4. Składnik czasu + +Jeśli potrzebujesz także części czasu, użyj `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Daje to pełny znacznik czasu ISO 8601 (`2021-05-01T00:00:00`). + +## Pomoc wizualna + +![format datetime to iso example](image.png "Przykład formatowania datetime do iso w C#") + +*Alt text:* *przykład formatowania datetime do iso pokazujący wyjście konsoli* + +## Najczęściej zadawane pytania + +- **Czy mogę używać tego z plikami .xls?** + Tak. Aspose.Cells obsługuje `.xls`, `.xlsx`, `.csv` i wiele innych formatów od razu. + +- **Co jeśli skoroszyt jest zabezpieczony hasłem?** + Załaduj go przy pomocy `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Czy format ISO jest zależny od ustawień regionalnych?** + Nie. Wzorzec `"yyyy-MM-dd"` jest niezależny od kultury, gwarantując ten sam ciąg na każdej maszynie. + +- **Czy to działa na .NET Core?** + Absolutnie — Aspose.Cells jest zgodny z .NET Standard 2.0. + +## Podsumowanie + +Omówiliśmy, jak **format datetime to iso** poprzez **extract date from excel**, parsowanie japońskich era oraz ostateczne **display iso date** w konsoli. Główne kroki — utworzenie skoroszytu, zapis lub załadowanie tekstu era, włączenie parsowania japońskiego era i formatowanie przy użyciu `ToString("yyyy-MM-dd")` — to wszystko, czego potrzebujesz w większości scenariuszy. + +Następnie możesz: + +- Zapisać daty ISO z powrotem do innej kolumny w celu dalszego przetwarzania. +- Wyeksportować przekształcony skoroszyt do CSV w celu masowego importu. +- Połączyć tę logikę z API webowym, które przyjmuje przesyłane pliki Excel i zwraca daty w formacie JSON‑encoded ISO. + +Śmiało eksperymentuj z różnymi formatami dat, strefami czasowymi lub nawet własnymi kalendarzami. Elastyczność Aspose.Cells oznacza, że rzadko napotkasz na przeszkodę. + +Miłego kodowania i niech wszystkie Twoje daty będą perfekcyjnie zgodne z ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/polish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..368563c00b --- /dev/null +++ b/cells/polish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Jak wyeksportować plik Excel z formatowaniem i zachować format liczb. + Dowiedz się, jak konwertować zakres Excel, uzyskać wynik formuły i wyeksportować + plik Excel z formatowaniem przy użyciu Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: pl +og_description: Jak wyeksportować Excel z formatowaniem i zachować format liczb. Przewodnik + krok po kroku, jak konwertować zakres Excela, uzyskać wynik formuły i wyeksportować + Excel z formatowaniem w C#. +og_title: Jak wyeksportować Excel z formatowaniem – zachowaj format liczb +tags: +- C# +- Aspose.Cells +- Excel automation +title: Jak wyeksportować Excel z formatowaniem – zachowaj format liczb +url: /pl/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak eksportować Excel z formatowaniem – zachowanie formatu liczbowego + +Zastanawiałeś się kiedyś **jak eksportować Excel** dane, zachowując dokładny wygląd każdej komórki tak, jak widzisz go w skoroszycie? Być może musisz wysłać raport do klienta, zasilić kontrolkę siatki lub po prostu przechować wartości w bazie danych. Problemem jest zazwyczaj utrata formatowania liczb lub przekształcenie formuł w surowe ciągi znaków. + +W tym samouczku przeprowadzimy Cię przez kompletny, gotowy do uruchomienia przykład w C#, który **zachowuje format liczbowy**, **konwertuje zakres Excel** na `DataTable`, **pobiera wynik formuły**, a na końcu **eksportuje Excel z formatowaniem** przy użyciu Aspose.Cells. Po zakończeniu będziesz mieć jedną metodę, którą możesz wstawić do dowolnego projektu i wywołać z odniesieniem do arkusza. + +> **Szybki podgląd:** kod tworzy skoroszyt, zapisuje wartość i formułę, instruuje Aspose.Cells, aby eksportował komórki jako sformatowane ciągi znaków, i wypisuje `123.456 | 246.912` – dokładnie to, co powinno się pojawić w Excelu. + +--- + +## Czego będziesz potrzebować + +- **Aspose.Cells for .NET** (bezpłatna wersja próbna sprawdza się w nauce) +- .NET 6.0 lub nowszy (API jest takie samo w .NET Framework) +- Podstawowe środowisko programistyczne C# (Visual Studio, VS Code, Rider… wybór należy do Ciebie) + +Nie są wymagane dodatkowe pakiety NuGet poza Aspose.Cells. Jeśli jeszcze go nie zainstalowałeś, uruchom: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Krok 1 – Utwórz skoroszyt i zapisz wartości (w tym formułę) + +Najpierw tworzymy nowy skoroszyt i wstawiamy wartość liczbową do **A1**. Następnie dodajemy prostą formułę w **B1**, która mnoży pierwszą komórkę przez dwa. To przygotowuje scenę do późniejszego pokazania **pobierania wyniku formuły**. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Dlaczego to ważne:** +- `PutValue` przechowuje surową liczbę, natomiast `PutFormula` przechowuje obliczenie. +- Aspose.Cells utrzymuje formułę **aktywną**, więc gdy później zapytamy o wartość komórki, otrzymamy rzeczywiście `246.912`, a nie ciąg znaków `"=A1*2"`. + +--- + +## Krok 2 – Powiedz Aspose.Cells, aby eksportował wartości jako sformatowane ciągi znaków + +Jeśli po prostu wywołasz `ExportDataTable` z ustawieniami domyślnymi, komórki liczbowe zostaną zwrócone jako ich podstawowe wartości `double`. To usuwa wszystkie separatory tysięcy, symbole walut lub niestandardowe miejsca dziesiętne, które mogłeś ustawić. Klasa `ExportTableOptions` pozwala nam **zachować format liczbowy** i **eksportować jako ciąg znaków**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Kluczowy punkt:** `ExportNumberFormat = true` jest flagą, która sprawia, że **zachowanie formatu liczbowego** działa. Bez niej zobaczysz `"123.456"` i `"246.912"` jako surowe liczby, co może wyglądać w porządku w kodzie, ale nie, gdy wklejasz dane do interfejsu oczekującego takiego samego formatowania jak w Excelu. + +--- + +## Krok 3 – Wypisz wyeksportowane dane (weryfikacja) + +Teraz, gdy mamy `DataTable` pełną sformatowanych ciągów znaków, wyświetlmy zawartość w konsoli. To także pokazuje, że udało nam się **pobrać wynik formuły** bez samodzielnego jej obliczania. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Running the program prints: + +``` +123.456 | 246.912 +``` + +Zauważ, że druga kolumna pokazuje **wynik formuły**, a nie tekst formuły. To dokładnie to, czego potrzebujesz przy **eksportowaniu Excela z formatowaniem** do dalszego przetwarzania. + +--- + +## Krok 4 – Konwertowanie większych zakresów Excel (opcjonalnie) + +Powyższy przykład obsługuje mały fragment `A1:B1`, ale w rzeczywistych scenariuszach często trzeba eksportować całe tabele. Ta sama metoda działa dla dowolnego prostokątnego bloku – wystarczy dostosować argumenty `firstRow`, `firstColumn`, `totalRows` i `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tip:** Jeśli Twój arkusz już ma wiersz nagłówka, ustaw `includeColumnNames` na `true`. Aspose.Cells użyje pierwszego wiersza zakresu jako nazw kolumn, co jest przydatne, gdy później powiążesz `DataTable` z siatką UI. + +--- + +## Krok 5 – Częste pułapki i jak ich unikać + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Liczby tracą przecinki lub symbole walut** | `ExportAsString` jest `false` lub `ExportNumberFormat` jest pominięty | Ustaw oba `ExportAsString = true` **oraz** `ExportNumberFormat = true`. | +| **Komórki z formułami zwracają tekst formuły** | Nie wywołałeś `CalculateFormula` przed eksportem (wymagane tylko, jeśli skoroszyt nie jest ustawiony na automatyczne obliczanie) | Albo włącz automatyczne obliczanie (`workbook.CalculateFormula()`), albo polegaj na `ExportAsString`, które wymusza ewaluację. | +| **Nagłówki pojawiają się jako wiersze danych** | `includeColumnNames` ustawione na `false`, podczas gdy zakres zawiera wiersz nagłówka | Ustaw `includeColumnNames = true`, aby traktować pierwszy wiersz jako nazwy kolumn. | +| **Duże zakresy powodują obciążenie pamięci** | Eksportowanie całego arkusza jednocześnie ładuje wszystko do pamięci | Eksportuj w partiach (np. po 500 wierszy) i scal `DataTable` w razie potrzeby. | + +--- + +## Krok 6 – Pełny działający przykład (gotowy do kopiowania i wklejania) + +Poniżej znajduje się cały program, od dyrektyw `using` po `Main`. Wklej go do aplikacji konsolowej i naciśnij **F5** – zobaczysz sformatowany wynik od razu. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Oczekiwany wynik** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +To cały przepływ **jak eksportować Excel**, z zachowanym formatowaniem, wyliczonymi wynikami formuł i czystym `DataTable` gotowym dla dowolnego konsumenta .NET. + +--- + +## Zakończenie + +Omówiliśmy wszystko, co musisz wiedzieć o **jak eksportować Excel** dane przy **zachowywaniu formatu liczbowego**, **konwertowaniu zakresu Excel** na `DataTable` oraz **pobieraniu wyników formuł** bez dodatkowego parsowania. Kluczem jest konfiguracja `ExportTableOptions` – po ustawieniu `ExportAsString` i `ExportNumberFormat` na `true`, Aspose.Cells wykona ciężką pracę za Ciebie. + +From here you can: + +- Podłączyć `DataTable` do kontrolki WPF `DataGrid` lub widoku ASP.NET MVC. +- Zapisz tabelę do pliku CSV, zachowując dokładną reprezentację wizualną. +- Rozszerzyć podejście na wiele arkuszy lub dynamiczne zakresy. + +Śmiało eksperymentuj z różnymi formatami (waluty, procenty) i większymi blokami danych. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do tabeli **częstych pułapek** – opisuje ona najczęstsze trudności przy **eksportowaniu Excela z formatowaniem**. + +Miłego kodowania i niech Twoje wyeksportowane arkusze zawsze wyglądają tak dopracowanie jak oryginały! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/polish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..006c37794a --- /dev/null +++ b/cells/polish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,209 @@ +--- +category: general +date: 2026-03-22 +description: Dowiedz się, jak duplikować tabelę przestawną w C# przy użyciu Aspose.Cells. + Ten przewodnik pokazuje również, jak kopiować wiersze i ładować skoroszyt Excel + w C# w celu płynnej automatyzacji Excela oraz kopiowania wierszy. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: pl +og_description: Jak zduplikować tabelę przestawną w C#? Zapoznaj się z tym zwięzłym + samouczkiem, aby załadować skoroszyt Excela w C#, kopiować wiersze i opanować automatyzację + Excela przy kopiowaniu wierszy. +og_title: Jak zduplikować Pivot w C# – Kompletny przewodnik +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Jak zduplikować Pivot w C# – Kompletny przewodnik krok po kroku +url: /pl/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak zduplikować tabelę przestawną w C# – Kompletny przewodnik krok po kroku + +Zastanawiałeś się kiedyś **jak zduplikować tabelę przestawną** programowo, bez ręcznego przeciągania jej w Excelu? Nie jesteś jedyny. W wielu procesach raportowania ten sam układ tabeli przestawnej jest potrzebny na nowym zestawie wierszy, a ręczne kopiowanie to strata czasu. + +Dobre wieści? Kilkoma liniami C# możesz wczytać skoroszyt Excel, określić obszar zawierający tabelę przestawną i **jak kopiować wiersze**, aby tabela pojawiła się w nowej lokalizacji — wszystko w jednym zautomatyzowanym uruchomieniu. W tym samouczku omówimy także podstawy **load excel workbook c#** oraz zapewnimy solidne podstawy do zadań **excel automation copy rows**. + +> **Co wyniesiesz z tego** +> • Pełny, uruchamialny przykład, który duplikuje tabelę przestawną. +> • Wyjaśnienie, dlaczego każda linia ma znaczenie. +> • Wskazówki dotyczące obsługi przypadków brzegowych, takich jak ukryte arkusze lub wiele tabel przestawnych. + +--- + +## Wymagania wstępne + +Before we dive in, make sure you have: + +- **.NET 6.0** (lub dowolna nowsza wersja .NET) zainstalowana. +- **Aspose.Cells for .NET** – biblioteka, której użyjemy do manipulacji plikami Excel. Możesz ją pobrać przez NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Źródłowy skoroszyt (`Source.xlsx`) zawierający już tabelę przestawną w zakresie **A1:J20** (zakres, który będziemy duplikować). +- Podstawowa znajomość składni C# – nic skomplikowanego, tylko typowe instrukcje `using` i metoda `Main`. + +If any of these sound unfamiliar, pause a moment and install the package; the rest of the guide assumes the library is ready to go. + +Jeśli coś z tego jest Ci nieznane, zatrzymaj się na chwilę i zainstaluj pakiet; dalsza część przewodnika zakłada, że biblioteka jest gotowa do użycia. + +![Ilustracja jak zduplikować tabelę przestawną w C# przy użyciu Aspose.Cells](https://example.com/duplicate-pivot.png "ilustracja jak zduplikować tabelę przestawną w C#") + +*Tekst alternatywny obrazu: "przykład jak zduplikować tabelę przestawną w C# pokazujący źródłowe i zduplikowane wiersze tabeli przestawnej".* + +--- + +## Krok 1: Load Excel Workbook C# – Otwieranie pliku + +The very first thing you need to do when you want to **load excel workbook c#** is create a `Workbook` instance pointing at your file. This object gives you access to every worksheet, cell, and pivot inside the file. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Dlaczego to ważne:** +`Workbook` abstrahuje cały plik Excel do modelu w pamięci. Bez wcześniejszego wczytania nie możesz sprawdzić lokalizacji tabeli przestawnej ani kopiować wierszy. Ponadto konstruktor automatycznie wykrywa format pliku (XLS, XLSX, CSV itp.), więc nie potrzebujesz dodatkowego kodu do wykrywania formatu. + +--- + +## Krok 2: How to Copy Rows – Definiowanie obszaru tabeli przestawnej + +Now that the workbook is in memory, we need to tell Aspose.Cells which rows contain the pivot. In our example the pivot lives in **A1:J20**, which translates to rows **0‑19** (zero‑based indexing). We’ll wrap that in a `CellArea` structure. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Dlaczego używamy `CellArea`:** +To lekki sposób opisania prostokątnego bloku. Kiedy później wywołasz `CopyRows`, metoda odczytuje ten obiekt, aby dokładnie wiedzieć, które wiersze skopiować. Jeśli kiedykolwiek będziesz musiał dostosować zakres (np. tabela przestawna rozrośnie się do kolumny K), zmieniasz tylko wartość `endColumn`. + +--- + +## Krok 3: Dostęp do docelowego arkusza + +Most workbooks have a single sheet, but the API works the same for multiple sheets. Grab the first worksheet (index 0) – that’s where the original pivot lives. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tip:** +Jeśli masz nazwane arkusze, możesz je także pobrać po nazwie: `workbook.Worksheets["Sheet1"]`. To pomaga uniknąć twardego kodowania indeksów, gdy struktura skoroszytu się zmienia. + +--- + +## Krok 4: How to Copy Rows – Duplikowanie tabeli przestawnej + +Here’s the heart of **how to duplicate pivot**: we copy the rows containing the pivot to a new location. In our case we start at row 31 (zero‑based index 30). The `CopyRows` method copies *both* the data and the underlying pivot cache, so the new rows behave exactly like the original. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Co się dzieje w tle?** +`CopyRows` klonuje każdy wiersz, zachowując formuły, style i definicje tabeli przestawnej. Ponieważ pamięć podręczna tabeli przestawnej istnieje na poziomie skoroszytu, zduplikowana tabela automatycznie odwołuje się do tego samego źródła danych – nie wymaga dodatkowej konfiguracji. + +**Przypadek brzegowy – ukryte wiersze:** +Jeśli którykolwiek z wierszy w zakresie źródłowym jest ukryty, pozostanie ukryty po skopiowaniu. Jeśli chcesz je odkryć, wywołaj `worksheet.Rows[destRow].IsHidden = false` po kopiowaniu. + +--- + +## Krok 5: Zapisz skoroszyt – weryfikacja duplikatu + +Finally, write the changes back to disk. You can overwrite the original file or, safer, save to a new name so you can compare the before/after. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Wynik, który powinieneś zobaczyć:** +Otwórz `CopyWithPivot.xlsx`. Znajdziesz oryginalną tabelę przestawną w **A1:J20** oraz identyczną kopię zaczynającą się od **A31:J50**. Obie tabele mogą być odświeżane niezależnie, a wszelkie segmentatory podłączone do oryginału będą nadal działać dla kopii, ponieważ korzystają z tej samej pamięci podręcznej. + +--- + +## Częste pytania i warianty + +### Czy mogę zduplikować wiele tabel przestawnych jednocześnie? + +Absolutely. Loop through all pivot tables (`worksheet.PivotTables`) and copy each one’s range to a different destination. Just make sure the destination ranges don’t overlap. + +### Co jeśli źródłowy skoroszyt jest chroniony hasłem? + +Aspose.Cells pozwala otworzyć chroniony plik, przekazując hasło do konstruktora `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Jak kopiować wiersze bez wpływu na formuły? + +If you only need the *values* (no formulas), use `CopyRows` with the `CopyOptions` flag: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Czy istnieje sposób, aby skopiować wiersze do *innego* skoroszytu? + +Yes. After copying rows in the source sheet, you can clone the worksheet into another `Workbook` instance via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Porady eksperta dla niezawodnej automatyzacji Excela – kopiowanie wierszy + +- **Sprawdź zakres** przed kopiowaniem. Krótkie `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` zapobiega błędom poza zakresem. +- **Wyłącz obliczenia** podczas kopiowania dużych zakresów: `workbook.Settings.CalcMode = CalcMode.Manual;` – to znacząco przyspiesza operację. +- **Zwolnij obiekty** (`workbook.Dispose()`), jeśli przetwarzasz wiele plików w pętli, aby zwolnić zasoby natywne. +- **Loguj operację** – szczególnie w pipeline'ach produkcyjnych – aby móc śledzić, które pliki zostały przetworzone i wczesniej wykrywać błędy. + +--- + +## Zakończenie + +You now know **how to duplicate pivot** tables in C# using Aspose.Cells, and you’ve seen the full workflow from **load excel workbook c#** to **excel automation copy rows** and finally saving the result. The example is self‑contained, runs out of the box, and can be extended to handle multiple pivots, protected files, or cross‑workbook copying. + +Next steps? Try adapting the script to: + +- Odśwież zduplikowaną tabelę przestawną programowo (`pivotTable.RefreshData();`). +- Wyeksportuj zduplikowany obszar do CSV do dalszego przetwarzania. +- Zintegruj kod z API ASP.NET Core, aby użytkownicy mogli wgrać plik i natychmiast otrzymać wersję z duplikowaną tabelą przestawną. + +Happy coding, and may your Excel automation be ever smooth! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/row-and-column-management/_index.md b/cells/polish/net/row-and-column-management/_index.md index c507cf76b1..a9e6d1e811 100644 --- a/cells/polish/net/row-and-column-management/_index.md +++ b/cells/polish/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Dowiedz się, jak odkryć wiersze i kolumny w programie Excel za pomocą Aspose. Dowiedz się, jak usunąć kolumnę w pliku Excel za pomocą Aspose.Cells dla .NET. Postępuj zgodnie z naszym szczegółowym przewodnikiem krok po kroku, aby usprawnić modyfikacje pliku Excel. ### [Usuwanie wiersza w Aspose.Cells .NET](./delete-row-aspose-cells/) Dowiedz się, jak usunąć wiersz w programie Excel za pomocą Aspose.Cells dla .NET. Ten przewodnik krok po kroku obejmuje wymagania wstępne, import kodu i szczegółowy opis płynnej manipulacji danymi. +### [Aspose Cells usuwanie wierszy – Ochrona wiersza nagłówka w Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Dowiedz się, jak usuwać wiersze w Excelu, zachowując wiersz nagłówka, przy użyciu Aspose.Cells dla .NET. ### [Usuwanie wielu wierszy w Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Naucz się usuwać wiele wierszy w programie Excel za pomocą Aspose.Cells dla .NET. Ten szczegółowy przewodnik krok po kroku obejmuje wymagania wstępne, przykłady kodowania i często zadawane pytania dla programistów. ### [Wstawianie kolumny w Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/polish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/polish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..80b782cd1c --- /dev/null +++ b/cells/polish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells usuwa wiersze, zachowując wiersz nagłówka. Dowiedz się, + jak pobrać pierwszą tabelę i bezpiecznie usunąć wiersze tabeli Excel w C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: pl +og_description: Aspose Cells usuwa wiersze, zachowując wiersz nagłówka. Dowiedz się, + jak pobrać pierwszą tabelę i bezpiecznie usunąć wiersze tabeli Excel w C#. +og_title: Aspose Cells Usuń wiersze – Chroń wiersz nagłówka w Excelu +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Usuń wiersze – Zabezpiecz wiersz nagłówka w Excelu +url: /pl/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Ochrona wiersza nagłówka w Excelu + +Czy kiedykolwiek próbowałeś **aspose cells delete rows** z tabeli i odkryłeś, że nagłówek zniknął? To powszechny problem przy programowym manipulowaniu arkuszami Excel. W tym przewodniku przeprowadzimy Cię przez kompletną, gotową do uruchomienia rozwiązanie, które **chroni wiersz nagłówka**, pokazuje, jak **retrieve first table**, oraz bezpiecznie **delete Excel table rows** bez uszkadzania struktury. + +Omówimy wszystko – od wczytania skoroszytu po obsługę wyjątku, który Aspose rzuca, gdy próbujesz pozostawić nagłówek bez tabeli. Po zakończeniu będziesz mieć solidny wzorzec, który możesz wstawić do dowolnego projektu .NET korzystającego z Aspose.Cells. + +--- + +## Co będzie potrzebne + +- **Aspose.Cells for .NET** (v23.12 lub nowszy) – biblioteka umożliwiająca pracę z plikami Excel bez zainstalowanego Office. +- Podstawowe środowisko programistyczne C# (Visual Studio, Rider lub `dotnet` CLI). +- Plik Excel (`TableWithHeader.xlsx`) zawierający przynajmniej jeden **ListObject** (tabela Excel) z wierszem nagłówka w pierwszym wierszu. + +Nie są wymagane żadne dodatkowe pakiety NuGet poza Aspose.Cells. + +--- + +## Krok 1: Wczytaj skoroszyt i pobierz pierwszą tabelę + +Pierwszą rzeczą, którą musisz zrobić, jest otwarcie skoroszytu i pobranie tabeli, którą chcesz zmodyfikować. To właśnie tutaj wkracza drugie słowo kluczowe **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Dlaczego to ważne:** +- `Workbook` odczytuje plik bez potrzeby instalacji Excela. +- `worksheet.ListObjects[0]` to najprostszy sposób na **retrieve first table**; jeśli masz wiele tabel, możesz iterować lub użyć nazwy tabeli. + +> **Pro tip:** Jeśli nie masz pewności, czy arkusz faktycznie zawiera tabelę, najpierw sprawdź `worksheet.ListObjects.Count`, aby uniknąć `IndexOutOfRangeException`. + +--- + +## Krok 2: Chroń wiersz nagłówka podczas usuwania wierszy + +Teraz przechodzimy do sedna sprawy: **aspose cells delete rows** bez wymazywania nagłówka. Metoda `DeleteRows` w Aspose przyjmuje indeks początkowy (zerowy) oraz liczbę wierszy. Próba usunięcia nagłówka (wiersz 0) wywołuje wyjątek, którego chcemy uniknąć. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Wyjaśnienie logiki:** + +| Krok | Powód | +|------|-------| +| `table.DeleteRows(1, 2);` | Indeks 1 wskazuje **drugi** wiersz (pierwszy wiersz danych). Usunięcie dwóch wierszy usuwa wiersze 2‑3 w terminologii Excela, pozostawiając nagłówek (wiersz 1) nienaruszony. | +| `catch (Exception ex)` | Aspose rzuca wyjątek **tylko** wtedy, gdy operacja spowodowałaby pozostawienie nagłówka bez tabeli. Przechwycenie go pozwala zalogować przyjazny komunikat zamiast awarii aplikacji. | +| `Save` | Zapisanie zmian umożliwia otwarcie `Result.xlsx` i sprawdzenie, że nagłówek nadal istnieje. | + +> **Co zrobić, jeśli naprawdę musisz usunąć nagłówek?** +> Ustaw `table.ShowHeaders = false;` przed usunięciem lub usuń całą tabelę i odtwórz ją. W większości scenariuszy biznesowych będziesz chciał **protect header row**. + +--- + +## Krok 3: Zweryfikuj wynik – oczekiwany rezultat + +Po uruchomieniu programu otwórz `Result.xlsx`. Powinieneś zobaczyć: + +- Pierwszy wiersz nadal zawiera oryginalne tytuły kolumn. +- Wiersze 2‑3 (te, które celowo usunęliśmy) zniknęły, a pozostałe dane przesunęły się w górę. + +Konsola wyświetli: + +``` +Rows deleted successfully. +``` + +Jeśli przypadkowo spróbowałeś usunąć nagłówek (np. `table.DeleteRows(0, 1);`), wynik będzie: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Ten komunikat potwierdza, że wbudowana ochrona Aspose działa prawidłowo. + +--- + +## Krok 4: Alternatywne sposoby **Delete Excel Table Rows** + +Czasami potrzebna jest większa kontrola – np. usuwanie wierszy na podstawie warunku lub usuwanie nieciągłych wierszy. Oto dwa szybkie wzorce, które zachowują nagłówek w bezpieczeństwie. + +### 4.1 Usuwanie wierszy za pomocą filtru danych + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Masowe usuwanie przy użyciu zakresu + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Oba fragmenty respektują zasadę **protect header row**, ponieważ indeks początkowy nigdy nie spada poniżej 1. + +--- + +## Krok 5: Typowe pułapki i jak ich unikać + +| Pułapka | Dlaczego się pojawia | Rozwiązanie | +|---------|----------------------|-------------| +| Przypadkowe usunięcie nagłówka | Użycie `0` jako indeksu początkowego | Zawsze zaczynaj od `1` dla wierszy danych lub najpierw sprawdź `table.ShowHeaders`. | +| `IndexOutOfRangeException`, gdy arkusz nie ma tabel | Zakładanie, że tabela istnieje | Zweryfikuj `worksheet.ListObjects.Count > 0` przed dostępem do `[0]`. | +| Zmiany nie zapisane | Zapomnienie wywołać `Save` | Wywołaj `workbook.Save` po dokonaniu modyfikacji. | +| Usuwanie wierszy w środku powoduje przesunięcie indeksów, co skutkuje pominięciami | Iteracja od przodu podczas usuwania | Iteruj **od tyłu** lub najpierw zbierz wiersze do usunięcia. | + +--- + +## Krok 6: Połącz wszystko – pełny działający przykład + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Uruchom ten program, otwórz `Result.xlsx`, a zobaczysz, że nagłówek pozostał nietknięty, a wybrane wiersze zostały usunięte. To **kompletne, samodzielne rozwiązanie** dla **aspose cells delete rows** bez utraty nagłówka. + +--- + +## Zakończenie + +Pokazaliśmy, jak **aspose cells delete rows** przy jednoczesnym **protect header row**, jak **retrieve first table**, oraz kilka metod **delete excel table rows** w bezpieczny sposób. Najważniejsze wnioski: + +- Zawsze zaczynaj usuwanie od indeksu 1, aby zachować nagłówek. +- Używaj `try/catch`, aby obsłużyć wbudowany wyjątek ochronny Aspose. +- Sprawdzaj istnienie tabeli przed operacją i iteruj wstecz przy warunkowym usuwaniu wierszy. + +Gotowy na kolejny poziom? Spróbuj połączyć to podejście z API stylizacji **Aspose Cells**, aby podświetlić usuwane wiersze przed ich usunięciem, lub zautomatyzuj proces na wielu arkuszach. Możliwości są nieograniczone, a Ty masz już niezawodny wzorzec do dalszego rozwoju. + +Jeśli ten tutorial okazał się pomocny, daj łapkę w górę, podziel się nim z zespołem lub zostaw komentarz z własnymi rozwiązaniami nietypowych przypadków. Szczęśliwego kodowania! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/polish/net/saving-and-exporting-excel-files-with-options/_index.md index 9580081e8f..11ae58514b 100644 --- a/cells/polish/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/polish/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Dowiedz się, jak radzić sobie z ostrzeżeniami podczas ładowania plików Exce Dowiedz się, jak programowo określić właściwości dokumentu, takie jak wersja, autor i tytuł, w pliku Excela, korzystając z Aspose.Cells for .NET, korzystając z instrukcji krok po kroku. ### [Przycinanie wiodących pustych wierszy i kolumn podczas eksportowania](./trimming-leading-blank-rows-and-columns/) Usprawnij eksportowanie plików CSV, przycinając wiodące puste wiersze i kolumny za pomocą Aspose.Cells dla .NET. Czyste dane są zaledwie kilka kroków dalej. +### [Jak zapisać skoroszyt w C# – Kompletny przewodnik automatyzacji Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Dowiedz się, jak zapisać skoroszyt w C# przy użyciu Aspose.Cells, krok po kroku, aby w pełni zautomatyzować proces tworzenia plików Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/polish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..00ae104c2b --- /dev/null +++ b/cells/polish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Jak zapisać skoroszyt w C# przy użyciu Aspose.Cells — przewodnik krok + po kroku obejmujący ładowanie pliku Excel, tworzenie arkusza, ponowne użycie arkusza + oraz generowanie raportu. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: pl +og_description: Jak zapisać skoroszyt w C# przy użyciu Aspose.Cells. Dowiedz się, + jak wczytać plik Excel, utworzyć arkusz, ponownie wykorzystać arkusz i wygenerować + raport w jednym samouczku. +og_title: Jak zapisać skoroszyt w C# – Kompletny przewodnik po automatyzacji Excela +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Jak zapisać skoroszyt w C# – Kompletny przewodnik po automatyzacji Excel +url: /pl/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak zapisać skoroszyt w C# – Kompletny przewodnik po automatyzacji Excel + +Zastanawiałeś się kiedyś **jak zapisać skoroszyt** w C# po przetworzeniu danych? Nie jesteś sam. Większość programistów napotyka problem, gdy raport wygląda idealnie na ekranie, ale odmawia zapisania się na dysku. W tym tutorialu przeprowadzimy pełnoprawny przykład, który nie tylko pokaże ci **jak zapisać skoroszyt**, ale także omówi **jak wczytać Excel**, **jak utworzyć arkusz**, **jak ponownie użyć arkusza** oraz **jak wygenerować raport** — wszystko przy użyciu Aspose.Cells. + +Wyobraź sobie to jako rozmowę przy kawie, w której wyciągam kod z laptopa i wyjaśniam każdą linię. Po zakończeniu będziesz mieć działający program, który wczytuje szablon, wstrzykuje dane za pomocą SmartMarker, ponownie używa istniejącej nazwy arkusza szczegółów i ostatecznie zapisuje plik w twoim folderze. Bez tajemnic, tylko jasne kroki, które możesz skopiować‑wkleić. + +## Czego będziesz potrzebować + +- **Aspose.Cells for .NET** (najnowsza wersja na 2026 rok). Możesz go pobrać z NuGet przy użyciu `Install-Package Aspose.Cells`. +- Środowisko programistyczne .NET (Visual Studio, Rider lub VS Code z rozszerzeniem C# działa bez problemu). +- Podstawowy plik szablonu Excel o nazwie `MasterTemplate.xlsx` umieszczony w folderze, którym zarządzasz. +- Podstawowa znajomość C# — jeśli wcześniej napisałeś `Console.WriteLine`, jesteś gotowy. + +> **Pro tip:** Trzymaj swój szablon w osobnym folderze *Resources* i oznacz go jako „Copy if newer”, aby ścieżka była spójna w różnych kompilacjach. + +Teraz zanurzmy się w kod. + +## Krok 1: Jak wczytać Excel – Otwórz skoroszyt szablonu + +Pierwszą rzeczą, którą musisz zrobić, jest załadowanie skoroszytu do pamięci. Aspose.Cells robi to w jednej linii, ale zrozumienie dlaczego pomaga przy późniejszym rozwiązywaniu problemów. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Dlaczego to ważne:** Załadowanie skoroszytu daje dostęp do każdego arkusza, stylu i nazwanej zakresu w szablonie. Jeśli plik nie zostanie znaleziony, Aspose rzuca `FileNotFoundException`, więc sprawdź ścieżkę podwójnie. +- **Przypadek brzegowy:** Jeśli szablon jest chroniony hasłem, przekaż hasło do konstruktora `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Krok 2: Jak ponownie użyć arkusza – Skonfiguruj opcje SmartMarker + +SmartMarker może automatycznie utworzyć nowy arkusz szczegółów, ale możesz już mieć arkusz o nazwie **Detail**. Aby uniknąć konfliktu, informujemy procesor, aby ponownie użył tej nazwy. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Dlaczego to ważne:** Bez tej opcji Aspose dodałby numeryczny sufiks (np. „Detail1”), co może zepsuć makra lub formuły zależne od stałej nazwy arkusza. +- **Co jeśli arkusz nie istnieje?** Aspose utworzy go za Ciebie — więc ten sam kod działa niezależnie od tego, czy arkusz jest obecny. + +## Krok 3: Jak utworzyć arkusz – Przygotuj źródło danych + +Mimo że nie dodajemy ręcznie arkusza, dane przekazywane do SmartMarker decydują, czy zostanie utworzony nowy arkusz. Zbudujmy prosty anonimowy obiekt, który naśladuje listę zamówień. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Dlaczego to ważne:** SmartMarker przeszukuje szablon pod kątem znaczników takich jak `&=Header` i `&=Items.Id`. Struktura `orderData` musi dokładnie odpowiadać tym znacznikom, w przeciwnym razie procesor po cichu je pominie. +- **Wariant:** Jeśli pobierasz dane z bazy, zamień typ anonimowy na listę DTO lub `DataTable`. Procesor obsługuje oba przypadki. + +## Krok 4: Jak wygenerować raport – Przetwórz SmartMarker + +Teraz wiążemy dane z szablonem. Procesor przechodzi przez pierwszy arkusz, zamienia znaczniki i buduje arkusz szczegółów. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Dlaczego to ważne:** Ta pojedyncza linia wykonuje najcięższą pracę — wypełnia nagłówek, iteruje po `Items` i respektuje `DetailSheetNewName`, które ustawiliśmy wcześniej. +- **Częste pytanie:** *Co jeśli mam wiele arkuszy ze znacznikami?* Przejdź pętlą po każdym arkuszu i wywołaj `SmartMarkerProcessor.Process` osobno. + +## Krok 5: Jak zapisać skoroszyt – Zapisz wynikowy plik + +Na koniec zapisujemy zmodyfikowany skoroszyt na dysk. To moment, w którym **jak zapisać skoroszyt** staje się konkretny. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Dlaczego to ważne:** Metoda `Save` obsługuje wiele formatów (`.xlsx`, `.xls`, `.csv`, `.pdf` itd.). Domyślnie zapisuje plik Excel, ale możesz przekazać obiekt `SaveOptions`, aby zmienić format wyjściowy. +- **Przypadek brzegowy:** Jeśli docelowy plik jest otwarty w Excelu, `Save` rzuca `IOException`. Upewnij się, że zamknąłeś wszystkie instancje lub użyj unikalnej nazwy pliku przy każdym uruchomieniu. + +![Przykład zapisywania skoroszytu w C#](/images/how-to-save-workbook-csharp.png "Jak zapisać skoroszyt w C# – wizualny przegląd procesu") + +### Pełny działający przykład + +Łącząc wszystko razem, oto samodzielna aplikacja konsolowa, którą możesz skompilować i uruchomić: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Oczekiwany wynik:** Po uruchomieniu znajdziesz `SmartMarkerWithDupDetail.xlsx` w `YOUR_DIRECTORY`. Otwórz go i powinieneś zobaczyć: + +- Oryginalny nagłówek wypełniony wartością „Orders”. +- Nowy (lub ponownie użyty) arkusz o nazwie **Detail** zawierający dwa wiersze: `Id=1, Qty=5` oraz `Id=2, Qty=3`. + +Jeśli arkusz **Detail** już istniał, jego zawartość zostanie nadpisana nowymi danymi — bez dodatkowych arkuszy zaśmiecających plik. + +## Najczęściej zadawane pytania (FAQ) + +| Pytanie | Odpowiedź | +|----------|--------| +| *Czy mogę zapisać jako PDF zamiast XLSX?* | Tak. Zamień `workbook.Save("file.xlsx")` na `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Co jeśli mój szablon ma wiele sekcji SmartMarker?* | Wywołaj `SmartMarkerProcessor.Process` na każdym arkuszu zawierającym znaczniki lub przekaż kolekcję obiektów danych pasujących do każdej sekcji. | +| *Czy istnieje sposób, aby dodać dane zamiast nadpisywać arkusz Detail?* | Użyj `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (dostępne w nowszych wersjach Aspose). | +| *Czy muszę zwolnić zasoby Workbook?* | Klasa `Workbook` implementuje `IDisposable`. Owiń ją w blok `using` dla czystego zarządzania zasobami. | + +## Podsumowanie + +Właśnie omówiliśmy **jak zapisać skoroszyt** w C# od początku do końca, prezentując cały proces: **jak wczytać Excel**, **jak utworzyć arkusz** (implicit via SmartMarker), **jak ponownie użyć arkusza** oraz **jak wygenerować raport**. Kod jest gotowy do wstawienia w dowolny projekt .NET, a wyjaśnienia powinny dać wystarczający kontekst, aby dostosować go do bardziej złożonych scenariuszy — takich jak raporty wieloarkuszowe, formatowanie warunkowe czy eksport do PDF. + +Gotowy na kolejne wyzwanie? Spróbuj dodać wykres wizualizujący ilości zamówień lub zmień format wyjściowy na CSV dla dalszego przetwarzania. Te same zasady — wczytywanie, przetwarzanie i zapisywanie — nadal obowiązują, więc będziesz używać tego wzorca w wielu zadaniach raportowych. + +Jeśli napotkasz problem lub masz pomysły na rozszerzenia, śmiało zostaw komentarz. Szczęśliwego kodowania i ciesz się płynnym doświadczeniem, w końcu będąc w stanie **zapisać skoroszyt** dokładnie tak, jak potrzebujesz! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/smart-markers-dynamic-data/_index.md b/cells/polish/net/smart-markers-dynamic-data/_index.md index e45d6f9eae..c99154a453 100644 --- a/cells/polish/net/smart-markers-dynamic-data/_index.md +++ b/cells/polish/net/smart-markers-dynamic-data/_index.md @@ -79,11 +79,13 @@ Naucz się używać parametrów formuły w inteligentnych znacznikach za pomocą ### [Użyj listy ogólnej w inteligentnych znacznikach Aspose.Cells](./generic-list-smart-markers/) Opanuj Aspose.Cells dla .NET z listami generycznymi i inteligentnymi znacznikami, aby bez wysiłku tworzyć dynamiczne raporty Excela. Łatwy przewodnik dla programistów. ### [Użyj właściwości HTML w inteligentnych znacznikach Aspose.Cells .NET](./html-property-smart-markers/) -Odkryj potencjał Aspose.Cells dzięki temu samouczkowi krok po kroku dotyczącemu korzystania z właściwości HTML w inteligentnych znacznikach dla aplikacji .NET. +Odkryj potencjał Aspose.Cells dzięki temu samouczkowi krok po kroku dotyczącym korzystania z właściwości HTML w inteligentnych znacznikach dla aplikacji .NET. ### [Obsługa zagnieżdżonych obiektów za pomocą inteligentnych znaczników Aspose.Cells](./nested-objects-smart-markers/) Odkryj potencjał raportów programu Excel dzięki Aspose.Cells i bezproblemowo obsługuj zagnieżdżone obiekty, korzystając ze inteligentnych znaczników opisanych w przewodniku krok po kroku. ### [Implementacja zmiennej tablicy z inteligentnymi znacznikami Aspose.Cells](./variable-array-smart-markers/) Odblokuj moc Aspose.Cells. Dowiedz się, jak krok po kroku wdrożyć tablice zmiennych za pomocą Smart Markers, aby bezproblemowo generować raporty w programie Excel. +### [Jak wygenerować raport Excel w C# – pełny przewodnik z użyciem SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Krok po kroku pokażemy, jak przy pomocy SmartMarker w Aspose.Cells stworzyć kompletny raport Excel w C#, obejmujący konfigurację, wypełnianie danych i formatowanie. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/polish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..af2fef9f20 --- /dev/null +++ b/cells/polish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Jak generować raport Excel w C# przy użyciu szablonu master‑detail. Dowiedz + się, jak szybko wypełniać szablon Excel w C#, używając SmartMarker do powtarzalnych + arkuszy. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: pl +og_description: Jak wygenerować raport Excel w C# przy użyciu szablonu wielokrotnego + użytku. Ten przewodnik krok po kroku pokazuje, jak wypełnić szablon Excel w C# danymi + master‑detail. +og_title: Jak wygenerować raport Excel w C# – kompletny samouczek SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Jak wygenerować raport Excel w C# – pełny przewodnik z użyciem SmartMarker +url: /pl/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak wygenerować raport Excel w C# – Kompletny przewodnik z użyciem SmartMarker + +Zastanawiałeś się kiedyś **jak wygenerować raport Excel** w C# bez pisania niekończącego się kodu komórka‑po‑komórce? Nie jesteś sam. Większość deweloperów napotyka problem, gdy potrzebny jest elegancki raport wielo‑arkuszowy odzwierciedlający relacje master‑detail — pomyśl o zamówieniach i pozycjach zamówień — a nie chcą przy tym wymyślać koła od nowa przy każdym projekcie. + +Dobre wieści? Dzięki gotowemu szablonowi Excel oraz silnikowi **SmartMarker** z Aspose.Cells, możesz **populate Excel template C#** w zaledwie kilku linijkach. W tym tutorialu przejdziemy przez scenariusz z życia wzięty, wyjaśnimy, dlaczego każdy krok ma znaczenie, i dostarczymy kompletny, gotowy do uruchomienia przykład, który możesz skopiować‑wkleić już dziś. + +> **Co otrzymasz:** raport Excel master‑detail, w którym każde zamówienie generuje własny arkusz, wszystko napędzane zwykłymi obiektami C#. Bez ręcznego iterowania po komórkach, bez kruchych formuł — po prostu czysty, łatwy w utrzymaniu kod. + +--- + +## Prerequisites + +Zanim zaczniemy, upewnij się, że masz: + +- **.NET 6.0** (lub nowszy) zainstalowany – kod jest skierowany do .NET 6, ale działa także na .NET Framework 4.7+. +- **Aspose.Cells for .NET** pakiet NuGet (`Install-Package Aspose.Cells`) – dostarcza klasy `Workbook`, `SmartMarkerProcessor` i powiązane. +- Plik Excel o nazwie **MasterDetailTemplate.xlsx** umieszczony w `YOUR_DIRECTORY`. Powinien zawierać blok SmartMarker taki jak `{{Orders.OrderId}}` w pierwszym arkuszu oraz zagnieżdżony blok `{{Orders.Items.Prod}}` dla pozycji. +- Podstawową znajomość anonimowych typów w C# – użyjemy ich do modelowania zamówień i pozycji. + +Jeśli któryś z tych elementów jest Ci nieznany, nie martw się. Później wspomnimy o alternatywach (np. użycie EPPlus), ale podstawowa koncepcja pozostaje ta sama. + +--- + +## Krok 1: Załaduj szablon Excel zawierający bloki SmartMarker + +Pierwszą rzeczą, którą robimy, jest otwarcie pliku szablonu. Traktuj szablon jako szkielet; SmartMarker później wypełni go rzeczywistymi danymi. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Dlaczego to ważne:** Oddzielenie układu (szablonu) od danych (obiektów C#) sprawia, że projektanci i programiści są zadowoleni. Projektanci mogą modyfikować czcionki, kolory czy formuły bez ingerencji w kod. + +--- + +## Krok 2: Zbuduj źródło danych master‑detail + +Następnie tworzymy dane, które wypełnią szablon. Dla typowego raportu zamówień masz kolekcję zamówień, z których każde ma własną kolekcję pozycji. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Używaj typów silnie typowanych zamiast anonimowych, jeśli potrzebujesz ich ponownego użycia w wielu raportach. Podejście anonimowe utrzymuje przykład zwięzłym. + +**Dlaczego to ważne:** SmartMarker działa poprzez dopasowywanie nazw właściwości (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) do znaczników w szablonie. Hierarchia musi się zgadzać dokładnie, w przeciwnym razie silnik pominie te sekcje. + +--- + +## Krok 3: Powiedz SmartMarkerowi, aby utworzył nowy arkusz dla każdego rekordu master + +Domyślnie SmartMarker zapisuje wszystkie wiersze w jednym arkuszu. Chcemy, aby każde zamówienie znajdowało się w osobnym arkuszu, co jest idealne do późniejszego drukowania lub wysyłania PDF‑ów per zamówienie. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Dlaczego to ważne:** `EnableRepeatingSheet` eliminuje potrzebę ręcznego klonowania arkuszy. Silnik kopiuje oryginalny arkusz, wstrzykuje dane zamówienia i automatycznie zmienia nazwę arkusza (zazwyczaj używając wartości z pierwszej kolumny). + +--- + +## Krok 4: Przetwórz szablon przy użyciu danych + +Teraz łączymy wszystko razem. `SmartMarkerProcessor` przechodzi przez skoroszyt, zamienia znaczniki i tworzy nowe arkusze zgodnie z instrukcjami. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Dlaczego to ważne:** Ta pojedyncza linijka wykonuje najcięższą pracę — parsowanie szablonu, iterowanie po kolekcjach i obsługę zagnieżdżonych tabel. To serce **populate Excel template C#** bez żadnych ręcznych pętli. + +--- + +## Krok 5: Zapisz gotowy raport + +Na koniec zapisujemy wypełniony skoroszyt na dysku. Możesz także przesłać go bezpośrednio jako strumień w odpowiedzi HTTP dla aplikacji webowych. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Dlaczego to ważne:** Zapis do pliku daje nam namacalny artefakt, który można otworzyć w Excelu, udostępnić interesariuszom lub przekazać do dalszych procesów, np. konwersji do PDF. + +--- + +## Pełny działający przykład (Gotowy do kopiowania) + +Poniżej znajduje się kompletny program, łącznie z dyrektywami `using` i metodą `Main`. Wstaw go do aplikacji konsolowej, dostosuj ścieżki plików i uruchom. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Oczekiwany wynik + +Po otwarciu `MasterDetailResult.xlsx` zobaczysz: + +- **Arkusz „Order_1”** – zawiera nagłówek zamówienia 1 oraz dwa wiersze dla produktów A i B. +- **Arkusz „Order_2”** – zawiera nagłówek zamówienia 2 oraz pojedynczy wiersz dla produktu C. +- Wszystkie formuły, formatowanie i wykresy z oryginalnego szablonu pozostają nienaruszone. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Często zadawane pytania i przypadki brzegowe + +### Co zrobić, jeśli potrzebuję statycznego arkusza (np. podsumowania) obok powtarzających się arkuszy? + +Ustaw `EnableRepeatingSheet = true` **tylko** na arkuszu zawierającym blok master. Inne arkusze pozostaną nietknięte, więc możesz zachować stronę podsumowania w oryginalnym szablonie. + +### Czy mogę użyć DataTable zamiast anonimowych obiektów? + +Oczywiście. SmartMarker współpracuje z każdym obiektem implementującym `IEnumerable`. Po prostu zamień anonimowy typ na `DataTable` i upewnij się, że nazwy kolumn pasują do znaczników. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Jak zmienić konwencję nazewnictwa generowanych arkuszy? + +Zaimplementuj własny interfejs `ISmartMarkerSheetNaming` (lub manipuluj `workbook.Worksheets` po przetworzeniu). Większość deweloperów po prostu zmienia nazwę arkusza na podstawie wartości komórki: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Co jeśli mój szablon używa innej składni placeholderów? + +SmartMarker pozwala na niestandardowe delimitery poprzez `SmartMarkerOptions`. Na przykład, aby używać `<< >>` zamiast `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Wskazówki przy skalowaniu tego podejścia + +- **Cache'uj szablon** w pamięci, jeśli generujesz wiele raportów na żądanie; wczytywanie z dysku przy każdym wywołaniu zwiększa opóźnienie. +- **Połącz z konwersją do PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) dla wyjść przyjaznych e‑mailom. +- **Parametryzuj ścieżki plików** przy pomocy plików konfiguracyjnych lub zmiennych środowiskowych, aby rozwiązanie było przenośne między dev, test i prod. +- **Testuj warstwę danych** oddzielnie; SmartMarker jest deterministyczny, więc wystarczy zweryfikować, że dostarczane dane odpowiadają oczekiwanej schemacie. + +--- + +## Zakończenie + +Omówiliśmy **jak wygenerować raport Excel** w C# od początku do końca, od załadowania szablonu z włączonym SmartMarker po zapis wielo‑arkuszowego skoroszytu odzwierciedlającego relacje master‑detail. Dzięki **populate Excel template C#** w kilku linijkach kodu unikasz kruchej logiki komórka‑po‑komórce i dajesz projektantom swobodę kształtowania ostatecznego wyglądu. + +Następnie możesz zbadać: + +- Użycie **populate Excel template C#** z wykresami, które automatycznie aktualizują się w każdym arkuszu. +- Integrację **excel smartmarker c#** z ASP.NET Core, aby strumieniować raporty bezpośrednio do przeglądarek. +- Automatyzację **c# excel automation** pipeline’ów, które pobierają dane z API lub baz danych. + +Spróbuj, zmodyfikuj szablon i zobacz, jak szybko możesz przekształcić surowe dane w elegancki raport Excel. Masz pytania lub ciekawy przypadek użycia? zostaw komentarz poniżej — happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/polish/net/tables-and-lists/_index.md b/cells/polish/net/tables-and-lists/_index.md index 743ba9780d..972858bc80 100644 --- a/cells/polish/net/tables-and-lists/_index.md +++ b/cells/polish/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Naucz się konwertować tabele programu Excel do formatu ODS za pomocą Aspose.C Odblokuj moc Aspose.Cells dla .NET. Naucz się czytać i zapisywać tabele ze źródłami danych zapytań w tym szczegółowym przewodniku krok po kroku. ### [Ustaw komentarz tabeli lub listy w programie Excel](./setting-comment-of-table-or-list/) Dowiedz się, jak ustawiać komentarze dla tabel w programie Excel za pomocą Aspose.Cells dla platformy .NET, korzystając z naszego prostego przewodnika krok po kroku. +### [Utwórz tabelę Excel w C# – przewodnik krok po kroku](./create-excel-table-in-c-step-by-step-guide/) +Dowiedz się, jak w C# utworzyć tabelę Excel przy użyciu Aspose.Cells, krok po kroku, z praktycznymi przykładami. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/polish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/polish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..d1e7d6c299 --- /dev/null +++ b/cells/polish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-22 +description: Szybko utwórz tabelę Excel w C#. Dowiedz się, jak dodać tabelę, określić + zakres tabeli, ukryć nagłówek tabeli i wyłączyć filtr tabeli, wraz z kompletnym + przykładem kodu. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: pl +og_description: Utwórz tabelę Excel w C# z przejrzystym przykładem. Dowiedz się, jak + dodać tabelę, określić zakres tabeli, ukryć nagłówek tabeli i wyłączyć filtr w kilku + linijkach. +og_title: Utwórz tabelę Excel w C# – Kompletny przewodnik programistyczny +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Tworzenie tabeli Excel w C# – Przewodnik krok po kroku +url: /pl/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz tabelę Excel w C# – Przewodnik krok po kroku + +Kiedykolwiek potrzebowałeś **create Excel table** programowo przy użyciu C#? Tworzenie tabeli Excel może być bułką z masłem, gdy znasz właściwe kroki. W tym tutorialu przejdziemy przez pełny, uruchamialny przykład, który pokazuje **how to add table**, **define table range**, **hide table header**, a nawet **disable table filter** – wszystko bez opuszczania IDE. + +Jeśli kiedykolwiek miałeś problem z pojawiającym się interfejsem AutoFilter, którego nie chcesz, jesteś we właściwym miejscu. Po zakończeniu tego przewodnika będziesz mieć gotowy do uruchomienia fragment kodu, który tworzy czysty skoroszyt o nazwie *TableNoFilter.xlsx* i zrozumiesz, dlaczego każda linijka ma znaczenie. + +## Czego się nauczysz + +- Jak **create Excel table** od podstaw przy użyciu Aspose.Cells. +- Dokładna składnia do **define table range** (A1:D5 w naszym przypadku). +- Jak włączyć wiersz nagłówka, aby pojawił się wbudowany interfejs filtru. +- Sztuczka, aby **hide table header** i **disable table filter**, gdy nie są już potrzebne. +- Kompletny, gotowy do skopiowania program w C#, który możesz uruchomić już dziś. + +### Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również z .NET Framework 4.7+). +- Aspose.Cells dla .NET zainstalowany przez NuGet (`Install-Package Aspose.Cells`). +- Podstawowa znajomość C# i Visual Studio (lub dowolnego preferowanego IDE). + +--- + +## Krok 1: Skonfiguruj projekt i zaimportuj przestrzenie nazw + +Zanim będziesz mógł **create Excel table**, potrzebujesz projektu konsolowego, który odwołuje się do Aspose.Cells. Otwórz terminal i uruchom: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Teraz otwórz *Program.cs* i dodaj wymagane instrukcje `using`: + +```csharp +using System; +using Aspose.Cells; +``` + +Te importy dają dostęp do klas `Workbook`, `Worksheet`, `CellArea` i `ListObject`, które napędzają resztę tutorialu. + +## Krok 2: Zainicjuj nowy skoroszyt i pobierz pierwszy arkusz + +Tworzenie nowego skoroszytu to pierwszy logiczny krok. Pomyśl o skoroszycie jako kontenerze pliku Excel, a o arkuszu jako o pojedynczej karcie, na której umieścimy naszą tabelę. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Why this matters:** Nowy `Workbook` zaczyna się od jednego pustego arkusza. Pobierając `Worksheets[0]` zapewniamy, że pracujemy na domyślnym arkuszu, nie musząc tworzyć go ręcznie. + +## Krok 3: Zdefiniuj zakres tabeli (A1:D5) + +W terminologii Excela *tabela* znajduje się wewnątrz prostokątnego bloku komórek. Struktura `CellArea` pozwala nam wskazać ten blok. Tutaj pokażemy, jak **define table range** dla komórek od A1 do D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tip:** Jeśli potrzebujesz dynamicznego zakresu, możesz obliczyć `endRow` i `endColumn` na podstawie długości danych. Indeksowanie zerowe jest częstym źródłem błędów off‑by‑one, więc sprawdź swoje liczby podwójnie. + +## Krok 4: Dodaj tabelę i włącz wiersz nagłówka + +Teraz dochodzi serce tutorialu: **how to add table** do arkusza. Kolekcja `ListObjects` obsługuje tabele, a ustawienie `ShowHeaders = true` automatycznie wstawia interfejs AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explanation:** +> - `Add(tableRange, true)` tworzy nowy `ListObject` (czyli tabelę Excel) w określonym zakresie. +> - Flaga `true` informuje Aspose.Cells, że pierwszy wiersz zakresu ma być traktowany jako nagłówek. +> - Ustawienie `ShowHeaders` na `true` sprawia, że nagłówek jest widoczny i uruchamia wbudowany interfejs filtru. + +W tym momencie, jeśli otworzysz wygenerowany skoroszyt, zobaczysz ładnie sformatowaną tabelę z strzałkami filtrów w każdym nagłówku kolumny. + +## Krok 5: Ukryj wiersz nagłówka i wyłącz AutoFilter + +Czasami chcesz mieć dane bez zbędnego interfejsu. Być może eksportujesz czysty raport, w którym filtry nie są potrzebne. Oto technika **hide table header** i **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Why you’d do this:** +> - `ShowHeaders = false` usuwa widoczny wiersz nagłówka, zamieniając tabelę w zwykły blok danych. +> - Ustawienie `AutoFilter = null` usuwa ukryty obiekt filtru, zapewniając, że nie pozostają żadne resztkowe logiki filtrów. To właśnie oznacza **disable table filter**. + +## Krok 6: Zapisz skoroszyt na dysku + +Na koniec zapisujemy plik w wybranej lokalizacji. Zastąp `"YOUR_DIRECTORY"` rzeczywistą ścieżką na swoim komputerze. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Po uruchomieniu programu powinieneś zobaczyć: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Otwierając plik, zobaczysz arkusz z blokiem danych (bez nagłówka, bez strzałek filtrów). To pełny cykl – od **create Excel table** do **disable table filter**. + +--- + +## Pełny działający przykład (gotowy do kopiowania) + +Poniżej znajduje się cały program, gotowy do kompilacji. Wystarczy podmienić katalog zastępczy na prawidłową ścieżkę. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Expected result:** Plik o nazwie *TableNoFilter.xlsx* zawierający prosty zakres danych A1:D5 bez widocznego wiersza nagłówka i bez rozwijanych filtrów. + +--- + +## Najczęściej zadawane pytania i przypadki brzegowe + +### Co zrobić, jeśli potrzebuję wielu tabel w tym samym arkuszu? + +Po prostu powtórz **Krok 3** z nowym `CellArea` i nowym `ListObject`. Każda tabela zachowuje własne ustawienia nagłówka i filtru, więc możesz ukryć jedną, a drugą pozostawić widoczną. + +### Czy mogę stylizować tabelę (prążkowane wiersze, kolory) przed ukryciem nagłówka? + +Oczywiście. `ListObject` udostępnia właściwość `TableStyleType`. Na przykład: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Możesz zastosować styl **before** ukryjesz nagłówek; formatowanie wizualne pozostanie nienaruszone. + +### Co zrobić, jeśli chcę zachować nagłówek, ale ukryć strzałki filtru? + +Ustaw `ShowHeaders = true` (zachowaj wiersz) i następnie wyczyść filtr: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Spełnia to wymaganie **disable table filter** bez utraty etykiet kolumn. + +### Czy to działa tylko z plikami .xlsx? + +Aspose.Cells automatycznie wykrywa format na podstawie rozszerzenia pliku podanego w metodzie `Save`. Możesz także wyjść do `.xls`, `.csv` lub nawet `.pdf`, zmieniając rozszerzenie. + +## Podsumowanie + +Właśnie omówiliśmy wszystko, co potrzebne, aby **create Excel table** w C# przy użyciu Aspose.Cells, od **define table range** po **hide table header** i **disable table filter**. Kod jest krótki, przejrzysty i gotowy do użycia w produkcji. + +Następnie możesz zbadać **how to add table** z dynamicznymi danymi, zastosować własne style lub wyeksportować ten sam skoroszyt do PDF. Każdy z tych tematów opiera się na fundamentach, które właśnie opanowałeś, więc śmiało eksperymentuj i dostosowuj fragment do własnych projektów. + +Masz własny pomysł, którym chcesz się podzielić? Dodaj komentarz poniżej i powodzenia w kodowaniu! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/converting-excel-files-to-other-formats/_index.md b/cells/portuguese/net/converting-excel-files-to-other-formats/_index.md index 69e0db5d97..47405008d7 100644 --- a/cells/portuguese/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/portuguese/net/converting-excel-files-to-other-formats/_index.md @@ -66,6 +66,11 @@ Aprenda como salvar uma pasta de trabalho no formato Strict Open XML Spreadsheet Descrição: Aprenda a rastrear o progresso da conversão de documentos programaticamente usando o Aspose.Cells para .NET neste tutorial detalhado. ### [Acompanhamento do progresso da conversão de documentos para TIFF programaticamente no .NET](./tracking-document-conversion-progress-for-tiff/) Aprenda a acompanhar o progresso da conversão de TIFF programaticamente usando o Aspose.Cells para .NET com nosso guia passo a passo. Aprimore suas habilidades de gerenciamento de documentos. +### [Definir Área de Impressão no Excel e Exportar para PowerPoint – Guia Passo a Passo](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Aprenda a definir a área de impressão no Excel e exportar para PowerPoint usando Aspose.Cells para .NET neste guia passo a passo. + +### [Exportar Excel para PowerPoint – Guia Completo em C#](./export-excel-to-powerpoint-complete-c-guide/) +Aprenda a exportar planilhas do Excel para PowerPoint usando Aspose.Cells para .NET com este guia passo a passo em C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/portuguese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..3f71bb9eb9 --- /dev/null +++ b/cells/portuguese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Aprenda a exportar o Excel para PowerPoint, definir a área de impressão + no Excel e salvar o Excel como PPTX com gráficos editáveis e objetos OLE em apenas + alguns passos. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: pt +og_description: Exporte o Excel para PowerPoint rapidamente. Este tutorial mostra + como definir a área de impressão no Excel e salvar o Excel como PPTX com gráficos + editáveis e objetos OLE. +og_title: Exportar Excel para PowerPoint – Guia Completo de C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Exportar Excel para PowerPoint – Guia Completo em C# +url: /pt/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Exportar Excel para PowerPoint – Guia Completo em C# + +Precisa **exportar Excel para PowerPoint**? Você está no lugar certo. Seja para montar um deck de vendas semanal ou automatizar um pipeline de relatórios, transformar uma planilha Excel em uma apresentação PowerPoint pode economizar horas de trabalho de copiar‑e‑colar. + +Neste tutorial vamos percorrer um exemplo prático que não só **exporta excel para powerpoint**, mas também mostra como **definir área de impressão Excel** e **salvar excel como pptx** para que os slides resultantes mantenham gráficos e objetos OLE totalmente editáveis. Ao final, você terá um programa C# pronto‑para‑executar que produz um arquivo `.pptx` com aparência profissional sem nenhum ajuste manual. + +## O que você vai precisar + +- **.NET 6+** (qualquer runtime .NET recente funciona; o código usa sintaxe C# 10) +- **Aspose.Cells for .NET** – a biblioteca que realiza a exportação. Você pode obtê‑la via NuGet (`Install-Package Aspose.Cells`). +- Uma pasta de trabalho Excel que contenha ao menos um gráfico e/ou um objeto OLE (o arquivo de exemplo `ChartAndOle.xlsx` é usado no código). +- Uma IDE favorita (Visual Studio, Rider ou VS Code – o que preferir). + +É só isso. Sem interop COM, sem necessidade de instalação do Office. + +> **Por que usar uma biblioteca?** +> O Interop Office nativo é frágil, requer Office no servidor e costuma gerar imagens rasterizadas quando você realmente quer formas vetoriais editáveis. Aspose.Cells cuida do trabalho pesado e mantém tudo editável no PowerPoint. + +--- + +## Etapa 1: Carregar a pasta de trabalho Excel + +Primeiro trazemos o arquivo fonte para a memória. A classe `Workbook` abstrai todo o arquivo Excel, dando acesso a planilhas, gráficos e objetos OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Por que isso importa:** Carregar a pasta de trabalho é a base. Se o caminho estiver errado ou o arquivo corrompido, o restante do pipeline nunca será executado. O bloco `try…catch` fornece um erro amigável em vez de uma falha. + +--- + +## Etapa 2: Definir a área de impressão no Excel + +Antes de exportar, normalmente você quer limitar a saída a um intervalo específico. É aqui que **definir área de impressão excel** entra em ação. Ao definir uma área de impressão, você indica ao Aspose.Cells exatamente quais células (e objetos associados) devem aparecer no slide. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Dica profissional:** Se você tem várias planilhas, repita a atribuição `PrintArea` para cada uma que planeja exportar. Deixar a área de impressão indefinida exportará a planilha inteira, o que pode inflar o arquivo PowerPoint. + +--- + +## Etapa 3: Configurar opções de exportação – Manter gráficos e OLE editáveis + +Aspose.Cells oferece um rico objeto `ImageOrPrintOptions`. Ao alternar `ExportChartObjects` e `ExportOleObjects` preservamos a natureza vetorial dos gráficos e a editabilidade ao vivo dos objetos OLE (como documentos Word ou PDFs incorporados). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**O que acontece nos bastidores?** +Quando `ExportChartObjects` está `true`, o Aspose converte o gráfico em um objeto de gráfico nativo do PowerPoint, preservando séries, eixos e formatação. Com `ExportOleObjects` habilitado, os objetos incorporados são inseridos como quadros OLE, de modo que um duplo‑clique no PowerPoint abre o aplicativo original (Word, Excel, etc.) para edição. + +--- + +## Etapa 4: Salvar a planilha como um arquivo PowerPoint editável + +Agora juntamos tudo. O método `Save` grava o arquivo `.pptx` usando as opções que configuramos. O resultado é um deck de slides onde cada planilha se torna um slide (ou uma série de slides se a área de impressão abranger várias páginas). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Resultado esperado + +- **Local do arquivo:** `C:\MyProjects\EditableChartOle.pptx` +- **Conteúdo:** + - Um slide mostrando o intervalo `A1:H30` exatamente como aparece no Excel. + - Todos os gráficos são objetos de gráfico do PowerPoint — clique em uma barra e edite os dados. + - Objetos OLE (por exemplo, um documento Word incorporado) podem ser abertos e editados diretamente a partir do slide. + +Se você abrir o PPTX no PowerPoint, deverá ver um slide limpo com componentes totalmente editáveis — sem capturas de tela rasterizadas. + +--- + +## Casos de borda e variações + +### Múltiplas planilhas → Múltiplos slides +Se quiser que cada planilha se torne seu próprio slide, basta percorrer `workbook.Worksheets` e chamar `Save` com um `SheetToImageOptions` que aponte para um índice de planilha específico. O Aspose gerará automaticamente um novo slide para cada iteração. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Grandes intervalos e desempenho +Exportar uma área de impressão massiva (por exemplo, `A1:Z1000`) pode aumentar o uso de memória. Para mitigar, considere: +- Dividir o intervalo em blocos menores e exportá‑los como slides separados. +- Usar `WorkbookSettings` para aumentar o `MemorySetting` caso encontre `OutOfMemoryException`. + +### Questões de compatibilidade +O PPTX gerado funciona com PowerPoint 2016 e versões posteriores. Versões mais antigas podem abrir o arquivo, mas podem perder alguns recursos avançados de gráfico. Sempre teste na versão do Office alvo se você for distribuir a apresentação amplamente. + +--- + +## Exemplo completo (pronto para copiar‑colar) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Dica:** Substitua os caminhos codificados por valores de configuração ou argumentos de linha de comando para tornar a ferramenta mais flexível. + +--- + +## Perguntas frequentes + +**P: Posso exportar apenas um gráfico sem as células ao redor?** +R: Sim. Use apenas `ExportChartObjects` e defina a área de impressão para o intervalo que delimita o gráfico. O gráfico aparecerá centralizado no slide. + +**P: E se minha pasta de trabalho contiver macros?** +R: Aspose.Cells ignora macros VBA durante a exportação. Se precisar de funcionalidade de macro no PowerPoint, será necessário recriá‑la usando VBA do PowerPoint ou complementos. + +**P: Isso funciona em Linux/macOS?** +R: Absolutamente. Aspose.Cells é uma biblioteca .NET pura; desde que você tenha o runtime .NET, o código roda em multiplataforma. + +--- + +## Conclusão + +Você acabou de aprender como **exportar Excel para PowerPoint** enquanto define precisamente **área de impressão excel** e **salva excel como pptx** com gráficos e objetos OLE totalmente editáveis. Os passos chave são carregar a pasta de trabalho, definir a área de impressão, configurar `ImageOrPrintOptions` e, por fim, salvar o PPTX. + +A partir daqui, você pode explorar: +- Exportar múltiplas planilhas em um único deck. +- Adicionar títulos de slide ou notas personalizados programaticamente. +- Converter o PPTX para PDF para distribuição (use `SaveFormat.Pdf`). + +Teste o código, ajuste a área de impressão e veja seus dados do Excel aparecerem magicamente no PowerPoint — sem necessidade de copiar‑e‑colar manual. Se encontrar algum obstáculo, consulte a documentação do Aspose.Cells ou deixe um comentário abaixo. Feliz codificação! + +![Diagrama mostrando o fluxo de exportar excel para powerpoint](/images/export-excel-to-powerpoint.png "fluxo de exportar excel para powerpoint") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/portuguese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..260803d241 --- /dev/null +++ b/cells/portuguese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-03-22 +description: Defina a área de impressão no Excel e converta o Excel para PowerPoint + com formas editáveis. Aprenda como repetir a linha de título, criar PowerPoint a + partir do Excel e exportar o Excel para pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: pt +og_description: Defina a área de impressão no Excel e converta-a em um slide do PowerPoint + com formas editáveis. Siga este guia completo para repetir a linha de título e exportar + o Excel para pptx. +og_title: Definir Área de Impressão no Excel – Tutorial de Exportação para PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Definir Área de Impressão no Excel e Exportar para o PowerPoint – Guia Passo + a Passo +url: /pt/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Definir Área de Impressão no Excel e Exportar para PowerPoint – Tutorial de Programação Completo + +Já precisou **definir a área de impressão** em uma planilha do Excel e depois transformar essa parte em um slide do PowerPoint? Você não está sozinho. Em muitos pipelines de relatórios, os mesmos dados que imprimem bem também precisam aparecer em uma apresentação, frequentemente com a primeira linha repetida como título. A boa notícia? Com algumas linhas de C# você pode **converter excel to powerpoint**, manter todas as caixas de texto editáveis e ainda **repetir a linha de título** automaticamente. + +Neste guia vamos percorrer tudo o que você precisa saber: desde a configuração da área de impressão até a criação de um arquivo PPTX que pode ser editado diretamente no PowerPoint. Ao final, você será capaz de **create powerpoint from excel**, exportar o resultado como **export excel to pptx** e reutilizar o mesmo código em qualquer projeto .NET. Sem mágica, apenas passos claros e um exemplo completo e executável. + +## O que Você Precisa + +Antes de mergulharmos, verifique se você tem: + +- **.NET 6.0** ou superior (a API também funciona com .NET Framework) +- **Aspose.Cells for .NET** (a biblioteca que fornece `Workbook`, `ImageOrPrintOptions`, etc.) +- Um IDE básico de C# (Visual Studio, Rider ou VS Code com a extensão C#) +- Um arquivo Excel (`input.xlsx`) que contenha os dados que você deseja exportar + +É só isso — sem pacotes NuGet extras além do Aspose.Cells. Se ainda não adicionou a biblioteca, execute: + +```bash +dotnet add package Aspose.Cells +``` + +Agora estamos prontos para começar. + +## Etapa 1: Carregar a Pasta de Trabalho – o Ponto de Partida para a Exportação + +A primeira coisa que você deve fazer é carregar a pasta de trabalho que contém a planilha que você quer transformar em um slide. Pense na pasta de trabalho como o documento fonte; sem ela, nada mais importa. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Por que isso importa:** Carregar a pasta de trabalho dá acesso à coleção de planilhas, às opções de configuração de página e ao motor de exportação. Se você pular esta etapa, não conseguirá definir a **print area** nem repetir linhas. + +> **Dica profissional:** Use um caminho absoluto durante os testes e, depois, troque para um caminho relativo ou baseado em configuração para produção. + +## Etapa 2: Configurar Opções de Exportação – Manter Caixas de Texto e Formas Editáveis + +Ao exportar para PowerPoint, provavelmente você quer que o slide resultante seja editável. O Aspose.Cells permite controlar isso com `ImageOrPrintOptions`. Definir `ExportTextBoxes` e `ExportShapeObjects` como `true` indica à biblioteca que preserve esses objetos como elementos nativos do PowerPoint, em vez de achatá‑los em uma imagem. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Por que isso importa:** Se você precisar **convert excel to powerpoint** e depois ajustar o slide manualmente, essa configuração evita que você tenha que recriar caixas de texto do zero. Também garante que quaisquer formas (como setas ou gráficos) permaneçam como objetos vetoriais que podem ser redimensionados. + +## Etapa 3: Definir a Área de Impressão e Repetir a Linha de Título + +Agora chegamos ao coração do tutorial: **set print area** e fazer a primeira linha repetir em cada página impressa (ou, no nosso caso, em cada slide exportado). A área de impressão indica ao Excel quais células considerar para impressão — ou exportação, neste cenário. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Por que isso importa:** Ao limitar a exportação a `A1:G20` você evita trazer intervalos vazios enormes, o que acelera a conversão e mantém o slide organizado. A linha `PrintTitleRows` faz com que a primeira linha funcione como cabeçalho — exatamente o que você deseja ao **repeat title row** em uma apresentação. + +> **Caso especial:** Se seus dados começarem na linha 2, ajuste o intervalo adequadamente (por exemplo, `PrintTitleRows = "$2:$2"`). + +## Etapa 4: Salvar a Planilha como Arquivo PowerPoint + +Por fim, gravamos o slide no disco. O método `Save` recebe o nome do arquivo de destino e as opções que configuramos anteriormente. O resultado é um arquivo PPTX com caixas de texto e formas editáveis, pronto para ser aberto no PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**O que você verá:** Abra `SheetWithEditableShapes.pptx` no PowerPoint. A primeira linha aparece como título, todas as células de `A1:G20` são renderizadas e quaisquer formas que você adicionou no Excel continuam móveis e editáveis. Sem imagens rasterizadas — apenas objetos nativos do PowerPoint. + +## Exemplo Completo – Todas as Etapas Combinadas + +Abaixo está o programa completo, pronto para copiar e colar. Execute-o como um aplicativo de console ou incorpore-o em qualquer solução maior. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Saída esperada:** Após executar o programa, o console exibe a mensagem de sucesso e o arquivo PPTX aparece no local especificado. Ao abrir o arquivo, você verá um único slide com o intervalo selecionado, caixas de texto editáveis e quaisquer formas originais. + +## Perguntas Frequentes & Armadilhas + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Yes. Loop through `workbook.Worksheets` and repeat the same steps for each sheet, changing the output filename each time. | +| **What if I need to export more than one slide?** | Call `workbook.Save` multiple times with different `ImageOrPrintOptions` objects, each configured with a different `PageSetup` if needed. | +| **Can I change the slide size?** | Use `exportOptions.ImageFormat` to set DPI, or adjust `sheet.PageSetup.PaperSize` before saving. | +| **Is Aspose.Cells free?** | It offers a free evaluation with watermarks. For production, a license is required. | +| **What about Excel formulas?** | The exported values are the **calculated results** at the time of export. If you need live formulas in PowerPoint, you’ll need a different approach. | + +## Dicas para um Workflow Fluido + +- **Pro tip:** Set `Workbook.Settings.CalcMode = CalculationModeType.Automatic` before export to guarantee all formulas are up‑to‑date. +- **Watch out for:** Very large ranges can cause memory pressure. Trim the print area to the smallest necessary range. +- **Performance tip:** Reuse a single `ImageOrPrintOptions` instance if you’re exporting many sheets; creating a new one each time adds overhead. +- **Version note:** The code above targets Aspose.Cells 23.10 (released November 2023). Later versions keep the same API, but always double‑check the release notes for breaking changes. + +## Conclusão + +Cobremos como **set print area** em uma planilha do Excel, repetir a primeira linha como título e então **export excel to pptx** preservando caixas de texto e formas editáveis. Em resumo, agora você conhece um método confiável para **convert excel to powerpoint**, **repeat title row** e **create powerpoint from excel** com apenas algumas linhas de C#. + +Pronto para o próximo passo? Experimente automatizar a conversão em lote de dezenas de relatórios ou adicione layouts de slide personalizados usando o PowerPoint SDK após a exportação. O céu é o limite — experimente, quebre coisas e aproveite o poder da geração programática de documentos. + +Se este tutorial foi útil, compartilhe, deixe um comentário com suas próprias adaptações ou explore nossos outros guias sobre **export excel to pptx** e tópicos de automação relacionados. Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/csv-file-handling/_index.md b/cells/portuguese/net/csv-file-handling/_index.md index 6743339cc9..63c30ed637 100644 --- a/cells/portuguese/net/csv-file-handling/_index.md +++ b/cells/portuguese/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Para obter mais informações, sinta-se à vontade para verificar nossos tutoria Aprenda a abrir arquivos CSV usando o Aspose.Cells para .NET com nosso guia passo a passo completo. Domine a manipulação de dados. ### [Abrindo arquivos CSV com o analisador preferido](./csv-file-opening-csv-files-with-preferred-parser/) Aprenda a abrir e analisar arquivos CSV com analisadores personalizados no Aspose.Cells para .NET. Lide com texto e datas sem esforço. Perfeito para desenvolvedores. +### [Salvar pasta de trabalho como CSV em C# – Exportar Excel para CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aprenda a salvar uma pasta de trabalho do Aspose.Cells como arquivo CSV usando C#, facilitando a exportação de dados do Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/portuguese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..edf62cc295 --- /dev/null +++ b/cells/portuguese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Salve a pasta de trabalho como CSV em C# rapidamente. Aprenda como exportar + Excel para CSV, definir a precisão e converter xlsx para CSV com Aspose.Cells em + apenas algumas linhas. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: pt +og_description: Salve a pasta de trabalho como CSV em C# rapidamente. Este guia mostra + como exportar Excel para CSV, definir a precisão e converter xlsx para CSV usando + Aspose.Cells. +og_title: Salvar planilha como CSV em C# – Exportar Excel para CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Salvar pasta de trabalho como CSV em C# – Exportar Excel para CSV +url: /pt/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar pasta de trabalho como CSV em C# – Exportar Excel para CSV + +Já precisou **salvar pasta de trabalho como CSV** mas não tinha certeza de como manter os números organizados? Você não está sozinho. Em muitos cenários de pipelines de dados precisamos **exportar Excel para CSV** preservando um número específico de dígitos significativos, e a biblioteca Aspose.Cells torna isso muito fácil. + +Neste tutorial você verá um exemplo completo, pronto‑para‑executar, que **salva uma pasta de trabalho como CSV**, mostra *como definir precisão* e ainda explica *como converter xlsx para CSV* em projetos reais. Sem referências vagas — apenas código que você pode copiar, colar e executar hoje. + +## O que você aprenderá + +- Os passos exatos para **salvar pasta de trabalho como CSV** com uma configuração de precisão personalizada. +- Como **exportar Excel para CSV** usando `CsvSaveOptions` e por que a propriedade `SignificantDigits` é importante. +- Variações para diferentes necessidades de precisão e armadilhas comuns ao lidar com números grandes. +- Uma visão rápida de como converter um arquivo `.xlsx` para `.csv` sem perder a integridade dos dados. + +### Pré-requisitos + +- .NET 6.0 ou posterior (o código funciona também no .NET Framework 4.6+). +- O pacote NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Um entendimento básico de C# e I/O de arquivos. + +Se você tem esses requisitos, vamos mergulhar. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Salvar pasta de trabalho como CSV – Guia passo a passo + +Abaixo está o programa completo. Cada linha está comentada para que você possa ver *por que* cada parte está lá, não apenas *o que* ela faz. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Por que usar `CsvSaveOptions.SignificantDigits`? + +Ao **definir precisão** para uma exportação CSV, você está realmente decidindo quantos dígitos de um número de ponto flutuante sobrevivem à conversão. O Excel armazena números com até 15 dígitos de precisão, mas a maioria dos sistemas downstream (bancos de dados, pipelines de análise) precisa de apenas alguns. Definindo `SignificantDigits = 4`, a biblioteca arredonda `123.456789` para `123.5`, mantendo o arquivo compacto e legível. + +> **Dica profissional:** Se você precisar de valores *exatos* (por exemplo, para dados financeiros), defina `SignificantDigits` com um número maior ou omita-o completamente. O padrão é 15, que reflete a precisão interna do Excel. + +## Exportar Excel para CSV – Variações comuns + +### Alterando o delimitador + +Alguns sistemas esperam um ponto e vírgula (`;`) em vez de vírgula. Você pode ajustá-lo assim: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exportando uma planilha específica + +Se você quiser exportar apenas a segunda planilha, substitua o bloco opcional por: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Então chame `workbook.Save` como antes. Essa técnica é útil quando você **converte xlsx para csv**, mas só se importa com uma aba específica. + +### Lidando com grandes conjuntos de dados + +Ao lidar com milhões de linhas, considere transmitir o CSV em vez de carregar toda a pasta de trabalho na memória. Aspose.Cells oferece a propriedade `ExportDataOnly` de `CsvSaveOptions` que ignora informações de estilo, reduzindo o uso de memória: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Como exportar CSV – Verificando o resultado + +Depois de executar o programa, abra `Numbers_4sd.csv` em um editor de texto simples. Você deve ver algo como: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Observe como os números estão limitados a quatro dígitos significativos, exatamente como solicitamos. Se você abrir o arquivo no Excel, os valores aparecerão idênticos porque o Excel respeita o arredondamento aplicado durante a exportação. + +## Casos de borda e solução de problemas + +| Situação | O que verificar | Correção | +|-----------|----------------|----------| +| **Arquivo não encontrado** | Verifique se `sourcePath` aponta para um arquivo `.xlsx` real. | Use `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Arredondamento incorreto** | Certifique-se de que `SignificantDigits` está definido antes de chamar `Save`. | Mova a atribuição de `CsvSaveOptions` para antes ou verifique novamente o valor. | +| **Caracteres especiais aparecem como �** | A codificação CSV padrão é UTF‑8 sem BOM. | Defina `csvOptions.Encoding = System.Text.Encoding.UTF8` ou `Encoding.Unicode`. | +| **Colunas vazias extras** | Algumas planilhas têm formatação residual além do intervalo usado. | Chame `worksheet.Cells.MaxDisplayRange` para cortar colunas não usadas antes da exportação. | + +## Como definir precisão dinamicamente + +Às vezes a precisão necessária não é conhecida em tempo de compilação. Você pode lê‑la de um arquivo de configuração ou argumento de linha de comando: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Agora você pode executar: + +``` +dotnet run -- 6 +``` + +e obter um CSV com seis dígitos significativos. Esse pequeno ajuste torna a solução flexível para **como exportar csv** em ambientes variados. + +## Recapitulação do exemplo completo em funcionamento + +Juntando tudo, o programa completo (incluindo ajustes opcionais) fica assim: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Execute o programa, abra o CSV gerado e você verá a precisão solicitada, confirmando que você salvou a pasta de trabalho como CSV com sucesso. + +## Conclusão + +Agora você tem uma receita sólida e pronta para produção para **salvar uma pasta de trabalho como CSV** em C#. O guia abordou *como exportar Excel para CSV*, demonstrou *como definir precisão* via `CsvSaveOptions.SignificantDigits`, e mostrou várias variações para cenários de **converter xlsx para csv**. Com o snippet completo de código, você pode inserir isso em qualquer projeto .NET e começar a exportar dados imediatamente. + +**Próximos passos?** + +- Experimente diferentes delimitadores (`;`, `\t`) para exportações TSV. +- Combine esta abordagem com um monitor de arquivos para automatizar a geração de CSV sempre que um arquivo Excel mudar. +- Explore `CsvLoadOptions` do Aspose.Cells caso você precise ler CSVs de volta para uma pasta de trabalho. + +Sinta-se à vontade para ajustar a precisão, adicionar cabeçalhos personalizados ou conectar o exportador + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/document-properties/_index.md b/cells/portuguese/net/document-properties/_index.md index 7e5d8f7b57..5a037d7d21 100644 --- a/cells/portuguese/net/document-properties/_index.md +++ b/cells/portuguese/net/document-properties/_index.md @@ -17,7 +17,7 @@ ## Introdução -As propriedades do documento no Excel funcionam como metadados sobre o seu arquivo. Imagine: cada arquivo do Excel tem seu próprio cartão de identidade que contém informações cruciais, como título, autor e palavras-chave. Ao usar o Aspose.Cells para .NET, acessar e gerenciar essas propriedades se torna muito fácil. Lembre-se: essas propriedades não só ajudam a manter seus arquivos organizados, como também podem melhorar a capacidade de pesquisa dos seus documentos. Curioso para saber como? Vamos aos tutoriais! +As propriedades do documento no Excel funcionam como metadados sobre o seu arquivo. Imagine: cada arquivo do Excel tem seu próprio cartão de identidade que contém informações cruciais, como título, autor e palavras‑chave. Ao usar o Aspose.Cells para .NET, acessar e gerenciar essas propriedades se torna muito fácil. Lembre-se: essas propriedades não só ajudam a manter seus arquivos organizados, como também podem melhorar a capacidade de pesquisa dos seus documentos. Curioso para saber como? Vamos aos tutoriais! ## Acessando Propriedades do Documento Primeiro, vamos falar sobre como acessar propriedades de documentos no .NET. Este é o seu ponto de partida. Imagine querer saber quem é o autor de uma planilha específica — usando Aspose.Cells, você pode obter essas informações rapidamente. [Acessando Propriedades de Documentos no .NET](./accessing-document-properties/) tutorial é o seu guia prático, oferecendo um passo a passo intuitivo para encontrar essas preciosidades escondidas em seus arquivos. Você aprenderá a recuperar propriedades como a data de criação e a data da última modificação, e acredite, é mais simples do que uma manhã de domingo! @@ -35,6 +35,8 @@ Aprenda a acessar propriedades de documentos no Excel usando o Aspose.Cells para Aprenda a acessar as propriedades de documentos no Excel usando o Aspose.Cells para .NET com nosso guia passo a passo. Gerencie suas planilhas com eficiência. ### [Adicionando propriedades de documento no .NET](./adding-document-properties/) Aprenda como adicionar propriedades de documento no Excel usando o Aspose.Cells para .NET com este guia passo a passo detalhado. +### [Criar Pasta de Trabalho Excel – Adicionar Propriedades Personalizadas e Salvar como XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Aprenda a criar uma pasta de trabalho Excel, adicionar propriedades personalizadas e salvá‑la no formato XLSB usando Aspose.Cells para .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/portuguese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..ac6a117b6e --- /dev/null +++ b/cells/portuguese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-22 +description: Criar pasta de trabalho do Excel, adicionar propriedades personalizadas, + definir o nome da planilha e salvar como arquivo binário XLSB usando C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: pt +og_description: Criar uma pasta de trabalho do Excel, adicionar propriedades personalizadas, + definir o nome da planilha e salvar como arquivo binário XLSB usando C#. +og_title: Criar Pasta de Trabalho do Excel – Adicionar Propriedades Personalizadas + e Salvar como XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Criar Pasta de Trabalho do Excel – Adicionar Propriedades Personalizadas e + Salvar como XLSB +url: /pt/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Pasta de Trabalho Excel – Adicionar Propriedades Personalizadas e Salvar como XLSB + +Já precisou **criar uma pasta de trabalho Excel** programaticamente, mas também manter alguns metadados anexados? Talvez você esteja construindo um mecanismo de relatórios que marca cada arquivo com um ID de relatório, nome do autor ou número da versão. Nesse caso, aprender a **adicionar propriedades personalizadas** enquanto **define o nome da planilha** e, finalmente, **salva como XLSB** economizará muito trabalho manual de pós‑processamento. + +Neste tutorial, percorreremos um exemplo completo e executável que mostra exatamente como **escrever um arquivo Excel binário** usando C#. Você verá por que o formato XLSB é a escolha certa para transportar propriedades personalizadas, como evitar as armadilhas mais comuns e o que fazer se precisar oferecer suporte a versões mais antigas do Excel. + +--- + +## O que Você Precisa + +- **.NET 6+** (ou .NET Framework 4.6+). O código funciona em qualquer runtime recente. +- **Aspose.Cells for .NET** (versão de avaliação ou licenciada). Ele fornece as classes `Workbook`, `Worksheet` e `CustomProperties` usadas abaixo. +- Uma IDE com a qual você se sinta confortável – Visual Studio, Rider ou até mesmo VS Code serve. +- Permissão de gravação em uma pasta onde o arquivo gerado será salvo. + +Nenhuma outra biblioteca de terceiros é necessária. + +--- + +## Etapa 1: Instalar Aspose.Cells + +Para começar, adicione o pacote NuGet Aspose.Cells ao seu projeto: + +```bash +dotnet add package Aspose.Cells +``` + +> **Dica profissional:** Se você estiver em um servidor de CI, armazene a chave de licença em uma variável de ambiente e carregue‑a em tempo de execução – isso impede que a marca d'água de “avaliação” apareça no seu output. + +--- + +## Etapa 2: Criar Pasta de Trabalho Excel – Visão Geral + +A primeira ação real é **criar a pasta de trabalho Excel**. Esse objeto representa todo o arquivo na memória e fornece acesso a planilhas, estilos e propriedades personalizadas. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Por que instanciar um `Workbook` novo em vez de carregar um modelo? Uma pasta de trabalho em branco garante que não haja estilos ocultos ou propriedades personalizadas residuais, o que é especialmente importante quando você pretende **escrever um arquivo Excel binário** para sistemas downstream que esperam um ponto de partida limpo. + +--- + +## Etapa 3: Definir Nome da Planilha (e Por Que Isso Importa) + +As planilhas do Excel têm, por padrão, nomes como “Sheet1”, “Sheet2”, etc. Dar à planilha um nome significativo facilita o processamento downstream — como Power Query ou macros VBA — tornando a leitura muito mais simples. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Se você tentar atribuir um nome duplicado, o Aspose.Cells lançará uma `ArgumentException`. Para ficar seguro, você pode verificar `Worksheets.Exists("Data")` antes de renomear. + +--- + +## Etapa 4: Adicionar Propriedades Personalizadas + +As propriedades personalizadas são armazenadas no XML interno da pasta de trabalho e viajam com o arquivo independentemente do formato. Elas são perfeitas para incorporar coisas como `ReportId` ou `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Por que usar propriedades personalizadas?** +> • Elas são acessíveis via o painel “Arquivo → Informações → Propriedades” do Excel. +> • O código que consome a pasta de trabalho pode lê‑las sem precisar analisar o conteúdo das células. +> • Elas sobrevivem a conversões de formato (XLSX ↔ XLSB) porque fazem parte dos metadados do arquivo. + +Você também pode armazenar datas, booleanos ou até blobs binários, mas mantenha a carga útil pequena — o Excel não é um banco de dados. + +--- + +## Etapa 5: Salvar como XLSB (Escrever Arquivo Excel Binário) + +O formato XLSB armazena os dados em uma estrutura binária, o que torna o arquivo menor e mais rápido de abrir. Mais importante para este tutorial, **as propriedades personalizadas são incorporadas ao fluxo binário**, garantindo que viajem junto com o arquivo. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Resultado Esperado + +Depois de executar o programa, você encontrará `WithCustomProps.xlsb` na sua área de trabalho. Abra-o no Excel, vá em **Arquivo → Informações → Propriedades**, e verá `ReportId` e `GeneratedBy` listados em *Personalizado*. + +--- + +## Etapa 6: Casos de Borda & Perguntas Frequentes + +### E se a pasta de destino for somente‑leitura? + +Envolva a chamada `Save` em um bloco `try/catch` e faça fallback para um local gravável pelo usuário, como `%TEMP%`. Isso impede que a aplicação trave por erros de permissão. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Posso **salvar como XLSX** e ainda manter as propriedades personalizadas? + +Sim — basta mudar `SaveFormat.Xlsb` para `SaveFormat.Xlsx`. As propriedades são armazenadas na mesma parte XML, portanto sobrevivem à troca de formato. Contudo, arquivos XLSX são maiores porque são XML compactado, enquanto XLSB oferece melhor desempenho para grandes volumes de dados. + +### Como leio as propriedades personalizadas depois? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Este trecho imprime cada propriedade personalizada, facilitando a verificação da procedência do arquivo por serviços downstream. + +--- + +## Exemplo Completo Funcional + +Abaixo está o programa completo que você pode copiar‑colar em um novo projeto de console. Nenhuma parte está faltando — tudo, desde as instruções `using` até o `Console.WriteLine` final, está incluído. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Execute o programa, abra o arquivo resultante e verifique as propriedades personalizadas. Esse é o fluxo completo de **criar pasta de trabalho Excel**, **adicionar propriedades personalizadas**, **definir nome da planilha** e **salvar como XLSB** em uma sequência organizada. + +--- + +## Conclusão + +Agora você sabe exatamente como **criar uma pasta de trabalho Excel**, dar à sua planilha um **nome de planilha claro**, incorporar metadados úteis com **adicionar propriedades personalizadas** e, finalmente, **salvar como XLSB** para produzir um arquivo Excel compacto e binário. Esse fluxo de trabalho é confiável, funciona em várias versões do .NET e escala bem, seja gerando um relatório ou mil. + +Qual o próximo passo? Experimente adicionar uma tabela de dados à planilha “Data”, teste diferentes tipos de propriedade (datas, booleanos) ou altere a saída para **salvar como xlsb** em conjuntos de dados massivos. Você também pode explorar a proteção da pasta de trabalho com senha — o Aspose.Cells faz isso em uma única linha. + +Sinta‑se à vontade para deixar um comentário se encontrar algum obstáculo, ou compartilhar como você estendeu esse padrão em seus próprios projetos. Boa codificação! + +--- + +![Create Excel workbook screenshot](image.png){alt="Criar pasta de trabalho Excel com propriedades personalizadas"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/excel-advanced-named-ranges/_index.md b/cells/portuguese/net/excel-advanced-named-ranges/_index.md index 73b3f3f2dd..74884d33c9 100644 --- a/cells/portuguese/net/excel-advanced-named-ranges/_index.md +++ b/cells/portuguese/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ beleza dessa funcionalidade reside na sua facilidade de uso. Você pode mesclar Identifique facilmente células em um intervalo nomeado no Excel usando o Aspose.Cells para .NET com este tutorial passo a passo abrangente. ### [Mesclar células em um intervalo nomeado no Excel](./merge-cells-in-named-range/) Aprenda a mesclar células em um intervalo nomeado usando o Aspose.Cells para .NET neste tutorial passo a passo. Descubra como formatar, estilizar e automatizar relatórios do Excel. +### [Criar Pasta de Trabalho Excel – Guia Passo a Passo para Adicionar Tabelas e Regras de Nomeação](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Aprenda a criar uma pasta de trabalho Excel, adicionar tabelas e definir regras de nomeação com este tutorial detalhado passo a passo. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/portuguese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..4bd8977d3b --- /dev/null +++ b/cells/portuguese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Criar uma pasta de trabalho do Excel com uma tabela, aprender as regras + de nomenclatura de tabelas do Excel, evitar erro de intervalo nomeado e definir + o nome da tabela corretamente em C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: pt +og_description: Crie uma pasta de trabalho Excel em C# e domine as regras de nomenclatura + de tabelas no Excel. Aprenda como adicionar uma planilha de tabela, definir o nome + da tabela Excel e corrigir erros de intervalos nomeados. +og_title: Criar Pasta de Trabalho do Excel – Guia Completo de Tabela e Nomenclatura + C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Criar Pasta de Trabalho do Excel – Guia Passo a Passo para Adicionar Tabelas + e Regras de Nomenclatura +url: /pt/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Pasta de Trabalho Excel – Guia Completo em C# para Tabelas e Nomenclatura + +Já precisou **criar pasta de trabalho excel** programaticamente e se perguntou por que o nome da sua tabela de repente colide com um intervalo nomeado? Você não está sozinho. Em muitos projetos de automação, no momento em que tenta dar à tabela um identificador amigável, o Excel lança um *erro de intervalo nomeado* que interrompe todo o processo. + +Neste tutorial vamos percorrer um exemplo totalmente executável que **cria uma pasta de trabalho Excel**, **adiciona uma tabela a uma planilha**, e explica as **regras de nomenclatura de tabelas excel** que evitam que você tropece em si mesmo. Ao final, você saberá exatamente como **adicionar tabela à planilha**, **definir nome da tabela excel**, e lidar graciosamente com o eventual conflito de nomes. + +> **Dica profissional:** A maior parte da confusão vem do fato de que o Excel trata nomes de tabelas e intervalos nomeados ao nível da pasta de trabalho como um único namespace. Entender essa regra logo no início economiza horas de depuração. + +## O que você vai precisar + +- **Aspose.Cells for .NET** (ou qualquer biblioteca que exponha as classes `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ ou .NET Framework 4.8 – o código funciona em ambos. +- Um entendimento básico da sintaxe C# – sem truques avançados necessários. + +Se você tem isso, vamos mergulhar. + +![Captura de tela de uma pasta de trabalho Excel recém‑criada com uma tabela chamada SalesData](create_excel_workbook_example.png "create excel workbook example") + +## Etapa 1: Criar Pasta de Trabalho Excel e Acessar a Primeira Planilha + +A primeira coisa que você faz ao **criar pasta de trabalho excel** é instanciar a classe `Workbook` e obter uma referência à planilha em que trabalhará. No Aspose.Cells a pasta de trabalho começa com uma planilha padrão chamada “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Por que essa etapa é crucial? Sem um objeto workbook você não tem nada ao qual anexar uma tabela, e a referência `Worksheet` fornece uma tela onde a operação **adicionar tabela à planilha** ocorrerá. + +## Etapa 2: Adicionar Tabela (ListObject) Abrangendo um Intervalo Específico + +Em seguida, **adicionamos tabela ao nível da planilha**. O método `ListObjects.Add` espera uma string de intervalo e um booleano indicando se a primeira linha contém cabeçalhos. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Observe a chamada `salesTable.Name = "SalesData"`. É aqui que as **regras de nomenclatura de tabelas excel** entram em ação: o nome deve ser único em toda a pasta de trabalho, não apenas na planilha. Também não pode conter espaços ou caracteres especiais, e deve começar com uma letra ou sublinhado. + +## Etapa 3: Tentar Criar um Intervalo Nomeado ao Nível da Pasta de Trabalho com o Mesmo Identificador + +Agora provocamos deliberadamente o **erro de intervalo nomeado** para ver o que acontece quando ocorre um conflito de nomes. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Se você descomentar a linha, o Aspose.Cells lança uma `ArgumentException` informando que o nome já existe. A mensagem de erro se parece com: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Essa mensagem é o **erro de intervalo nomeado** que mencionamos antes. Ela indica que as **regras de nomenclatura de tabelas excel** tratam nomes de tabelas e intervalos nomeados como um único namespace. + +## Etapa 4: Lidando com o Conflito de Nomes de Forma Elegante + +Em código de produção você desejará capturar essa exceção e ou renomear a tabela ou escolher um nome de intervalo diferente. Aqui está uma forma organizada de fazer isso: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Ao envolver a chamada em um `try/catch`, você evita uma falha abrupta e fornece ao usuário (ou ao código chamador) uma explicação clara — exatamente o tipo de insight das **regras de nomenclatura de tabelas excel** que previne bugs futuros. + +## Etapa 5: Salvar a Pasta de Trabalho e Verificar o Resultado + +Por fim, persista o arquivo no disco e abra-o no Excel para confirmar que a tabela e quaisquer intervalos nomeados estão presentes. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Ao abrir *SalesReport.xlsx* você verá: + +- Uma tabela abrangendo **A1:C5** nomeada **SalesData**. +- Se você manteve o intervalo alternativo, um intervalo nomeado ao nível da pasta de trabalho **SalesData_Range** apontando para **D1**. + +Sem falhas em tempo de execução, e o conflito de nomes foi resolvido. + +## Entendendo a Fundo as Regras de Nomenclatura de Tabelas Excel + +Vamos detalhar por que as regras existem: + +| Regra | O que Significa | Exemplo | +|------|----------------|---------| +| **Única em toda a pasta de trabalho** | Nenhuma duas tabelas ou intervalos nomeados podem compartilhar o mesmo identificador. | `Table1` vs `Table1` → conflito | +| **Começa com letra ou sublinhado** | Nomes não podem iniciar com número. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Sem espaços ou caracteres especiais** | Use CamelCase ou sublinhados. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Comprimento ≤ 255 caracteres** | Praticamente sempre satisfeito. | N/D | + +Manter essas regras em mente ao **definir nome da tabela excel** elimina o temido *erro de intervalo nomeado*. + +## Variações Comuns e Casos de Borda + +1. **Adicionar múltiplas tabelas** – Cada tabela deve ter um nome exclusivo. +2. **Renomear uma tabela existente** – Use `salesTable.Name = "NewName"` antes de criar quaisquer intervalos nomeados conflitantes. +3. **Usar intervalos dinâmicos** – Se precisar de um intervalo que expanda, use uma referência estruturada como `=SalesData[Amount]` ao invés de um endereço estático. +4. **Intervalos nomeados entre planilhas** – Eles ainda fazem parte do mesmo namespace, então uma tabela em Sheet1 bloqueia um intervalo com o mesmo nome em Sheet2. + +## Dicas Profissionais para Automação Excel sem Problemas + +- **Verificar existência antes de adicionar**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Gerar nomes seguros programaticamente**: Anexe um GUID ou contador incremental (`SalesData_{Guid.NewGuid()}`) quando estiver em dúvida. +- **Usar `ListObject.ShowHeaders = true`** para tornar suas tabelas auto‑documentáveis. +- **Validar após salvar**: Abra o arquivo com uma biblioteca leve (ex.: EPPlus) para garantir que a tabela foi criada corretamente. + +## Recapitulação: O que Cobremos + +- Como **criar pasta de trabalho excel** do zero usando Aspose.Cells. +- As exatas **regras de nomenclatura de tabelas excel** que regem identificadores de tabelas e intervalos nomeados. +- Por que um **erro de intervalo nomeado** aparece ao reutilizar um nome. +- A forma correta de **adicionar tabela à planilha** e **definir nome da tabela excel** sem colisões. +- Um padrão robusto para lidar com conflitos de nomes de forma elegante. + +## O que vem a seguir? + +Agora que você dominou o básico, considere explorar: + +- **Crescimento dinâmico de tabelas** usando `ListObject.Resize`. +- **Aplicar estilos** às tabelas (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exportar para CSV** preservando estruturas de tabelas. +- **Integrar com Office Open XML** para controle ainda mais refinado dos detalhes internos da pasta de trabalho. + +Sinta-se à vontade para experimentar — altere o intervalo, adicione mais tabelas ou brinque com diferentes esquemas de nomenclatura. Quanto mais você mexer, mais profunda será sua compreensão das **regras de nomenclatura de tabelas excel**. + +--- + +*Feliz codificação, e que suas pastas de trabalho nunca mais entrem em conflito!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/excel-custom-number-date-formatting/_index.md b/cells/portuguese/net/excel-custom-number-date-formatting/_index.md index 2eef2a2012..69e8e07d9f 100644 --- a/cells/portuguese/net/excel-custom-number-date-formatting/_index.md +++ b/cells/portuguese/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Este tutorial irá equipá-lo com as habilidades necessárias para importar seus Aprenda como verificar valores de células do Excel em relação a formatos numéricos personalizados usando o Aspose.Cells para .NET com este tutorial passo a passo. ### [Especificar campos de fórmula ao importar dados para uma planilha do Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Aprenda como importar dados para planilhas do Excel com campos de fórmula especificados usando o Aspose.Cells para .NET neste tutorial detalhado. +### [Formato de Número Personalizado no Excel em C# – Guia Completo](./custom-number-format-excel-in-c-complete-guide/) +Aprenda como aplicar formatos numéricos personalizados no Excel usando C# com o Aspose.Cells para .NET neste guia completo. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/portuguese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..c48cd3a35a --- /dev/null +++ b/cells/portuguese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Tutorial de formato de número personalizado no Excel mostrando como importar + uma datatable para o Excel, definir a cor de fundo da coluna, formatar a coluna + como moeda e salvar a pasta de trabalho como xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: pt +og_description: Tutorial de formato de número personalizado no Excel que orienta você + a importar uma DataTable, definir a cor de fundo da coluna, formatar uma coluna + como moeda e salvar a pasta de trabalho como xlsx. +og_title: Formato Personalizado de Números no Excel em C# – Guia Passo a Passo +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Formato Personalizado de Números no Excel em C# – Guia Completo +url: /pt/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Formato de Número Personalizado no Excel – Tutorial Full‑Stack C# + +Já se perguntou como aplicar um estilo **custom number format excel** diretamente do C#? Talvez você tenha tentado despejar um DataTable em uma planilha e só viu números simples, sem cores e sem formatação de moeda. Esse é um ponto de dor comum—especialmente quando você precisa de um relatório bem apresentado para as partes interessadas. + +Neste guia, resolveremos esse problema juntos: você aprenderá como **import datatable to excel**, **set column background color**, **format column as currency** e, finalmente, **save workbook as xlsx** com um formato de número personalizado que faz seus valores se destacarem. Sem referências vagas, apenas uma solução completa e executável que você pode copiar‑colar em seu projeto. + +--- + +## O que você vai construir + +Ao final deste tutorial, você terá um aplicativo console C# autônomo que: + +1. Recupera um `DataTable` (você pode substituir o stub pela sua própria consulta). +2. Cria uma nova planilha Excel usando Aspose.Cells (ou qualquer biblioteca compatível). +3. Aplica uma fonte azul e em negrito na primeira coluna, um fundo amarelo‑claro na segunda e um formato de moeda (`$#,##0.00`) na terceira. +4. Salva o arquivo como `DataTableWithStyleArray.xlsx` em uma pasta de sua escolha. + +Você verá exatamente como cada linha contribui para o arquivo Excel final, e discutiremos por que essas escolhas são importantes para a manutenção e desempenho. + +--- + +## Pré-requisitos + +- .NET 6.0 ou superior (o código também funciona com .NET Framework 4.7+). +- Aspose.Cells para .NET (versão de avaliação gratuita ou licenciada). Instale via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Familiaridade básica com `DataTable` e aplicativos console C#. + +--- + +## Etapa 1: Recuperar os Dados de Origem como um DataTable + +Primeiro, precisamos de alguns dados para exportar. Em um cenário real, você provavelmente chamaria um repositório ou executaria uma consulta SQL. Para ilustração, criaremos uma tabela simples na memória. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Por que isso importa:** Usar um `DataTable` fornece uma fonte tabular, consciente de esquema, que mapeia perfeitamente para linhas e colunas do Excel. Também permite reutilizar a mesma lógica de exportação para qualquer conjunto de dados sem reescrever código. + +--- + +## Etapa 2: Criar uma Nova Pasta de Trabalho e Obter a Primeira Planilha + +Agora criamos uma pasta de trabalho Excel. A classe `Workbook` representa o arquivo inteiro; seu `Worksheets[0]` é a planilha padrão onde inseriremos nossos dados. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Dica profissional:** Se precisar de várias planilhas, basta chamar `workbook.Worksheets.Add("SheetName")` e repetir as etapas de estilo para cada uma. + +--- + +## Etapa 3: Definir Estilos de Coluna – Fonte, Fundo e Formato de Número + +A estilização no Aspose.Cells é feita via objetos `Style`. Criaremos um array onde cada elemento corresponde a uma coluna no DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Por que um array de estilos?** Passar um array para `ImportDataTable` permite aplicar um estilo distinto a cada coluna em uma única chamada, o que é conciso e eficiente. Também garante que a formatação permaneça sincronizada com a ordem dos dados. + +--- + +## Etapa 4: Importar o DataTable Aplicando os Estilos + +Aqui está o coração da operação: enviamos o `DataTable` para a planilha, instruímos o Aspose a incluir a linha de cabeçalho e entregamos nosso array `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **O que acontece nos bastidores?** Aspose itera por cada coluna, escreve o cabeçalho e depois escreve cada valor de linha. Enquanto faz isso, aplica o `Style` correspondente do array, de modo que você termina com um cabeçalho azul para “Product”, um “Quantity” sombreado em amarelo e uma coluna “Revenue” bem formatada. + +--- + +## Etapa 5: Salvar a Pasta de Trabalho como um Arquivo XLSX + +Finalmente, persistimos a pasta de trabalho no disco. O método `Save` escolhe automaticamente o formato XLSX com base na extensão do arquivo. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Dica:** Se precisar transmitir o arquivo (por exemplo, para uma API web), use `workbook.Save(stream, SaveFormat.Xlsx)` em vez de um caminho de arquivo. + +--- + +## Exemplo Completo Funcional + +Abaixo está o programa completo que você pode colar em um novo projeto console. Ele compila e executa como está, produzindo um arquivo Excel estilizado. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Resultado Esperado + +Ao abrir `DataTableWithStyleArray.xlsx` você verá: + +| **Produto** (azul, negrito) | **Quantidade** (amarelo‑claro) | **Receita** (moeda) | +|-----------------------------|--------------------------------|---------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +O **custom number format excel** que você especificou (`$#,##0.00`) garante que cada célula de receita exiba o símbolo de dólar, separador de milhar e duas casas decimais—exatamente o que as equipes financeiras esperam. + +--- + +## Perguntas Frequentes & Casos de Borda + +### Posso usar isso com uma biblioteca Excel diferente? + +Absolutamente. O conceito—criar um estilo por coluna e aplicá‑lo durante a importação—é transferível para EPPlus, ClosedXML ou NPOI. As chamadas de API diferem, mas o padrão permanece o mesmo. + +### E se meu DataTable tiver mais colunas do que estilos? + +O Aspose aplicará o estilo padrão a qualquer coluna sem uma entrada correspondente no array `columnStyles`. Para evitar surpresas, dimensione o array para `dataTable.Columns.Count` ou gere estilos dinamicamente em um loop. + +### Como definir um formato de número personalizado para datas? + +Basta definir `style.Custom = "dd‑mm‑yyyy"` (ou qualquer string de formato Excel válida). A mesma abordagem baseada em array funciona para datas, porcentagens ou notação científica. + +### Existe uma maneira de ajustar automaticamente a largura das colunas após a importação? + +Sim—chame `worksheet.AutoFitColumns();` após a importação. Ele executa um cálculo rápido de largura com base no conteúdo das células. + +### E quanto a conjuntos de dados grandes (mais de 100 mil linhas)? + +`ImportDataTable` é otimizado para operações em lote, mas você pode atingir limites de memória. Nesse caso, considere transmitir linhas manualmente com `Cells[i, j].PutValue(...)` e reutilizar um único objeto `Style` para reduzir a sobrecarga. + +--- + +## Dicas Profissionais & Armadilhas Comuns + +- **Evite codificar caminhos** diretamente no código de produção; use `Environment.GetFolderPath` ou configurações de arquivo. +- **Libere o workbook** se estiver em um serviço de longa execução—envolva‑o em um bloco `using` para liberar recursos nativos. +- **Fique atento aos separadores específicos de cultura**. O formato personalizado `$#,##0.00` força um ponto como separador decimal independentemente da localidade do SO, o que geralmente é o desejado para relatórios financeiros. +- **Lembre-se de referenciar System.Drawing** (ou `System.Drawing.Common` no .NET Core) para as structs de cor usadas na estilização. +- **Teste a saída em diferentes versões do Excel**; versões mais antigas podem interpretar alguns formatos personalizados de forma ligeiramente diferente. + +--- + +## Conclusão + +Cobrimos tudo o que você precisa para **custom number format excel** arquivos a partir do C#: extrair dados de um `DataTable`, **import datatable to excel**, aplicar um **set column background color**, usar **format column as currency** e, finalmente, **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/excel-workbook/_index.md b/cells/portuguese/net/excel-workbook/_index.md index 6a0e8051d3..0428da52f1 100644 --- a/cells/portuguese/net/excel-workbook/_index.md +++ b/cells/portuguese/net/excel-workbook/_index.md @@ -72,7 +72,7 @@ Então, por que não aproveitar esta oportunidade para aprimorar suas habilidade | [Acessar informações de extensão da Web](./access-web-extension-information/) | Aprenda como acessar informações de extensão da Web em arquivos do Excel usando o Aspose.Cells para .NET com nosso guia passo a passo. | | [Adicionar assinatura digital a um arquivo Excel já assinado](./add-digital-signature-to-an-already-signed-excel-file/) | Aprenda como adicionar uma assinatura digital a um arquivo Excel já assinado usando o Aspose.Cells para .NET com este guia passo a passo detalhado. | | [Adicionar extensão da Web](./add-web-extension/) | Aprenda como adicionar extensões da web a arquivos do Excel usando o Aspose.Cells para .NET com este tutorial passo a passo completo que aprimora as funcionalidades da sua planilha. | -| [Ajustar nível de compressão](./adjust-compression-level/) Aprenda a ajustar os níveis de compactação de arquivos do Excel usando o Aspose.Cells para .NET. Otimize o tamanho dos seus arquivos com eficiência com este guia passo a passo. | +| [Ajustar nível de compressão](./adjust-compression-level/) Aprenda a ajustar os níveis de compactação de arquivos do Excel usando o Aspose.Cells para .NET. Otimize o tamanho dos seus arquivos com eficiência com este guia passo a passo. | | [Permitir apóstrofo inicial](./allow-leading-apostrophe/) | Gerencie apóstrofos à esquerda no Excel sem esforço com o Aspose.Cells para .NET. Este tutorial completo guia você passo a passo pelo processo. | | [Criar pasta de trabalho compartilhada](./create-shared-workbook/) | Aprenda a criar uma pasta de trabalho compartilhada usando o Aspose.Cells para .NET com este guia passo a passo simples. Perfeito para aprimorar a colaboração em equipe. | | [Detectar tipos de link](./detect-link-types/) | Aprenda a detectar tipos de hiperlink no Excel usando o Aspose.Cells para .NET. Etapas simples e exemplos de código incluídos. | @@ -85,7 +85,8 @@ Então, por que não aproveitar esta oportunidade para aprimorar suas habilidade | [Atualizar item de fórmula do Power Query](./update-power-query-formula-item/) Atualize facilmente itens de fórmula do Power Query no Excel usando o Aspose.Cells para .NET. Guia passo a passo para otimizar seus processos de manipulação de dados. | | [Visualização de impressão da pasta de trabalho](./workbook-print-preview/) | Aprenda a criar visualizações de impressão para arquivos do Excel usando o Aspose.Cells para .NET. Aprenda as etapas de codificação em um tutorial detalhado e fácil de seguir. | | [Trabalhando com propriedades de tipo de conteúdo](./working-with-content-type-properties/) | Aprenda a usar o Aspose.Cells para .NET para trabalhar com propriedades de tipo de conteúdo e aprimorar o gerenciamento de metadados do Excel. Siga este guia passo a passo simples. | -| [Suporte de assinatura Xades](./xades-signature-support/) | Aprenda a adicionar assinaturas Xades a arquivos do Excel usando o Aspose.Cells para .NET com este guia passo a passo. Proteja seus documentos. | +| [Suporte de assinatura Xades](./xades-signature-support/) | Aprenda a adicionar assinaturas Xades a arquivos do Excel usando o Aspose.Cells para .NET com este guia passo a passo. Proteja seus documentos. | +| [Criar nova pasta de trabalho C# – Guia passo a passo com fórmulas derramadas](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Aprenda a criar uma nova pasta de trabalho em C# com fórmulas derramadas usando Aspose.Cells para .NET passo a passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/portuguese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..ce0312b71a --- /dev/null +++ b/cells/portuguese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Crie rapidamente uma nova pasta de trabalho em C# usando Aspose.Cells. + Aprenda como adicionar uma fórmula SEQUENCE que se espalha, recalcular automaticamente + e lidar com células dependentes. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: pt +og_description: Criar nova pasta de trabalho C# com Aspose.Cells. Este tutorial mostra + como adicionar uma fórmula SEQUENCE de derramamento, recalcular a pasta de trabalho + e gerenciar células dependentes. +og_title: Criar nova pasta de trabalho C# – Guia completo +tags: +- C# +- Excel automation +- Aspose.Cells +title: Criar nova pasta de trabalho C# – Guia passo a passo com fórmulas derramadas +url: /pt/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar nova pasta de trabalho C# – Guia Completo de Programação + +Já se perguntou como **criar nova pasta de trabalho C#** sem lidar com COM interop? Você não está sozinho. Em muitos projetos é preciso gerar um arquivo Excel na hora, inserir uma fórmula de matriz dinâmica e fazer com que tudo seja atualizado automaticamente. + +Neste guia mostraremos exatamente isso—usando a moderna biblioteca **Aspose.Cells**, adicionando uma fórmula `SEQUENCE` que derrama (spilling), ajustando uma célula dependente e forçando um recálculo para que os resultados permaneçam frescos. Ao final, você terá um exemplo autônomo e executável que pode copiar‑colar em qualquer aplicativo .NET. + +## O que você vai aprender + +- Como **criar nova pasta de trabalho C#** programaticamente. +- A mecânica por trás de uma **fórmula de matriz derramada** e por que ela é útil. +- Usar a **função Excel SEQUENCE** a partir do código C#. +- Disparar o **cálculo da pasta de trabalho C#** para que células dependentes sejam atualizadas instantaneamente. +- Armadilhas comuns (ex.: esquecer de chamar `Calculate`) e correções rápidas. + +Nenhuma documentação externa necessária—tudo que você precisa está aqui. + +## Pré‑requisitos + +- .NET 6+ (ou .NET Framework 4.7.2+) instalado. +- Visual Studio 2022 ou qualquer IDE de sua preferência. +- O pacote NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Familiaridade básica com a sintaxe C# (se você for iniciante, o código está fortemente comentado). + +--- + +## Etapa 1: Criar uma nova pasta de trabalho em C# + +Este cabeçalho H2 contém a **palavra‑chave principal** exatamente onde a lista de verificação SEO exige. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Por que isso importa:** +> Instanciar `Workbook` fornece uma representação em memória de um arquivo Excel. Sem COM, sem interop, apenas objetos .NET puros que você pode manipular com segurança. + +--- + +## Etapa 2: Adicionar uma fórmula SEQUENCE que derrama + +Uma **fórmula de matriz derramada** expande automaticamente para as células adjacentes, o que é perfeito para gerar listas dinâmicas. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Como funciona:** +> A função `SEQUENCE` (introduzida no Excel 365) cria uma matriz vertical de números. Como estamos usando uma fórmula *spilling*, o Excel (e o Aspose.Cells) preencherá automaticamente o intervalo abaixo de `A1` sem que precisemos escrever um loop. + +--- + +## Etapa 3: Alterar uma célula dependente para ver a atualização automática + +Vamos modificar `B1` para observar como a pasta de trabalho recalcula a matriz derramada. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Dica:** +> Se você referenciar posteriormente o intervalo derramado em outras fórmulas, mudar qualquer célula dentro do spill fará com que essas fórmulas sejam atualizadas após chamar `Calculate`. + +--- + +## Etapa 4: Forçar o cálculo da pasta de trabalho C# + +Sem uma chamada explícita, o Aspose.Cells não recalcula as fórmulas automaticamente. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **O que `Calculate` faz:** +> Ele percorre cada célula com fórmula, avalia‑as e grava os resultados de volta na planilha. Esse é o núcleo do **cálculo da pasta de trabalho C#** e garante que sua matriz derramada permaneça sincronizada com quaisquer dados dependentes. + +### Saída esperada + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Abra `SpilledSequenceDemo.xlsx` e você verá os números 1‑5 preenchendo `A1:A5`, enquanto `B1` contém o valor `10`. Altere qualquer célula dentro do spill, execute `Calculate` novamente e os novos valores aparecerão instantaneamente. + +--- + +## Entendendo a função Excel SEQUENCE em C# + +Se você está curioso por que `SEQUENCE` é preferida a um loop manual, considere estes pontos: + +1. **Desempenho** – O motor avalia toda a matriz em uma única passagem. +2. **Legibilidade** – Uma linha de código substitui dezenas de chamadas `PutValue`. +3. **Dimensionamento dinâmico** – Você pode substituir o `5` estático por uma referência a outra célula, tornando o comprimento ajustável em tempo de execução. + +Este é um exemplo clássico de **fórmula de matriz derramada** que simplifica tarefas de geração de dados. + +--- + +## Armadilhas comuns & Dicas avançadas + +| Armadilha | Solução | +|----------|---------| +| Esquecer `workbook.Calculate()` | Sempre chame após modificar fórmulas; caso contrário a planilha exibirá valores antigos em cache. | +| Usar uma versão antiga do Aspose.Cells | Atualize para o último pacote NuGet para garantir suporte a funções de matriz dinâmica como `SEQUENCE`. | +| Salvar antes do cálculo | Salve **depois** de `Calculate` para que o arquivo contenha os resultados mais recentes. | +| Presumir que o spill sobrescreverá dados existentes | O Aspose.Cells respeita dados existentes fora do intervalo do spill; limpe a área primeiro se precisar de uma tela limpa. | + +**Dica de especialista:** Se precisar que o comprimento da sequência seja configurável, armazene a contagem em uma célula (ex.: `C1`) e use `=SEQUENCE(C1)`—o motor de cálculo lerá o valor em tempo de execução. + +--- + +## Expandindo o exemplo + +Agora que você sabe como **criar nova pasta de trabalho C#**, pode: + +- Adicionar fórmulas mais complexas que referenciem o intervalo derramado (`=SUM(A1#)` onde `#` indica o spill). +- Exportar para PDF com `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Inserir gráficos que se ajustem automaticamente ao tamanho da matriz dinâmica. + +Todos esses recursos se baseiam na mesma fundação de **cálculo da pasta de trabalho C#** que acabamos de abordar. + +--- + +## Conclusão + +Percorremos todo o processo de **criar nova pasta de trabalho C#**, desde a instanciação do objeto `Workbook` até a inserção de uma fórmula `SEQUENCE` que derrama, a modificação de uma célula dependente e, por fim, o forçar um recálculo para que tudo permaneça atualizado. O trecho de código completo acima está pronto para ser executado—basta inseri‑lo em um aplicativo console, adicionar o pacote NuGet Aspose.Cells e você terá um arquivo Excel funcional em segundos. + +Pronto para o próximo passo? Experimente substituir o `5` estático por uma referência a célula, teste outras funções de matriz dinâmica como `FILTER` ou `UNIQUE`, e explore como **Aspose.Cells C#** pode alimentar motores de relatório completos. Boa codificação! + +--- + +*Marcador de imagem:* + +![Captura de tela mostrando uma pasta de trabalho recém‑criada com fórmula SEQUENCE derramada – exemplo criar nova pasta de trabalho C#](/images/create-new-workbook-csharp.png) + +--- + +*Se este tutorial foi útil, considere dar uma estrela ao repositório, compartilhar com colegas ou deixar um comentário abaixo. Seu feedback alimenta futuros guias!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/portuguese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..37c23561da --- /dev/null +++ b/cells/portuguese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Como usar lambda em C# para trabalhar com fórmulas do Excel. Aprenda + a escrever fórmula em uma célula, converter intervalo em array, exibir o array no + console e calcular a cotangente no Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: pt +og_description: Como usar lambda em C# para manipular fórmulas do Excel, converter + intervalo em array, escrever fórmula em célula, exibir array no console e calcular + cotangente no Excel. +og_title: Como usar Lambda em C# com fórmulas do Excel – passo a passo +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Como usar Lambda em C# com fórmulas do Excel – Guia completo +url: /pt/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Usar Lambda em C# com Fórmulas do Excel – Guia Completo + +Já se perguntou **como usar lambda** ao automatizar o Excel a partir do C#? Você não está sozinho. Muitos desenvolvedores encontram dificuldades quando precisam combinar o poder das novas funções de matriz dinâmica do Excel com a capacidade `LAMBDA` do C#. A boa notícia? Na verdade é bem simples quando você vê as peças se encaixarem. + +Neste tutorial vamos percorrer **escrever uma fórmula em uma célula**, **converter um intervalo em uma matriz**, **exibir essa matriz no console**, e até **calcular cotangente no Excel** — tudo enquanto mostramos **como usar lambda** dentro de uma chamada `REDUCE`. Ao final, você terá um trecho de código executável que pode ser inserido em qualquer projeto .NET que referencie Aspose.Cells (ou uma biblioteca similar). + +--- + +## O que você aprenderá + +- Como **escrever fórmula em célula** usando C#. +- Como **converter intervalo em matriz** com a função `EXPAND`. +- Como **exibir matriz no console** após o cálculo. +- Como **calcular cotangente no Excel** usando `COT` e `COTH`. +- A sintaxe exata para **como usar lambda** dentro da função `REDUCE` do Excel a partir do C#. + +> **Pré-requisito:** Você precisa de uma versão recente do .NET (Core 6+ ou .NET Framework 4.7+) e da biblioteca Aspose.Cells para .NET instalada via NuGet. + +--- + +## Passo 1: Configurar a Pasta de Trabalho e Escrever a Fórmula na Célula + +A primeira coisa que fazemos é criar uma nova pasta de trabalho e obter a primeira planilha. Em seguida, **escrevemos uma fórmula em uma célula** – neste caso `A1` conterá o resultado de uma chamada `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Por que isso importa:** Escrever a fórmula diretamente a partir do código permite gerar planilhas complexas dinamicamente sem nunca abrir o Excel. Também prepara o terreno para o próximo passo, onde **convertemos o intervalo em matriz**. + +--- + +## Passo 2: Converter Intervalo em Matriz com EXPAND + +`EXPAND` é a forma do Excel de transformar um pequeno intervalo em uma matriz maior. Ao colocar a fórmula em `A1`, o Excel derramará um bloco 4 × 5 começando nessa célula. A partir do C#, não precisamos copiar valores manualmente – a biblioteca fará o trabalho pesado quando chamarmos `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Como usar lambda:** Ainda não, mas aguarde. Primeiro precisamos dos dados na planilha, depois reduziremos com um lambda. + +--- + +## Passo 3: Usar LAMBDA Dentro de REDUCE – O Núcleo de “Como Usar Lambda” + +O Excel 365 introduziu `REDUCE`, que aceita um **valor inicial**, um **intervalo**, e um **LAMBDA** que indica como combinar cada elemento. Do C# simplesmente atribuímos a string da fórmula; o lambda vive dentro da fórmula do Excel, não no código C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explicação:** +- `0` é o acumulador inicial (`acc`). +- `A1:D4` é o intervalo que queremos processar (as quatro primeiras colunas do derramamento). +- `LAMBDA(acc, x, acc + x)` indica ao Excel para somar cada célula (`x`) ao acumulador. + +Essa é a essência de **como usar lambda** para agregação em um contexto de planilha. + +--- + +## Passo 4: Calcular Cotangente no Excel – De Graus a Hiperbólica + +Se precisar de resultados trigonométricos, as funções `COT` e `COTH` do Excel são muito práticas. Vamos colocá‑las em `G1` e `G2`, respectivamente. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Por que isso é útil:** Saber **calcular cotangente no Excel** pode economizar a escrita de código matemático personalizado, especialmente quando a pasta de trabalho será compartilhada com não‑desenvolvedores. + +--- + +## Passo 5: Forçar o Cálculo e Recuperar a Matriz Expandida + +Agora instruímos a pasta de trabalho a avaliar todas as fórmulas, então extraímos a matriz derramada de `A1`. É aqui que **exibimos a matriz no console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**O que você verá:** +- Uma matriz 4 × 5 formatada de forma agradável, impressa linha por linha. +- A soma calculada pelo lambda `REDUCE`. +- Os dois valores de cotangente. + +Isso completa o fluxo desde **escrever fórmula em célula** até **exibir matriz no console**. + +--- + +## Exemplo Completo (Pronto para Copiar e Colar) + +Abaixo está o programa inteiro que você pode inserir em um aplicativo console. Lembre‑se de adicionar o pacote NuGet `Aspose.Cells` primeiro (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Saída esperada no console (os valores variarão com base no conteúdo padrão de B1:C2, que são 0 por padrão):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Sinta‑se à vontade para preencher `B1:C2` com seus próprios números antes de executar – a matriz refletirá esses valores. + +--- + +## Dicas Profissionais & Armadilhas Comuns + +- **Dica profissional:** Se precisar que o intervalo derramado comece em outro lugar, basta mudar a célula de destino (`A1`). A função `EXPAND` respeita o ponto de ancoragem. +- **Cuidado com:** Células vazias no intervalo de origem tornam‑se `0` na matriz derramada, o que pode afetar a soma do seu `REDUCE`. +- **Caso extremo:** Quando a pasta de trabalho contém fórmulas que dependem de funções voláteis (ex.: `NOW()`), chame `workbook.Calculate()` após definir todas as fórmulas para garantir que tudo esteja atualizado. +- **Nota de desempenho:** Para derramamentos muito grandes, considere limitar o tamanho na chamada `EXPAND`; caso contrário, você pode alocar mais memória do que o necessário. +- **Compatibilidade:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/number-and-display-formats-in-excel/_index.md b/cells/portuguese/net/number-and-display-formats-in-excel/_index.md index 00667f707b..450d5d796c 100644 --- a/cells/portuguese/net/number-and-display-formats-in-excel/_index.md +++ b/cells/portuguese/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Se você deseja adicionar um toque pessoal às suas planilhas do Excel, personal Automatize a formatação de números no Excel usando o Aspose.Cells para .NET. Aprenda a aplicar formatos de data, porcentagem e moeda programaticamente. ### [Personalizando formatos de exibição com números definidos pelo usuário](./customizing-display-formats-with-user-defined-numbers/) Aprenda a personalizar formatos de exibição com o Aspose.Cells para .NET. Formate datas, porcentagens e moedas usando este guia passo a passo. +### [Como exportar Excel com formatação – preservar formato numérico](./how-to-export-excel-with-formatting-preserve-number-format/) +Aprenda a exportar planilhas Excel mantendo a formatação e os formatos numéricos usando Aspose.Cells para .NET. +### [Formatar datetime para ISO em C# – Guia Completo](./format-datetime-to-iso-in-c-complete-guide/) +Aprenda a converter valores datetime para o padrão ISO usando C# e Aspose.Cells, garantindo consistência nas datas. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/portuguese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..96e999f207 --- /dev/null +++ b/cells/portuguese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Aprenda a formatar datetime para ISO ao extrair a data do Excel e exibir + a data ISO usando Aspose.Cells em C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: pt +og_description: Formatar data e hora para ISO ficou fácil. Este guia mostra como extrair + a data do Excel e exibir a data ISO com Aspose.Cells. +og_title: formatar DateTime para ISO em C# – Tutorial passo a passo +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formatar DateTime para ISO em C# – Guia Completo +url: /pt/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Formatar datetime para ISO em C# – Guia Completo + +Já precisou **formatar datetime para iso** mas a fonte está dentro de uma planilha Excel? Talvez a célula contenha uma era japonesa como “令和3年5月1日” e você esteja se perguntando como transformar isso em uma string limpa `2021‑05‑01`. Você não está sozinho. Neste tutorial vamos **extrair data do excel**, analisar a era japonesa e então **exibir data iso** no console — tudo com algumas linhas de C# e Aspose.Cells. + +Vamos percorrer tudo o que você precisa: o pacote NuGet necessário, o código exato que você pode copiar‑colar, por que cada linha importa e algumas dicas de casos extremos. Ao final você terá um snippet reutilizável que formata datetime para iso não importa quão excêntrica seja a data original no Excel. + +## O que você precisará + +- .NET 6.0 ou superior (o código também compila no .NET Framework 4.6+) +- Visual Studio 2022 (ou qualquer editor de sua preferência) +- **Aspose.Cells for .NET** pacote NuGet – `Install-Package Aspose.Cells` +- Um arquivo Excel (ou uma nova workbook) que contenha uma data no formato de era japonesa + +É isso. Nenhuma biblioteca extra, sem interop COM, apenas um único método bem documentado. + +## Etapa 1: Criar uma Workbook e gravar uma data em era japonesa + +Primeiro, precisamos de uma workbook para trabalhar. Se você já tem um arquivo Excel, pode carregá‑lo com `new Workbook("path")`. Para este exemplo criaremos uma nova workbook na memória e inseriremos uma string de era japonesa na célula **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Por que fazemos isso:** Aspose.Cells trata os valores das células como strings por padrão. Ao inserir o texto bruto da era simulamos um cenário real onde um cliente japonês inseriu datas em seu calendário nativo. + +## Etapa 2: Habilitar a análise de era japonesa e extrair a data + +Aspose.Cells pode traduzir automaticamente strings de era japonesa em objetos .NET `DateTime` — desde que você indique isso. A flag `DateTimeParseOptions.EnableJapaneseEra` faz o trabalho pesado. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Dica profissional:** Se você esquecer a opção `EnableJapaneseEra`, a biblioteca retornará a string original e a conversão subsequente falhará. Sempre verifique `parsed.Type` se estiver lidando com conteúdo misto. + +## Etapa 3: Converter o DateTime analisado para ISO 8601 + +Agora que temos um `DateTime` adequado, transformá‑lo em uma string formatada em ISO é muito simples. O padrão `"yyyy-MM-dd"` está em conformidade com a parte de data do ISO 8601, que é o que a maioria das APIs espera. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Executar o programa imprime: + +``` +ISO date: 2021-05-01 +``` + +Esse é o **exibir data iso** que você procurava. + +## Exemplo completo e executável + +A seguir está o bloco de código completo que você pode copiar direto para um projeto de console. Sem dependências ocultas, sem configuração extra. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Saída esperada:** `ISO date: 2021-05-01` + +## Análise passo a passo (Por que cada parte importa) + +| Etapa | O que acontece | Por que é importante | +|------|----------------|----------------------| +| **Create workbook** | Inicializa um contêiner Excel em memória. | Fornece um sandbox para testar sem tocar no sistema de arquivos. | +| **PutValue** | Armazena a string bruta da era japonesa em **A1**. | Simula a entrada real de dados; garante que o analisador veja o texto exato. | +| **GetValue with `EnableJapaneseEra`** | Converte a string da era em um .NET `DateTime`. | Lida com a conversão de calendário automaticamente — sem necessidade de tabelas de consulta manuais. | +| **`ToString("yyyy-MM-dd")`** | Formata o `DateTime` para ISO 8601. | Garante uma string de data invariável à cultura, ordenável e aceita por APIs REST, bancos de dados, etc. | +| **Console.WriteLine** | Exibe a data ISO final. | Confirma que todo o pipeline funciona de ponta a ponta. | + +## Lidando com variações comuns + +### 1. Diferentes localizações de célula + +Se sua data está em **B2** ou em um intervalo nomeado, basta substituir `"A1"` pelo endereço apropriado: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Múltiplas datas em uma coluna + +Quando precisar **extrair data do excel** para muitas linhas, faça um loop pelo intervalo usado: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Alternativa para datas sem era + +Se uma célula já contém uma string de data padrão, o analisador ainda funciona, mas você pode querer uma rede de segurança: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +A flag `TryParse` impede exceções e devolve o valor original se a conversão falhar. + +### 4. Componente de tempo + +Caso precise também da parte de horário, use `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Isso gera um timestamp ISO 8601 completo (`2021-05-01T00:00:00`). + +## Ilustração visual + +![exemplo de formatação datetime para iso](image.png "Um exemplo de formatação datetime para iso em C#") + +*Texto alternativo:* *exemplo de formatação datetime para iso mostrando a saída do console* + +## Perguntas Frequentes + +- **Posso usar isso com arquivos .xls?** + Sim. Aspose.Cells suporta `.xls`, `.xlsx`, `.csv` e muitos outros formatos nativamente. + +- **E se a workbook estiver protegida por senha?** + Carregue-a com `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **O formato ISO depende da localidade?** + Não. O padrão `"yyyy-MM-dd"` é invariável à cultura, garantindo a mesma string em qualquer máquina. + +- **Isso funciona no .NET Core?** + Absolutamente — Aspose.Cells é compatível com .NET Standard 2.0. + +## Conclusão + +Cobremos como **formatar datetime para iso** ao **extrair data do excel**, analisar strings de era japonesa e finalmente **exibir data iso** no console. Os passos principais — criar uma workbook, gravar ou carregar o texto da era, habilitar a análise de era japonesa e formatar com `ToString("yyyy-MM-dd")` — são tudo que você precisa na maioria dos cenários. + +A seguir, você pode querer: + +- Gravar as datas ISO de volta em outra coluna para processamento posterior. +- Exportar a workbook transformada para CSV para importação em massa. +- Combinar essa lógica com uma API web que aceita uploads de Excel e devolve datas ISO codificadas em JSON. + +Sinta‑se à vontade para experimentar diferentes formatos de data, fusos horários ou até calendários personalizados. A flexibilidade do Aspose.Cells significa que raramente você encontrará um obstáculo. + +Happy coding, and may all your dates be perfectly ISO‑compliant! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/portuguese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..37928c2314 --- /dev/null +++ b/cells/portuguese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Como exportar Excel com formatação e preservar o formato de número. Aprenda + a converter intervalo do Excel, obter o resultado da fórmula e exportar Excel com + formatação usando Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: pt +og_description: Como exportar Excel com formatação e preservar o formato numérico. + Guia passo a passo para converter intervalo do Excel, obter o resultado da fórmula + e exportar Excel com formatação em C#. +og_title: Como Exportar Excel com Formatação – Preservar Formato de Número +tags: +- C# +- Aspose.Cells +- Excel automation +title: Como Exportar o Excel com Formatação – Preservar o Formato de Número +url: /pt/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Exportar Excel com Formatação – Preservar Formato de Número + +Já se perguntou **como exportar Excel** mantendo a aparência de cada célula exatamente como você a vê na planilha? Talvez você precise enviar um relatório para um cliente, alimentar um controle de grade, ou apenas armazenar os valores em um banco de dados. O ponto crítico costuma ser a perda da formatação numérica ou as fórmulas se transformarem em strings brutas. + +Neste tutorial vamos percorrer um exemplo completo, pronto‑para‑executar em C# que **preserva o formato de número**, **converte um intervalo do Excel** para um `DataTable`, **obtém o resultado da fórmula**, e finalmente **exporta Excel com formatação** usando Aspose.Cells. Ao final você terá um único método que pode ser inserido em qualquer projeto e chamado com uma referência à planilha. + +> **Pré‑visualização rápida:** o código cria uma pasta de trabalho, grava um valor e uma fórmula, instrui o Aspose.Cells a exportar as células como strings formatadas e imprime `123.456 | 246.912` – exatamente o que você esperaria ver no Excel. + +--- + +## O que Você Precisa + +- **Aspose.Cells for .NET** (a versão de avaliação gratuita funciona bem para aprendizado) +- .NET 6.0 ou superior (a API é a mesma no .NET Framework) +- Um ambiente básico de desenvolvimento C# (Visual Studio, VS Code, Rider… você escolhe) + +Nenhum pacote NuGet extra além do Aspose.Cells é necessário. Se ainda não o instalou, execute: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Etapa 1 – Criar uma Pasta de Trabalho e Gravar Valores (incluindo uma fórmula) + +Primeiro criamos uma nova pasta de trabalho e inserimos um valor numérico em **A1**. Em seguida adicionamos uma fórmula simples em **B1** que multiplica a primeira célula por dois. Isso prepara o cenário para demonstrar **obter resultado da fórmula** mais adiante. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Por que isso importa:** +- `PutValue` armazena o número bruto, enquanto `PutFormula` armazena o cálculo. +- Aspose.Cells mantém a fórmula **ativa**, de modo que quando pedirmos o valor da célula obteremos realmente `246.912`, e não a string `"=A1*2"`. + +--- + +## Etapa 2 – Instruir o Aspose.Cells a Exportar Valores como Strings Formatadas + +Se você simplesmente chamar `ExportDataTable` com as configurações padrão, as células numéricas serão retornadas como seus valores subjacentes `double`. Isso remove separadores de milhar, símbolos de moeda ou casas decimais personalizadas que você possa ter definido. A classe `ExportTableOptions` nos permite **preservar o formato de número** e **exportar como string**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Ponto chave:** `ExportNumberFormat = true` é a bandeira que faz a **preservação do formato de número** funcionar. Sem ela você veria `"123.456"` e `"246.912"` como números brutos, o que pode parecer aceitável no código, mas não quando você cola os dados em uma UI que espera a mesma formatação do Excel. + +--- + +## Etapa 3 – Imprimir os Dados Exportados (Verificação) + +Agora que temos um `DataTable` cheio de strings formatadas, vamos despejar o conteúdo no console. Isso também demonstra que conseguimos **obter o resultado da fórmula** sem avaliar a fórmula manualmente. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Executar o programa imprime: + +``` +123.456 | 246.912 +``` + +Observe como a segunda coluna mostra o **resultado da fórmula**, não o texto da fórmula. Isso é exatamente o que você precisa ao **exportar Excel com formatação** para processamento posterior. + +--- + +## Etapa 4 – Convertendo Intervalos Maiores do Excel (Opcional) + +O exemplo acima trata de um pequeno recorte `A1:B1`, mas cenários reais frequentemente exigem exportar tabelas inteiras. O mesmo método funciona para qualquer bloco retangular – basta ajustar os argumentos `firstRow`, `firstColumn`, `totalRows` e `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Dica de especialista:** Se sua planilha já possui uma linha de cabeçalho, defina `includeColumnNames` como `true`. O Aspose.Cells usará a primeira linha do intervalo como nomes de coluna, o que é útil quando você posteriormente vincular o `DataTable` a uma grade de UI. + +--- + +## Etapa 5 – Armadilhas Comuns & Como Evitá‑las + +| Problema | Por que Acontece | Solução | +|----------|------------------|---------| +| **Números perdem vírgulas ou símbolos de moeda** | `ExportAsString` está `false` ou `ExportNumberFormat` foi omitido | Defina ambos `ExportAsString = true` **e** `ExportNumberFormat = true`. | +| **Células de fórmula retornam o texto da fórmula** | Você não chamou `CalculateFormula` antes da exportação (necessário apenas se a pasta de trabalho não estiver configurada para auto‑calcular) | Ative o auto‑cálculo (`workbook.CalculateFormula()`) ou confie em `ExportAsString`, que força a avaliação. | +| **Cabeçalhos aparecem como linhas de dados** | `includeColumnNames` definido como `false` enquanto seu intervalo inclui uma linha de cabeçalho | Defina `includeColumnNames = true` para tratar a primeira linha como nomes de coluna. | +| **Intervalos grandes causam pressão de memória** | Exportar a planilha inteira de uma vez carrega tudo na memória | Exporte em blocos (por exemplo, 500 linhas por vez) e mescle os `DataTable`s se necessário. | + +--- + +## Etapa 6 – Exemplo Completo (Pronto para Copiar‑Colar) + +Abaixo está o programa inteiro, desde as declarações `using` até o `Main`. Cole em um aplicativo console e pressione **F5** – você verá a saída formatada instantaneamente. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Saída esperada** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Esse é todo o fluxo de **como exportar Excel**, com formatação intacta, resultados de fórmula avaliados e um `DataTable` limpo pronto para qualquer consumidor .NET. + +--- + +## Conclusão + +Cobremos tudo o que você precisa saber sobre **como exportar Excel** mantendo o **formato de número**, **convertendo um intervalo do Excel** para um `DataTable`, e **obtendo resultados de fórmula** sem parsing extra. A chave está na configuração `ExportTableOptions` – uma vez que você define `ExportAsString` e `ExportNumberFormat` como `true`, o Aspose.Cells faz o trabalho pesado por você. + +A partir daqui você pode: + +- Inserir o `DataTable` em um `DataGrid` WPF ou em uma view ASP.NET MVC. +- Gravar a tabela em um arquivo CSV mantendo a representação visual exata. +- Estender a abordagem para múltiplas planilhas ou intervalos dinâmicos. + +Sinta‑se à vontade para experimentar diferentes formatos (moeda, porcentagem) e blocos de dados maiores. Se encontrar alguma particularidade, volte à tabela de **armadilhas comuns** – ela cobre os contratempos mais frequentes ao **exportar Excel com formatação**. + +Bom código, e que suas planilhas exportadas estejam sempre tão polidas quanto as originais! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/portuguese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..5a7e214e3b --- /dev/null +++ b/cells/portuguese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Aprenda como duplicar uma tabela dinâmica em C# usando Aspose.Cells. + Este guia também mostra como copiar linhas e carregar uma pasta de trabalho Excel + em C# para uma automação de Excel fluida ao copiar linhas. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: pt +og_description: Como duplicar uma tabela dinâmica em C#? Siga este tutorial conciso + para carregar a planilha Excel em C#, copiar linhas e dominar a automação do Excel + copiando linhas. +og_title: Como Duplicar Pivot em C# – Guia Completo +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Como Duplicar Pivot em C# – Guia Completo Passo a Passo +url: /pt/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Duplicar Pivot em C# – Guia Completo Passo a Passo + +Já se perguntou **como duplicar pivot** tabelas programaticamente sem arrastá‑las manualmente no Excel? Você não é o único. Em muitos pipelines de relatórios o mesmo layout de pivot é necessário em um novo conjunto de linhas, e fazer isso manualmente é uma perda de tempo. + +A boa notícia? Com algumas linhas de C# você pode carregar uma pasta de trabalho Excel, definir a área que contém o pivot e **como copiar linhas** para que o pivot apareça em um novo local — tudo em uma execução automatizada. Neste tutorial também abordaremos os fundamentos de **load excel workbook c#** e daremos uma base sólida para tarefas de **excel automation copy rows**. + +> **O que você levará consigo** +> • Um exemplo completo e executável que duplica uma tabela pivot. +> • Uma explicação do porquê cada linha importa. +> • Dicas para lidar com casos extremos como planilhas ocultas ou múltiplos pivots. + +--- + +## Pré-requisitos + +Before we dive in, make sure you have: + +- **.NET 6.0** (ou qualquer versão recente do .NET) instalado. +- **Aspose.Cells for .NET** – a biblioteca que usaremos para manipular arquivos Excel. Você pode obtê‑la via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Uma pasta de trabalho fonte (`Source.xlsx`) que já contém uma tabela pivot no intervalo **A1:J20** (o intervalo que iremos duplicar). +- Familiaridade básica com a sintaxe C# – nada sofisticado, apenas as declarações `using` habituais e o método `Main`. + +Se algum desses itens lhe for desconhecido, faça uma pausa e instale o pacote; o restante do guia assume que a biblioteca está pronta para uso. + +![Ilustração de como duplicar pivot em C# usando Aspose.Cells](https://example.com/duplicate-pivot.png "ilustração de como duplicar pivot em C#") + +*Texto alternativo da imagem: "exemplo de como duplicar pivot em C# mostrando linhas de origem e linhas de pivot duplicadas".* + +## Etapa 1: Carregar Pasta de Trabalho Excel C# – Abrindo o Arquivo + +A primeira coisa que você precisa fazer quando deseja **load excel workbook c#** é criar uma instância `Workbook` apontando para o seu arquivo. Esse objeto dá acesso a todas as planilhas, células e pivots dentro do arquivo. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Por que isso importa:** +`Workbook` abstrai todo o arquivo Excel em um modelo em memória. Sem carregá‑lo primeiro, você não pode inspecionar a localização do pivot ou copiar linhas. Além disso, o construtor detecta automaticamente o formato do arquivo (XLS, XLSX, CSV, etc.), portanto não é necessário código extra para detecção de formato. + +## Etapa 2: Como Copiar Linhas – Definindo a Área do Pivot + +Agora que a pasta de trabalho está em memória, precisamos dizer ao Aspose.Cells quais linhas contêm o pivot. No nosso exemplo o pivot está em **A1:J20**, que corresponde às linhas **0‑19** (indexação baseada em zero). Envolvemos isso em uma estrutura `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Por que usamos `CellArea`:** +É uma forma leve de descrever um bloco retangular. Quando você chamar `CopyRows` mais tarde, o método lê esse objeto para saber exatamente quais linhas duplicar. Se precisar ajustar o intervalo (por exemplo, o pivot crescer para a coluna K), basta mudar o valor `endColumn`. + +## Etapa 3: Acessar a Planilha de Destino + +A maioria das pastas de trabalho tem uma única planilha, mas a API funciona da mesma forma para múltiplas planilhas. Pegue a primeira planilha (índice 0) – é onde o pivot original está. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Dica profissional:** +Se você tem planilhas nomeadas, também pode recuperá‑las pelo nome: `workbook.Worksheets["Sheet1"]`. Isso ajuda a evitar codificação fixa de índices quando a estrutura da pasta de trabalho mudar. + +## Etapa 4: Como Copiar Linhas – Duplicando a Tabela Pivot + +Eis o coração de **how to duplicate pivot**: copiamos as linhas que contêm o pivot para um novo local. No nosso caso começamos na linha 31 (índice baseado em zero 30). O método `CopyRows` copia *ambos* os dados e o cache subjacente do pivot, de modo que as novas linhas se comportam exatamente como as originais. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**O que está acontecendo nos bastidores?** +`CopyRows` clona cada linha, preservando fórmulas, estilos e definições do pivot. Como o cache do pivot reside ao nível da pasta de trabalho, o pivot duplicado referencia automaticamente a mesma fonte de dados – sem necessidade de configuração extra. + +**Caso extremo – linhas ocultas:** +Se alguma das linhas no intervalo de origem estiver oculta, ela permanecerá oculta após a cópia. Se quiser revelá‑las, chame `worksheet.Rows[destRow].IsHidden = false` após a cópia. + +## Etapa 5: Salvar a Pasta de Trabalho – Verificando a Duplicata + +Por fim, grave as alterações de volta ao disco. Você pode sobrescrever o arquivo original ou, de forma mais segura, salvar com um novo nome para poder comparar antes/depois. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Resultado esperado:** +Abra `CopyWithPivot.xlsx`. Você encontrará o pivot original em **A1:J20** e uma cópia idêntica começando em **A31:J50**. Ambos os pivots podem ser atualizados independentemente, e quaisquer segmentações (slicers) vinculadas ao original ainda funcionarão na cópia porque compartilham o mesmo cache. + +## Perguntas Frequentes & Variações + +### Posso duplicar múltiplos pivots de uma vez? + +Com certeza. Percorra todas as tabelas pivot (`worksheet.PivotTables`) e copie o intervalo de cada uma para um destino diferente. Apenas certifique‑se de que os intervalos de destino não se sobreponham. + +### E se a pasta de trabalho fonte estiver protegida por senha? + +O Aspose.Cells permite abrir um arquivo protegido passando a senha ao construtor `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Como copiar linhas sem afetar fórmulas? + +Se você precisar apenas dos *valores* (sem fórmulas), use `CopyRows` com a flag `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Existe uma forma de copiar linhas para uma *outra* pasta de trabalho? + +Sim. Depois de copiar as linhas na planilha de origem, você pode clonar a planilha em outra instância `Workbook` usando `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Dicas Profissionais para Copiar Linhas com Automação Excel Confiável + +- **Valide o intervalo** antes de copiar. Um rápido `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` impede erros de fora do intervalo. +- **Desative o cálculo** enquanto copia grandes intervalos: `workbook.Settings.CalcMode = CalcMode.Manual;` – isso acelera a operação drasticamente. +- **Dispose objetos** (`workbook.Dispose()`) se estiver processando muitos arquivos em um loop para liberar recursos nativos. +- **Registre a operação** – especialmente em pipelines de produção – para que você possa rastrear quais arquivos foram processados e detectar falhas cedo. + +## Conclusão + +Agora você sabe **how to duplicate pivot** tabelas em C# usando Aspose.Cells, e viu o fluxo completo desde **load excel workbook c#** até **excel automation copy rows** e, finalmente, salvar o resultado. O exemplo é autônomo, funciona imediatamente e pode ser estendido para lidar com múltiplos pivots, arquivos protegidos ou cópia entre pastas de trabalho. + +Próximos passos? Experimente adaptar o script para: + +- Atualizar o pivot duplicado programaticamente (`pivotTable.RefreshData();`). +- Exportar a área duplicada para um CSV para processamento posterior. +- Integrar o código em uma API ASP.NET Core para que usuários possam enviar um arquivo e receber instantaneamente a versão com pivot duplicado. + +Feliz codificação, e que sua automação Excel seja sempre fluida! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/row-and-column-management/_index.md b/cells/portuguese/net/row-and-column-management/_index.md index 21e108938b..d276294e86 100644 --- a/cells/portuguese/net/row-and-column-management/_index.md +++ b/cells/portuguese/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Aprenda a exibir linhas e colunas no Excel usando o Aspose.Cells para .NET com n Aprenda a excluir uma coluna em um arquivo do Excel usando o Aspose.Cells para .NET. Siga nosso guia passo a passo detalhado para otimizar suas modificações em arquivos do Excel. ### [Excluir uma linha no Aspose.Cells .NET](./delete-row-aspose-cells/) Aprenda a excluir uma linha no Excel com o Aspose.Cells para .NET. Este guia passo a passo aborda os pré-requisitos, a importação de código e um passo a passo detalhado para uma manipulação de dados simplificada. +### [Aspose Cells Excluir Linhas – Proteger Linha de Cabeçalho no Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Aprenda a excluir linhas mantendo a primeira linha intacta como cabeçalho usando Aspose.Cells para .NET. ### [Excluir várias linhas em Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Aprenda a excluir várias linhas no Excel usando o Aspose.Cells para .NET. Este guia passo a passo detalhado aborda pré-requisitos, exemplos de codificação e perguntas frequentes para desenvolvedores. ### [Inserir uma coluna no Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/portuguese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/portuguese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..0833dcb4a4 --- /dev/null +++ b/cells/portuguese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells exclui linhas enquanto protege a linha de cabeçalho. Aprenda + como recuperar a primeira tabela e excluir com segurança as linhas da tabela do + Excel em C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: pt +og_description: Aspose Cells exclui linhas mantendo a linha de cabeçalho protegida. + Aprenda a recuperar a primeira tabela e excluir com segurança as linhas da tabela + do Excel em C#. +og_title: Aspose Cells Excluir Linhas – Proteger a Linha de Cabeçalho no Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Excluir Linhas – Proteger a Linha de Cabeçalho no Excel +url: /pt/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Proteger a Linha de Cabeçalho no Excel + +Já tentou **aspose cells delete rows** de uma tabela apenas para descobrir que o cabeçalho desapareceu? Isso é uma armadilha comum ao manipular planilhas Excel programaticamente. Neste guia, percorreremos uma solução completa e executável que **protege a linha de cabeçalho**, mostra como **retrieve first table**, e exclui com segurança **delete Excel table rows** sem quebrar a estrutura. + +Cobriremos tudo, desde o carregamento da pasta de trabalho até o tratamento da exceção que a Aspose lança quando você tenta deixar o cabeçalho órfão. Ao final, você terá um padrão sólido que pode inserir em qualquer projeto .NET que use Aspose.Cells. + +--- + +## O que você precisará + +- **Aspose.Cells for .NET** (v23.12 ou posterior) – a biblioteca que permite trabalhar com arquivos Excel sem o Office instalado. +- Um ambiente básico de desenvolvimento C# (Visual Studio, Rider ou a CLI `dotnet`). +- Um arquivo Excel (`TableWithHeader.xlsx`) que contém ao menos um **ListObject** (tabela Excel) com uma linha de cabeçalho na primeira linha. + +Nenhum pacote NuGet adicional é necessário além do Aspose.Cells. + +## Etapa 1: Carregar a Pasta de Trabalho e Recuperar a Primeira Tabela + +A primeira coisa que você precisa fazer é abrir a pasta de trabalho e obter a tabela que deseja modificar. É aqui que a palavra‑chave secundária **retrieve first table** entra em ação. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Por que isso importa:** +- `Workbook` lê o arquivo sem precisar do Excel instalado. +- `worksheet.ListObjects[0]` é a maneira mais direta de **retrieve first table**; se você tem várias tabelas, pode iterar ou usar o nome da tabela. + +> **Dica profissional:** Se você não tem certeza se uma planilha realmente contém uma tabela, verifique primeiro `worksheet.ListObjects.Count` para evitar uma `IndexOutOfRangeException`. + +## Etapa 2: Proteger a Linha de Cabeçalho ao Excluir Linhas + +Agora vem o cerne da questão: **aspose cells delete rows** sem apagar o cabeçalho. O método `DeleteRows` da Aspose recebe um índice inicial baseado em zero e uma contagem. Tentar excluir o cabeçalho (linha 0) dispara uma exceção, que é exatamente o que queremos evitar. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explicação da lógica:** + +| Etapa | Razão | +|------|--------| +| `table.DeleteRows(1, 2);` | O índice 1 aponta para a **segunda** linha (a primeira linha de dados). Excluir duas linhas remove as linhas 2‑3 em termos do Excel, deixando o cabeçalho (linha 1) intacto. | +| `catch (Exception ex)` | A Aspose lança uma exceção **apenas** quando a operação deixaria o cabeçalho órfão. Capturá‑la permite registrar uma mensagem amigável em vez de travar o aplicativo. | +| `Save` | Persistir as alterações permite abrir `Result.xlsx` e ver que o cabeçalho ainda está presente. | + +> **E se você realmente precisar excluir o cabeçalho?** +> Use `table.ShowHeaders = false;` antes da exclusão, ou exclua a tabela inteira e recrie‑a. Mas na maioria dos cenários de negócios você desejará **protect header row**. + +## Etapa 3: Verificar o Resultado – Saída Esperada + +Depois de executar o programa, abra `Result.xlsx`. Você deverá ver: + +- A primeira linha ainda contém os títulos originais das colunas. +- As linhas 2‑3 (as que visamos) desapareceram, e os dados restantes foram deslocados para cima. + +O console exibirá: + +``` +Rows deleted successfully. +``` + +Se você tentou excluir o cabeçalho por engano (por exemplo, `table.DeleteRows(0, 1);`), a saída seria: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Essa mensagem confirma que a proteção embutida da Aspose está cumprindo seu papel. + +## Etapa 4: Formas Alternativas de **Delete Excel Table Rows** + +Às vezes você precisa de mais controle — como excluir linhas com base em uma condição ou remover linhas não contíguas. Aqui estão dois padrões rápidos que mantêm o cabeçalho seguro. + +### 4.1 Excluir Linhas por Filtro de Dados + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Exclusão em Massa Usando um Intervalo + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Ambos os trechos respeitam a regra **protect header row** porque o índice inicial nunca fica abaixo de 1. + +## Etapa 5: Armadilhas Comuns & Como Evitá‑las + +| Armadilha | Por que acontece | Solução | +|----------|------------------|---------| +| Excluir o cabeçalho acidentalmente | Usar `0` como índice inicial | Sempre iniciar em `1` para linhas de dados, ou verificar `table.ShowHeaders` primeiro. | +| `IndexOutOfRangeException` quando a planilha não tem tabelas | Assumindo que uma tabela existe | Verificar `worksheet.ListObjects.Count > 0` antes de acessar `[0]`. | +| Alterações não salvas | Esquecer de chamar `Save` | Chamar `workbook.Save` após as modificações. | +| Excluir linhas no meio desloca índices, causando pulos | Iteração avançada enquanto exclui | Iterar **para trás** ou coletar as linhas a excluir primeiro. | + +## Etapa 6: Juntar Tudo – Exemplo Completo Funcional + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Execute este programa, abra `Result.xlsx` e você verá o cabeçalho intacto enquanto as linhas selecionadas desaparecem. Essa é a **solução completa e autônoma** para **aspose cells delete rows** sem sacrificar o cabeçalho. + +## Conclusão + +Acabamos de demonstrar como **aspose cells delete rows** enquanto **protecting the header row**, como **retrieve first table**, e várias maneiras de **delete excel table rows** com segurança. Os principais pontos são: + +- Sempre iniciar as exclusões no índice 1 para manter o cabeçalho vivo. +- Use `try/catch` para lidar com a exceção de proteção embutida da Aspose. +- Verifique a existência da tabela antes de operar e itere para trás ao remover linhas condicionalmente. + +Pronto para avançar? Experimente combinar esta abordagem com as APIs de estilo do **Aspose Cells** para destacar linhas excluídas antes da remoção, ou automatizar o processo em várias planilhas. As possibilidades são infinitas, e agora você tem um padrão confiável para construir. + +Se você achou este tutorial útil, dê um joinha, compartilhe com colegas ou deixe um comentário com suas próprias soluções de casos extremos. Feliz codificação! + +![Exemplo de Aspose Cells Delete Rows – Linha de Cabeçalho Protegida](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/portuguese/net/saving-and-exporting-excel-files-with-options/_index.md index a9dc79d552..cfb0082cc0 100644 --- a/cells/portuguese/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/portuguese/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,7 @@ Aprenda como lidar com avisos ao carregar arquivos do Excel no .NET usando o Asp Aprenda a especificar propriedades de documento como versão, autor e título em um arquivo Excel programaticamente usando o Aspose.Cells para .NET com instruções passo a passo. ### [Aparando linhas e colunas em branco iniciais durante a exportação](./trimming-leading-blank-rows-and-columns/) Simplifique suas exportações de CSV removendo linhas e colunas em branco iniciais com o Aspose.Cells para .NET. Dados limpos estão a apenas alguns passos de distância. +### [Como salvar a pasta de trabalho em C# – Guia completo de automação do Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/portuguese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..b984fc5325 --- /dev/null +++ b/cells/portuguese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-22 +description: Como salvar a pasta de trabalho em C# usando Aspose.Cells — guia passo + a passo que cobre como carregar o Excel, criar planilha, reutilizar planilha e gerar + relatório. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: pt +og_description: Como salvar uma pasta de trabalho em C# com Aspose.Cells. Aprenda + a carregar Excel, criar planilha, reutilizar planilha e gerar relatório em um único + tutorial. +og_title: Como salvar uma pasta de trabalho em C# – Guia completo de automação do + Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Como salvar a pasta de trabalho em C# – Guia completo de automação do Excel +url: /pt/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Salvar uma Pasta de Trabalho em C# – Guia Completo de Automação Excel + +Já se perguntou **como salvar uma pasta de trabalho** em C# depois de processar alguns dados? Você não está sozinho. A maioria dos desenvolvedores bate em um muro quando o relatório parece perfeito na tela, mas se recusa a gravar no disco. Neste tutorial vamos percorrer um exemplo completo que não só mostra **como salvar uma pasta de trabalho**, mas também cobre **como carregar o Excel**, **como criar planilha**, **como reutilizar planilha** e **como gerar relatório** — tudo com Aspose.Cells. + +Pense nisso como uma conversa durante o café, onde eu puxo o código do meu laptop e explico cada linha. Ao final, você terá um programa executável que carrega um modelo, injeta dados via SmartMarker, reutiliza um nome de planilha de detalhe existente e, finalmente, grava o arquivo na sua pasta. Sem mistérios, apenas passos claros que você pode copiar‑colar. + +## O que Você Precisa + +- **Aspose.Cells for .NET** (última versão em 2026). Você pode obtê‑lo via NuGet com `Install-Package Aspose.Cells`. +- Um ambiente de desenvolvimento .NET (Visual Studio, Rider ou VS Code com a extensão C# funciona bem). +- Um arquivo modelo Excel básico chamado `MasterTemplate.xlsx` colocado em uma pasta que você controla. +- Conhecimento mínimo de C# — se você já escreveu um `Console.WriteLine` antes, está pronto para começar. + +> **Dica de especialista:** Mantenha seu modelo em uma pasta *Resources* separada e marque‑a como “Copy if newer” para que o caminho permaneça consistente entre builds. + +Agora, vamos mergulhar no código. + +## Etapa 1: Como Carregar o Excel – Abrir a Pasta de Trabalho Modelo + +A primeira coisa que você precisa fazer é trazer a pasta de trabalho para a memória. Aspose.Cells transforma isso em uma linha única, mas entender o porquê ajuda quando você precisar depurar mais tarde. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Por que isso importa:** Carregar a pasta de trabalho dá acesso a cada planilha, estilo e intervalo nomeado dentro do modelo. Se o arquivo não for encontrado, Aspose lança uma `FileNotFoundException`, então verifique o caminho. +- **Caso extremo:** Se o modelo estiver protegido por senha, passe a senha ao construtor `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Etapa 2: Como Reutilizar Planilha – Configurar Opções do SmartMarker + +SmartMarker pode criar automaticamente uma nova planilha de detalhe, mas você pode já ter uma planilha chamada **Detail**. Para evitar conflito, instruímos o processador a reutilizar esse nome. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Por que isso importa:** Sem essa opção, Aspose acrescentaria um sufixo numérico (ex.: “Detail1”), o que pode quebrar macros ou fórmulas que esperam um nome fixo de planilha. +- **E se a planilha não existir?** Aspose a criará para você — então o mesmo código funciona tanto se a planilha estiver presente quanto se não estiver. + +## Etapa 3: Como Criar Planilha – Preparar a Fonte de Dados + +Mesmo que não estejamos adicionando manualmente uma planilha aqui, os dados que você fornece ao SmartMarker determinam se uma nova planilha será criada. Vamos construir um objeto anônimo simples que imita uma lista de pedidos. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Por que isso importa:** SmartMarker escaneia o modelo em busca de marcadores como `&=Header` e `&=Items.Id`. A estrutura de `orderData` deve corresponder exatamente a esses marcadores, caso contrário o processador os ignora silenciosamente. +- **Variação:** Se você obtiver dados de um banco de dados, substitua o tipo anônimo por uma lista de DTOs ou um `DataTable`. O processador lida com ambos. + +## Etapa 4: Como Gerar Relatório – Processar o SmartMarker + +Agora vinculamos os dados ao modelo. O processador percorre a primeira planilha, substitui os marcadores e cria a planilha de detalhe. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Por que isso importa:** Esta única linha faz o trabalho pesado — preenchendo o cabeçalho, iterando sobre `Items` e respeitando o `DetailSheetNewName` que definimos antes. +- **Pergunta comum:** *E se eu tiver várias planilhas com marcadores?* Percorra cada planilha e chame `SmartMarkerProcessor.Process` individualmente. + +## Etapa 5: Como Salvar a Pasta de Trabalho – Persistir o Arquivo Resultante + +Finalmente, gravamos a pasta de trabalho modificada no disco. Este é o momento em que **como salvar uma pasta de trabalho** se torna concreto. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Por que isso importa:** O método `Save` suporta muitos formatos (`.xlsx`, `.xls`, `.csv`, `.pdf`, etc.). Por padrão ele grava um arquivo Excel, mas você pode passar um objeto `SaveOptions` para mudar a saída. +- **Caso extremo:** Se o arquivo de destino estiver aberto no Excel, `Save` lança uma `IOException`. Certifique‑se de fechar quaisquer instâncias ou use um nome de arquivo único a cada execução. + +![Exemplo de Como Salvar uma Pasta de Trabalho em C#](/images/how-to-save-workbook-csharp.png "Como Salvar uma Pasta de Trabalho em C# – visão geral visual do processo") + +### Exemplo Completo Funcionando + +Juntando tudo, aqui está um aplicativo console autônomo que você pode compilar e executar: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Saída esperada:** Após a execução, você encontrará `SmartMarkerWithDupDetail.xlsx` em `YOUR_DIRECTORY`. Abra‑o e você deverá ver: + +- O cabeçalho original preenchido com “Orders”. +- Uma nova (ou reutilizada) planilha chamada **Detail** contendo duas linhas: `Id=1, Qty=5` e `Id=2, Qty=3`. + +Se a planilha **Detail** já existia, seu conteúdo será sobrescrito com os novos dados — sem planilhas extras poluindo seu arquivo. + +## Perguntas Frequentes (FAQ) + +| Pergunta | Resposta | +|----------|----------| +| *Posso salvar em PDF ao invés de XLSX?* | Sim. Substitua `workbook.Save("file.xlsx")` por `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *E se meu modelo tiver várias seções SmartMarker?* | Chame `SmartMarkerProcessor.Process` em cada planilha que contém marcadores, ou passe uma coleção de objetos de dados que correspondam a cada seção. | +| *Existe uma forma de acrescentar dados ao invés de sobrescrever a planilha Detail?* | Use `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (disponível em versões mais recentes do Aspose). | +| *Preciso descartar o Workbook?* | A classe `Workbook` implementa `IDisposable`. Envolva‑a em um bloco `using` para gerenciamento limpo de recursos. | + +## Conclusão + +Acabamos de cobrir **como salvar uma pasta de trabalho** em C# do início ao fim, demonstrando todo o pipeline: **como carregar o Excel**, **como criar planilha** (implicitamente via SmartMarker), **como reutilizar planilha** e **como gerar relatório**. O código está pronto para ser inserido em qualquer projeto .NET, e as explicações fornecem contexto suficiente para adaptá‑lo a cenários mais complexos — como relatórios multi‑planilha, formatação condicional ou exportação para PDF. + +Pronto para o próximo desafio? Tente adicionar um gráfico que visualize as quantidades de pedido, ou troque o formato de saída para CSV para processamento posterior. Os mesmos princípios — carregar, processar e salvar — ainda se aplicam, então você acabará reutilizando esse padrão em muitas tarefas de relatório. + +Se encontrar algum obstáculo ou tiver ideias para extensões, sinta‑se à vontade para deixar um comentário. Boa codificação, e aproveite a experiência fluida de finalmente poder **salvar a pasta de trabalho** exatamente como você precisa! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/smart-markers-dynamic-data/_index.md b/cells/portuguese/net/smart-markers-dynamic-data/_index.md index 4b6de51587..ddbc82de33 100644 --- a/cells/portuguese/net/smart-markers-dynamic-data/_index.md +++ b/cells/portuguese/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Descubra o poder do Aspose.Cells com este tutorial passo a passo sobre como usar Libere o potencial dos relatórios do Excel com o Aspose.Cells manipulando objetos aninhados sem esforço usando Marcadores Inteligentes em um guia passo a passo. ### [Implementar matriz de variáveis com marcadores inteligentes Aspose.Cells](./variable-array-smart-markers/) Desbloqueie o poder do Aspose.Cells. Aprenda a implementar matrizes de variáveis com Marcadores Inteligentes passo a passo para gerar relatórios do Excel sem interrupções. +### [Como gerar relatório Excel em C# – Guia completo usando SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Aprenda passo a passo a criar relatórios Excel em C# usando SmartMarker, cobrindo configuração, geração e personalização de dados. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/portuguese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..fb372a1998 --- /dev/null +++ b/cells/portuguese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-22 +description: Como gerar relatório Excel em C# com um modelo mestre‑detalhe. Aprenda + a preencher rapidamente um modelo Excel em C#, usando SmartMarker para planilhas + repetíveis. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: pt +og_description: Como gerar relatório Excel em C# usando um modelo reutilizável. Este + guia passo a passo mostra como preencher o modelo Excel em C# com dados mestre‑detalhe. +og_title: Como gerar relatório Excel em C# – Tutorial completo do SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Como gerar relatório Excel em C# – Guia completo usando SmartMarker +url: /pt/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Gerar Relatório Excel em C# – Guia Completo Usando SmartMarker + +Já se perguntou **como gerar relatório Excel** em C# sem escrever código célula‑por‑célula interminável? Você não está sozinho. A maioria dos desenvolvedores bate em um muro quando precisa de um relatório polido, com várias planilhas, que reflita relacionamentos mestre‑detalhe — pense em pedidos e itens — mas não quer reinventar a roda a cada vez. + +A boa notícia? Com um modelo Excel pronto e o motor **SmartMarker** do Aspose.Cells, você pode **populate Excel template C#** em apenas algumas linhas. Neste tutorial vamos percorrer um cenário real, explicar por que cada passo importa e fornecer um exemplo completo e executável que você pode copiar‑colar hoje. + +> **O que você receberá:** um relatório Excel mestre‑detalhe onde cada pedido gera sua própria planilha, tudo impulsionado por objetos C# simples. Sem loops manuais sobre células, sem fórmulas frágeis — apenas código limpo e mantível. + +--- + +## Pré‑requisitos + +Antes de mergulharmos, certifique‑se de que você tem: + +- **.NET 6.0** (ou superior) instalado – o código tem alvo .NET 6 mas funciona também no .NET Framework 4.7+. +- **Aspose.Cells for .NET** pacote NuGet (`Install-Package Aspose.Cells`) – fornece as classes `Workbook`, `SmartMarkerProcessor` e relacionadas. +- Um arquivo Excel chamado **MasterDetailTemplate.xlsx** colocado em `YOUR_DIRECTORY`. Ele deve conter um bloco SmartMarker como `{{Orders.OrderId}}` na primeira planilha e um bloco aninhado `{{Orders.Items.Prod}}` para os itens de linha. +- Um entendimento básico de tipos anônimos C# – usaremos eles para modelar pedidos e itens. + +Se algum desses itens lhe for desconhecido, não se preocupe. Mencionaremos alternativas (por exemplo, usando EPPlus) mais adiante, mas o conceito central permanece o mesmo. + +--- + +## Etapa 1: Carregar o Modelo Excel que Contém Blocos SmartMarker + +A primeira coisa que fazemos é abrir o arquivo de modelo. Pense no modelo como um esqueleto; o SmartMarker preencherá depois com dados reais. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Por que isso importa:** Ao separar o layout (o modelo) dos dados (os objetos C#), você mantém designers e desenvolvedores felizes. Designers podem ajustar fontes, cores ou fórmulas sem tocar no código. + +--- + +## Etapa 2: Construir a Fonte de Dados Mestre‑Detalhe + +Em seguida, criamos os dados que irão popular o modelo. Para um relatório típico de pedidos, você tem uma coleção de pedidos, cada um com sua própria coleção de itens. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Dica profissional:** Use classes fortemente tipadas em vez de tipos anônimos se precisar reutilizar em vários relatórios. A abordagem anônima mantém o exemplo conciso. + +**Por que isso importa:** O SmartMarker funciona combinando nomes de propriedades (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) com os marcadores no modelo. A hierarquia deve coincidir exatamente, caso contrário o motor ignorará essas seções. + +--- + +## Etapa 3: Instruir o SmartMarker a Criar uma Nova Planilha para Cada Registro Mestre + +Por padrão o SmartMarker grava todas as linhas em uma única planilha. Queremos cada pedido em sua própria planilha, o que é perfeito para impressão ou envio de PDFs por pedido posteriormente. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Por que isso importa:** `EnableRepeatingSheet` elimina a necessidade de clonagem manual de planilhas. O motor copia a planilha original, injeta os dados do pedido e renomeia a planilha automaticamente (geralmente usando o valor da primeira coluna). + +--- + +## Etapa 4: Processar o Modelo com Seus Dados + +Agora juntamos tudo. O `SmartMarkerProcessor` percorre a pasta de trabalho, substitui as tags e cria novas planilhas conforme instruído. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Por que isso importa:** Esta única linha faz o trabalho pesado — analisar o modelo, iterar sobre coleções e lidar com tabelas aninhadas. É o coração de **populate Excel template C#** sem loops manuais. + +--- + +## Etapa 5: Salvar o Relatório Finalizado + +Por fim, gravamos a pasta de trabalho preenchida no disco. Você também pode transmiti‑la diretamente para uma resposta HTTP em aplicações web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Por que isso importa:** Salvar em um arquivo fornece um artefato tangível que você pode abrir no Excel, compartilhar com stakeholders ou alimentar em processos subsequentes como conversão para PDF. + +--- + +## Exemplo Completo Funcionando (Pronto para Copiar‑Colar) + +Abaixo está o programa completo, incluindo diretivas `using` e um método `Main`. Cole em um aplicativo console, ajuste os caminhos dos arquivos e execute. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Saída Esperada + +Ao abrir `MasterDetailResult.xlsx` você verá: + +- **Planilha “Order_1”** – contém o cabeçalho do Pedido 1 e duas linhas para os produtos A e B. +- **Planilha “Order_2”** – contém o cabeçalho do Pedido 2 e uma única linha para o produto C. +- Todas as fórmulas, formatações e gráficos do modelo original são preservados. + +![Relatório Excel com planilhas separadas para cada pedido – exemplo de pasta de trabalho preenchida](/images/excel-report-example.png "Relatório Excel gerado com dados mestre‑detalhe") + +*Texto alternativo da imagem: relatório Excel gerado com planilhas separadas para cada pedido, mostrando como gerar relatório Excel usando C# e SmartMarker.* + +--- + +## Perguntas Frequentes & Casos de Borda + +### E se eu precisar de uma planilha estática (por exemplo, um resumo) ao lado das planilhas repetidas? + +Defina `EnableRepeatingSheet = true` **apenas** na planilha que contém o bloco mestre. As demais planilhas permanecerão intactas, permitindo que você mantenha uma página de resumo no modelo original. + +### Posso usar um DataTable em vez de objetos anônimos? + +Com certeza. O SmartMarker funciona com qualquer objeto que implemente `IEnumerable`. Basta substituir o tipo anônimo por um `DataTable` e garantir que os nomes das colunas correspondam às tags. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Como altero a convenção de nomenclatura das planilhas geradas? + +Implemente a interface personalizada `ISmartMarkerSheetNaming` (ou manipule `workbook.Worksheets` após o processamento). A maioria dos desenvolvedores simplesmente renomeia as planilhas com base no valor de uma célula: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### E se meu modelo usar uma sintaxe de placeholder diferente? + +O SmartMarker permite delimitadores personalizados via `SmartMarkerOptions`. Por exemplo, para usar `<< >>` em vez de `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Dicas para Escalar Essa Abordagem + +- **Cache o modelo** na memória se você gerar muitos relatórios por requisição; carregar do disco a cada vez adiciona latência. +- **Combine com conversão para PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) para saídas amigáveis a e‑mail. +- **Parametrize os caminhos dos arquivos** usando arquivos de configuração ou variáveis de ambiente para tornar a solução portátil entre dev, teste e produção. +- **Teste unitariamente a camada de dados** separadamente; o SmartMarker é determinístico, então você só precisa verificar se os dados fornecidos correspondem ao esquema esperado. + +--- + +## Conclusão + +Cobremos **como gerar relatório Excel** em C# de ponta a ponta, desde o carregamento de um modelo habilitado para SmartMarker até a gravação de uma pasta de trabalho multi‑planilha que reflete relacionamentos mestre‑detalhe. Ao **populate Excel template C#** com apenas algumas linhas de código, você evita lógica frágil célula‑por‑célula e dá liberdade aos designers para moldar o visual final. + +A seguir, você pode explorar: + +- Usar **populate Excel template C#** com gráficos que atualizam automaticamente por planilha. +- Integrar **excel smartmarker c#** com ASP.NET Core para transmitir relatórios diretamente aos navegadores. +- Automatizar pipelines de **c# excel automation** que extraem dados de APIs ou bancos de dados. + +Experimente, ajuste o modelo e veja como rapidamente você pode transformar dados brutos em um relatório Excel refinado. Tem dúvidas ou um caso de uso interessante? Deixe um comentário abaixo — feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/portuguese/net/tables-and-lists/_index.md b/cells/portuguese/net/tables-and-lists/_index.md index b9307732b6..7a81ca8548 100644 --- a/cells/portuguese/net/tables-and-lists/_index.md +++ b/cells/portuguese/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Converta tabelas em intervalos no Excel facilmente usando o Aspose.Cells para .N Descubra o poder do Aspose.Cells para .NET. Aprenda a ler e escrever tabelas com fontes de dados de consulta neste guia passo a passo detalhado. ### [Definir comentário de tabela ou lista no Excel](./setting-comment-of-table-or-list/) Aprenda como definir comentários para tabelas no Excel usando o Aspose.Cells para .NET com nosso guia passo a passo fácil. +### [Criar tabela do Excel em C# – Guia passo a passo](./create-excel-table-in-c-step-by-step-guide/) +Aprenda a criar uma tabela do Excel em C# usando Aspose.Cells com este guia passo a passo fácil. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/portuguese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/portuguese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..9377f687a6 --- /dev/null +++ b/cells/portuguese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Crie uma tabela Excel em C# rapidamente. Aprenda como adicionar a tabela, + definir o intervalo da tabela, ocultar o cabeçalho da tabela e desativar o filtro + da tabela com um exemplo de código completo. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: pt +og_description: Crie uma tabela do Excel em C# com um exemplo claro. Aprenda como + adicionar a tabela, definir o intervalo da tabela, ocultar o cabeçalho da tabela + e desativar o filtro em apenas algumas linhas. +og_title: Criar Tabela do Excel em C# – Guia Completo de Programação +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Criar Tabela do Excel em C# – Guia Passo a Passo +url: /pt/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Tabela Excel em C# – Guia Passo a Passo + +Já precisou **criar tabela Excel** programaticamente usando C#? Criar uma tabela Excel pode ser muito simples quando você conhece os passos corretos. Neste tutorial vamos percorrer um exemplo completo e executável que mostra **como adicionar tabela**, **definir o intervalo da tabela**, **ocultar o cabeçalho da tabela** e até **desativar o filtro da tabela** – tudo sem sair do seu IDE. + +Se você já se frustrou com a UI do AutoFilter aparecendo quando não deseja, está no lugar certo. Ao final deste guia você terá um trecho pronto‑para‑executar que gera uma planilha limpa chamada *TableNoFilter.xlsx* e entenderá por que cada linha é importante. + +## O que Você Vai Aprender + +- Como **criar tabela Excel** do zero com Aspose.Cells. +- A sintaxe exata para **definir o intervalo da tabela** (A1:D5 no nosso caso). +- Como habilitar a linha de cabeçalho para que a UI de filtro incorporada apareça. +- O truque para **ocultar o cabeçalho da tabela** e **desativar o filtro da tabela** quando não precisar mais deles. +- Um programa C# completo, pronto para copiar‑e‑colar, que você pode executar hoje. + +### Pré‑requisitos + +- .NET 6.0 ou superior (o código também funciona com .NET Framework 4.7+). +- Aspose.Cells para .NET instalado via NuGet (`Install-Package Aspose.Cells`). +- Familiaridade básica com C# e Visual Studio (ou qualquer IDE de sua preferência). + +--- + +## Passo 1: Configurar o Projeto e Importar Namespaces + +Antes de poder **criar tabela Excel**, você precisa de um projeto console que referencie Aspose.Cells. Abra um terminal e execute: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Agora abra *Program.cs* e adicione as declarações `using` necessárias: + +```csharp +using System; +using Aspose.Cells; +``` + +Essas importações dão acesso às classes `Workbook`, `Worksheet`, `CellArea` e `ListObject` que alimentam o resto do tutorial. + +## Passo 2: Inicializar uma Nova Workbook e Obter a Primeira Worksheet + +Criar uma workbook nova é o primeiro passo lógico. Pense na workbook como o contêiner do arquivo Excel, e na worksheet como a planilha individual onde colocaremos nossa tabela. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Por que isso importa:** Uma `Workbook` recém‑criada começa com uma única planilha vazia. Ao acessar `Worksheets[0]` garantimos que estamos trabalhando na planilha padrão sem precisar criar uma manualmente. + +## Passo 3: Definir o Intervalo da Tabela (A1:D5) + +No vocabulário do Excel, uma *tabela* vive dentro de um bloco retangular de células. A estrutura `CellArea` nos permite apontar esse bloco. Aqui vamos **definir o intervalo da tabela** para as células de A1 a D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Dica:** Se precisar de um intervalo dinâmico, você pode calcular `endRow` e `endColumn` com base no tamanho dos dados. A indexação baseada em zero é uma fonte comum de erros de “off‑by‑one”, então verifique seus números duas vezes. + +## Passo 4: Adicionar a Tabela e Habilitar a Linha de Cabeçalho + +Agora vem o coração do tutorial: **como adicionar tabela** à worksheet. A coleção `ListObjects` gerencia tabelas, e definir `ShowHeaders = true` injeta automaticamente a UI do AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explicação:** +> - `Add(tableRange, true)` cria um novo `ListObject` (ou seja, uma tabela Excel) dentro do intervalo especificado. +> - O parâmetro `true` indica ao Aspose.Cells que a primeira linha do intervalo deve ser tratada como cabeçalho. +> - Definir `ShowHeaders` como `true` torna o cabeçalho visível e aciona a UI de filtro incorporada. + +Neste ponto, se você abrir a workbook gerada, verá uma tabela bem formatada com setas de filtro em cada cabeçalho de coluna. + +## Passo 5: Ocultar o Cabeçalho da Tabela e Desativar o AutoFilter + +Às vezes você quer os dados sem a bagunça da UI. Talvez esteja exportando um relatório limpo onde filtros não são necessários. Aqui está a técnica de **ocultar o cabeçalho da tabela** e **desativar o filtro da tabela**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Por que fazer isso:** +> - `ShowHeaders = false` remove a linha de cabeçalho visual, transformando a tabela em um bloco de dados simples. +> - Definir `AutoFilter = null` limpa o objeto de filtro oculto, garantindo que nenhuma lógica residual de filtro permaneça. É isso que entendemos por **desativar o filtro da tabela**. + +## Passo 6: Salvar a Workbook no Disco + +Por fim, gravamos o arquivo em um local de sua escolha. Substitua `"YOUR_DIRECTORY"` por um caminho real na sua máquina. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Ao executar o programa, você deverá ver: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Abrindo o arquivo, você encontrará uma planilha com o bloco de dados (sem cabeçalho, sem setas de filtro). Esse é o ciclo completo — de **criar tabela Excel** a **desativar filtro da tabela**. + +--- + +## Exemplo Completo (Pronto para Copiar‑e‑Colar) + +A seguir está o programa inteiro, pronto para compilar. Basta substituir o diretório placeholder por um caminho válido. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Resultado esperado:** Um arquivo chamado *TableNoFilter.xlsx* contendo um intervalo de dados simples A1:D5 sem linha de cabeçalho visível e sem menus suspensos de filtro. + +--- + +## Perguntas Frequentes & Casos de Borda + +### E se eu precisar de várias tabelas na mesma worksheet? + +Basta repetir o **Passo 3** com um novo `CellArea` e um novo `ListObject`. Cada tabela mantém suas próprias configurações de cabeçalho e filtro, então você pode ocultar uma e manter outra visível. + +### Posso estilizar a tabela (linhas alternadas, cores) antes de ocultar o cabeçalho? + +Com certeza. O `ListObject` expõe a propriedade `TableStyleType`. Por exemplo: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Você pode aplicar o estilo **antes** de ocultar o cabeçalho; a formatação visual permanecerá intacta. + +### E se eu quiser manter o cabeçalho, mas apenas ocultar as setas de filtro? + +Defina `ShowHeaders = true` (mantém a linha) e então limpe o filtro: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Isso satisfaz o requisito de **desativar filtro da tabela** sem perder os rótulos das colunas. + +### Isso funciona apenas com arquivos .xlsx? + +Aspose.Cells detecta automaticamente o formato com base na extensão do arquivo passada ao `Save`. Você também pode gerar `.xls`, `.csv` ou até `.pdf` usando uma extensão diferente. + +--- + +## Conclusão + +Acabamos de cobrir tudo o que você precisa para **criar tabela Excel** em C# usando Aspose.Cells, desde **definir o intervalo da tabela** até **ocultar o cabeçalho da tabela** e **desativar o filtro da tabela**. O código é curto, claro e pronto para uso em produção. + +Em seguida, você pode explorar **como adicionar tabela** com dados dinâmicos, aplicar estilos personalizados ou exportar a mesma workbook para PDF. Cada um desses tópicos se baseia na fundação que você acabou de dominar, então sinta‑se à vontade para experimentar e adaptar o trecho aos seus próprios projetos. + +Tem alguma variação que gostaria de compartilhar? Deixe um comentário abaixo e feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/converting-excel-files-to-other-formats/_index.md b/cells/russian/net/converting-excel-files-to-other-formats/_index.md index 8211f13e09..76760fbb8c 100644 --- a/cells/russian/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/russian/net/converting-excel-files-to-other-formats/_index.md @@ -37,6 +37,8 @@ - [Программное преобразование файла Excel в PPTX в .NET](./converting-excel-file-to-pptx/): Превратите листы Excel в слайды презентации. Этот урок предлагает простые в реализации фрагменты кода для преобразования данных Excel в PPTX. +- [Установка области печати в Excel и экспорт в PowerPoint – пошаговое руководство](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) + - [Отслеживание процесса преобразования документа в формат TIFF программным способом в .NET](./tracking-document-conversion-progress-for-tiff/): Отслеживайте и управляйте преобразованиями файлов TIFF — ценным инструментом для создания архивов на основе изображений. Aspose.Cells для .NET упрощает преобразование документов, позволяя разработчикам автоматизировать процессы и экономить время на преобразованиях в различные форматы. @@ -56,6 +58,8 @@ Aspose.Cells для .NET упрощает преобразование доку Узнайте, как преобразовать JSON в CSV программным способом в .NET с помощью Aspose.Cells. Следуйте нашему пошаговому руководству, чтобы обеспечить бесперебойное преобразование данных. ### [Программное преобразование файла Excel в PPTX в .NET](./converting-excel-file-to-pptx/) Узнайте, как преобразовать файл Excel в презентацию PowerPoint (PPTX) программным способом с помощью Aspose.Cells для .NET, следуя этому пошаговому руководству. +### [Экспорт Excel в PowerPoint – Полное руководство C#](./export-excel-to-powerpoint-complete-c-guide/) +Узнайте, как экспортировать файлы Excel в PowerPoint с помощью Aspose.Cells для .NET, следуя полному руководству на C#. ### [Указание HTML CrossType в выходном HTML программным способом в .NET](./specifying-html-crosstype-in-output-html/) Узнайте, как указать HTML CrossType в Aspose.Cells для .NET. Следуйте нашему пошаговому руководству, чтобы преобразовать файлы Excel в HTML с точностью. ### [Чтение числовых таблиц программным способом в .NET](./reading-numbers-spreadsheet/) diff --git a/cells/russian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/russian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..6025ca36e9 --- /dev/null +++ b/cells/russian/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Узнайте, как экспортировать Excel в PowerPoint, установить область печати + в Excel и сохранить Excel как PPTX с редактируемыми диаграммами и OLE‑объектами + всего за несколько шагов. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: ru +og_description: Быстро экспортировать Excel в PowerPoint. Этот учебник показывает, + как установить область печати в Excel и сохранить файл Excel как PPTX с редактируемыми + диаграммами и OLE‑объектами. +og_title: Экспорт Excel в PowerPoint – Полное руководство по C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Экспорт Excel в PowerPoint – Полное руководство по C# +url: /ru/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Экспорт Excel в PowerPoint – Полное руководство на C# + +Нужно **экспортировать Excel в PowerPoint**? Вы попали по адресу. Будь то создание еженедельной презентации продаж или автоматизация конвейера отчётности, преобразование листа Excel в набор слайдов PowerPoint может сэкономить часы работы по копированию‑вставке. + +В этом руководстве мы пройдём пошаговый пример, который не только **export excel to powerpoint**, но и покажет, как **set print area Excel** и **save excel as pptx**, чтобы полученные слайды сохраняли диаграммы и OLE‑объекты полностью редактируемыми. К концу вы получите готовую к запуску программу на C#, создающую профессиональный файл `.pptx` без ручных правок. + +## Что понадобится + +- **.NET 6+** (подойдёт любой современный .NET‑runtime; код использует синтаксис C# 10) +- **Aspose.Cells for .NET** – библиотека, обеспечивающая экспорт. Её можно установить из NuGet (`Install-Package Aspose.Cells`). +- Excel‑книга, содержащая хотя бы одну диаграмму и/или OLE‑объект (в примере используется файл `ChartAndOle.xlsx`). +- Любая удобная IDE (Visual Studio, Rider или VS Code – что вам нравится). + +И всё. Никакого COM‑interop, установка Office не требуется. + +> **Зачем нужна библиотека?** +> Встроенный Office Interop хрупок, требует наличия Office на сервере и часто выдаёт растровые изображения, когда нужны векторные, редактируемые формы. Aspose.Cells берёт на себя тяжёлую работу и сохраняет всё редактируемым в PowerPoint. + +--- + +## Шаг 1: Загрузка Excel‑книги + +Сначала загружаем исходный файл в память. Класс `Workbook` представляет всю книгу Excel, предоставляя доступ к листам, диаграммам и OLE‑объектам. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Почему это важно:** Загрузка книги – фундамент. Если путь неверный или файл повреждён, остальная часть конвейера не выполнится. Блок `try…catch` выдаст дружелюбное сообщение об ошибке вместо краха программы. + +--- + +## Шаг 2: Установка области печати в Excel + +Перед экспортом обычно требуется ограничить вывод определённым диапазоном. Здесь вступает в действие **set print area excel**. Указывая область печати, вы сообщаете Aspose.Cells, какие ячейки (и связанные объекты) должны попасть на слайд. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Совет:** Если у вас несколько листов, повторите присваивание `PrintArea` для каждого листа, который планируете экспортировать. Если область печати не задана, будет экспортирован весь лист, что может сильно увеличить размер PowerPoint‑файла. + +--- + +## Шаг 3: Настройка параметров экспорта – сохраняем диаграммы и OLE‑объекты редактируемыми + +Aspose.Cells предоставляет богатый объект `ImageOrPrintOptions`. Переключая `ExportChartObjects` и `ExportOleObjects`, мы сохраняем векторную природу диаграмм и возможность редактировать OLE‑объекты (например, встроенные документы Word или PDF). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Что происходит «под капотом»?** +Когда `ExportChartObjects` равно `true`, Aspose преобразует диаграмму в нативный объект диаграммы PowerPoint, сохраняя серии, оси и форматирование. При включённом `ExportOleObjects` встроенные объекты вставляются как OLE‑кадры, и двойной клик в PowerPoint открывает оригинальное приложение (Word, Excel и т.д.) для редактирования. + +--- + +## Шаг 4: Сохранение листа как редактируемый файл PowerPoint + +Теперь собираем всё вместе. Метод `Save` записывает файл `.pptx`, используя ранее настроенные параметры. В результате получаем набор слайдов, где каждый лист превращается в один слайд (или несколько, если область печати охватывает несколько страниц). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Ожидаемый результат + +- **Местоположение файла:** `C:\MyProjects\EditableChartOle.pptx` +- **Содержание:** + - Слайд, показывающий диапазон `A1:H30` точно так же, как в Excel. + - Все диаграммы – объекты диаграмм PowerPoint; кликните по столбцу и отредактируйте данные. + - OLE‑объекты (например, встроенный документ Word) можно открыть и редактировать прямо со слайда. + +Если открыть PPTX в PowerPoint, вы увидите чистый слайд с полностью редактируемыми компонентами — без растровых скриншотов. + +--- + +## Особые случаи и варианты + +### Несколько листов → несколько слайдов +Если нужно, чтобы каждый лист стал отдельным слайдом, просто пройдитесь в цикле по `workbook.Worksheets` и вызывайте `Save` с `SheetToImageOptions`, указывающим индекс конкретного листа. Aspose автоматически создаст новый слайд для каждой итерации. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Большие диапазоны и производительность +Экспорт огромной области печати (например, `A1:Z1000`) может увеличить потребление памяти. Чтобы смягчить проблему, рассмотрите: +- Разбиение диапазона на более мелкие части и экспорт их как отдельных слайдов. +- Использование `WorkbookSettings` для увеличения `MemorySetting`, если возникает `OutOfMemoryException`. + +### Вопросы совместимости +Сгенерированный PPTX работает в PowerPoint 2016 и новее. Более старые версии могут открыть файл, но могут потерять некоторые продвинутые функции диаграмм. Всегда тестируйте на целевой версии Office, если планируете широкое распространение презентации. + +--- + +## Полный рабочий пример (готов к копированию) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Подсказка:** Замените жёстко заданные пути на значения из конфигурации или аргументы командной строки для более гибкого инструмента. + +--- + +## Часто задаваемые вопросы + +**В: Можно ли экспортировать только диаграмму без окружающих ячеек?** +О: Да. Используйте только `ExportChartObjects` и задайте область печати, соответствующую границам диаграммы. Диаграмма появится по центру слайда. + +**В: Что если моя книга содержит макросы?** +О: Aspose.Cells игнорирует VBA‑макросы при экспорте. Если нужна функциональность макросов в PowerPoint, её придётся реализовать с помощью VBA PowerPoint или надстроек. + +**В: Работает ли это на Linux/macOS?** +О: Абсолютно. Aspose.Cells — чистая .NET‑библиотека; при наличии .NET‑runtime код исполняется кросс‑платформенно. + +--- + +## Заключение + +Вы только что узнали, как **export Excel to PowerPoint**, одновременно **set print area excel** и **save excel as pptx**, получив полностью редактируемые диаграммы и OLE‑объекты. Ключевые шаги: загрузка книги, определение области печати, настройка `ImageOrPrintOptions` и сохранение PPTX. + +Дальше вы можете: +- Экспортировать несколько листов в одну презентацию. +- Программно добавлять заголовки слайдов или заметки. +- Конвертировать PPTX в PDF для распространения (используйте `SaveFormat.Pdf`). + +Запустите код, поиграйте с областью печати и наблюдайте, как данные из Excel волшебным образом появляются в PowerPoint — без ручного копирования‑вставки. Если возникнут проблемы, обратитесь к документации Aspose.Cells или оставьте комментарий ниже. Приятного кодинга! + +![Диаграмма, показывающая процесс экспорта Excel в PowerPoint](/images/export-excel-to-powerpoint.png "процесс экспорта Excel в PowerPoint") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/russian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..d610c40ec6 --- /dev/null +++ b/cells/russian/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-22 +description: Установите область печати в Excel и преобразуйте Excel в PowerPoint с + редактируемыми фигурами. Узнайте, как повторять строку заголовка, создавать PowerPoint + из Excel и экспортировать Excel в PPTX. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: ru +og_description: Установите область печати в Excel и преобразуйте её в слайд PowerPoint + с редактируемыми фигурами. Следуйте этому полному руководству, чтобы повторять строку + заголовка и экспортировать Excel в PPTX. +og_title: Установить область печати в Excel – Учебник по экспорту в PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Установить область печати в Excel и экспортировать в PowerPoint — пошаговое + руководство +url: /ru/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Установить область печати в Excel и экспортировать в PowerPoint – Полный программный учебник + +Когда‑нибудь вам нужно было **set print area** в листе Excel, а затем превратить этот фрагмент в слайд PowerPoint? Вы не одиноки. Во многих конвейерах отчетности те же данные, которые красиво печатаются, также должны появляться в презентации, часто с повторением первой строки в качестве заголовка. Хорошие новости? С несколькими строками C# вы можете **convert excel to powerpoint**, сохранить все текстовые поля редактируемыми и даже **repeat title row** автоматически. + +В этом руководстве мы пройдем всё, что вам нужно знать: от настройки области печати до создания файла PPTX, который можно редактировать прямо в PowerPoint. К концу вы сможете **create powerpoint from excel**, экспортировать результат как **export excel to pptx** и повторно использовать тот же код в любом проекте .NET. Никакой магии, только понятные шаги и полностью готовый пример. + +## Что понадобится + +- **.NET 6.0** или новее (API также работает с .NET Framework) +- **Aspose.Cells for .NET** (библиотека, предоставляющая `Workbook`, `ImageOrPrintOptions` и т.д.) +- Базовая IDE для C# (Visual Studio, Rider или VS Code с расширением C#) +- Файл Excel (`input.xlsx`), содержащий данные, которые вы хотите экспортировать + +Вот и всё — никаких дополнительных пакетов NuGet, кроме Aspose.Cells. Если вы ещё не добавили библиотеку, выполните: + +```bash +dotnet add package Aspose.Cells +``` + +Теперь мы готовы приступить. + +## Шаг 1: Загрузка Workbook — отправная точка для экспорта + +Первое, что нужно сделать, — загрузить workbook, содержащий лист, который вы хотите превратить в слайд. Считайте workbook исходным документом; без него ничего больше не имеет значения. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Почему это важно:** Загрузка workbook дает доступ к коллекции листов, параметрам page‑setup и движку экспорта. Если пропустить этот шаг, вы не сможете задать **print area** или повторить какие‑либо строки. + +> **Pro tip:** Используйте абсолютный путь при тестировании, затем переключитесь на относительный или путь, основанный на конфигурации, для продакшна. + +## Шаг 2: Настройка параметров экспорта — сохранение редактируемых текстовых полей и фигур + +При экспорте в PowerPoint вы, вероятно, захотите, чтобы полученный слайд был редактируемым. Aspose.Cells позволяет управлять этим с помощью `ImageOrPrintOptions`. Установка `ExportTextBoxes` и `ExportShapeObjects` в `true` сообщает библиотеке сохранять эти объекты как нативные элементы PowerPoint, а не преобразовывать их в изображение. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Почему это важно:** Если вам когда‑нибудь понадобится **convert excel to powerpoint**, а затем вручную подправить слайд, эта настройка избавит вас от необходимости заново создавать текстовые поля. Она также гарантирует, что любые фигуры (например, стрелки или диаграммы) останутся векторными объектами, которые можно масштабировать. + +## Шаг 3: Установка области печати и повтор заголовочной строки + +Теперь переходим к сути учебника: **set print area** и сделать первую строку повторяющейся на каждой печатной странице (или, в нашем случае, на экспортируемом слайде). Область печати указывает Excel, какие ячейки учитывать для печати — или экспорта в нашем сценарии. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Почему это важно:** Ограничивая экспорт диапазоном `A1:G20`, вы избегаете захвата огромных пустых областей, что ускоряет конвертацию и делает слайд аккуратным. Строка `PrintTitleRows` делает первую строку заголовком — именно то, что нужно, когда вы **repeat title row** в презентации. + +> **Edge case:** Если ваши данные начинаются со строки 2, скорректируйте диапазон соответственно (например, `PrintTitleRows = "$2:$2"`). + +## Шаг 4: Сохранить лист как файл PowerPoint + +Наконец, мы записываем слайд на диск. Метод `Save` принимает целевое имя файла и параметры, которые мы настроили ранее. В результате получается файл PPTX с редактируемыми текстовыми полями и фигурами, готовый к открытию в PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Что вы увидите:** Откройте `SheetWithEditableShapes.pptx` в PowerPoint. Первая строка отображается как заголовок, все ячейки от `A1:G20` отрисованы, а любые фигуры, добавленные в Excel, остаются перемещаемыми и редактируемыми. Нет растровых изображений — только нативные объекты PowerPoint. + +## Полный рабочий пример — все шаги вместе + +Ниже представлен полный готовый к копированию и вставке код программы. Запустите его как консольное приложение или внедрите в любое более крупное решение. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Ожидаемый вывод:** После запуска программы в консоли выводится сообщение об успехе, а файл PPTX появляется в указанном месте. При открытии файла отображается один слайд с выбранным диапазоном, редактируемыми текстовыми полями и оригинальными фигурами. + +## Часто задаваемые вопросы и подводные камни + +| Question | Answer | +|----------|--------| +| **Работает ли это с несколькими листами?** | Да. Пройдите в цикле `workbook.Worksheets` и повторите те же шаги для каждого листа, меняя имя выходного файла каждый раз. | +| **Что делать, если нужно экспортировать более одного слайда?** | Вызовите `workbook.Save` несколько раз с разными объектами `ImageOrPrintOptions`, каждый из которых при необходимости настроен с разным `PageSetup`. | +| **Можно ли изменить размер слайда?** | Используйте `exportOptions.ImageFormat` для установки DPI или измените `sheet.PageSetup.PaperSize` перед сохранением. | +| **Aspose.Cells бесплатен?** | Предоставляется бесплатная оценочная версия с водяными знаками. Для продакшна требуется лицензия. | +| **А как насчёт формул Excel?** | Экспортируемые значения — это **рассчитанные результаты** на момент экспорта. Если нужны живые формулы в PowerPoint, потребуется иной подход. | + +## Советы для гладкой работы + +- **Pro tip:** Установите `Workbook.Settings.CalcMode = CalculationModeType.Automatic` перед экспортом, чтобы гарантировать актуальность всех формул. +- **Watch out for:** Очень большие диапазоны могут вызвать нагрузку на память. Обрежьте область печати до минимально необходимого диапазона. +- **Performance tip:** Переиспользуйте один экземпляр `ImageOrPrintOptions`, если экспортируете много листов; создание нового каждый раз добавляет накладные расходы. +- **Version note:** Приведённый код ориентирован на Aspose.Cells 23.10 (выпущен в ноябре 2023). Поздние версии сохраняют тот же API, но всегда проверяйте примечания к выпуску на предмет несовместимых изменений. + +## Заключение + +Мы рассмотрели, как **set print area** в листе Excel, повторить первую строку в качестве заголовка и затем **export excel to pptx**, сохраняя редактируемые текстовые поля и фигуры. Короче говоря, теперь вы знаете надёжный способ **convert excel to powerpoint**, **repeat title row** и **create powerpoint from excel** всего несколькими строками C#. + +Готовы к следующему шагу? Попробуйте автоматизировать пакетную конвертацию десятков отчётов или добавить пользовательские макеты слайдов с помощью PowerPoint SDK после экспорта. Возможности безграничны — экспериментируйте, ломайте вещи и наслаждайтесь мощью программной генерации документов. + +Если этот учебник оказался полезным, поделитесь им, оставьте комментарий со своими доработками или изучите наши другие руководства по **export excel to pptx** и смежным темам автоматизации. Счастливого кодинга! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/csv-file-handling/_index.md b/cells/russian/net/csv-file-handling/_index.md index 996fd7e1ca..836742025c 100644 --- a/cells/russian/net/csv-file-handling/_index.md +++ b/cells/russian/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Узнайте, как открывать файлы CSV с помощью Aspose.Cells для .NET с помощью нашего всеобъемлющего пошагового руководства. Освойте манипуляцию данными. ### [Открытие CSV-файлов с помощью предпочтительного парсера](./csv-file-opening-csv-files-with-preferred-parser/) Узнайте, как открывать и анализировать CSV-файлы с помощью пользовательских парсеров в Aspose.Cells для .NET. Легко обрабатывайте текст и даты. Идеально подходит для разработчиков. +### [Сохранение книги в CSV на C# – Экспорт Excel в CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Узнайте, как сохранять рабочую книгу в формате CSV с помощью Aspose.Cells для .NET, используя C#. Быстро экспортируйте данные из Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/russian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..57adb7ff0d --- /dev/null +++ b/cells/russian/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Сохраните рабочую книгу в CSV в C# быстро. Узнайте, как экспортировать + Excel в CSV, задать точность и преобразовать xlsx в CSV с помощью Aspose.Cells всего + за несколько строк. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: ru +og_description: Быстро сохраните книгу в формате CSV в C#. Это руководство показывает, + как экспортировать Excel в CSV, установить точность и преобразовать XLSX в CSV с + помощью Aspose.Cells. +og_title: Сохранить рабочую книгу как CSV в C# – экспорт Excel в CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Сохранить рабочую книгу в CSV в C# – экспортировать Excel в CSV +url: /ru/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить книгу как CSV в C# – Экспорт Excel в CSV + +Когда‑нибудь вам нужно было **save workbook as CSV**, но вы не были уверены, как сохранить числа аккуратными? Вы не одиноки. Во многих сценариях конвейеров данных нам приходится **export Excel to CSV**, сохраняя определённое количество значимых цифр, и библиотека Aspose.Cells делает это проще простого. + +В этом руководстве вы увидите полностью готовый к запуску пример, который **saves a workbook as CSV**, показывает *how to set precision* и даже объясняет *how to convert xlsx to CSV* для реальных проектов. Никаких расплывчатых ссылок — только код, который вы можете скопировать, вставить и запустить сегодня. + +## Что вы узнаете + +- Точные шаги для **save workbook as CSV** с пользовательской настройкой точности. +- Как **export Excel to CSV** с использованием `CsvSaveOptions` и почему свойство `SignificantDigits` имеет значение. +- Вариации для разных требований к точности и распространённые подводные камни при работе с большими числами. +- Краткий обзор конвертации файла `.xlsx` в `.csv` без потери целостности данных. + +### Требования + +- .NET 6.0 или новее (код также работает на .NET Framework 4.6+). +- Пакет NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Базовое понимание C# и работы с файлами. + +Если всё это у вас есть, давайте приступим. + +![пример сохранения книги как csv](image.png "пример сохранения книги как csv") + +## Сохранить книгу как CSV – Пошаговое руководство + +Ниже представлен полный код программы. Каждая строка прокомментирована, чтобы вы видели *почему* каждый элемент присутствует, а не только *что* он делает. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Зачем использовать `CsvSaveOptions.SignificantDigits`? + +Когда вы **how to set precision** для экспорта CSV, вы фактически решаете, сколько цифр числа с плавающей запятой сохранятся после преобразования. Excel хранит числа с точностью до 15 цифр, но большинству downstream‑систем (базы данных, аналитические конвейеры) требуется лишь несколько. Установив `SignificantDigits = 4`, библиотека округляет `123.456789` до `123.5`, делая файл компактным и удобочитаемым. + +> **Pro tip:** Если вам нужны *точные* значения (например, для финансовых данных), установите `SignificantDigits` на более высокое число или полностью опустите его. По умолчанию — 15, что соответствует внутренней точности Excel. + +## Export Excel to CSV – Распространённые варианты + +### Changing the Delimiter + +Некоторые системы ожидают точку с запятой (`;`) вместо запятой. Вы можете изменить её так: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exporting a Specific Worksheet + +Если вы хотите экспортировать только второй лист, замените необязательный блок на: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Затем вызовите `workbook.Save` как раньше. Эта техника удобна, когда вы **convert xlsx to csv**, но вам нужен только определённый лист. + +### Handling Large Datasets + +При работе с миллионами строк рассмотрите возможность потоковой записи CSV вместо загрузки всей книги в память. Aspose.Cells предоставляет свойство `CsvSaveOptions` `ExportDataOnly`, которое пропускает информацию о стиле, уменьшая нагрузку на память: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Как экспортировать CSV – Проверка результата + +После запуска программы откройте `Numbers_4sd.csv` в обычном текстовом редакторе. Вы должны увидеть что‑то вроде: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Обратите внимание, что числа ограничены четырьмя значимыми цифрами, точно как мы запросили. Если открыть файл в Excel, значения будут выглядеть одинаково, потому что Excel учитывает округление, применённое при экспорте. + +## Особые случаи и устранение неполадок + +| Ситуация | Что проверить | Исправление | +|-----------|---------------|-----| +| **File not found** | Убедитесь, что `sourcePath` указывает на реальный файл `.xlsx`. | Используйте `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Убедитесь, что `SignificantDigits` установлен до вызова `Save`. | Переместите присвоение `CsvSaveOptions` выше или дважды проверьте значение. | +| **Special characters appear as �** | Кодировка CSV по умолчанию UTF‑8 без BOM. | Установите `csvOptions.Encoding = System.Text.Encoding.UTF8` или `Encoding.Unicode`. | +| **Extra empty columns** | Некоторые листы содержат случайное форматирование за пределами используемого диапазона. | Вызовите `worksheet.Cells.MaxDisplayRange`, чтобы обрезать неиспользуемые столбцы перед экспортом. | + +## Как динамически задавать точность + +Иногда требуемая точность неизвестна во время компиляции. Вы можете прочитать её из конфигурационного файла или аргумента командной строки: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Теперь вы можете выполнить: + +``` +dotnet run -- 6 +``` + +и получить CSV с шестью значимыми цифрами. Эта небольшая настройка делает решение гибким для **how to export csv** в разных средах. + +## Полный рабочий пример — резюме + +Объединив всё вместе, полный код программы (включая необязательные настройки) выглядит так: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Запустите программу, откройте сгенерированный CSV, и вы увидите запрошенную точность, подтверждая, что вы успешно **saved workbook as CSV**. + +## Заключение + +Теперь у вас есть надёжный, готовый к продакшену рецепт для **saving a workbook as CSV** в C#. Руководство охватывало *how to export Excel to CSV*, демонстрировало *how to set precision* через `CsvSaveOptions.SignificantDigits` и показало несколько вариантов для сценариев **convert xlsx to csv**. С полным фрагментом кода вы можете добавить его в любой проект .NET и сразу начать экспортировать данные. + +**Что дальше?** + +- Экспериментируйте с различными разделителями (`;`, `\t`) для экспорта в TSV. +- Сочетайте этот подход с наблюдателем файлов, чтобы автоматизировать генерацию CSV при изменении файла Excel. +- Исследуйте `CsvLoadOptions` из Aspose.Cells, если когда‑нибудь понадобится читать CSV обратно в книгу. + +Не стесняйтесь менять точность, добавлять пользовательские заголовки или подключать экспортер + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/document-properties/_index.md b/cells/russian/net/document-properties/_index.md index 1a081ca4e1..03aea7c561 100644 --- a/cells/russian/net/document-properties/_index.md +++ b/cells/russian/net/document-properties/_index.md @@ -30,11 +30,13 @@ ## Руководства по свойствам документа ### [Доступ к свойствам документа в .NET](./accessing-document-properties/) -Узнайте, как получить доступ к свойствам документа в Excel с помощью Aspose.Cells для .NET. Следуйте нашему пошаговому руководству для эффективной работы с Excel. +Узнайте, как получить доступ к свойствам документа в Excel с помощью AspAspose.Cells для .NET. Следуйте нашему пошаговому руководству для эффективной работы с Excel. ### [Доступ к значению свойств документа в .NET](./accessing-value-of-document-properties/) Узнайте, как получить доступ к свойствам документа в Excel с помощью Aspose.Cells для .NET с помощью нашего пошагового руководства. Управляйте своими электронными таблицами эффективно. ### [Добавление свойств документа в .NET](./adding-document-properties/) Узнайте, как добавлять свойства документа в Excel с помощью Aspose.Cells для .NET, с помощью этого подробного пошагового руководства. +### [Создание книги Excel – добавление пользовательских свойств и сохранение в формате XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Узнайте, как создать книгу Excel, добавить пользовательские свойства и сохранить её в формате XLSB с помощью Aspose.Cells для .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/russian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..b564727f5b --- /dev/null +++ b/cells/russian/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-22 +description: Создать книгу Excel, добавить пользовательские свойства, установить имя + листа и сохранить в бинарный файл XLSB с помощью C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: ru +og_description: Создать рабочую книгу Excel, добавить пользовательские свойства, задать + имя листа и сохранить как бинарный файл XLSB с помощью C#. +og_title: Создать книгу Excel – добавить пользовательские свойства и сохранить как + XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Создать книгу Excel – добавить пользовательские свойства и сохранить как XLSB +url: /ru/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создать книгу Excel – Добавить пользовательские свойства и сохранить как XLSB + +Когда‑нибудь вам нужно было **create Excel workbook** программно, но также сохранить некоторые метаданные? Возможно, вы создаёте движок отчётов, который помечает каждый файл идентификатором отчёта, именем автора или номером версии. В этом случае изучение того, как **add custom properties**, одновременно **set worksheet name** и в конце **save as XLSB**, сэкономит вам массу ручной пост‑обработки. + +В этом руководстве мы пройдём полный, исполняемый пример, который точно показывает, как **write binary Excel file** с помощью C#. Вы увидите, почему формат XLSB — правильный выбор для передачи пользовательских свойств, как избежать самых распространённых подводных камней и что делать, если нужно поддерживать более старые версии Excel. + +--- + +## Что понадобится + +- **.NET 6+** (или .NET Framework 4.6+). Код работает на любой современной среде выполнения. +- **Aspose.Cells for .NET** (бесплатная пробная версия или лицензия). Он предоставляет классы `Workbook`, `Worksheet` и `CustomProperties`, используемые ниже. +- IDE, с которым вам удобно работать — Visual Studio, Rider или даже VS Code подойдёт. +- Права записи в папку, где будет сохранён сгенерированный файл. + +Никакие другие сторонние библиотеки не требуются. + +## Шаг 1: Установить Aspose.Cells + +Для начала добавьте пакет Aspose.Cells NuGet в ваш проект: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** Если вы работаете на CI‑сервере, храните лицензионный ключ в переменной окружения и загружайте его во время выполнения — это предотвращает появление водяного знака «evaluation» в вашем выводе. + +--- + +## Шаг 2: Создать книгу Excel – Обзор + +Первое реальное действие — **create Excel workbook**. Этот объект представляет весь файл в памяти и предоставляет доступ к листам, стилям и пользовательским свойствам. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Зачем создавать новый `Workbook`, а не загружать шаблон? Пустая книга гарантирует отсутствие скрытых стилей или оставшихся пользовательских свойств, что особенно важно, когда вы планируете **write binary excel file** для downstream‑систем, ожидающих чистый лист. + +## Шаг 3: Установить имя листа (и почему это важно) + +Листы Excel по умолчанию называются «Sheet1», «Sheet2» и т.д. Присвоение листу осмысленного имени упрощает последующую обработку — например, Power Query или макросы VBA — делая её более читаемой. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Если попытаться задать дублирующее имя, Aspose.Cells выбросит `ArgumentException`. Чтобы быть уверенным, можно проверить `Worksheets.Exists("Data")` перед переименованием. + +## Шаг 4: Добавить пользовательские свойства + +Пользовательские свойства хранятся во внутреннем XML книги и перемещаются вместе с файлом независимо от формата. Они идеальны для внедрения таких данных, как `ReportId` или `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Why use custom properties?** +> • Они доступны через панель Excel «File → Info → Properties». +> • Код, который использует книгу, может читать их без сканирования содержимого ячеек. +> • Они сохраняются при конвертации форматов (XLSX ↔ XLSB), поскольку являются частью метаданных файла. + +Можно также сохранять даты, булевы значения или даже бинарные блобы, но держите нагрузку небольшой — Excel не является базой данных. + +## Шаг 5: Сохранить как XLSB (Write Binary Excel File) + +Формат XLSB хранит данные в бинарной структуре, что делает файл меньше и быстрее открывается. Более важно для этого руководства, **custom properties are baked into the binary stream**, гарантируя их перенос вместе с файлом. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Ожидаемый результат + +После запуска программы вы найдете `WithCustomProps.xlsb` на рабочем столе. Откройте его в Excel, перейдите в **File → Info → Properties**, и вы увидите `ReportId` и `GeneratedBy`, перечисленные в разделе *Custom*. + +## Шаг 6: Пограничные случаи и часто задаваемые вопросы + +### Что делать, если целевая папка только для чтения? + +Обёрните вызов `Save` в блок `try/catch` и переключитесь на расположение, доступное для записи пользователем, например `%TEMP%`. Это предотвратит падение приложения из‑за ошибок доступа. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Могу ли я **save as XLSX** и всё равно сохранить пользовательские свойства? + +Да — просто замените `SaveFormat.Xlsb` на `SaveFormat.Xlsx`. Свойства хранятся в той же XML‑части, поэтому они сохраняются при переключении формата. Однако файлы XLSX больше, так как они являются zip‑архивом XML, тогда как XLSB обеспечивает лучшую производительность для больших наборов данных. + +### Как прочитать пользовательские свойства позже? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Этот фрагмент выводит каждое пользовательское свойство, что упрощает проверку происхождения файла downstream‑службами. + +## Полный рабочий пример + +Ниже приведена полная программа, которую можно скопировать и вставить в новый консольный проект. Ничего не пропущено — всё, от операторов `using` до финального `Console.WriteLine`, включено. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Запустите программу, откройте полученный файл и проверьте пользовательские свойства. Это весь процесс **create excel workbook**, **add custom properties**, **set worksheet name** и **save as xlsb** в одном аккуратном потоке. + +## Заключение + +Теперь вы точно знаете, как **create Excel workbook**, задать листу чёткое **set worksheet name**, внедрить полезные метаданные с помощью **add custom properties** и, наконец, **save as XLSB**, чтобы получить компактный бинарный файл Excel. Этот рабочий процесс надёжен, работает на разных версиях .NET и масштабируется как при генерации одного отчёта, так и тысячи. + +Что дальше? Попробуйте добавить таблицу данных на лист «Data», поэкспериментировать с различными типами свойств (даты, булевы), или переключить вывод на **save as xlsb** для огромных наборов данных. Вы также можете изучить защиту книги паролем — Aspose.Cells делает это одной строкой кода. + +Не стесняйтесь оставить комментарий, если столкнётесь с проблемами, или поделиться тем, как вы расширили этот шаблон в своих проектах. Счастливого кодинга! + +--- + +![Create Excel workbook screenshot](image.png){alt="Создать книгу Excel со пользовательскими свойствами"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/excel-advanced-named-ranges/_index.md b/cells/russian/net/excel-advanced-named-ranges/_index.md index 0764e3bfce..0ad83e8804 100644 --- a/cells/russian/net/excel-advanced-named-ranges/_index.md +++ b/cells/russian/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Легко идентифицируйте ячейки в именованном диапазоне в Excel с помощью Aspose.Cells для .NET с помощью этого подробного пошагового руководства. ### [Объединить ячейки в именованном диапазоне в Excel](./merge-cells-in-named-range/) Узнайте, как объединить ячейки в именованном диапазоне с помощью Aspose.Cells для .NET в этом пошаговом руководстве. Узнайте, как форматировать, стилизовать и автоматизировать отчеты Excel. +### [Создание рабочей книги Excel – пошаговое руководство по добавлению таблиц и правил именования](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Узнайте, как создать рабочую книгу Excel, добавить таблицы и задать правила именования с помощью Aspose.Cells для .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/russian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..8c246a5355 --- /dev/null +++ b/cells/russian/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Создайте книгу Excel с таблицей, изучите правила именования таблиц в + Excel, избегайте ошибки именованных диапазонов и правильно задайте имя таблицы в + C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: ru +og_description: Создайте книгу Excel на C# и освоьте правила именования таблиц Excel. + Узнайте, как добавить лист с таблицей, задать имя таблицы Excel и исправить ошибки + именованных диапазонов. +og_title: Создание рабочей книги Excel – Полное руководство по таблицам и именованию + в C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Создание книги Excel – пошаговое руководство по добавлению таблиц и правилам + именования +url: /ru/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание Excel Workbook – Полное руководство C# по таблицам и именованию + +Когда‑то вам **нужно было создать excel workbook** программно и вы задавались вопросом, почему имя вашей таблицы вдруг конфликтует с именованным диапазоном? Вы не одиноки. Во многих проектах автоматизации в тот момент, когда вы пытаетесь дать таблице дружелюбный идентификатор, Excel бросает *ошибку именованного диапазона*, останавливая весь процесс. + +В этом руководстве мы пройдем полностью готовый пример, который **создаёт Excel workbook**, **добавляет таблицу на лист**, и объясняет **excel table naming rules**, позволяющие избежать собственных ошибок. К концу вы точно будете знать, как **add table worksheet**, **set excel table name**, и как изящно обрабатывать редкие конфликты имён. + +> **Pro tip:** Большая часть путаницы возникает из‑за того, что Excel рассматривает имена таблиц и именованные диапазоны уровня книги как одно пространство имён. Понимание этого правила с самого начала экономит часы отладки. + +## Что понадобится + +- **Aspose.Cells for .NET** (или любая библиотека, предоставляющая классы `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ или .NET Framework 4.8 – код работает в обеих средах. +- Базовое понимание синтаксиса C# – никаких продвинутых трюков не требуется. + +Если всё это у вас есть, давайте начнём. + +![Скриншот только что созданного Excel workbook с таблицей под названием SalesData](create_excel_workbook_example.png "пример создания excel workbook") + +## Шаг 1: Создать Excel Workbook и получить доступ к первому листу + +Первое, что вы делаете, когда **create excel workbook**, – это создаёте экземпляр класса `Workbook` и получаете ссылку на лист, с которым будете работать. В Aspose.Cells книга начинается с листа по умолчанию под именем «Sheet1». + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Почему этот шаг критичен? Без объекта workbook у вас нет куда привязывать таблицу, а ссылка `Worksheet` даёт вам холст, где будет происходить операция **add table worksheet**. + +## Шаг 2: Добавить таблицу (ListObject), охватывающую конкретный диапазон + +Далее мы **add table worksheet**‑уровневые данные. Метод `ListObjects.Add` ожидает строку диапазона и булево значение, указывающее, содержит ли первая строка заголовки. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Обратите внимание на строку `salesTable.Name = "SalesData"`. Здесь вступают в силу **excel table naming rules**: имя должно быть уникальным во всей книге, а не только на листе. Оно также не может содержать пробелы или специальные символы и должно начинаться с буквы или подчёркивания. + +## Шаг 3: Попытка создать именованный диапазон уровня книги с тем же идентификатором + +Теперь мы намеренно вызываем **named range error**, чтобы увидеть, что происходит при конфликте имён. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Если раскомментировать строку, Aspose.Cells бросит `ArgumentException`, указывающий, что имя уже существует. Сообщение об ошибке выглядит так: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Это сообщение и есть **named range error**, о котором мы предупреждали ранее. Оно сообщает, что **excel table naming rules** рассматривают имена таблиц и именованные диапазоны как единое пространство имён. + +## Шаг 4: Обработка конфликта имён без сбоев + +В реальном коде вы захотите перехватить это исключение и либо переименовать таблицу, либо выбрать другое имя диапазона. Вот аккуратный способ сделать это: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Оборачивая вызов в `try/catch`, вы избегаете жёсткого сбоя и даёте пользователю (или вызывающему коду) чёткое объяснение – именно то, что предоставляет **excel table naming rules**, предотвращая будущие баги. + +## Шаг 5: Сохранить Workbook и проверить результат + +Наконец, сохраняем файл на диск и открываем его в Excel, чтобы убедиться, что таблица и любые именованные диапазоны присутствуют. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Когда вы откроете *SalesReport.xlsx*, вы увидите: + +- Таблица, охватывающая **A1:C5**, с именем **SalesData**. +- Если вы оставили альтернативный диапазон, то будет именованный диапазон уровня книги **SalesData_Range**, указывающий на **D1**. + +Никаких сбоев во время выполнения, конфликт имён решён. + +## Понимание правил именования таблиц Excel в деталях + +Разберём, почему эти правила существуют: + +| Правило | Что это значит | Пример | +|------|----------------|---------| +| **Уникальность во всей книге** | Ни одна таблица и ни один именованный диапазон не могут иметь одинаковый идентификатор. | `Table1` vs `Table1` → конфликт | +| **Начинается с буквы или подчёркивания** | Имена не могут начинаться с цифры. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Без пробелов и специальных символов** | Используйте CamelCase или подчёркивания. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Длина ≤ 255 символов** | Практически всегда соблюдается. | N/A | + +Соблюдая эти правила при **set excel table name**, вы избавляетесь от страшной *named range error*. + +## Распространённые варианты и граничные случаи + +1. **Добавление нескольких таблиц** – Каждая таблица должна иметь своё уникальное имя. +2. **Переименование существующей таблицы** – Используйте `salesTable.Name = "NewName"` до создания конфликтующих именованных диапазонов. +3. **Использование динамических диапазонов** – Если нужен диапазон, который расширяется, используйте структурированную ссылку вроде `=SalesData[Amount]` вместо статического адреса. +4. **Именованные диапазоны между листами** – Они всё равно находятся в одном пространстве имён, поэтому таблица на Sheet1 блокирует диапазон с тем же именем на Sheet2. + +## Pro Tips для плавной автоматизации Excel + +- **Проверяйте существование перед добавлением**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Генерируйте безопасные имена программно**: Добавляйте GUID или инкрементный счётчик (`SalesData_{Guid.NewGuid()}`), когда не уверены. +- **Используйте `ListObject.ShowHeaders = true`**, чтобы ваши таблицы были самодокументируемыми. +- **Проверяйте после сохранения**: Откройте файл лёгкой библиотекой (например, EPPlus), чтобы убедиться, что таблица создана корректно. + +## Итоги: Что мы рассмотрели + +- Как **create excel workbook** с нуля с помощью Aspose.Cells. +- Точные **excel table naming rules**, регулирующие имена таблиц и именованных диапазонов. +- Почему появляется **named range error**, когда вы повторно используете имя. +- Правильный способ **add table worksheet** и **set excel table name** без конфликтов. +- Надёжный шаблон для изящного управления конфликтами имён. + +## Что дальше? + +Теперь, когда вы освоили основы, можете изучить: + +- **Динамический рост таблиц** с помощью `ListObject.Resize`. +- **Применение стилей** к таблицам (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Экспорт в CSV** с сохранением структуры таблиц. +- **Интеграцию с Office Open XML** для ещё более тонкого контроля над внутренностями книги. + +Экспериментируйте — меняйте диапазоны, добавляйте больше таблиц или пробуйте разные схемы именования. Чем больше вы играете, тем глубже понимание **excel table naming rules**. + +--- + +*Счастливого кодинга, и пусть ваши книги никогда не конфликтуют!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/excel-custom-number-date-formatting/_index.md b/cells/russian/net/excel-custom-number-date-formatting/_index.md index 9016c0c69f..b9f4ffce10 100644 --- a/cells/russian/net/excel-custom-number-date-formatting/_index.md +++ b/cells/russian/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Узнайте, как проверить значения ячеек Excel на соответствие пользовательским числовым форматам с помощью Aspose.Cells для .NET, из этого пошагового руководства. ### [Укажите поля формул при импорте данных в таблицу Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Узнайте, как импортировать данные в таблицы Excel с указанными полями формул с помощью Aspose.Cells для .NET в этом подробном руководстве. +### [Пользовательский числовой формат Excel в C# – Полное руководство](./custom-number-format-excel-in-c-complete-guide/) +Узнайте, как создавать и применять пользовательские числовые форматы в Excel с помощью Aspose.Cells для .NET на C# в этом полном руководстве. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/russian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..97c2ad0732 --- /dev/null +++ b/cells/russian/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Учебник по пользовательскому формату чисел в Excel, показывающий, как + импортировать DataTable в Excel, установить цвет фона столбца, отформатировать столбец + как валюту и сохранить книгу в формате xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: ru +og_description: Учебник по пользовательскому числовому формату в Excel, который пошагово + покажет, как импортировать DataTable, установить цвет фона столбца, отформатировать + столбец как валюту и сохранить книгу в формате xlsx. +og_title: Пользовательский числовой формат Excel в C# – пошаговое руководство +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Пользовательский числовой формат Excel в C# – Полное руководство +url: /ru/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Пользовательский числовой формат Excel – Full‑Stack C# учебник + +Задумывались ли вы когда‑нибудь, как применить стиль **custom number format excel** непосредственно из C#? Возможно, вы пробовали выгрузить DataTable в таблицу и видели только обычные числа, без цветов и без форматирования валюты. Это распространённая проблема — особенно когда нужен отшлифованный отчёт для заинтересованных сторон. + +В этом руководстве мы решим эту проблему вместе: вы узнаете, как **import datatable to excel**, **set column background color**, **format column as currency**, и, наконец, **save workbook as xlsx** с пользовательским числовым форматом, который делает ваши цифры яркими. Никаких расплывчатых ссылок, только полноценное, готовое к запуску решение, которое вы можете скопировать‑вставить в свой проект. + +--- + +## Что вы построите + +К концу этого руководства у вас будет автономное C# консольное приложение, которое: + +1. Получает `DataTable` (вы можете заменить заглушку своим запросом). +2. Создаёт новую книгу Excel с использованием Aspose.Cells (или любой совместимой библиотеки). +3. Применяет синий полужирный шрифт к первой колонке, светло‑жёлтый фон ко второй и формат валюты (`$#,##0.00`) к третьей. +4. Сохраняет файл как `DataTableWithStyleArray.xlsx` в выбранной вами папке. + +Вы увидите точно, как каждая строка влияет на конечный файл Excel, и мы обсудим, почему эти решения важны для поддерживаемости и производительности. + +--- + +## Требования + +- .NET 6.0 или новее (код также работает с .NET Framework 4.7+). +- Aspose.Cells for .NET (бесплатная пробная версия или лицензированная). Установите через NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Базовое знакомство с `DataTable` и консольными приложениями C#. + +--- + +## Шаг 1: Получить исходные данные в виде DataTable + +Сначала нам нужны данные для экспорта. В реальном сценарии вы, вероятно, вызовете репозиторий или выполните SQL‑запрос. Для иллюстрации мы создадим простую таблицу в памяти. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Почему это важно:** Использование `DataTable` предоставляет табличный, схематически‑осознанный источник, который чисто отображается в строки и столбцы Excel. Это также позволяет переиспользовать одну и ту же логику экспорта для любого набора данных без переписывания кода. + +--- + +## Шаг 2: Создать новую книгу и получить первый лист + +Теперь мы создаём книгу Excel. Класс `Workbook` представляет весь файл; его `Worksheets[0]` — это лист по умолчанию, куда мы поместим наши данные. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Совет:** Если вам нужны несколько листов, просто вызовите `workbook.Worksheets.Add("SheetName")` и повторите шаги стилизации для каждого. + +--- + +## Шаг 3: Определить стили столбцов – шрифт, фон и числовой формат + +Стилизация в Aspose.Cells выполняется через объекты `Style`. Мы создадим массив, где каждый элемент соответствует столбцу в DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Почему массив стилей?** Передача массива в `ImportDataTable` позволяет применить отдельный стиль к каждому столбцу за один вызов, что одновременно лаконично и эффективно. Это также гарантирует, что форматирование остаётся синхронным с порядком данных. + +--- + +## Шаг 4: Импортировать DataTable с применением стилей + +Вот сердце операции: мы передаём `DataTable` в лист, указываем Aspose включить строку заголовка и передаём наш массив `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Что происходит под капотом?** Aspose проходит по каждому столбцу, записывает заголовок, затем записывает значения каждой строки. При этом он применяет соответствующий `Style` из массива, так что вы получаете синий заголовок для «Product», желтоватый «Quantity» и красиво отформатированный столбец «Revenue». + +--- + +## Шаг 5: Сохранить книгу в файл XLSX + +Наконец, мы сохраняем книгу на диск. Метод `Save` автоматически выбирает формат XLSX на основе расширения файла. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Подсказка:** Если вам нужно передавать файл в поток (например, для веб‑API), используйте `workbook.Save(stream, SaveFormat.Xlsx)` вместо пути к файлу. + +--- + +## Полный рабочий пример + +Ниже приведена полная программа, которую вы можете вставить в новый консольный проект. Она компилируется и запускается как есть, создавая стилизованный файл Excel. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Ожидаемый результат + +Когда вы откроете `DataTableWithStyleArray.xlsx`, вы увидите: + +| **Продукт** (синий, полужирный) | **Количество** (светло‑желтый) | **Выручка** (валюта) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Указанный вами **custom number format excel** (`$#,##0.00`) гарантирует, что каждая ячейка выручки отображает знак доллара, разделитель тысяч и два знака после запятой — именно то, что ожидают финансовые команды. + +--- + +## Часто задаваемые вопросы и особые случаи + +### Можно ли использовать это с другой библиотекой Excel? + +Конечно. Концепция — создание стиля для каждого столбца и применение его при импорте — переносится на EPPlus, ClosedXML или NPOI. Вызовы API различаются, но шаблон остаётся тем же. + +### Что если у моего DataTable больше столбцов, чем стилей? + +Aspose применит стиль по умолчанию к любому столбцу без соответствующей записи в массиве `columnStyles`. Чтобы избежать неожиданностей, либо задайте размер массива равным `dataTable.Columns.Count`, либо генерируйте стили динамически в цикле. + +### Как установить пользовательский числовой формат для дат? + +Просто установите `style.Custom = "dd‑mm‑yyyy"` (или любую другую допустимую строку формата Excel). Тот же подход на основе массива работает для дат, процентов или научной нотации. + +### Есть ли способ автоматически подгонять ширину столбцов после импорта? + +Да — вызовите `worksheet.AutoFitColumns();` после импорта. Он быстро рассчитывает ширину на основе содержимого ячеек. + +### Что насчёт больших наборов данных (100k+ строк)? + +`ImportDataTable` оптимизирован для массовых операций, но вы можете столкнуться с ограничениями памяти. В этом случае рассмотрите возможность потоковой передачи строк вручную с помощью `Cells[i, j].PutValue(...)` и повторного использования одного объекта `Style` для снижения нагрузки. + +--- + +## Профессиональные советы и распространённые подводные камни + +- **Избегайте жёсткого кодирования путей** в продакшн‑коде; используйте `Environment.GetFolderPath` или настройки конфигурации. +- **Освобождайте книгу** (dispose) если вы работаете в длительно работающем сервисе — оберните её в блок `using`, чтобы освободить нативные ресурсы. +- **Следите за разделителями, зависящими от культуры**. Пользовательский формат `$#,##0.00` принудительно использует точку как десятичный разделитель независимо от локали ОС, что обычно требуется для финансовых отчётов. +- **Не забудьте добавить ссылку на System.Drawing** (или `System.Drawing.Common` в .NET Core) для структур цвета, используемых в стилизации. +- **Тестируйте вывод в разных версиях Excel**; старые версии могут интерпретировать некоторые пользовательские форматы немного иначе. + +--- + +## Заключение + +Мы рассмотрели всё, что вам нужно для **custom number format excel** файлов из C#: извлечение данных из `DataTable`, **import datatable to excel**, применение **set column background color**, использование **format column as currency**, и, наконец, **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/excel-workbook/_index.md b/cells/russian/net/excel-workbook/_index.md index 3ee4af6a3a..902e8757b4 100644 --- a/cells/russian/net/excel-workbook/_index.md +++ b/cells/russian/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Power Query может стать настоящим прорывом в обр | [Предварительный просмотр печати рабочей тетради](./workbook-print-preview/) | Узнайте, как создавать предварительные просмотры для файлов Excel с помощью Aspose.Cells для .NET. Изучите шаги кодирования в подробном, простом для понимания руководстве. | | [Работа со свойствами типа контента](./working-with-content-type-properties/) | Узнайте, как использовать Aspose.Cells для .NET для работы со свойствами типа контента для улучшенного управления метаданными Excel. Следуйте этому простому пошаговому руководству. | | [Поддержка подписи Xades](./xades-signature-support/) | Узнайте, как добавлять подписи Xades в файлы Excel с помощью Aspose.Cells для .NET с помощью этого пошагового руководства. Защитите свои документы. | +| [Создать новую рабочую книгу C# – Пошаговое руководство с разливными формулами](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Узнайте, как создать новую рабочую книгу в C# с разливными формулами, следуя пошаговому руководству. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/russian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..52b724f93e --- /dev/null +++ b/cells/russian/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Быстро создайте новую книгу в C# с помощью Aspose.Cells. Узнайте, как + добавить формулу SEQUENCE с рассыпанием, автоматически пересчитывать её и обрабатывать + зависимые ячейки. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: ru +og_description: Создайте новую книгу Excel на C# с помощью Aspose.Cells. Этот учебник + показывает, как добавить формулу SEQUENCE с разливом, пересчитать книгу и управлять + зависимыми ячейками. +og_title: Создать новую рабочую книгу C# – Полное руководство +tags: +- C# +- Excel automation +- Aspose.Cells +title: Создание новой рабочей книги на C# – пошаговое руководство с разливными формулами +url: /ru/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание новой книги Excel C# – Полный программный walkthrough + +Когда‑нибудь задумывались, как **создать новую книгу Excel C#** без борьбы с COM‑interop? Вы не одиноки. Во многих проектах нужно «на лету» создать файл Excel, вставить динамическую формулу массива и обеспечить автоматическое обновление всех данных. + +В этом руководстве мы покажем именно это — используя современную библиотеку **Aspose.Cells**, добавляя «разливающуюся» формулу `SEQUENCE`, меняя зависимую ячейку и принудительно пересчитывая, чтобы результаты оставались актуальными. К концу вы получите автономный, готовый к запуску пример, который можно скопировать в любое .NET‑приложение. + +## Что вы узнаете + +- Как **создать новую книгу Excel C#** программно. +- Механизм работы **разливающейся формулы массива** и её преимущества. +- Использование функции **Excel SEQUENCE** из кода C#. +- Запуск **пересчёта книги C#**, чтобы зависимые ячейки обновлялись мгновенно. +- Распространённые подводные камни (например, забывание вызвать `Calculate`) и быстрые решения. + +Никакой внешней документации не требуется — всё, что нужно, находится здесь. + +## Предварительные требования + +- .NET 6+ (или .NET Framework 4.7.2+) установлен. +- Visual Studio 2022 или любая другая IDE по вашему выбору. +- Пакет NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Базовое знакомство с синтаксисом C# (если вы новичок, код снабжён обширными комментариями). + +--- + +## Шаг 1: Создать новую книгу в C# + +Этот заголовок H2 содержит **основное ключевое слово** точно там, где того требует SEO‑чеклист. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Почему это важно:** +> Создание экземпляра `Workbook` даёт вам представление Excel‑файла в памяти. Без COM, без interop, только чистые .NET‑объекты, которыми можно безопасно управлять. + +--- + +## Шаг 2: Добавить разливающуюся формулу SEQUENCE + +**Разливающаяся формула массива** автоматически расширяется на соседние ячейки, что идеально подходит для генерации динамических списков. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Как это работает:** +> Функция `SEQUENCE` (появилась в Excel 365) создаёт вертикальный массив чисел. Поскольку мы используем *разливающуюся* формулу, Excel (и Aspose.Cells) автоматически заполнят диапазон под `A1`, без необходимости писать цикл. + +--- + +## Шаг 3: Изменить зависимую ячейку, чтобы увидеть авто‑обновление + +Изменим `B1`, чтобы наблюдать, как книга пересчитывает разлившийся массив. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Подсказка:** +> Если позже вы будете ссылаться на разлившийся диапазон в других формулах, изменение любой ячейки внутри разлива заставит эти формулы обновиться после вызова `Calculate`. + +--- + +## Шаг 4: Принудительный пересчёт книги C# + +Без явного вызова Aspose.Cells не будет автоматически пересчитывать формулы. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Что делает `Calculate`:** +> Он проходит по каждой ячейке с формулой, вычисляет её и записывает результат обратно в лист. Это ядро **пересчёта книги C#** и гарантирует, что ваш разлившийся массив остаётся синхронным с любыми зависимыми данными. + +### Ожидаемый результат + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Откройте `SpilledSequenceDemo.xlsx`, и вы увидите числа 1‑5, заполняющие `A1:A5`, а `B1` будет содержать значение `10`. Измените любую ячейку внутри разлива, снова запустите `Calculate`, и новые значения появятся мгновенно. + +--- + +## Понимание функции Excel SEQUENCE в C# + +Если вам интересно, почему `SEQUENCE` предпочтительнее ручного цикла, обратите внимание на следующее: + +1. **Производительность** — движок вычисляет весь массив за один проход. +2. **Читаемость** — одна строка кода заменяет десятки вызовов `PutValue`. +3. **Динамический размер** — вместо фиксированного `5` можно сослаться на другую ячейку, делая длину изменяемой во время выполнения. + +Это классический пример **разливающейся формулы массива**, упрощающей задачи генерации данных. + +--- + +## Распространённые подводные камни и профессиональные советы + +| Проблема | Решение | +|----------|---------| +| Забыл вызвать `workbook.Calculate()` | Всегда вызывайте её после изменения формул; иначе лист будет показывать старые кэшированные значения. | +| Используется устаревшая версия Aspose.Cells | Обновите до последней версии NuGet, чтобы обеспечить поддержку динамических функций массива, таких как `SEQUENCE`. | +| Сохранение до пересчёта | Сохраняйте **после** `Calculate`, чтобы файл содержал актуальные результаты. | +| Предположение, что разлив перезапишет существующие данные | Aspose.Cells сохраняет данные за пределами диапазона разлива; очистите область заранее, если нужен чистый лист. | + +**Профессиональный совет:** если длина последовательности должна быть настраиваемой, храните её в ячейке (например, `C1`) и используйте `=SEQUENCE(C1)` — движок вычислит значение во время выполнения. + +--- + +## Расширение примера + +Теперь, когда вы знаете, как **создать новую книгу Excel C#**, вы можете: + +- Добавлять более сложные формулы, ссылающиеся на разлившийся диапазон (`=SUM(A1#)`, где `#` обозначает разлив). +- Экспортировать в PDF с помощью `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Вставлять диаграммы, которые автоматически подстраиваются под размер динамического массива. + +Все эти возможности опираются на ту же основу **пересчёта книги C#**, которую мы только что рассмотрели. + +--- + +## Заключение + +Мы прошли весь процесс **создания новой книги Excel C#**: от создания объекта `Workbook` до вставки разливающейся формулы `SEQUENCE`, изменения зависимой ячейки и принудительного пересчёта, чтобы всё оставалось актуальным. Полный фрагмент кода выше готов к запуску — просто вставьте его в консольное приложение, добавьте пакет Aspose.Cells, и у вас будет рабочий файл Excel за считанные секунды. + +Готовы к следующему шагу? Попробуйте заменить статическое `5` ссылкой на ячейку, поэкспериментируйте с другими динамическими функциями массива, такими как `FILTER` или `UNIQUE`, и исследуйте, как **Aspose.Cells C#** может стать движком полноценной системы отчётности. Приятного кодинга! + +--- + +*Заполнитель изображения:* + +![Скриншот, показывающий только что созданную книгу с разлившейся формулой SEQUENCE – пример create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*Если этот учебник оказался полезным, поставьте звёздочку репозиторию, поделитесь им с коллегами или оставьте комментарий ниже. Ваш отзыв помогает создавать новые руководства!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/formulas-functions/_index.md b/cells/russian/net/formulas-functions/_index.md index 9b89f0ca4f..153094699d 100644 --- a/cells/russian/net/formulas-functions/_index.md +++ b/cells/russian/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ ### [Обновление формул Excel Power Query с помощью Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Узнайте, как программно обновлять формулы Power Query в книгах Excel с помощью Aspose.Cells для .NET. Управление основными источниками данных для динамической отчетности. +### [Как использовать лямбда-выражения в C# с формулами Excel – Полное руководство](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Узнайте, как применять лямбда-выражения в C# для создания и вычисления формул Excel с помощью Aspose.Cells. + ## Понимание типов формул Excel Формулы Excel существуют в различных формах, каждая из которых обладает уникальными характеристиками, которыми может управлять Aspose.Cells: diff --git a/cells/russian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/russian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..48cf3c3004 --- /dev/null +++ b/cells/russian/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Как использовать лямбда‑выражения в C# для работы с формулами Excel. + Научитесь записывать формулу в ячейку, преобразовывать диапазон в массив, выводить + массив в консоль и вычислять котангенс в Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: ru +og_description: Как использовать лямбда‑выражения в C# для работы с формулами Excel, + преобразования диапазона в массив, записи формулы в ячейку, вывода массива в консоль + и вычисления котангенса в Excel. +og_title: Как использовать лямбда‑выражения в C# с формулами Excel – пошагово +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Как использовать лямбда‑выражения в C# с формулами Excel – полное руководство +url: /ru/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как использовать Lambda в C# с формулами Excel – Полное руководство + +Когда‑то задавались вопросом **как использовать lambda**, когда автоматизируете Excel из C#? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда нужно объединить мощь новых динамических функций массивов Excel с возможностью `LAMBDA` в C#. Хорошая новость? На самом деле всё довольно просто, как только вы видите, как части сочетаются. + +В этом руководстве мы пройдём через **запись формулы в ячейку**, **преобразование диапазона в массив**, **вывод этого массива в консоль**, а также **вычисление котангенса в Excel** — всё это показывая вам **как использовать lambda** внутри вызова `REDUCE`. К концу вы получите готовый фрагмент кода, который можно вставить в любой .NET‑проект, использующий Aspose.Cells (или аналогичную библиотеку). + +--- + +## Что вы узнаете + +- Как **записать формулу в ячейку** с помощью C#. +- Как **преобразовать диапазон в массив** с помощью функции `EXPAND`. +- Как **вывести массив в консоль** после вычисления. +- Как **вычислить котангенс в Excel** с помощью `COT` и `COTH`. +- Точный синтаксис **как использовать lambda** внутри функции `REDUCE` Excel из C#. + +> **Prerequisite:** Вам нужна актуальная версия .NET (Core 6+ или .NET Framework 4.7+) и библиотека Aspose.Cells for .NET, установленная через NuGet. + +--- + +## Шаг 1: Создать книгу и записать формулу в ячейку + +Первым делом мы создаём новую книгу и получаем первый лист. Затем **записываем формулу в ячейку** – в данном случае `A1` будет содержать результат вызова `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Почему это важно:** Запись формулы напрямую из кода позволяет генерировать сложные таблицы «на лету», не открывая Excel. Это также подготавливает основу для следующего шага, где мы **преобразуем диапазон в массив**. + +--- + +## Шаг 2: Преобразовать диапазон в массив с помощью EXPAND + +`EXPAND` – это способ Excel превратить небольшой диапазон в большую матрицу. Поместив формулу в `A1`, Excel «разольёт» блок 4 × 5, начиная с этой ячейки. С C# нам не нужно вручную копировать значения – библиотека выполнит всю тяжёлую работу при вызове `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Как использовать lambda:** Пока нет, но скоро. Сначала нам нужны данные в листе, затем мы сократим их с помощью lambda. + +--- + +## Шаг 3: Использовать LAMBDA внутри REDUCE – ядро «Как использовать Lambda» + +Excel 365 представил `REDUCE`, который принимает **начальное значение**, **диапазон** и **LAMBDA**, определяющий, как объединять каждый элемент. С C# мы просто задаём строку формулы; lambda живёт внутри формулы Excel, а не в коде C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Объяснение:** +- `0` – начальное значение аккумулятора (`acc`). +- `A1:D4` – диапазон, который мы хотим обработать (первые четыре столбца «разлитого» блока). +- `LAMBDA(acc, x, acc + x)` указывает Excel добавить каждую ячейку (`x`) к аккумулятору. + +Это и есть суть **как использовать lambda** для агрегирования в контексте таблицы. + +--- + +## Шаг 4: Вычисление котангенса в Excel – от градусов к гиперболическому + +Если нужны тригонометрические результаты, функции Excel `COT` и `COTH` работают без проблем. Мы разместим их в `G1` и `G2` соответственно. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Почему это удобно:** Знание **calculate cotangent in Excel** может избавить вас от написания собственного математического кода, особенно когда книга будет использоваться не‑разработчиками. + +--- + +## Шаг 5: Принудительный расчёт и получение разлитого массива + +Теперь мы заставляем книгу вычислить все формулы, а затем извлекаем разлитый массив из `A1`. Здесь мы **выводим массив в консоль**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Что вы увидите:** +- Красиво отформатированную матрицу 4 × 5, выведенную построчно. +- Сумму, вычисленную lambda‑функцией `REDUCE`. +- Два значения котангенса. + +Это завершает процесс от **записи формулы в ячейку** до **вывода массива в консоль**. + +--- + +## Полный рабочий пример (готов к копированию) + +Ниже представлен весь код программы, который можно вставить в консольное приложение. Не забудьте сначала добавить пакет `Aspose.Cells` через NuGet (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Ожидаемый вывод в консоль (значения могут отличаться в зависимости от содержимого ячеек B1:C2, которые по умолчанию равны 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Не стесняйтесь заполнить `B1:C2` своими числами перед запуском – матрица отразит эти значения. + +--- + +## Полезные советы и распространённые подводные камни + +- **Pro tip:** Если нужно, чтобы разлитый диапазон начинался в другом месте, просто измените целевую ячейку (`A1`). Функция `EXPAND` учитывает эту привязку. +- **Watch out for:** Пустые ячейки в исходном диапазоне становятся `0` в разлитом массиве, что может влиять на сумму в `REDUCE`. +- **Edge case:** Когда в книге есть формулы, зависящие от волатильных функций (например, `NOW()`), вызывайте `workbook.Calculate()` после установки всех формул, чтобы всё было актуально. +- **Performance note:** Для огромных разливов рекомендуется ограничить размер в вызове `EXPAND`; иначе можно выделить больше памяти, чем требуется. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/number-and-display-formats-in-excel/_index.md b/cells/russian/net/number-and-display-formats-in-excel/_index.md index adffa4fd1c..502933b8e5 100644 --- a/cells/russian/net/number-and-display-formats-in-excel/_index.md +++ b/cells/russian/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Автоматизируйте форматирование чисел в Excel с помощью Aspose.Cells для .NET. Узнайте, как применять форматы даты, процентов и валюты программно. ### [Настройка форматов отображения с помощью пользовательских чисел](./customizing-display-formats-with-user-defined-numbers/) Узнайте, как настроить форматы отображения с помощью Aspose.Cells для .NET. Форматируйте даты, проценты и валюту, используя это пошаговое руководство. +### [Как экспортировать Excel с форматированием – Сохранить числовой формат](./how-to-export-excel-with-formatting-preserve-number-format/) +Экспортируйте лист Excel, сохраняя все числовые форматы, используя Aspose.Cells для .NET. +### [Форматирование даты и времени в ISO в C# – Полное руководство](./format-datetime-to-iso-in-c-complete-guide/) +Преобразуйте даты и время в формат ISO в C# с помощью Aspose.Cells для .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/russian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..8417ac9241 --- /dev/null +++ b/cells/russian/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Узнайте, как форматировать дату и время в ISO при извлечении даты из + Excel и отображать дату в формате ISO с помощью Aspose.Cells в C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: ru +og_description: Форматирование даты и времени в ISO стало простым. Это руководство + показывает, как извлечь дату из Excel и отобразить её в формате ISO с помощью Aspose.Cells. +og_title: Форматировать DateTime в ISO в C# – пошаговое руководство +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Форматирование DateTime в ISO в C# – Полное руководство +url: /ru/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Форматирование datetime в ISO в C# – Полное руководство + +Когда‑нибудь вам нужно было **format datetime to iso**, но источник находится в Excel‑файле? Возможно, ячейка содержит японскую эру, например “令和3年5月1日”, и вы ломаете голову, как превратить её в чистую строку `2021‑05‑01`. Вы не одиноки. В этом руководстве мы **extract date from excel**, разберём японскую эру и затем **display iso date** в консоли — всё с помощью нескольких строк C# и Aspose.Cells. + +Мы пройдёмся по всему, что вам нужно: требуемый пакет NuGet, точный код, который можно скопировать‑вставить, почему важна каждая строка и несколько советов по краевым случаям. К концу вы получите переиспользуемый фрагмент, который **formats datetime to iso** независимо от того, насколько странным выглядит исходное значение в Excel. + +## Что вам понадобится + +- .NET 6.0 или новее (код также компилируется на .NET Framework 4.6+) +- Visual Studio 2022 (или любой другой предпочитаемый редактор) +- **Aspose.Cells for .NET** пакет NuGet – `Install-Package Aspose.Cells` +- Файл Excel (или новый рабочий лист), содержащий дату в формате японской эры + +Это всё. Никаких дополнительных библиотек, без COM‑interop, только один хорошо задокументированный метод. + +## Шаг 1: Создать рабочую книгу и записать дату в японской эре + +Сначала нам нужна рабочая книга. Если у вас уже есть файл Excel, его можно загрузить с помощью `new Workbook("path")`. В этом примере мы создадим новую рабочую книгу в памяти и поместим строку с японской эрой в ячейку **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Почему мы делаем это:** Aspose.Cells по умолчанию рассматривает значения ячеек как строки. Вставив необработанный текст эры, мы имитируем реальную ситуацию, когда японский клиент вводит даты в своей календарной системе. + +## Шаг 2: Включить разбор японской эры и извлечь дату + +Aspose.Cells может автоматически преобразовывать строки с японской эрой в объекты .NET `DateTime` — при условии, что вы укажете это. Флаг `DateTimeParseOptions.EnableJapaneseEra` делает всю тяжёлую работу. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** Если забыть опцию `EnableJapaneseEra`, библиотека вернёт исходную строку, и последующее преобразование завершится неудачей. Всегда проверяйте `parsed.Type`, если работаете со смешанным содержимым. + +## Шаг 3: Преобразовать разобранный DateTime в ISO 8601 + +Теперь, когда у нас есть корректный `DateTime`, превратить его в строку формата ISO — элементарно. Шаблон `"yyyy-MM-dd"` соответствует части даты ISO 8601, которую ожидают большинство API. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Running the program prints:** + +``` +ISO date: 2021-05-01 +``` + +Это **display iso date**, который вы искали. + +## Полный, исполняемый пример + +Ниже полностью готовый блок кода, который можно скопировать прямо в консольный проект. Никаких скрытых зависимостей, без дополнительной конфигурации. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## По‑шаговому разбору (Почему важна каждая часть) + +| Шаг | Что происходит | Почему это важно | +|------|--------------|--------------------| +| **Create workbook** | Инициализирует контейнер Excel в памяти. | Даёт вам песочницу для тестов без доступа к файловой системе. | +| **PutValue** | Сохраняет необработанную строку японской эры в **A1**. | Имитирует реальный ввод данных; гарантирует, что парсер видит точный текст. | +| **GetValue with `EnableJapaneseEra`** | Преобразует строку эры в .NET `DateTime`. | Автоматически обрабатывает конвертацию календаря — без ручных таблиц соответствий. | +| **`ToString("yyyy-MM-dd")`** | Форматирует `DateTime` в ISO 8601. | Обеспечивает культурно‑независимую, сортируемую строку даты, принимаемую REST‑API, базами данных и т.д. | +| **Console.WriteLine** | Выводит окончательную ISO‑дату. | Подтверждает, что весь конвейер работает от начала до конца. | + +## Обработка распространённых вариантов + +### 1. Другие расположения ячеек + +Если ваша дата находится в **B2** или в именованном диапазоне, просто замените `"A1"` на нужный адрес: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Несколько дат в столбце + +Когда нужно **extract date from excel** для многих строк, пройдитесь по использованному диапазону в цикле: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Запасной вариант для дат без эры + +Если ячейка уже содержит стандартную строку даты, парсер всё равно сработает, но может потребоваться защита: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Флаг `TryParse` предотвращает исключения и возвращает исходное значение, если преобразование не удалось. + +### 4. Компонент времени + +Если требуется также часть времени, используйте `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Это даст полную метку времени ISO 8601 (`2021-05-01T00:00:00`). + +## Визуальная подсказка + +![пример форматирования datetime в iso](image.png "Пример форматирования datetime в iso в C#") + +*Alt text:* *пример форматирования datetime в iso, показывающий вывод консоли* + +## Часто задаваемые вопросы + +- **Можно ли использовать это с файлами .xls?** + Да. Aspose.Cells поддерживает `.xls`, `.xlsx`, `.csv` и многие другие форматы «из коробки». + +- **Что делать, если рабочая книга защищена паролем?** + Загрузите её с помощью `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Зависит ли формат ISO от локали?** + Нет. Шаблон `"yyyy-MM-dd"` культурно‑независим, гарантируя одинаковую строку на любой машине. + +- **Работает ли это на .NET Core?** + Абсолютно — Aspose.Cells совместим с .NET Standard 2.0. + +## Итоги + +Мы рассмотрели, как **format datetime to iso** путем **extracting date from excel**, разбора строк с японской эрой и последующего **display iso date** в консоли. Основные шаги — создать рабочую книгу, записать или загрузить текст эры, включить разбор японской эры и отформатировать с помощью `ToString("yyyy-MM-dd")` — покрывают большинство сценариев. + +Дальше вы можете: + +- Записать ISO‑даты обратно в другой столбец для последующей обработки. +- Экспортировать преобразованную рабочую книгу в CSV для массового импорта. +- Скомбинировать эту логику с веб‑API, принимающим загрузки Excel и возвращающим JSON‑закодированные ISO‑даты. + +Экспериментируйте с различными форматами дат, часовыми поясами или даже пользовательскими календарями. Гибкость Aspose.Cells позволяет почти всегда находить решение. + +Счастливого кодинга, и пусть все ваши даты будут идеально ISO‑совместимыми! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/russian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..3c7f3e67c0 --- /dev/null +++ b/cells/russian/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Как экспортировать Excel с форматированием и сохранить числовой формат. + Узнайте, как преобразовать диапазон Excel, получить результат формулы и экспортировать + Excel с форматированием с помощью Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: ru +og_description: Как экспортировать Excel с форматированием и сохранить числовой формат. + Пошаговое руководство по преобразованию диапазона Excel, получению результата формулы + и экспорту Excel с форматированием на C#. +og_title: Как экспортировать Excel с форматированием — Сохранить числовой формат +tags: +- C# +- Aspose.Cells +- Excel automation +title: Как экспортировать Excel с форматированием — Сохранить числовой формат +url: /ru/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как экспортировать Excel с форматированием – Сохранить числовой формат + +Когда‑нибудь задумывались **как экспортировать Excel** данные, сохранив внешний вид каждой ячейки точно таким же, как в рабочей книге? Возможно, вам нужно отправить отчёт клиенту, заполнить элемент управления сеткой или просто сохранить значения в базе данных. Основная проблема обычно заключается в потере числового форматирования или формулы, превращающихся в обычные строки. + +В этом руководстве мы пройдём через полностью готовый к запуску пример на C#, который **preserves number format**, **converts an Excel range** to a `DataTable`, **gets the formula result**, и наконец **exports Excel with formatting** с помощью Aspose.Cells. К концу вы получите один метод, который можно вставить в любой проект и вызвать, передав ссылку на лист. + +> **Quick preview:** код создаёт рабочую книгу, записывает значение и формулу, указывает Aspose.Cells экспортировать ячейки как отформатированные строки и выводит `123.456 | 246.912` – именно то, что вы ожидаете увидеть в Excel. + +--- + +## Что вам понадобится + +- **Aspose.Cells for .NET** (бесплатная пробная версия отлично подходит для обучения) +- .NET 6.0 или новее (API одинаково работает и в .NET Framework) +- Базовая среда разработки C# (Visual Studio, VS Code, Rider… на ваш выбор) + +Никаких дополнительных пакетов NuGet, помимо Aspose.Cells, не требуется. Если вы ещё не установили его, выполните: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Шаг 1 – Создать рабочую книгу и записать значения (включая формулу) + +Сначала создаём новую рабочую книгу и помещаем числовое значение в **A1**. Затем добавляем простую формулу в **B1**, умножающую первое значение на два. Это подготавливает основу для демонстрации **get formula result** позже. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Почему это важно:** +- `PutValue` сохраняет сырое число, тогда как `PutFormula` сохраняет вычисление. +- Aspose.Cells оставляет формулу **alive**, поэтому когда мы позже запрашиваем значение ячейки, мы получаем `246.912`, а не строку `"=A1*2"`. + +--- + +## Шаг 2 – Указать Aspose.Cells экспортировать значения как отформатированные строки + +Если просто вызвать `ExportDataTable` с настройками по умолчанию, числовые ячейки будут возвращены как их базовые значения `double`. Это убирает разделители тысяч, валютные символы и пользовательские десятичные разряды, которые вы могли задать. Класс `ExportTableOptions` позволяет **preserve number format** и **export as string**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Ключевой момент:** `ExportNumberFormat = true` — флаг, который делает работу **preserve number format** возможной. Без него вы увидите `"123.456"` и `"246.912"` как сырые числа, что может выглядеть приемлемо в коде, но не при вставке данных в пользовательский интерфейс, ожидающий того же форматирования, что в Excel. + +--- + +## Шаг 3 – Вывести экспортированные данные (проверка) + +Теперь, когда у нас есть `DataTable`, заполненный отформатированными строками, выведем содержимое в консоль. Это также демонстрирует, что мы успешно **get formula result** без собственного вычисления формулы. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Запуск программы выводит: + +``` +123.456 | 246.912 +``` + +Обратите внимание, что во второй колонке отображается **formula result**, а не текст формулы. Именно это нужно, когда вы **export Excel with formatting** для последующей обработки. + +--- + +## Шаг 4 – Конвертация больших диапазонов Excel (по желанию) + +Приведённый выше пример работает с крошечным фрагментом `A1:B1`, но в реальных сценариях часто требуется экспортировать целые таблицы. Тот же метод работает для любого прямоугольного блока — просто измените параметры `firstRow`, `firstColumn`, `totalRows` и `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Pro tip:** Если в вашем листе уже есть строка заголовков, установите `includeColumnNames` в `true`. Aspose.Cells использует первую строку диапазона как имена столбцов, что удобно при последующей привязке `DataTable` к UI‑сетке. + +--- + +## Шаг 5 – Распространённые подводные камни и как их избежать + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Numbers lose commas or currency symbols** | `ExportAsString` is `false` or `ExportNumberFormat` is omitted | Set both `ExportAsString = true` **and** `ExportNumberFormat = true`. | +| **Formula cells return the formula text** | You didn’t call `CalculateFormula` before export (only needed if the workbook isn’t set to auto‑calculate) | Either enable auto‑calculate (`workbook.CalculateFormula()`) or rely on `ExportAsString` which forces evaluation. | +| **Headers appear as data rows** | `includeColumnNames` set to `false` while your range includes a header row | Set `includeColumnNames = true` to treat the first row as column names. | +| **Large ranges cause memory pressure** | Exporting the entire sheet at once loads everything into memory | Export in chunks (e.g., 500 rows at a time) and merge `DataTable`s if needed. | + +--- + +## Шаг 6 – Полный рабочий пример (готов к копированию) + +Ниже представлен весь код программы, от `using`‑директив до `Main`. Вставьте его в консольное приложение и нажмите **F5** — вы сразу увидите отформатированный вывод. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Expected output** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Это весь процесс **how to export excel**, с сохранённым форматированием, вычисленными результатами формул и чистым `DataTable`, готовым к использованию в любом .NET‑потребителе. + +--- + +## Заключение + +Мы рассмотрели всё, что нужно знать о **how to export Excel** данных, одновременно **preserving number format**, **converting an Excel range** to a `DataTable` и **getting formula results** без дополнительного парсинга. Ключ — конфигурация `ExportTableOptions` — после установки `ExportAsString` и `ExportNumberFormat` в `true` Aspose.Cells берёт на себя всю тяжёлую работу. + +Отсюда вы можете: + +- Подключить `DataTable` к WPF `DataGrid` или представлению ASP.NET MVC. +- Записать таблицу в CSV‑файл, сохранив точное визуальное представление. +- Расширить подход на несколько листов или динамические диапазоны. + +Не стесняйтесь экспериментировать с различными форматами (валюта, проценты) и большими блоками данных. Если столкнётесь с какими‑либо странностями, обратитесь к таблице **common pitfalls** — она охватывает самые частые проблемы при **export excel with formatting**. + +Счастливого кодинга, и пусть ваши экспортированные таблицы всегда выглядят так же безупречно, как оригиналы! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/russian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..ee3d196b05 --- /dev/null +++ b/cells/russian/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,189 @@ +--- +category: general +date: 2026-03-22 +description: Узнайте, как дублировать сводную таблицу в C# с помощью Aspose.Cells. + В этом руководстве также показано, как копировать строки и загружать книгу Excel + в C# для бесшовной автоматизации Excel при копировании строк. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: ru +og_description: Как дублировать сводную таблицу в C#? Следуйте этому краткому руководству, + чтобы загрузить книгу Excel в C#, копировать строки и освоить автоматизацию Excel + при копировании строк. +og_title: Как дублировать Pivot в C# – Полное руководство +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Как дублировать Pivot в C# – Полное пошаговое руководство +url: /ru/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как дублировать сводную таблицу в C# – Полное пошаговое руководство + +Когда‑нибудь задавались вопросом, **как дублировать сводную таблицу** программно без ручного перетаскивания в Excel? Вы не одиноки. Во многих конвейерах отчетности тот же макет сводной таблицы нужен на новом наборе строк, а делать это вручную — пустая трата времени. + +Хорошие новости? С несколькими строками кода на C# вы можете загрузить книгу Excel, определить область, содержащую сводную таблицу, и **как копировать строки**, чтобы сводка появилась в новом месте — всё в одном автоматическом запуске. В этом руководстве мы также рассмотрим основы **load excel workbook c#** и дадим прочную базу для задач **excel automation copy rows**. + +> **Что вы получите** +> • Полный, исполняемый пример, дублирующий сводную таблицу. +> • Объяснение, почему каждая строка важна. +> • Советы по обработке крайних случаев, таких как скрытые листы или несколько сводных таблиц. + +--- + +## Требования + +- **.NET 6.0** (или любая современная версия .NET) установлен. +- **Aspose.Cells for .NET** — библиотека, которую мы будем использовать для работы с файлами Excel. Вы можете получить её через NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Исходная книга (`Source.xlsx`), уже содержащая сводную таблицу в диапазоне **A1:J20** (диапазон, который мы будем дублировать). +- Базовое знакомство с синтаксисом C# — ничего сложного, только обычные `using`‑операторы и метод `Main`. + +Если что‑то из этого вам незнакомо, сделайте паузу и установите пакет; остальная часть руководства предполагает, что библиотека готова к использованию. + +![Иллюстрация того, как дублировать сводную таблицу в C# с помощью Aspose.Cells](https://example.com/duplicate-pivot.png "иллюстрация того, как дублировать сводную таблицу в C#") + +*Текст подписи к изображению: «пример того, как дублировать сводную таблицу в C# показывающий исходные и дублированные строки сводной таблицы».* + +## Шаг 1: Загрузка книги Excel C# — открытие файла + +Первое, что нужно сделать, когда вы хотите **load excel workbook c#**, — создать экземпляр `Workbook`, указывающий на ваш файл. Этот объект дает доступ ко всем листам, ячейкам и сводным таблицам внутри файла. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Почему это важно:** +`Workbook` абстрагирует весь файл Excel в модель в памяти. Без предварительной загрузки вы не сможете проверить расположение сводной таблицы или копировать строки. Кроме того, конструктор автоматически определяет формат файла (XLS, XLSX, CSV и т.д.), поэтому дополнительный код для определения формата не нужен. + +## Шаг 2: Как копировать строки — определение области сводной таблицы + +Теперь, когда книга находится в памяти, нам нужно сообщить Aspose.Cells, какие строки содержат сводную таблицу. В нашем примере сводка находится в **A1:J20**, что соответствует строкам **0‑19** (нумерация с нуля). Мы упакуем это в структуру `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Почему мы используем `CellArea`:** +Это лёгкий способ описать прямоугольный блок. Когда вы позже вызываете `CopyRows`, метод читает этот объект, чтобы точно знать, какие строки дублировать. Если понадобится изменить диапазон (например, сводка расширится до столбца K), достаточно изменить значение `endColumn`. + +## Шаг 3: Доступ к целевому листу + +Большинство книг имеют один лист, но API работает одинаково и с несколькими листами. Получите первый лист (индекс 0) — там находится оригинальная сводная таблица. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Совет:** +Если у вас есть листы с именами, их также можно получить по имени: `workbook.Worksheets["Sheet1"]`. Это помогает избежать жёсткого указания индексов при изменении структуры книги. + +## Шаг 4: Как копировать строки — дублирование сводной таблицы + +Это суть **how to duplicate pivot**: мы копируем строки, содержащие сводную таблицу, в новое место. В нашем случае мы начинаем с строки 31 (индекс 30). Метод `CopyRows` копирует *и* данные, *и* базовый кэш сводной таблицы, поэтому новые строки ведут себя точно так же, как оригинал. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Что происходит за кулисами?** +`CopyRows` клонирует каждую строку, сохраняет формулы, стили и определения сводных таблиц. Поскольку кэш сводной таблицы находится на уровне книги, дублированная сводка автоматически ссылается на тот же источник данных — дополнительная настройка не требуется. + +**Крайний случай — скрытые строки:** +Если какие‑либо строки в исходном диапазоне скрыты, они останутся скрытыми после копирования. Чтобы их раскрыть, вызовите `worksheet.Rows[destRow].IsHidden = false` после копирования. + +## Шаг 5: Сохранение книги — проверка дубликата + +Наконец, запишите изменения обратно на диск. Вы можете перезаписать оригинальный файл или, что безопаснее, сохранить под новым именем, чтобы сравнить до и после. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Ожидаемый результат:** +Откройте `CopyWithPivot.xlsx`. Вы увидите оригинальную сводную таблицу в диапазоне **A1:J20** и идентичную копию, начинающуюся с **A31:J50**. Обе сводки можно обновлять независимо, и любые срезы, привязанные к оригиналу, будут работать и для копии, поскольку они используют один и тот же кэш. + +## Часто задаваемые вопросы и варианты + +### Можно ли дублировать несколько сводных таблиц одновременно? + +Конечно. Пройдитесь по всем сводным таблицам (`worksheet.PivotTables`) и скопируйте диапазон каждой в отдельное место назначения. Только убедитесь, что диапазоны назначения не перекрываются. + +### Что делать, если исходная книга защищена паролем? + +Aspose.Cells позволяет открыть защищённый файл, передав пароль в конструктор `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Как копировать строки без изменения формул? + +Если вам нужны только *значения* (без формул), используйте `CopyRows` с флагом `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Можно ли копировать строки в *другую* книгу? + +Да. После копирования строк в исходном листе вы можете клонировать лист в другой экземпляр `Workbook` через `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Профессиональные советы для надёжной автоматизации Excel Copy Rows + +- **Проверьте диапазон** перед копированием. Быстрая проверка `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` предотвращает ошибки выхода за пределы. +- **Отключите вычисления** при копировании больших диапазонов: `workbook.Settings.CalcMode = CalcMode.Manual;` — это значительно ускоряет операцию. +- **Освобождайте объекты** (`workbook.Dispose()`), если обрабатываете множество файлов в цикле, чтобы освободить нативные ресурсы. +- **Ведите журнал операции** — особенно в продакшн‑конвейерах — чтобы отслеживать, какие файлы обработаны, и быстро выявлять ошибки. + +## Заключение + +Теперь вы знаете, **how to duplicate pivot** таблицы в C# с помощью Aspose.Cells, и видели полный процесс от **load excel workbook c#** до **excel automation copy rows** и окончательного сохранения результата. Пример автономный, работает сразу после запуска и может быть расширен для обработки нескольких сводных таблиц, защищённых файлов или копирования между книгами. + +Следующие шаги? Попробуйте адаптировать скрипт для: + +- Обновить дублированную сводную таблицу программно (`pivotTable.RefreshData();`). +- Экспортировать дублированную область в CSV для последующей обработки. +- Интегрировать код в API ASP.NET Core, чтобы пользователи могли загружать файл и мгновенно получать версию с дублированной сводкой. + +Удачной разработки, и пусть ваша автоматизация Excel будет всегда гладкой! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/row-and-column-management/_index.md b/cells/russian/net/row-and-column-management/_index.md index 792b98f09a..4bd53942f0 100644 --- a/cells/russian/net/row-and-column-management/_index.md +++ b/cells/russian/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Узнайте, как удалить столбец в файле Excel с помощью Aspose.Cells for .NET. Следуйте нашему подробному пошаговому руководству, чтобы оптимизировать изменения в файле Excel. ### [Удалить строку в Aspose.Cells .NET](./delete-row-aspose-cells/) Узнайте, как удалить строку в Excel с помощью Aspose.Cells для .NET. Это пошаговое руководство охватывает предварительные условия, импорт кода и подробное пошаговое руководство для бесперебойной обработки данных. +### [Aspose Cells удаление строк – защита строки заголовка в Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Узнайте, как удалять строки, сохраняя строку заголовка, используя Aspose.Cells для .NET. ### [Удаление нескольких строк в Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Узнайте, как удалить несколько строк в Excel с помощью Aspose.Cells для .NET. Это подробное пошаговое руководство охватывает предварительные условия, примеры кодирования и часто задаваемые вопросы для разработчиков. ### [Вставить столбец в Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/russian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/russian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..9e490106f0 --- /dev/null +++ b/cells/russian/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells удаляет строки, защищая строку заголовка. Узнайте, как получить + первую таблицу и безопасно удалить строки таблицы Excel в C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: ru +og_description: Aspose Cells удаляет строки, сохраняя строку заголовка. Узнайте, как + получить первую таблицу и безопасно удалить строки таблицы Excel на C#. +og_title: Aspose Cells Удаление строк — Защита строки заголовка в Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: 'Aspose Cells: удаление строк – защита строки заголовка в Excel' +url: /ru/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Защита заголовка строки в Excel + +Когда‑либо пытались **aspose cells delete rows** из таблицы и обнаружили, что заголовок исчез? Это распространённая ошибка при программном управлении листами Excel. В этом руководстве мы пройдём полный, готовый к запуску пример, который **protects the header row**, показывает, как **retrieve first table**, и безопасно **delete Excel table rows** без нарушения структуры. + +Мы рассмотрим всё: от загрузки рабочей книги до обработки исключения, которое бросает Aspose, когда вы пытаетесь оставить заголовок без таблицы. К концу вы получите надёжный шаблон, который можно вставить в любой .NET‑проект, использующий Aspose.Cells. + +--- + +## Что понадобится + +- **Aspose.Cells for .NET** (v23.12 или новее) – библиотека, позволяющая работать с файлами Excel без установленного Office. +- Базовая среда разработки C# (Visual Studio, Rider или `dotnet` CLI). +- Файл Excel (`TableWithHeader.xlsx`), содержащий как минимум один **ListObject** (таблица Excel) с заголовком в первой строке. + +Дополнительные пакеты NuGet не требуются, кроме Aspose.Cells. + +--- + +## Шаг 1: Загрузка рабочей книги и получение первой таблицы + +Первое, что нужно сделать, – открыть рабочую книгу и получить таблицу, которую планируется изменить. Именно здесь вступает в силу вторичное ключевое слово **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Почему это важно:** +- `Workbook` читает файл без необходимости установки Excel. +- `worksheet.ListObjects[0]` – самый простой способ **retrieve first table**; если таблиц несколько, можно итерировать их или использовать имя таблицы. + +> **Pro tip:** Если вы не уверены, содержит ли лист таблицу, сначала проверьте `worksheet.ListObjects.Count`, чтобы избежать `IndexOutOfRangeException`. + +--- + +## Шаг 2: Защита строки заголовка при удалении строк + +Теперь к главному: **aspose cells delete rows** без удаления заголовка. Метод `DeleteRows` в Aspose принимает нулевой индекс начала и количество строк. Попытка удалить заголовок (строка 0) вызывает исключение, чего мы хотим избежать. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Объяснение логики:** + +| Шаг | Причина | +|------|--------| +| `table.DeleteRows(1, 2);` | Индекс 1 указывает на **вторую** строку (первую строку данных). Удаление двух строк убирает строки 2‑3 в терминах Excel, оставляя заголовок (строка 1) нетронутым. | +| `catch (Exception ex)` | Aspose бросает исключение **только** когда операция оставит заголовок без таблицы. Перехват позволяет записать дружелюбное сообщение вместо падения приложения. | +| `Save` | Сохранение изменений позволяет открыть `Result.xlsx` и увидеть, что заголовок всё ещё присутствует. | + +> **Что если действительно нужно удалить заголовок?** +> Используйте `table.ShowHeaders = false;` перед удалением, либо удалите всю таблицу и создайте её заново. Но в большинстве бизнес‑сценариев вы захотите **protect header row**. + +--- + +## Шаг 3: Проверка результата – ожидаемый вывод + +После выполнения программы откройте `Result.xlsx`. Вы должны увидеть: + +- Первая строка всё ещё содержит оригинальные названия столбцов. +- Строки 2‑3 (те, которые мы удаляли) исчезли, а оставшиеся данные сдвинулись вверх. + +Консоль выведет: + +``` +Rows deleted successfully. +``` + +Если вы по ошибке попытались удалить заголовок (например, `table.DeleteRows(0, 1);`), вывод будет: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Это сообщение подтверждает, что встроенный механизм защиты Aspose работает корректно. + +--- + +## Шаг 4: Альтернативные способы **Delete Excel Table Rows** + +Иногда требуется более гибкое управление — удалять строки по условию или удалять разрозненные строки. Ниже два быстрых шаблона, сохраняющих заголовок в безопасности. + +### 4.1 Удаление строк по фильтру данных + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Массовое удаление с использованием диапазона + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Оба фрагмента соблюдают правило **protect header row**, поскольку начальный индекс никогда не опускается ниже 1. + +--- + +## Шаг 5: Распространённые ошибки и как их избежать + +| Ошибка | Почему происходит | Как исправить | +|---------|-------------------|---------------| +| Случайное удаление заголовка | Используется `0` в качестве начального индекса | Всегда начинайте с `1` для строк данных или предварительно проверьте `table.ShowHeaders`. | +| `IndexOutOfRangeException`, когда на листе нет таблиц | Предполагается наличие таблицы | Проверяйте `worksheet.ListObjects.Count > 0` перед обращением к `[0]`. | +| Изменения не сохраняются | Забыт вызов `Save` | Вызывайте `workbook.Save` после всех модификаций. | +| При удалении строк в середине индексы смещаются, что приводит к пропуску | Итерация вперёд во время удаления | Итерируйте **обратно** или сначала собирайте строки для удаления. | + +--- + +## Шаг 6: Соберите всё вместе – полностью рабочий пример + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Запустите эту программу, откройте `Result.xlsx`, и вы увидите, что заголовок остаётся нетронутым, а выбранные строки удалены. Это **полное, автономное решение** для **aspose cells delete rows** без потери заголовка. + +--- + +## Заключение + +Мы продемонстрировали, как **aspose cells delete rows** при **protecting the header row**, как **retrieve first table**, и несколько способов безопасного **delete excel table rows**. Ключевые выводы: + +- Всегда начинайте удаление с индекса 1, чтобы сохранить заголовок. +- Используйте `try/catch` для обработки встроенного исключения защиты Aspose. +- Проверяйте наличие таблицы перед операциями и итерируйте назад при условном удалении строк. + +Готовы к следующему уровню? Попробуйте сочетать этот подход с API стилизации Aspose Cells, чтобы подсвечивать удаляемые строки перед их удалением, или автоматизировать процесс на нескольких листах. Возможности безграничны, а теперь у вас есть надёжный шаблон для дальнейшего развития. + +Если этот урок оказался полезным, поставьте лайк, поделитесь им с коллегами или оставьте комментарий с вашими решениями сложных кейсов. Приятного кодинга! + +--- + +![Пример Aspose Cells Delete Rows – Защищённый заголовок строки](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/russian/net/saving-and-exporting-excel-files-with-options/_index.md index 9688f60390..fb8f2ed478 100644 --- a/cells/russian/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/russian/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells for .NET предоставляет разработчикам мо Узнайте, как программно указать свойства документа, такие как версия, автор и заголовок в файле Excel, используя Aspose.Cells для .NET, с помощью пошаговых инструкций. ### [Обрезка начальных пустых строк и столбцов при экспорте](./trimming-leading-blank-rows-and-columns/) Оптимизируйте экспорт CSV, обрезая начальные пустые строки и столбцы с помощью Aspose.Cells для .NET. Чистые данные всего в нескольких шагах. +### [Как сохранить рабочую книгу в C# — Полное руководство по автоматизации Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Узнайте, как сохранить рабочую книгу с помощью Aspose.Cells в C#, следуя полному пошаговому руководству по автоматизации Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/russian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..aca87a0e33 --- /dev/null +++ b/cells/russian/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Как сохранить рабочую книгу в C# с помощью Aspose.Cells — пошаговое руководство, + охватывающее загрузку Excel, создание листа, повторное использование листа и генерацию + отчёта. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: ru +og_description: Как сохранить рабочую книгу в C# с помощью Aspose.Cells. Узнайте, + как загрузить Excel, создать лист, переиспользовать лист и сгенерировать отчет в + одном руководстве. +og_title: Как сохранить рабочую книгу в C# — Полное руководство по автоматизации Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Как сохранить рабочую книгу в C# – Полное руководство по автоматизации Excel +url: /ru/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как сохранить рабочую книгу в C# – Полное руководство по автоматизации Excel + +Когда‑нибудь задумывались **how to save workbook** в C# после того, как обработали данные? Вы не одиноки. Большинство разработчиков сталкиваются с проблемой, когда отчет выглядит идеально на экране, но отказывается сохраняться на диск. В этом руководстве мы пройдем полный пример, который не только покажет вам **how to save workbook**, но также охватит **how to load Excel**, **how to create sheet**, **how to reuse sheet** и **how to generate report** — всё с помощью Aspose.Cells. + +Представьте себе разговор за кофе, где я вытаскиваю код из ноутбука и объясняю каждую строку. К концу у вас будет исполняемая программа, которая загружает шаблон, вставляет данные через SmartMarker, переиспользует существующее имя листа Detail и, наконец, записывает файл в вашу папку. Никаких загадок, только понятные шаги, которые вы можете скопировать‑вставить. + +## Что понадобится + +- **Aspose.Cells for .NET** (последняя версия на 2026 год). Вы можете получить его из NuGet с помощью `Install-Package Aspose.Cells`. +- Среда разработки .NET (Visual Studio, Rider или VS Code с расширением C# подойдёт). +- Базовый файл шаблона Excel с именем `MasterTemplate.xlsx`, размещённый в папке, которой вы управляете. +- Минимальные знания C# — если вы уже писали `Console.WriteLine`, то всё в порядке. + +> **Pro tip:** Храните ваш шаблон в отдельной папке *Resources* и пометьте её как «Copy if newer», чтобы путь оставался одинаковым в разных сборках. + +Теперь давайте погрузимся в код. + +## Шаг 1: Как загрузить Excel – открыть шаблон рабочей книги + +Первое, что нужно сделать — загрузить рабочую книгу в память. Aspose.Cells делает это в одну строку, но понимание причины поможет, когда позже понадобится отладка. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Why this matters:** Загрузка рабочей книги даёт доступ ко всем листам, стилям и именованным диапазонам в шаблоне. Если файл не найден, Aspose бросает `FileNotFoundException`, поэтому проверьте путь. +- **Edge case:** Если шаблон защищён паролем, передайте пароль в конструктор `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Шаг 2: Как переиспользовать лист – настроить параметры SmartMarker + +SmartMarker может автоматически создать новый лист Detail, но у вас уже может быть лист с именем **Detail**. Чтобы избежать конфликта, мы указываем процессору переиспользовать это имя. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Why this matters:** Без этой опции Aspose добавит числовой суффикс (например, “Detail1”), что может нарушить макросы или формулы, ожидающие фиксированное имя листа. +- **What if the sheet doesn’t exist?** Aspose создаст его за вас — так что один и тот же код работает независимо от наличия листа. + +## Шаг 3: Как создать лист – подготовить источник данных + +Хотя мы здесь не добавляем лист вручную, данные, которые вы передаёте в SmartMarker, определяют, будет ли создан новый лист. Давайте создадим простой анонимный объект, имитирующий список заказов. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Why this matters:** SmartMarker сканирует шаблон в поисках маркеров вроде `&=Header` и `&=Items.Id`. Структура `orderData` должна точно соответствовать этим маркерам, иначе процессор просто пропустит их. +- **Variation:** Если вы получаете данные из базы, замените анонимный тип на список DTO или `DataTable`. Процессор справится с обоими вариантами. + +## Шаг 4: Как сгенерировать отчёт – обработать SmartMarker + +Теперь мы привязываем данные к шаблону. Процессор проходит по первому листу, заменяет маркеры и создаёт лист Detail. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Why this matters:** Эта одна строка делает всю тяжёлую работу — заполняет заголовок, перебирает `Items` и учитывает `DetailSheetNewName`, который мы задали ранее. +- **Common question:** *What if I have multiple worksheets with markers?* Пройдитесь по каждому листу и вызовите `SmartMarkerProcessor.Process` отдельно. + +## Шаг 5: Как сохранить рабочую книгу – сохранить полученный файл + +Наконец, мы записываем изменённую рабочую книгу обратно на диск. Это тот момент, когда **how to save workbook** становится конкретным. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Why this matters:** Метод `Save` поддерживает множество форматов (`.xlsx`, `.xls`, `.csv`, `.pdf` и т.д.). По умолчанию он сохраняет файл Excel, но вы можете передать объект `SaveOptions`, чтобы изменить вывод. +- **Edge case:** Если целевой файл открыт в Excel, `Save` бросает `IOException`. Убедитесь, что все экземпляры закрыты, или используйте уникальное имя файла при каждом запуске. + +![How to Save Workbook in C# example](/images/how-to-save-workbook-csharp.png "How to Save Workbook in C# – visual overview of the process") + +### Полный рабочий пример + +Объединив всё вместе, представляем самостоятельное консольное приложение, которое вы можете собрать и запустить: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Expected output:** После выполнения вы найдёте `SmartMarkerWithDupDetail.xlsx` в `YOUR_DIRECTORY`. Откройте его, и вы должны увидеть: + +- Исходный заголовок, заполненный значением “Orders”. +- Новый (или переиспользованный) лист с именем **Detail**, содержащий две строки: `Id=1, Qty=5` и `Id=2, Qty=3`. + +Если лист **Detail** уже существовал, его содержимое будет перезаписано новыми данными — никаких лишних листов, захламляющих файл. + +## Часто задаваемые вопросы (FAQ) + +| Question | Answer | +|----------|--------| +| *Могу ли я сохранить в PDF вместо XLSX?* | Да. Замените `workbook.Save("file.xlsx")` на `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Что если мой шаблон содержит несколько секций SmartMarker?* | Вызовите `SmartMarkerProcessor.Process` для каждого листа, содержащего маркеры, или передайте коллекцию объектов данных, соответствующих каждой секции. | +| *Можно ли добавить данные вместо перезаписи листа Detail?* | Используйте `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (доступно в более новых версиях Aspose). | +| *Нужно ли освобождать Workbook?* | Класс `Workbook` реализует `IDisposable`. Оберните его в блок `using` для корректного управления ресурсами. | + +## Заключение + +Мы только что рассмотрели **how to save workbook** в C# от начала до конца, продемонстрировав весь конвейер: **how to load Excel**, **how to create sheet** (неявно через SmartMarker), **how to reuse sheet** и **how to generate report**. Код готов к использованию в любом проекте .NET, а объяснения дадут вам достаточно контекста для адаптации к более сложным сценариям — например, отчётам с несколькими листами, условному форматированию или экспорту в PDF. + +Готовы к следующему вызову? Попробуйте добавить диаграмму, визуализирующую количество заказов, или переключите формат вывода на CSV для дальнейшей обработки. Те же принципы — загрузка, обработка и сохранение — остаются применимыми, поэтому вы будете использовать этот шаблон во многих задачах отчётности. + +Если столкнётесь с проблемой или у вас есть идеи для расширений, оставляйте комментарий. Приятного кодинга и наслаждайтесь гладким процессом, наконец‑то позволяющим **save workbook** именно так, как вам нужно! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/smart-markers-dynamic-data/_index.md b/cells/russian/net/smart-markers-dynamic-data/_index.md index ebe71a975d..6345ace382 100644 --- a/cells/russian/net/smart-markers-dynamic-data/_index.md +++ b/cells/russian/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Aspose.Cells Smart Markers также поддерживает анонимны Раскройте потенциал отчетов Excel с помощью Aspose.Cells, легко обрабатывая вложенные объекты с помощью интеллектуальных маркеров в пошаговом руководстве. ### [Реализация массива переменных с помощью интеллектуальных маркеров Aspose.Cells](./variable-array-smart-markers/) Откройте для себя мощь Aspose.Cells. Узнайте, как шаг за шагом реализовать переменные массивы с помощью Smart Markers для бесперебойного создания отчетов Excel. +### [Как создать отчет Excel в C# – Полное руководство с использованием SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/russian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..4ec04cb1e6 --- /dev/null +++ b/cells/russian/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-22 +description: Как создать Excel‑отчёт в C# с шаблоном master‑detail. Научитесь быстро + заполнять шаблон Excel в C#, используя SmartMarker для повторяющихся листов. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: ru +og_description: Как генерировать отчет Excel в C# с использованием переиспользуемого + шаблона. Это пошаговое руководство покажет, как заполнить шаблон Excel в C# данными + master‑detail. +og_title: Как создать Excel‑отчет в C# – Полный учебник по SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Как создать Excel‑отчет в C# – полное руководство по использованию SmartMarker +url: /ru/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создать Excel‑отчет в C# – Полное руководство с использованием SmartMarker + +Когда‑нибудь задумывались **как создать Excel‑отчет** в C# без написания бесконечного кода построчно по ячейкам? Вы не одиноки. Большинство разработчиков сталкиваются с проблемой, когда нужен отшлифованный многолистовый отчет, отражающий отношения мастер‑деталь — например, заказы и позиции — но они не хотят каждый раз изобретать велосипед. + +Хорошие новости? С готовым шаблоном Excel и движком **SmartMarker** от Aspose.Cells вы можете **populate Excel template C#** всего в нескольких строках. В этом руководстве мы пройдем реальный сценарий, объясним, почему каждый шаг важен, и предоставим полностью готовый пример, который можно скопировать и вставить уже сегодня. + +> **Что вы получите:** Excel‑отчет master‑detail, где каждый заказ создает собственный лист, всё управляется простыми объектами C#. Нет ручных циклов по ячейкам, нет хрупких формул — только чистый, поддерживаемый код. + +--- + +## Требования + +- **.NET 6.0** (или новее) установлен — код ориентирован на .NET 6, но также работает на .NET Framework 4.7+. +- **Aspose.Cells for .NET** пакет NuGet (`Install-Package Aspose.Cells`) — он предоставляет `Workbook`, `SmartMarkerProcessor` и связанные классы. +- Файл Excel с именем **MasterDetailTemplate.xlsx**, размещенный в `YOUR_DIRECTORY`. Он должен содержать блок SmartMarker, например `{{Orders.OrderId}}` на первом листе и вложенный блок `{{Orders.Items.Prod}}` для строк товаров. +- Базовое понимание анонимных типов C# — мы будем использовать их для моделирования заказов и позиций. + +Если что‑то из этого вам незнакомо, не переживайте. Позже мы упомянем альтернативы (например, использование EPPlus), но основная идея останется той же. + +## Шаг 1: Загрузка шаблона Excel, содержащего блоки SmartMarker + +Первое, что мы делаем, — открываем файл шаблона. Представьте шаблон как скелет; SmartMarker позже заполнит его реальными данными. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Почему это важно:** Разделяя макет (шаблон) и данные (объекты C#), вы делаете работу удобной и для дизайнеров, и для разработчиков. Дизайнеры могут менять шрифты, цвета или формулы, не трогая код. + +## Шаг 2: Создание источника данных Master‑Detail + +Далее мы создаём данные, которые заполнят шаблон. Для типичного отчёта по заказам у вас есть коллекция заказов, каждый из которых имеет свою коллекцию позиций. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Совет:** Используйте типизированные классы вместо анонимных типов, если требуется переиспользование в нескольких отчетах. Анонимный подход делает пример лаконичным. + +**Почему это важно:** SmartMarker работает, сопоставляя имена свойств (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) с плейсхолдерами в шаблоне. Иерархия должна точно совпадать, иначе движок пропустит эти секции. + +## Шаг 3: Инструкция SmartMarker создавать новый лист для каждой записи мастера + +По умолчанию SmartMarker записывает все строки в один лист. Нам нужен каждый заказ на отдельном листе, что идеально подходит для печати или отправки PDF‑файлов по отдельным заказам позже. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Почему это важно:** `EnableRepeatingSheet` устраняет необходимость ручного клонирования листов. Движок копирует оригинальный лист, внедряет данные заказа и автоматически переименовывает лист (обычно используя значение первой колонки). + +## Шаг 4: Обработка шаблона вашими данными + +Теперь мы связываем всё вместе. `SmartMarkerProcessor` проходит по рабочей книге, заменяет теги и создаёт новые листы согласно инструкциям. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Почему это важно:** Эта единственная строка выполняет основную работу — парсинг шаблона, итерацию по коллекциям и обработку вложенных таблиц. Это суть **populate Excel template C#** без ручных циклов. + +## Шаг 5: Сохранение готового отчёта + +Наконец, запишите заполненную рабочую книгу на диск. Вы также можете передать её напрямую в HTTP‑ответ для веб‑приложений. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Почему это важно:** Сохранение в файл дает вам осязаемый артефакт, который можно открыть в Excel, поделиться со стейкхолдерами или передать в последующие процессы, такие как конвертация в PDF. + +## Полный рабочий пример (готов к копированию и вставке) + +Ниже представлен полный код программы, включая директивы `using` и метод `Main`. Поместите его в консольное приложение, скорректируйте пути к файлам и запустите. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Ожидаемый результат + +Когда вы откроете `MasterDetailResult.xlsx`, вы увидите: + +- **Лист “Order_1”** — содержит заголовок заказа 1 и две строки для продуктов A и B. +- **Лист “Order_2”** — содержит заголовок заказа 2 и одну строку для продукта C. +- Все формулы, форматирование и диаграммы из оригинального шаблона сохранены. + +![сгенерированный Excel‑отчёт с отдельными листами для каждого заказа — пример заполненной рабочей книги](/images/excel-report-example.png "Сгенерированный Excel‑отчёт с данными master‑detail") + +*Текст alt изображения: сгенерированный Excel‑отчёт с отдельными листами для каждого заказа, показывающий, как создать Excel‑отчёт с помощью C# и SmartMarker.* + +## Часто задаваемые вопросы и особые случаи + +### Что если мне нужен статический лист (например, сводка) вместе с повторяющимися листами? + +Установите `EnableRepeatingSheet = true` **только** на листе, содержащем блок мастера. Другие листы останутся нетронутыми, поэтому вы можете оставить страницу сводки в оригинальном шаблоне. + +### Можно ли использовать DataTable вместо анонимных объектов? + +Конечно. SmartMarker работает с любым объектом, реализующим `IEnumerable`. Просто замените анонимный тип на `DataTable` и убедитесь, что имена столбцов соответствуют тегам. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Как изменить схему именования генерируемых листов? + +Реализуйте пользовательский интерфейс `ISmartMarkerSheetNaming` (или измените `workbook.Worksheets` после обработки). Большинство разработчиков просто переименовывают листы на основе значения ячейки: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Что если мой шаблон использует иной синтаксис плейсхолдеров? + +SmartMarker позволяет задавать пользовательские разделители через `SmartMarkerOptions`. Например, использовать `<< >>` вместо `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## Советы по масштабированию этого подхода + +- **Кешируйте шаблон** в памяти, если генерируете много отчётов за запрос; загрузка с диска каждый раз добавляет задержку. +- **Комбинируйте с конвертацией в PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) для вывода, удобного для email. +- **Параметризуйте пути к файлам** с помощью файлов конфигурации или переменных окружения, чтобы решение было переносимым между dev, test и prod. +- **Юнит‑тестируйте слой данных** отдельно; SmartMarker сам по себе детерминирован, поэтому нужно лишь убедиться, что подаваемые данные соответствуют ожидаемой схеме. + +## Заключение + +Мы рассмотрели **как создать Excel‑отчёт** в C# от начала до конца, начиная с загрузки шаблона с поддержкой SmartMarker и заканчивая сохранением многолистовой рабочей книги, отражающей отношения master‑detail. С помощью **populate Excel template C#** в несколько строк кода вы избегаете хрупкой логики построчного заполнения ячеек и предоставляете дизайнерам свободу формировать окончательный вид. + +Далее вы можете изучить: + +- Использование **populate Excel template C#** с диаграммами, автоматически обновляющимися на каждом листе. +- Интеграцию **excel smartmarker c#** с ASP.NET Core для потоковой передачи отчётов напрямую в браузеры. +- Автоматизацию конвейеров **c# excel automation**, извлекающих данные из API или баз данных. + +Попробуйте, настройте шаблон и посмотрите, как быстро можно превратить сырые данные в отшлифованный Excel‑отчёт. Есть вопросы или интересный кейс? Оставьте комментарий ниже — happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/russian/net/tables-and-lists/_index.md b/cells/russian/net/tables-and-lists/_index.md index 55999f3340..da95d0fb13 100644 --- a/cells/russian/net/tables-and-lists/_index.md +++ b/cells/russian/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Откройте для себя мощь Aspose.Cells для .NET. Научитесь читать и писать таблицы с запросами источников данных в этом подробном пошаговом руководстве. ### [Установить комментарий к таблице или списку в Excel](./setting-comment-of-table-or-list/) Узнайте, как добавлять комментарии к таблицам в Excel с помощью Aspose.Cells для .NET, следуя нашему простому пошаговому руководству. +### [Создать таблицу Excel в C# – пошаговое руководство](./create-excel-table-in-c-step-by-step-guide/) +Подробное пошаговое руководство по созданию таблицы Excel в C# с использованием Aspose.Cells для .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/russian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/russian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..aeeb80e56e --- /dev/null +++ b/cells/russian/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-22 +description: Быстро создайте таблицу Excel в C#. Узнайте, как добавить таблицу, задать + её диапазон, скрыть заголовок и отключить фильтр, с полным примером кода. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: ru +og_description: Создайте таблицу Excel в C# с понятным примером. Узнайте, как добавить + таблицу, задать её диапазон, скрыть заголовок и отключить фильтр всего за несколько + строк. +og_title: Создание таблицы Excel в C# – Полное руководство по программированию +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Создание таблицы Excel в C# — пошаговое руководство +url: /ru/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание Excel‑таблицы в C# – пошаговое руководство + +Когда‑нибудь нужно было **создать Excel‑таблицу** программно с помощью C#? Создание Excel‑таблицы может стать простым делом, если знать правильные шаги. В этом руководстве мы пройдем полный, готовый к запуску пример, показывающий **как добавить таблицу**, **определить диапазон таблицы**, **скрыть заголовок таблицы** и даже **отключить фильтр таблицы** – всё без выхода из IDE. + +Если вам когда‑нибудь мешал появляющийся UI AutoFilter, когда он не нужен, вы попали по адресу. К концу этого руководства у вас будет готовый к запуску фрагмент кода, создающий чистую книгу с именем *TableNoFilter.xlsx*, и вы поймёте, почему важна каждая строка. + +## Что вы узнаете + +- Как **создать Excel‑таблицу** с нуля с помощью Aspose.Cells. +- Точный синтаксис для **определения диапазона таблицы** (A1:D5 в нашем примере). +- Как включить строку заголовка, чтобы появился встроенный UI фильтра. +- Приём для **скрытия заголовка таблицы** и **отключения фильтра таблицы**, когда они больше не нужны. +- Полную готовую к копированию программу на C#, которую можно запустить уже сегодня. + +### Требования + +- .NET 6.0 или новее (код также работает с .NET Framework 4.7+). +- Aspose.Cells для .NET, установленный через NuGet (`Install-Package Aspose.Cells`). +- Базовые знания C# и Visual Studio (или любой другой предпочитаемой IDE). + +--- + +## Шаг 1: Создание проекта и импорт пространств имён + +Прежде чем **создать Excel‑таблицу**, нужен консольный проект, ссылающийся на Aspose.Cells. Откройте терминал и выполните: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Теперь откройте *Program.cs* и добавьте необходимые `using`‑директивы: + +```csharp +using System; +using Aspose.Cells; +``` + +Эти импорты дают доступ к классам `Workbook`, `Worksheet`, `CellArea` и `ListObject`, которые управляют остальной частью руководства. + +## Шаг 2: Инициализация новой книги и получение первого листа + +Создание новой книги – первый логичный шаг. Представьте книгу как контейнер файла Excel, а лист – отдельный лист, куда мы разместим нашу таблицу. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Почему это важно:** Новый `Workbook` создаётся с одним пустым листом. Обращаясь к `Worksheets[0]`, мы гарантируем работу с листом по умолчанию без необходимости создавать его вручную. + +## Шаг 3: Определение диапазона таблицы (A1:D5) + +В терминологии Excel *таблица* находится внутри прямоугольного блока ячеек. Структура `CellArea` позволяет точно указать этот блок. Здесь мы покажем, как **определить диапазон таблицы** для ячеек от A1 до D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Совет:** Если нужен динамический диапазон, можно вычислять `endRow` и `endColumn` исходя из длины данных. Нумерация начинается с нуля, что часто приводит к ошибкам «на один элемент больше/меньше», поэтому проверяйте свои числа. + +## Шаг 4: Добавление таблицы и включение строки заголовка + +Теперь переходим к основной части руководства: **как добавить таблицу** на лист. Коллекция `ListObjects` управляет таблицами, а установка `ShowHeaders = true` автоматически добавляет UI AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Объяснение:** +> - `Add(tableRange, true)` создаёт новый `ListObject` (т.е. Excel‑таблицу) внутри указанного диапазона. +> - Параметр `true` сообщает Aspose.Cells, что первая строка диапазона должна рассматриваться как заголовок. +> - Установка `ShowHeaders` в `true` делает заголовок видимым и активирует встроенный UI фильтра. + +На этом этапе, открыв сгенерированную книгу, вы увидите красиво отформатированную таблицу с стрелками‑фильтрами в заголовках столбцов. + +## Шаг 5: Скрытие строки заголовка и отключение AutoFilter + +Иногда требуется отображать данные без лишних элементов UI. Возможно, вы экспортируете чистый отчёт, где фильтры не нужны. Ниже показана техника **скрытия заголовка таблицы** и **отключения фильтра таблицы**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Почему это делается:** +> - `ShowHeaders = false` убирает визуальную строку заголовка, превращая таблицу в обычный блок данных. +> - Установка `AutoFilter = null` удаляет скрытый объект фильтра, гарантируя отсутствие остаточных фильтров. Это и есть **отключение фильтра таблицы**. + +## Шаг 6: Сохранение книги на диск + +Наконец, сохраняем файл в выбранное вами место. Замените `"YOUR_DIRECTORY"` реальным путём на вашем компьютере. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +При запуске программы вы должны увидеть: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Открывая файл, вы увидите лист с блоком данных (без заголовка и без стрелок‑фильтров). Это полный цикл – от **создания Excel‑таблицы** до **отключения фильтра таблицы**. + +--- + +## Полный рабочий пример (готов к копированию) + +Ниже представлен весь код программы, готовый к компиляции. Просто замените каталог‑заполнитель на действительный путь. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Ожидаемый результат:** Файл с именем *TableNoFilter.xlsx*, содержащий простой диапазон данных A1:D5 без видимого заголовка и без выпадающих фильтров. + +--- + +## Часто задаваемые вопросы и особые случаи + +### Что делать, если нужны несколько таблиц на одном листе? + +Просто повторите **Шаг 3**, задав новый `CellArea` и создав новый `ListObject`. Каждая таблица хранит свои настройки заголовка и фильтра, поэтому одну можно скрыть, а другую оставить видимой. + +### Можно ли стилизовать таблицу (полосатые строки, цвета) перед скрытием заголовка? + +Конечно. У `ListObject` есть свойство `TableStyleType`. Например: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Стиль можно применить **до** скрытия заголовка; визуальное форматирование сохранится. + +### Как оставить заголовок, но скрыть только стрелки‑фильтры? + +Установите `ShowHeaders = true` (чтобы оставить строку) и затем очистите фильтр: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Это удовлетворит требование **отключить фильтр таблицы**, не теряя подписи столбцов. + +### Работает ли это только с файлами .xlsx? + +Aspose.Cells автоматически определяет формат по расширению, переданному в `Save`. Можно также сохранять в `.xls`, `.csv` или даже `.pdf`, указав соответствующее расширение. + +--- + +## Заключение + +Мы рассмотрели всё, что нужно для **создания Excel‑таблицы** в C# с помощью Aspose.Cells: от **определения диапазона таблицы** до **скрытия заголовка таблицы** и **отключения фильтра таблицы**. Код короткий, понятный и готов к использованию в продакшене. + +Далее вы можете исследовать, как **добавлять таблицу** с динамическими данными, применять пользовательские стили или экспортировать ту же книгу в PDF. Все эти темы опираются на полученный фундамент, так что экспериментируйте и адаптируйте фрагмент под свои проекты. + +Есть свои находки? Оставляйте комментарий ниже, и удачной разработки! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/converting-excel-files-to-other-formats/_index.md b/cells/spanish/net/converting-excel-files-to-other-formats/_index.md index d683458bb0..7ddf7b1984 100644 --- a/cells/spanish/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/spanish/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,10 @@ Aprenda a convertir archivos de Excel a PDF/A-1a para archivarlos con Aspose.Cel Aprenda a convertir JSON a CSV programáticamente en .NET con Aspose.Cells. Siga nuestra guía paso a paso para garantizar una transformación de datos fluida. ### [Conversión de archivos de Excel a PPTX mediante programación en .NET](./converting-excel-file-to-pptx/) Aprenda a convertir un archivo de Excel en una presentación de PowerPoint (PPTX) mediante programación usando Aspose.Cells para .NET con esta guía paso a paso. +### [Establecer área de impresión en Excel y exportar a PowerPoint – Guía paso a paso](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Aprenda a definir el área de impresión en Excel y exportarla a PowerPoint usando Aspose.Cells para .NET paso a paso. +### [Exportar Excel a PowerPoint – Guía completa en C#](./export-excel-to-powerpoint-complete-c-guide/) +Aprenda a exportar Excel a PowerPoint con Aspose.Cells para .NET mediante una guía completa en C#. ### [Especificación de HTML CrossType en la salida HTML mediante programación en .NET](./specifying-html-crosstype-in-output-html/) Aprenda a especificar HTML CrossType en Aspose.Cells para .NET. Siga nuestro tutorial paso a paso para convertir archivos de Excel a HTML con precisión. ### [Lectura de números en hojas de cálculo mediante programación en .NET](./reading-numbers-spreadsheet/) diff --git a/cells/spanish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/spanish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..3ef5c51c44 --- /dev/null +++ b/cells/spanish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Aprende a exportar Excel a PowerPoint, establecer el área de impresión + en Excel y guardar Excel como PPTX con gráficos editables y objetos OLE en solo + unos pocos pasos. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: es +og_description: Exporta Excel a PowerPoint rápidamente. Este tutorial muestra cómo + establecer el área de impresión en Excel y guardar Excel como PPTX con gráficos + editables y objetos OLE. +og_title: Exportar Excel a PowerPoint – Guía completa de C# +tags: +- Aspose.Cells +- C# +- Office Automation +title: Exportar Excel a PowerPoint – Guía completa de C# +url: /es/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Export Excel to PowerPoint – Guía Completa en C# + +¿Necesitas **exportar Excel a PowerPoint**? Estás en el lugar correcto. Ya sea que estés creando una presentación semanal de ventas o automatizando una canalización de informes, convertir una hoja de cálculo de Excel en una presentación de PowerPoint puede ahorrarte horas de trabajo de copiar‑y‑pegar. + +En este tutorial recorreremos un ejemplo práctico que no solo **exporta excel a powerpoint**, sino que también muestra cómo **establecer el área de impresión en Excel** y **guardar excel como pptx** para que las diapositivas resultantes mantengan los gráficos y objetos OLE totalmente editables. Al final tendrás un programa en C# listo para ejecutar que genera un archivo `.pptx` de aspecto profesional sin ninguna manipulación manual. + +## Lo que necesitarás + +- **.NET 6+** (cualquier runtime reciente de .NET funciona; el código usa sintaxis de C# 10) +- **Aspose.Cells for .NET** – la biblioteca que impulsa la exportación. Puedes obtenerla desde NuGet (`Install-Package Aspose.Cells`). +- Un libro de Excel que contenga al menos un gráfico y/o un objeto OLE (el archivo de ejemplo `ChartAndOle.xlsx` se usa en el código). +- Un IDE favorito (Visual Studio, Rider o VS Code – lo que prefieras). + +Eso es todo. Sin interop COM, sin necesidad de instalar Office. + +> **¿Por qué usar una biblioteca?** +> La Interfaz de Office integrada es frágil, requiere Office en el servidor y a menudo produce imágenes rasterizadas cuando realmente deseas formas vectoriales editables. Aspose.Cells se encarga del trabajo pesado y mantiene todo editable en PowerPoint. + +--- + +## Paso 1: Cargar el libro de Excel + +Primero cargamos el archivo fuente en memoria. La clase `Workbook` abstrae todo el archivo de Excel, dándonos acceso a hojas, gráficos y objetos OLE. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Por qué es importante:** Cargar el libro es la base. Si la ruta es incorrecta o el archivo está corrupto, el resto del proceso nunca se ejecutará. El bloque `try…catch` te brinda un error amigable en lugar de un bloqueo. + +--- + +## Paso 2: Establecer el área de impresión en Excel + +Antes de exportar, normalmente deseas limitar la salida a un rango específico. Aquí es donde **set print area excel** entra en juego. Al definir un área de impresión, le indicas a Aspose.Cells exactamente qué celdas (y objetos asociados) deben aparecer en la diapositiva. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Consejo profesional:** Si tienes varias hojas, repite la asignación de `PrintArea` para cada una que planees exportar. Dejar el área de impresión sin establecer exportará la hoja completa, lo que puede inflar el archivo de PowerPoint. + +--- + +## Paso 3: Configurar opciones de exportación – Mantener gráficos y OLE editables + +Aspose.Cells ofrece un rico objeto `ImageOrPrintOptions`. Al activar `ExportChartObjects` y `ExportOleObjects` preservamos la naturaleza vectorial de los gráficos y la editabilidad en vivo de los objetos OLE (como documentos Word o PDFs incrustados). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**¿Qué ocurre bajo el capó?** +Cuando `ExportChartObjects` es `true`, Aspose convierte el gráfico en una forma nativa de PowerPoint, conservando series, ejes y formato. Con `ExportOleObjects` habilitado, los objetos incrustados se insertan como marcos OLE, de modo que al hacer doble clic en PowerPoint se abre la aplicación original (Word, Excel, etc.) para editarlos. + +--- + +## Paso 4: Guardar la hoja como un archivo PowerPoint editable + +Ahora juntamos todo. El método `Save` escribe el archivo `.pptx` usando las opciones que configuramos. El resultado es una presentación donde cada hoja se convierte en una diapositiva (o en una serie de diapositivas si el área de impresión abarca varias páginas). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Resultado esperado + +- **Ubicación del archivo:** `C:\MyProjects\EditableChartOle.pptx` +- **Contenido:** + - Una diapositiva que muestra el rango `A1:H30` exactamente como aparece en Excel. + - Todos los gráficos son objetos de PowerPoint—haz clic en una barra y edita los datos. + - Los objetos OLE (p. ej., un documento Word incrustado) pueden abrirse y editarse directamente desde la diapositiva. + +Si abres el PPTX en PowerPoint, deberías ver una diapositiva limpia con componentes totalmente editables—sin capturas de pantalla rasterizadas. + +--- + +## Casos límite y variaciones + +### Múltiples hojas → Múltiples diapositivas +Si deseas que cada hoja se convierta en su propia diapositiva, simplemente recorre `workbook.Worksheets` y llama a `Save` con un `SheetToImageOptions` que apunte a un índice de hoja específico. Aspose generará automáticamente una nueva diapositiva por cada iteración. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Rangos grandes y rendimiento +Exportar un área de impresión masiva (p. ej., `A1:Z1000`) puede aumentar el uso de memoria. Para mitigarlo, considera: +- Dividir el rango en fragmentos más pequeños y exportarlos como diapositivas separadas. +- Usar `WorkbookSettings` para incrementar `MemorySetting` si encuentras `OutOfMemoryException`. + +### Problemas de compatibilidad +El PPTX generado funciona con PowerPoint 2016 y versiones posteriores. Las versiones más antiguas pueden abrir el archivo pero podrían perder algunas características avanzadas de los gráficos. Siempre prueba en la versión de Office objetivo si vas a distribuir la presentación ampliamente. + +--- + +## Ejemplo completo (Listo para copiar y pegar) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Consejo:** Sustituye las rutas codificadas por valores de configuración o argumentos de línea de comandos para una herramienta más flexible. + +--- + +## Preguntas frecuentes + +**P: ¿Puedo exportar solo un gráfico sin las celdas circundantes?** +R: Sí. Usa solo `ExportChartObjects` y define el área de impresión al rango que delimita el gráfico. El gráfico aparecerá centrado en la diapositiva. + +**P: ¿Qué pasa si mi libro contiene macros?** +R: Aspose.Cells ignora las macros VBA durante la exportación. Si necesitas funcionalidad de macros en PowerPoint, tendrás que recrearla usando VBA de PowerPoint o complementos. + +**P: ¿Funciona en Linux/macOS?** +R: Absolutamente. Aspose.Cells es una biblioteca .NET pura; mientras tengas el runtime de .NET, el código se ejecuta multiplataforma. + +--- + +## Conclusión + +Acabas de aprender cómo **exportar Excel a PowerPoint** mientras estableces con precisión **set print area excel** y **save excel as pptx** con gráficos y objetos OLE totalmente editables. Los pasos clave son cargar el libro, definir el área de impresión, configurar `ImageOrPrintOptions` y, finalmente, guardar el PPTX. + +A partir de aquí puedes explorar: +- Exportar varias hojas en una sola presentación. +- Añadir títulos o notas personalizadas a las diapositivas mediante código. +- Convertir el PPTX a PDF para distribución (usa `SaveFormat.Pdf`). + +Ejecuta el código, ajusta el área de impresión y observa cómo tus datos de Excel aparecen mágicamente en PowerPoint—sin copiar‑y‑pegar manual. Si encuentras algún inconveniente, revisa la documentación de Aspose.Cells o deja un comentario abajo. ¡Feliz codificación! + +![Diagrama que muestra el flujo de exportar excel a powerpoint](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/spanish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..d099d2d794 --- /dev/null +++ b/cells/spanish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-03-22 +description: Establecer el área de impresión en Excel y convertir Excel a PowerPoint + con formas editables. Aprende cómo repetir la fila de título, crear PowerPoint desde + Excel y exportar Excel a PPTX. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: es +og_description: Establece el área de impresión en Excel y conviértela en una diapositiva + de PowerPoint con formas editables. Sigue esta guía completa para repetir la fila + de título y exportar Excel a PPTX. +og_title: Establecer área de impresión en Excel – Tutorial de exportación a PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Establecer el área de impresión en Excel y exportar a PowerPoint – Guía paso + a paso +url: /es/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Establecer área de impresión en Excel y exportar a PowerPoint – Tutorial de programación completo + +¿Alguna vez necesitaste **establecer el área de impresión** en una hoja de Excel y luego convertir esa porción en una diapositiva de PowerPoint? No eres el único. En muchos flujos de informes, los mismos datos que se imprimen bien también deben aparecer en una presentación, a menudo con la primera fila repetida como título. ¿La buena noticia? Con unas pocas líneas de C# puedes **convertir excel a powerpoint**, mantener todos los cuadros de texto editables e incluso **repetir la fila de título** automáticamente. + +En esta guía repasaremos todo lo que necesitas saber: desde configurar el área de impresión hasta crear un archivo PPTX que puedas editar directamente en PowerPoint. Al final podrás **crear powerpoint from excel**, exportar el resultado como **export excel to pptx**, y reutilizar el mismo código en cualquier proyecto .NET. Sin magia, solo pasos claros y un ejemplo completo y ejecutable. + +## Lo que necesitarás + +Antes de sumergirnos, asegúrate de tener: + +- **.NET 6.0** o posterior (la API también funciona con .NET Framework) +- **Aspose.Cells for .NET** (la biblioteca que proporciona `Workbook`, `ImageOrPrintOptions`, etc.) +- Un IDE básico de C# (Visual Studio, Rider o VS Code con la extensión C#) +- Un archivo Excel (`input.xlsx`) que contenga los datos que deseas exportar + +Eso es todo—no necesitas paquetes NuGet adicionales más allá de Aspose.Cells. Si aún no has añadido la biblioteca, ejecuta: + +```bash +dotnet add package Aspose.Cells +``` + +Ahora estamos listos para comenzar. + +## Paso 1: Cargar el Workbook – Punto de partida para la exportación + +Lo primero que debes hacer es cargar el workbook que contiene la hoja que quieres convertir en una diapositiva. Piensa en el workbook como el documento fuente; sin él, nada más importa. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Por qué es importante:** Cargar el workbook te da acceso a la colección de hojas, a las opciones de configuración de página y al motor de exportación. Si omites este paso no podrás establecer el **área de impresión** ni repetir ninguna fila. + +> **Consejo profesional:** Usa una ruta absoluta mientras pruebas, luego cambia a una ruta relativa o basada en configuración para producción. + +## Paso 2: Configurar opciones de exportación – Mantener cuadros de texto y formas editables + +Al exportar a PowerPoint probablemente quieras que la diapositiva resultante sea editable. Aspose.Cells te permite controlar eso con `ImageOrPrintOptions`. Establecer `ExportTextBoxes` y `ExportShapeObjects` en `true` indica a la biblioteca que preserve esos objetos como elementos nativos de PowerPoint en lugar de aplanarlos en una imagen. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Por qué es importante:** Si alguna vez necesitaste **convertir excel a powerpoint** y luego ajustar la diapositiva manualmente, esta configuración te ahorra recrear los cuadros de texto desde cero. También garantiza que cualquier forma (como flechas o gráficos) permanezca como objeto vectorial que puedes redimensionar. + +## Paso 3: Establecer el área de impresión y repetir la fila de título + +Ahora llegamos al corazón del tutorial: **establecer el área de impresión** y hacer que la primera fila se repita en cada página impresa (o, en nuestro caso, en la diapositiva exportada). El área de impresión indica a Excel qué celdas considerar para imprimir—o exportar en nuestro escenario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Por qué es importante:** Al limitar la exportación a `A1:G20` evitas traer rangos vacíos masivos, lo que acelera la conversión y mantiene la diapositiva ordenada. La línea `PrintTitleRows` hace que la primera fila actúe como encabezado—exactamente lo que deseas cuando **repites la fila de título** en una presentación. + +> **Caso límite:** Si tus datos comienzan en la fila 2, ajusta el rango en consecuencia (p. ej., `PrintTitleRows = "$2:$2"`). + +## Paso 4: Guardar la hoja como archivo PowerPoint + +Finalmente, escribimos la diapositiva en disco. El método `Save` recibe el nombre de archivo de destino y las opciones que configuramos antes. El resultado es un archivo PPTX con cuadros de texto y formas editables, listo para abrirse en PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Lo que verás:** Abre `SheetWithEditableShapes.pptx` en PowerPoint. La primera fila aparece como título, todas las celdas de `A1:G20` se renderizan, y cualquier forma que añadiste en Excel sigue siendo movible y editable. No hay imágenes rasterizadas—solo objetos nativos de PowerPoint. + +## Ejemplo completo y funcional – Todos los pasos combinados + +A continuación tienes el programa completo, listo para copiar y pegar. Ejecútalo como una aplicación de consola o intégralo en cualquier solución mayor. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Salida esperada:** Después de ejecutar el programa, la consola muestra el mensaje de éxito y el archivo PPTX aparece en la ubicación especificada. Al abrir el archivo se muestra una sola diapositiva con el rango seleccionado, cuadros de texto editables y cualquier forma original. + +## Preguntas frecuentes y trampas comunes + +| Pregunta | Respuesta | +|----------|-----------| +| **¿Funciona con varias hojas de cálculo?** | Sí. Recorre `workbook.Worksheets` y repite los mismos pasos para cada hoja, cambiando el nombre de archivo de salida cada vez. | +| **¿Qué pasa si necesito exportar más de una diapositiva?** | Llama a `workbook.Save` varias veces con diferentes objetos `ImageOrPrintOptions`, cada uno configurado con un `PageSetup` distinto si es necesario. | +| **¿Puedo cambiar el tamaño de la diapositiva?** | Usa `exportOptions.ImageFormat` para establecer DPI, o ajusta `sheet.PageSetup.PaperSize` antes de guardar. | +| **¿Aspose.Cells es gratuito?** | Ofrece una evaluación gratuita con marcas de agua. Para producción se requiere una licencia. | +| **¿Qué ocurre con las fórmulas de Excel?** | Los valores exportados son los **resultados calculados** en el momento de la exportación. Si necesitas fórmulas vivas en PowerPoint, deberás usar otro enfoque. | + +## Consejos para un flujo de trabajo fluido + +- **Consejo profesional:** Establece `Workbook.Settings.CalcMode = CalculationModeType.Automatic` antes de exportar para garantizar que todas las fórmulas estén actualizadas. +- **Cuidado con:** Rangos muy grandes pueden generar presión de memoria. Recorta el área de impresión al rango más pequeño necesario. +- **Consejo de rendimiento:** Reutiliza una única instancia de `ImageOrPrintOptions` si vas a exportar muchas hojas; crear una nueva cada vez añade sobrecarga. +- **Nota de versión:** El código anterior está dirigido a Aspose.Cells 23.10 (lanzado en noviembre 2023). Las versiones posteriores mantienen la misma API, pero siempre revisa las notas de la versión para detectar cambios incompatibles. + +## Conclusión + +Hemos cubierto cómo **establecer el área de impresión** en una hoja de Excel, repetir la primera fila como título y luego **exportar excel to pptx** manteniendo cuadros de texto y formas editables. En resumen, ahora sabes una forma fiable de **convertir excel a powerpoint**, **repetir la fila de título** y **crear powerpoint from excel** con solo unas pocas líneas de C#. + +¿Listo para el siguiente paso? Prueba automatizar una conversión por lotes de decenas de informes, o añade diseños de diapositiva personalizados usando el PowerPoint SDK después de la exportación. El cielo es el límite—experimenta, rompe cosas y disfruta del poder de la generación programática de documentos. + +Si este tutorial te resultó útil, compártelo, deja un comentario con tus propias adaptaciones o explora nuestras otras guías sobre **export excel to pptx** y temas de automatización relacionados. ¡Feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/csv-file-handling/_index.md b/cells/spanish/net/csv-file-handling/_index.md index ea25bbd36e..f3f961d5b5 100644 --- a/cells/spanish/net/csv-file-handling/_index.md +++ b/cells/spanish/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Para obtener información adicional, no dude en consultar nuestros tutoriales de Aprenda a abrir archivos CSV con Aspose.Cells para .NET con nuestra guía completa paso a paso. Domine la manipulación de datos. ### [Abrir archivos CSV con el analizador preferido](./csv-file-opening-csv-files-with-preferred-parser/) Aprenda a abrir y analizar archivos CSV con analizadores personalizados en Aspose.Cells para .NET. Gestione texto y fechas fácilmente. Ideal para desarrolladores. +### [Guardar libro de trabajo como CSV en C# – Exportar Excel a CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aprenda a guardar un libro de Excel como archivo CSV usando C# con Aspose.Cells para .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/spanish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..7e4ff0ea53 --- /dev/null +++ b/cells/spanish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Guarda el libro de trabajo como CSV en C# rápidamente. Aprende cómo exportar + Excel a CSV, establecer la precisión y convertir xlsx a CSV con Aspose.Cells en + solo unas pocas líneas. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: es +og_description: Guarda el libro de trabajo como CSV en C# rápidamente. Esta guía muestra + cómo exportar Excel a CSV, establecer la precisión y convertir xlsx a CSV usando + Aspose.Cells. +og_title: Guardar libro de trabajo como CSV en C# – Exportar Excel a CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Guardar libro de trabajo como CSV en C# – Exportar Excel a CSV +url: /es/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar libro de trabajo como CSV en C# – Exportar Excel a CSV + +¿Alguna vez necesitaste **guardar libro de trabajo como CSV** pero no estabas seguro de cómo mantener los números ordenados? No estás solo. En muchos escenarios de canalización de datos tenemos que **exportar Excel a CSV** mientras preservamos un número específico de dígitos significativos, y la biblioteca Aspose.Cells lo hace muy fácil. + +En este tutorial verás un ejemplo completo, listo para ejecutar, que **guarda un libro de trabajo como CSV**, muestra *cómo establecer la precisión* y incluso explica *cómo convertir xlsx a CSV* para proyectos del mundo real. Sin referencias vagas, solo código que puedes copiar, pegar y ejecutar hoy. + +## Lo que aprenderás + +- Los pasos exactos para **guardar libro de trabajo como CSV** con una configuración de precisión personalizada. +- Cómo **exportar Excel a CSV** usando `CsvSaveOptions` y por qué la propiedad `SignificantDigits` es importante. +- Variaciones para diferentes necesidades de precisión y errores comunes al manejar números grandes. +- Una mirada rápida a la conversión de un archivo `.xlsx` a `.csv` sin perder la integridad de los datos. + +### Requisitos previos + +- .NET 6.0 o posterior (el código también funciona en .NET Framework 4.6+). +- El paquete NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Un conocimiento básico de C# y de I/O de archivos. + +Si tienes eso, vamos a sumergirnos. + +![ejemplo de guardar libro de trabajo como csv](image.png "ejemplo de guardar libro de trabajo como csv") + +## Guardar libro de trabajo como CSV – Guía paso a paso + +A continuación está el programa completo. Cada línea está comentada para que puedas ver *por qué* cada parte está allí, no solo *qué* hace. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Por qué usar `CsvSaveOptions.SignificantDigits`? + +Cuando **cómo establecer la precisión** para una exportación CSV, realmente estás decidiendo cuántos dígitos de un número de punto flotante sobreviven a la conversión. Excel almacena números con hasta 15 dígitos de precisión, pero la mayoría de los sistemas posteriores (bases de datos, canalizaciones de análisis) solo necesitan unos pocos. Al establecer `SignificantDigits = 4`, la biblioteca redondea `123.456789` a `123.5`, manteniendo el archivo compacto y legible para humanos. + +> **Consejo profesional:** Si necesitas valores *exactos* (p. ej., para datos financieros), establece `SignificantDigits` a un número mayor o omítelo por completo. El valor predeterminado es 15, lo que refleja la precisión interna de Excel. + +## Exportar Excel a CSV – Variaciones comunes + +### Cambiar el delimitador + +Algunos sistemas esperan un punto y coma (`;`) en lugar de una coma. Puedes ajustarlo así: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exportar una hoja de cálculo específica + +Si solo deseas exportar la segunda hoja, reemplaza el bloque opcional con: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Luego llama a `workbook.Save` como antes. Esta técnica es útil cuando **convertir xlsx a csv** pero solo te importa una pestaña en particular. + +### Manejo de conjuntos de datos grandes + +Al manejar millones de filas, considera transmitir el CSV en lugar de cargar todo el libro de trabajo en memoria. Aspose.Cells ofrece una propiedad `CsvSaveOptions` `ExportDataOnly` que omite la información de estilo, reduciendo el uso de memoria: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Cómo exportar CSV – Verificando el resultado + +Después de ejecutar el programa, abre `Numbers_4sd.csv` en un editor de texto plano. Deberías ver algo como: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Observa cómo los números están limitados a cuatro dígitos significativos, exactamente como solicitamos. Si abres el archivo en Excel, los valores aparecerán idénticos porque Excel respeta el redondeo que se aplicó durante la exportación. + +## Casos límite y solución de problemas + +| Situación | Qué comprobar | Solución | +|-----------|---------------|-----| +| **File not found** | Verifica que `sourcePath` apunte a un archivo `.xlsx` real. | Usa `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Asegúrate de que `SignificantDigits` esté configurado antes de llamar a `Save`. | Mueve la asignación de `CsvSaveOptions` más arriba o verifica el valor. | +| **Special characters appear as �** | La codificación CSV por defecto es UTF‑8 sin BOM. | Establece `csvOptions.Encoding = System.Text.Encoding.UTF8` o `Encoding.Unicode`. | +| **Extra empty columns** | Algunas hojas tienen formato residual más allá del rango usado. | Llama a `worksheet.Cells.MaxDisplayRange` para recortar columnas no usadas antes de la exportación. | + +## Cómo establecer la precisión de forma dinámica + +A veces la precisión requerida no se conoce en tiempo de compilación. Puedes leerla de un archivo de configuración o de un argumento de línea de comandos: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Ahora puedes ejecutar: + +``` +dotnet run -- 6 +``` + +y obtener un CSV con seis dígitos significativos. Este pequeño ajuste hace que la solución sea flexible para **cómo exportar csv** en entornos variados. + +## Recapitulación del ejemplo completo en funcionamiento + +Juntando todo, el programa completo (incluyendo ajustes opcionales) se ve así: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Ejecuta el programa, abre el CSV generado, y verás la precisión que solicitaste, confirmando que has guardado el libro de trabajo como CSV con éxito. + +## Conclusión + +Ahora tienes una receta sólida y lista para producción para **guardar un libro de trabajo como CSV** en C#. La guía cubrió *cómo exportar Excel a CSV*, demostró *cómo establecer la precisión* mediante `CsvSaveOptions.SignificantDigits`, y mostró varias variaciones para escenarios de **convertir xlsx a csv**. Con el fragmento de código completo, puedes incorporar esto en cualquier proyecto .NET y comenzar a exportar datos al instante. + +**¿Qué sigue?** + +- Experimenta con diferentes delimitadores (`;`, `\t`) para exportaciones TSV. +- Combina este enfoque con un observador de archivos para automatizar la generación de CSV cada vez que un archivo Excel cambie. +- Explora `CsvLoadOptions` de Aspose.Cells si alguna vez necesitas leer CSVs de vuelta a un libro de trabajo. + +Siéntete libre de ajustar la precisión, añadir encabezados personalizados o conectar el exportador + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/document-properties/_index.md b/cells/spanish/net/document-properties/_index.md index 3597c9bfeb..ccb34ad32d 100644 --- a/cells/spanish/net/document-properties/_index.md +++ b/cells/spanish/net/document-properties/_index.md @@ -35,6 +35,8 @@ Aprenda a acceder a las propiedades de documentos en Excel con Aspose.Cells para Aprenda a acceder a las propiedades de documentos en Excel usando Aspose.Cells para .NET con nuestra guía paso a paso. Administre sus hojas de cálculo eficientemente. ### [Agregar propiedades de documento en .NET](./adding-document-properties/) Aprenda a agregar propiedades de documentos en Excel usando Aspose.Cells para .NET con esta guía detallada paso a paso. +### [Crear libro de Excel – Añadir propiedades personalizadas y guardar como XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Aprenda a crear un libro de Excel, agregar propiedades personalizadas y guardarlo en formato XLSB usando Aspose.Cells para .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/spanish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..0e9b2f06d1 --- /dev/null +++ b/cells/spanish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-22 +description: Crear libro de Excel, agregar propiedades personalizadas, establecer + el nombre de la hoja de cálculo y guardar como archivo binario XLSB usando C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: es +og_description: Crear un libro de Excel, agregar propiedades personalizadas, establecer + el nombre de la hoja de cálculo y guardar como archivo binario XLSB usando C#. +og_title: Crear libro de Excel – Añadir propiedades personalizadas y guardar como + XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Crear libro de Excel – Añadir propiedades personalizadas y guardar como XLSB +url: /es/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear libro de Excel – Añadir propiedades personalizadas y guardar como XLSB + +¿Alguna vez necesitaste **crear un libro de Excel** programáticamente pero también mantener algunos metadatos adjuntos? Tal vez estés construyendo un motor de informes que etiqueta cada archivo con un ID de informe, el nombre del autor o el número de versión. En ese caso, aprender a **añadir propiedades personalizadas** mientras **estableces el nombre de la hoja** y finalmente **guardas como XLSB** te ahorrará mucho procesamiento manual posterior. + +En este tutorial recorreremos un ejemplo completo y ejecutable que muestra exactamente cómo **escribir un archivo Excel binario** usando C#. Verás por qué el formato XLSB es la elección correcta para transportar propiedades personalizadas, cómo evitar los errores más comunes y qué hacer si necesitas soportar versiones antiguas de Excel. + +--- + +## Lo que necesitarás + +- **.NET 6+** (o .NET Framework 4.6+). El código funciona en cualquier runtime reciente. +- **Aspose.Cells for .NET** (prueba gratuita o con licencia). Proporciona las clases `Workbook`, `Worksheet` y `CustomProperties` utilizadas a continuación. +- Un IDE con el que te sientas cómodo – Visual Studio, Rider o incluso VS Code sirve. +- Acceso de escritura a una carpeta donde se guardará el archivo generado. + +No se requieren otras bibliotecas de terceros. + +--- + +## Paso 1: Instalar Aspose.Cells + +Para comenzar, agrega el paquete NuGet de Aspose.Cells a tu proyecto: + +```bash +dotnet add package Aspose.Cells +``` + +> **Consejo profesional:** Si estás en un servidor CI, almacena la clave de licencia en una variable de entorno y cárgala en tiempo de ejecución – esto evita que la marca de agua de “evaluación” se infiltre en tu salida. + +--- + +## Paso 2: Crear libro de Excel – Visión general + +La primera acción real es **crear un libro de Excel**. Este objeto representa todo el archivo en memoria y te brinda acceso a hojas de cálculo, estilos y propiedades personalizadas. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +¿Por qué instanciar un `Workbook` nuevo en lugar de cargar una plantilla? Un libro en blanco garantiza que no haya estilos ocultos ni propiedades personalizadas residuales, lo cual es especialmente importante cuando pretendes **escribir un archivo Excel binario** para sistemas posteriores que esperan una hoja limpia. + +--- + +## Paso 3: Establecer el nombre de la hoja (y por qué es importante) + +Las hojas de Excel por defecto se llaman “Sheet1”, “Sheet2”, etc. Dar a una hoja un nombre significativo facilita mucho la lectura del procesamiento posterior—como Power Query o macros VBA. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Si intentas asignar un nombre duplicado, Aspose.Cells lanzará una `ArgumentException`. Para estar seguro, puedes comprobar `Worksheets.Exists("Data")` antes de renombrar. + +--- + +## Paso 4: Añadir propiedades personalizadas + +Las propiedades personalizadas se almacenan en el XML interno del libro y viajan con el archivo sin importar el formato. Son perfectas para incrustar elementos como `ReportId` o `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **¿Por qué usar propiedades personalizadas?** +> • Son accesibles a través del panel “Archivo → Información → Propiedades” de Excel. +> • El código que consume el libro puede leerlas sin escanear el contenido de las celdas. +> • Sobreviven a conversiones de formato (XLSX ↔ XLSB) porque forman parte de los metadatos del archivo. + +También puedes almacenar fechas, booleanos o incluso blobs binarios, pero mantén la carga pequeña—Excel no es una base de datos. + +--- + +## Paso 5: Guardar como XLSB (Escribir archivo Excel binario) + +El formato XLSB almacena los datos en una estructura binaria, lo que hace que el archivo sea más pequeño y rápido de abrir. Más importante para este tutorial, **las propiedades personalizadas están integradas en el flujo binario**, garantizando que viajen con el archivo. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Resultado esperado + +Después de ejecutar el programa, encontrarás `WithCustomProps.xlsb` en tu escritorio. Ábrelo en Excel, ve a **Archivo → Información → Propiedades**, y verás `ReportId` y `GeneratedBy` listados bajo *Personalizado*. + +--- + +## Paso 6: Casos límite y preguntas frecuentes + +### ¿Qué pasa si la carpeta de destino es de solo lectura? + +Envuelve la llamada `Save` en un bloque `try/catch` y recurre a una ubicación escribible por el usuario, como `%TEMP%`. Esto evita que la aplicación se bloquee por errores de permisos. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### ¿Puedo **guardar como XLSX** y seguir manteniendo las propiedades personalizadas? + +Sí—simplemente cambia `SaveFormat.Xlsb` a `SaveFormat.Xlsx`. Las propiedades se almacenan en la misma parte XML, por lo que sobreviven al cambio de formato. Sin embargo, los archivos XLSX son más grandes porque son XML comprimido, mientras que XLSB ofrece mejor rendimiento para conjuntos de datos grandes. + +### ¿Cómo leo las propiedades personalizadas más tarde? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Este fragmento imprime cada propiedad personalizada, facilitando que los servicios posteriores verifiquen la procedencia del archivo. + +--- + +## Ejemplo completo + +A continuación se muestra el programa completo que puedes copiar y pegar en un nuevo proyecto de consola. No falta ninguna pieza—todo, desde las declaraciones `using` hasta el `Console.WriteLine` final, está incluido. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Ejecuta el programa, abre el archivo resultante y verifica las propiedades personalizadas. Ese es todo el proceso de **crear un libro de Excel**, **añadir propiedades personalizadas**, **establecer el nombre de la hoja** y **guardar como xlsb** en un flujo ordenado. + +--- + +## Conclusión + +Ahora sabes exactamente cómo **crear un libro de Excel**, darle a su hoja un claro **establecer nombre de hoja**, incrustar metadatos útiles con **añadir propiedades personalizadas**, y finalmente **guardar como XLSB** para producir un archivo Excel compacto y binario. Este flujo de trabajo es fiable, funciona en distintas versiones de .NET y escala bien tanto si generas un informe como mil. + +¿Qué sigue? Intenta añadir una tabla de datos a la hoja “Data”, experimenta con diferentes tipos de propiedades (fechas, booleanos), o cambia la salida a **guardar como xlsb** para conjuntos de datos masivos. También podrías explorar proteger el libro con una contraseña—Aspose.Cells lo hace con una sola línea. + +¡No dudes en dejar un comentario si encuentras algún problema, o compartir cómo has ampliado este patrón en tus propios proyectos! ¡Feliz codificación! + +--- + +![Captura de pantalla de crear libro de Excel](image.png){alt="Crear libro de Excel con propiedades personalizadas"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/excel-advanced-named-ranges/_index.md b/cells/spanish/net/excel-advanced-named-ranges/_index.md index cd21a932a3..54dc55c9f9 100644 --- a/cells/spanish/net/excel-advanced-named-ranges/_index.md +++ b/cells/spanish/net/excel-advanced-named-ranges/_index.md @@ -29,13 +29,15 @@ Considere esto: tiene un informe de ventas con diferentes regiones marcadas por A continuación, una de las operaciones más atractivas y prácticas: combinar celdas en un rango con nombre. ¿Quieres organizar mejor tus hojas de cálculo? Combinar celdas te ayuda a crear encabezados que abarcan varias columnas o filas, dándole a tu informe un aspecto limpio y profesional. Con Aspose.Cells para .NET, combinar celdas es facilísimo. -La ventaja de esta funcionalidad reside en su facilidad de uso. Puedes combinar celdas mediante programación, lo que significa que puedes automatizar el formato. Imagina crear informes semanales donde el encabezado se combine automáticamente cada vez. Con Aspose, esta tarea solo requiere unos pocos clics y líneas de código. ¿Te interesa saber cómo hacerlo? Consulta nuestra guía sobre... [Fusionar celdas en un rango con nombre](./merge-cells-in-named-range/). +La ventaja de esta funcionalidad reside en su facilidad de uso. Puedes combinar celdas mediante programación, lo que significa que puedes automatizar el formato. Imagina crear informes semanales donde el encabezado se combine automáticamente cada vez. Con Aspose, esta tarea solo requiere unos pocos clics y líneas de código. ¿Te interesa saber cómo hacerlo? Consulte nuestra guía sobre... [Fusionar celdas en un rango con nombre](./merge-cells-in-named-range/). ## Operaciones avanzadas con rangos con nombre en tutoriales de Excel ### [Identificar celdas en un rango con nombre en Excel](./identify-cells-in-named-range/) Identifique sin esfuerzo celdas en un rango con nombre en Excel usando Aspose.Cells para .NET con este completo tutorial paso a paso. ### [Combinar celdas en un rango con nombre en Excel](./merge-cells-in-named-range/) Aprenda a combinar celdas en un rango con nombre usando Aspose.Cells para .NET en este tutorial paso a paso. Descubra cómo formatear, aplicar estilo y automatizar informes de Excel. +### [Crear libro de Excel – Guía paso a paso para agregar tablas y reglas de nombres](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Aprenda a crear un libro de Excel, agregar tablas y definir reglas de nombres con Aspose.Cells para .NET en este tutorial paso a paso. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/spanish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..104eb7e995 --- /dev/null +++ b/cells/spanish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Crear un libro de Excel con una tabla, aprender las reglas de nombrado + de tablas en Excel, evitar el error de rango nombrado y establecer el nombre de + la tabla de Excel correctamente en C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: es +og_description: Crea un libro de Excel en C# y domina las reglas de nomenclatura de + tablas en Excel. Aprende cómo agregar una hoja de tabla, establecer el nombre de + la tabla de Excel y corregir errores de rangos nombrados. +og_title: Crear libro de Excel – Guía completa de tabla y nomenclatura C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Crear libro de Excel – Guía paso a paso para agregar tablas y reglas de nombres +url: /es/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear Libro de Excel – Guía Completa en C# sobre Tablas y Nombres + +¿Alguna vez necesitaste **crear un libro de Excel** programáticamente y te preguntaste por qué el nombre de tu tabla colisiona repentinamente con un rango con nombre? No estás solo. En muchos proyectos de automatización, en el momento en que intentas darle a una tabla un identificador amigable, Excel lanza un *named range error* que detiene todo el proceso. + +En este tutorial recorreremos un ejemplo completamente ejecutable que **crea un libro de Excel**, **agrega una tabla a una hoja de cálculo**, y explica las **excel table naming rules** que te evitan tropezar contigo mismo. Al final sabrás exactamente cómo **add table worksheet**, **set excel table name**, y manejar con elegancia los ocasionales choques de nombres. + +> **Consejo profesional:** La mayor parte de la confusión proviene del hecho de que Excel trata los nombres de tablas y los rangos con nombre a nivel de libro como un único espacio de nombres. Entender esa regla desde el principio te ahorra horas de depuración. + +## Lo que necesitarás + +- **Aspose.Cells for .NET** (o cualquier biblioteca que exponga las clases `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ o .NET Framework 4.8 – el código funciona en ambos. +- Una comprensión básica de la sintaxis de C# – no se requieren trucos avanzados. + +Si tienes eso, vamos a sumergirnos. + +![Captura de pantalla de un libro de Excel recién creado con una tabla llamada SalesData](create_excel_workbook_example.png "ejemplo de crear libro de Excel") + +## Paso 1: Crear Libro de Excel y Acceder a la Primera Hoja + +Lo primero que haces cuando **create excel workbook** es instanciar la clase `Workbook` y obtener una referencia a la hoja en la que trabajarás. En Aspose.Cells el libro de trabajo comienza con una hoja predeterminada llamada “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +¿Por qué es crucial este paso? Sin un objeto workbook no tienes nada a lo que adjuntar una tabla, y la referencia `Worksheet` te brinda un lienzo donde se llevará a cabo la operación **add table worksheet**. + +## Paso 2: Agregar Tabla (ListObject) que cubra un Rango Específico + +A continuación **add table worksheet**‑level data. El método `ListObjects.Add` espera una cadena de rango y un booleano que indica si la primera fila contiene encabezados. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Observa la llamada a `salesTable.Name = "SalesData"`. Aquí es donde entran en juego las **excel table naming rules**: el nombre debe ser único en todo el libro, no solo en la hoja. Además, no puede contener espacios ni caracteres especiales, y debe comenzar con una letra o guion bajo. + +## Paso 3: Intentar Crear un Rango con Nombre a Nivel de Libro con el Mismo Identificador + +Ahora provocamos deliberadamente el **named range error** para ver qué ocurre cuando se produce un conflicto de nombres. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Si descomentas la línea, Aspose.Cells lanza una `ArgumentException` indicando que el nombre ya existe. El mensaje de error se ve así: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Ese mensaje es el **named range error** del que advertimos antes. Te indica que las **excel table naming rules** tratan los nombres de tablas y los rangos con nombre como un único espacio de nombres. + +## Paso 4: Manejar el Conflicto de Nombres con Elegancia + +En código del mundo real querrás capturar esa excepción y ya sea renombrar la tabla o elegir un nombre de rango diferente. Aquí tienes una forma ordenada de hacerlo: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Al envolver la llamada en un `try/catch`, evitas un bloqueo severo y le das al usuario (o al código que llama) una explicación clara—exactamente el tipo de información de **excel table naming rules** que previene errores futuros. + +## Paso 5: Guardar el Libro y Verificar el Resultado + +Finalmente, persiste el archivo en disco y ábrelo en Excel para confirmar que la tabla y los rangos con nombre están presentes. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Cuando abras *SalesReport.xlsx* verás: + +- Una tabla que abarca **A1:C5** con el nombre **SalesData**. +- Si mantuviste el rango alternativo, un rango con nombre a nivel de libro **SalesData_Range** que apunta a **D1**. + +Sin fallos en tiempo de ejecución, y el conflicto de nombres está resuelto. + +## Comprendiendo a Fondo las Reglas de Nomenclatura de Tablas en Excel + +Desglosemos por qué existen las reglas: + +| Regla | Qué Significa | Ejemplo | +|------|----------------|---------| +| **Unique across workbook** | No two tables or named ranges can share the same identifier. | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | Names cannot begin with a number. | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | Use CamelCase or underscores. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | Practically always satisfied. | N/A | + +Tener estas reglas en cuenta mientras **set excel table name** elimina el temido *named range error*. + +## Variaciones Comunes y Casos Límite + +1. **Adding multiple tables** – Cada tabla debe tener su propio nombre único. +2. **Renaming an existing table** – Usa `salesTable.Name = "NewName"` antes de crear cualquier rango con nombre conflictivo. +3. **Using dynamic ranges** – Si necesitas un rango que se expanda, usa una referencia estructurada como `=SalesData[Amount]` en lugar de una dirección estática. +4. **Cross‑sheet named ranges** – Sigue siendo parte del mismo espacio de nombres, por lo que una tabla en Sheet1 bloquea un rango con el mismo nombre en Sheet2. + +## Consejos Profesionales para una Automatización Fluida de Excel + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: Añade un GUID o un contador incremental (`SalesData_{Guid.NewGuid()}`) cuando no estés seguro. +- **Use `ListObject.ShowHeaders = true`** para que tus tablas se autodescriban. +- **Validate after saving**: Abre el archivo con una biblioteca ligera (p.ej., EPPlus) para asegurar que la tabla se creó correctamente. + +## Recapitulación: Lo que Cubrimos + +- Cómo **create excel workbook** desde cero usando Aspose.Cells. +- Las exactas **excel table naming rules** que rigen los identificadores de tablas y rangos con nombre. +- Por qué aparece un **named range error** cuando reutilizas un nombre. +- La forma correcta de **add table worksheet** y **set excel table name** sin colisiones. +- Un patrón robusto para manejar los conflictos de nombres con elegancia. + +## ¿Qué Sigue? + +Ahora que dominas los conceptos básicos, considera explorar: + +- **Dynamic table growth** usando `ListObject.Resize`. +- **Applying styles** a las tablas (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exporting to CSV** mientras preservas las estructuras de tabla. +- **Integrating with Office Open XML** para un control aún más preciso sobre los internos del libro. + +Siéntete libre de experimentar—cambia el rango, agrega más tablas, o juega con diferentes esquemas de nombres. Cuanto más juegues, más profunda será tu comprensión de **excel table naming rules**. + +--- + +*¡Feliz codificación, y que tus libros nunca vuelvan a chocar!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/excel-custom-number-date-formatting/_index.md b/cells/spanish/net/excel-custom-number-date-formatting/_index.md index 2b6b977bc0..cac9d72aad 100644 --- a/cells/spanish/net/excel-custom-number-date-formatting/_index.md +++ b/cells/spanish/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Este tutorial te capacitará para importar tus conjuntos de datos manteniendo la Aprenda a comparar valores de celdas de Excel con formatos numéricos personalizados usando Aspose.Cells para .NET con este tutorial paso a paso. ### [Especificar campos de fórmula al importar datos a una hoja de Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Aprenda a importar datos a hojas de Excel con campos de fórmula específicos usando Aspose.Cells para .NET en este tutorial detallado. +### [Formato de número personalizado en Excel con C# – Guía completa](./custom-number-format-excel-in-c-complete-guide/) +Aprenda a aplicar formatos numéricos personalizados en Excel usando C# y Aspose.Cells con esta guía completa paso a paso. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/spanish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..44568c5a99 --- /dev/null +++ b/cells/spanish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-03-22 +description: Tutorial de formato de número personalizado en Excel que muestra cómo + importar una tabla de datos a Excel, establecer el color de fondo de la columna, + formatear la columna como moneda y guardar el libro de trabajo como xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: es +og_description: Tutorial de Excel sobre formato de número personalizado que te guía + a través de la importación de una DataTable, la configuración del color de fondo + de una columna, el formato de una columna como moneda y el guardado del libro de + trabajo como xlsx. +og_title: Formato de número personalizado en Excel con C# – Guía paso a paso +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Formato de número personalizado en Excel con C# – Guía completa +url: /es/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Formato de número personalizado en Excel – Tutorial Full‑Stack C# + +¿Alguna vez te has preguntado cómo aplicar un estilo de **custom number format excel** directamente desde C#? Tal vez hayas intentado volcar un DataTable en una hoja de cálculo solo para ver números simples, sin colores y sin formato de moneda. Ese es un punto de dolor común, especialmente cuando necesitas un informe pulido para los interesados. + +En esta guía resolveremos ese problema juntos: aprenderás a **import datatable to excel**, **set column background color**, **format column as currency**, y finalmente **save workbook as xlsx** con un formato de número personalizado que hará que tus cifras resalten. Sin referencias vagas, solo una solución completa y ejecutable que puedes copiar‑pegar en tu proyecto. + +--- + +## Lo que construirás + +Al final de este tutorial tendrás una aplicación de consola C# autosuficiente que: + +1. Recupera un `DataTable` (puedes reemplazar el stub con tu propia consulta). +2. Crea un nuevo libro de Excel usando Aspose.Cells (o cualquier biblioteca compatible). +3. Aplica una fuente azul y en negrita a la primera columna, un fondo amarillo claro a la segunda, y un formato de moneda (`$#,##0.00`) a la tercera. +4. Guarda el archivo como `DataTableWithStyleArray.xlsx` en la carpeta que elijas. + +Verás exactamente cómo cada línea contribuye al archivo Excel final, y discutiremos por qué esas decisiones importan para el mantenimiento y el rendimiento. + +--- + +## Requisitos previos + +- .NET 6.0 o posterior (el código también funciona con .NET Framework 4.7+). +- Aspose.Cells para .NET (versión de prueba gratuita o con licencia). Instálalo vía NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Familiaridad básica con `DataTable` y aplicaciones de consola C#. + +--- + +## Paso 1: Recuperar los datos de origen como DataTable + +Primero, necesitamos algunos datos para exportar. En un escenario real probablemente llames a un repositorio o ejecutes una consulta SQL. Para ilustrar crearemos una tabla simple en memoria. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Por qué es importante:** Usar un `DataTable` te brinda una fuente tabular, consciente del esquema, que se mapea limpiamente a filas y columnas de Excel. Además, te permite reutilizar la misma lógica de exportación para cualquier conjunto de datos sin reescribir código. + +--- + +## Paso 2: Crear un nuevo Workbook y obtener la primera hoja + +Ahora iniciamos un libro de Excel. La clase `Workbook` representa todo el archivo; su `Worksheets[0]` es la hoja predeterminada donde depositaremos nuestros datos. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Consejo profesional:** Si necesitas varias hojas, simplemente llama a `workbook.Worksheets.Add("SheetName")` y repite los pasos de estilo para cada una. + +--- + +## Paso 3: Definir estilos de columna – Fuente, fondo y formato de número + +El estilo en Aspose.Cells se maneja mediante objetos `Style`. Construiremos un arreglo donde cada elemento corresponde a una columna del DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **¿Por qué un arreglo de estilos?** Pasar un arreglo a `ImportDataTable` te permite aplicar un estilo distinto a cada columna en una sola llamada, lo que es conciso y eficiente. Además garantiza que el formato permanezca sincronizado con el orden de los datos. + +--- + +## Paso 4: Importar el DataTable aplicando los estilos + +Aquí está el corazón de la operación: alimentamos el `DataTable` a la hoja, indicamos a Aspose que incluya la fila de encabezado y entregamos nuestro arreglo `columnStyles`. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **¿Qué ocurre bajo el capó?** Aspose recorre cada columna, escribe el encabezado y luego escribe cada valor de fila. Mientras lo hace, aplica el `Style` correspondiente del arreglo, de modo que terminas con un encabezado azul para “Product”, una columna “Quantity” con fondo amarillo y una columna “Revenue” formateada como moneda. + +--- + +## Paso 5: Guardar el Workbook como archivo XLSX + +Finalmente, persistimos el libro en disco. El método `Save` elige automáticamente el formato XLSX según la extensión del archivo. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Consejo:** Si necesitas transmitir el archivo (p. ej., para una API web), usa `workbook.Save(stream, SaveFormat.Xlsx)` en lugar de una ruta de archivo. + +--- + +## Ejemplo completo funcionando + +A continuación tienes el programa completo que puedes pegar en un nuevo proyecto de consola. Compila y se ejecuta tal cual, generando un archivo Excel con estilo. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Resultado esperado + +Al abrir `DataTableWithStyleArray.xlsx` verás: + +| **Producto** (azul, negrita) | **Cantidad** (amarillo claro) | **Ingresos** (moneda) | +|------------------------------|-------------------------------|-----------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +El **custom number format excel** que especificaste (`$#,##0.00`) asegura que cada celda de ingresos muestre el signo de dólar, separador de miles y dos decimales, exactamente lo que los equipos financieros esperan. + +--- + +## Preguntas frecuentes y casos límite + +### ¿Puedo usar esto con otra biblioteca de Excel? + +Absolutamente. El concepto—crear un estilo por columna y aplicarlo durante la importación—se traduce a EPPlus, ClosedXML o NPOI. Las llamadas a la API difieren, pero el patrón se mantiene. + +### ¿Qué pasa si mi DataTable tiene más columnas que estilos? + +Aspose aplicará el estilo predeterminado a cualquier columna que no tenga una entrada correspondiente en el arreglo `columnStyles`. Para evitar sorpresas, dimensiona el arreglo a `dataTable.Columns.Count` o genera estilos dinámicamente en un bucle. + +### ¿Cómo establezco un formato de número personalizado para fechas? + +Simplemente asigna `style.Custom = "dd‑mm‑yyyy"` (o cualquier cadena de formato válida de Excel). El mismo enfoque basado en arreglos funciona para fechas, porcentajes o notación científica. + +### ¿Hay forma de auto‑ajustar el ancho de columnas después de la importación? + +Sí—llama a `worksheet.AutoFitColumns();` después de la importación. Ejecuta un cálculo rápido del ancho basado en el contenido de las celdas. + +### ¿Qué pasa con conjuntos de datos muy grandes (¡100 k+ filas!)? + +`ImportDataTable` está optimizado para operaciones masivas, pero podrías alcanzar límites de memoria. En ese caso, considera transmitir filas manualmente con `Cells[i, j].PutValue(...)` y reutilizar un solo objeto `Style` para reducir la sobrecarga. + +--- + +## Consejos profesionales y errores comunes + +- **Evita codificar rutas** de forma rígida en código de producción; usa `Environment.GetFolderPath` o configuraciones. +- **Descarta el workbook** si estás en un servicio de larga duración—envuélvelo en un bloque `using` para liberar recursos nativos. +- **Cuidado con los separadores específicos de cultura**. El formato personalizado `$#,##0.00` fuerza un punto como separador decimal sin importar la configuración regional del SO, lo cual suele ser lo que deseas para informes financieros. +- **Recuerda referenciar System.Drawing** (o `System.Drawing.Common` en .NET Core) para las estructuras de color usadas en el estilo. +- **Prueba la salida en diferentes versiones de Excel**; versiones antiguas pueden interpretar algunos formatos personalizados de forma ligeramente distinta. + +--- + +## Conclusión + +Hemos cubierto todo lo que necesitas para **custom number format excel** archivos desde C#: obtener datos de un `DataTable`, **import datatable to excel**, aplicar un **set column background color**, usar **format column as currency**, y finalmente **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/excel-workbook/_index.md b/cells/spanish/net/excel-workbook/_index.md index f88893e3ef..a509256724 100644 --- a/cells/spanish/net/excel-workbook/_index.md +++ b/cells/spanish/net/excel-workbook/_index.md @@ -75,6 +75,7 @@ En resumen, Aspose.Cells para .NET abre un mundo de posibilidades para quienes b | [Ajustar el nivel de compresión](./adjust-compression-level/) Aprenda a ajustar los niveles de compresión de archivos de Excel con Aspose.Cells para .NET. Optimice el tamaño de sus archivos eficientemente con esta guía paso a paso. | [Permitir apóstrofe inicial](./allow-leading-apostrophe/) Gestione fácilmente los apóstrofes iniciales en Excel con Aspose.Cells para .NET. Este completo tutorial le guiará paso a paso en el proceso. | [Crear un libro de trabajo compartido](./create-shared-workbook/) Aprenda a crear un libro compartido con Aspose.Cells para .NET con esta sencilla guía paso a paso. Ideal para mejorar la colaboración en equipo. +| [Crear nuevo libro de trabajo C# – Guía paso a paso con fórmulas derramadas](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) Aprenda a crear un nuevo libro de trabajo en C# con Aspose.Cells, incluyendo soporte para fórmulas derramadas paso a paso. | [Detectar tipos de enlaces](./detect-link-types/) Aprenda a detectar tipos de hipervínculos en Excel con Aspose.Cells para .NET. Incluye pasos sencillos y ejemplos de código. | [Extraer archivo Mol incrustado](./extract-embedded-mol-file/) | Aprenda a extraer fácilmente archivos MOL incrustados de un libro de Excel usando Aspose.Cells para .NET. | | [Filtrar nombres definidos al cargar el libro de trabajo](./filter-defined-names-while-loading-workbook/) Aprenda a filtrar nombres definidos al cargar un libro con Aspose.Cells para .NET en esta guía completa. diff --git a/cells/spanish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/spanish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..f01d6e673d --- /dev/null +++ b/cells/spanish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Crea un nuevo libro de trabajo en C# rápidamente usando Aspose.Cells. + Aprende cómo añadir una fórmula SEQUENCE de desbordamiento, recalcular automáticamente + y manejar celdas dependientes. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: es +og_description: Crear un nuevo libro de trabajo en C# con Aspose.Cells. Este tutorial + muestra cómo agregar una fórmula SEQUENCE de desbordamiento, recalcular el libro + de trabajo y gestionar celdas dependientes. +og_title: Crear un nuevo libro de trabajo C# – Guía completa +tags: +- C# +- Excel automation +- Aspose.Cells +title: Crear un nuevo libro de trabajo C# – Guía paso a paso con fórmulas derramadas +url: /es/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear nuevo libro de trabajo C# – Guía completa de programación + +¿Alguna vez te has preguntado cómo **crear nuevo libro de trabajo C#** sin luchar con COM interop? No estás solo. En muchos proyectos necesitas generar un archivo de Excel al vuelo, insertar una fórmula de matriz dinámica y que todo se actualice automáticamente. + +En esta guía te mostraremos exactamente eso—usando la moderna biblioteca **Aspose.Cells**, añadiendo una fórmula `SEQUENCE` derramada, ajustando una celda dependiente y forzando una recalculación para que los resultados permanezcan frescos. Al final tendrás un ejemplo autocontenido y ejecutable que puedes copiar‑pegar en cualquier aplicación .NET. + +## Lo que aprenderás + +- Cómo **crear nuevo libro de trabajo C#** programáticamente. +- La mecánica detrás de una **fórmula de matriz derramada** y por qué es útil. +- Uso de la **función Excel SEQUENCE** desde código C#. +- Activar el **cálculo del libro de trabajo C#** para que las celdas dependientes se actualicen al instante. +- Problemas comunes (p. ej., olvidar llamar a `Calculate`) y soluciones rápidas. + +No se requieren documentos externos—todo lo que necesitas está aquí. + +## Requisitos previos + +- .NET 6+ (o .NET Framework 4.7.2+) instalado. +- Visual Studio 2022 o cualquier IDE que prefieras. +- El paquete NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Familiaridad básica con la sintaxis de C# (si eres nuevo, el código está muy comentado). + +--- + +## Paso 1: Crear un nuevo libro de trabajo en C# + +Este encabezado H2 contiene la **palabra clave principal** exactamente donde la lista de verificación SEO lo requiere. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Por qué esto importa:** +> Instanciar `Workbook` te brinda una representación en memoria de un archivo de Excel. Sin COM, sin interop, solo objetos .NET puros que puedes manipular de forma segura. + +--- + +## Paso 2: Añadir una fórmula SEQUENCE derramada + +Una **fórmula de matriz derramada** se expande automáticamente a celdas adyacentes, lo que es perfecto para generar listas dinámicas. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Cómo funciona:** +> La función `SEQUENCE` (introducida en Excel 365) crea una matriz vertical de números. Como estamos usando una fórmula *derramada*, Excel (y Aspose.Cells) rellenará automáticamente el rango bajo `A1` sin necesidad de escribir un bucle. + +--- + +## Paso 3: Cambiar una celda dependiente para ver la actualización automática + +Modifiquemos `B1` para observar cómo el libro de trabajo recalcula la matriz derramada. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Consejo:** +> Si más adelante haces referencia al rango derramado en otras fórmulas, cambiar cualquier celda dentro del derrame hará que esas fórmulas se actualicen después de llamar a `Calculate`. + +--- + +## Paso 4: Forzar el cálculo del libro de trabajo C# + +Sin una llamada explícita, Aspose.Cells no volverá a calcular automáticamente las fórmulas. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Qué hace `Calculate`:** +> Recorre cada celda con fórmula, la evalúa y escribe los resultados de vuelta en la hoja. Este es el núcleo del **cálculo del libro de trabajo C#** y garantiza que tu matriz derramada permanezca sincronizada con cualquier dato dependiente. + +### Salida esperada + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Abre `SpilledSequenceDemo.xlsx` y verás los números 1‑5 llenando `A1:A5`, mientras que `B1` contiene el valor `10`. Cambia cualquier celda dentro del derrame, ejecuta `Calculate` nuevamente y los nuevos valores aparecerán al instante. + +--- + +## Entendiendo la función Excel SEQUENCE en C# + +Si tienes curiosidad por saber por qué `SEQUENCE` se prefiere sobre un bucle manual, considera estos puntos: + +1. **Rendimiento** – El motor evalúa toda la matriz en una sola pasada. +2. **Legibilidad** – Una línea de código reemplaza docenas de llamadas a `PutValue`. +3. **Tamaño dinámico** – Puedes reemplazar el `5` estático con una referencia a otra celda, haciendo que la longitud sea ajustable en tiempo de ejecución. + +Este es un ejemplo clásico de una **fórmula de matriz derramada** que simplifica tareas de generación de datos. + +--- + +## Problemas comunes y consejos profesionales + +| Problema | Solución | +|----------|----------| +| Olvidar `workbook.Calculate()` | Llámalo siempre después de modificar fórmulas; de lo contrario la hoja mostrará valores en caché antiguos. | +| Usar una versión antigua de Aspose.Cells | Actualiza al último paquete NuGet para asegurar el soporte de funciones de matriz dinámica como `SEQUENCE`. | +| Guardar antes del cálculo | Guarda **después** de `Calculate` para que el archivo contenga los resultados más recientes. | +| Suponer que el derrame sobrescribirá datos existentes | Aspose.Cells respeta los datos existentes fuera del rango del derrame; limpia el área primero si necesitas una hoja limpia. | + +**Consejo profesional:** Si necesitas que la longitud de la secuencia sea configurable, almacena el recuento en una celda (p. ej., `C1`) y usa `=SEQUENCE(C1)`—el motor de cálculo leerá el valor en tiempo de ejecución. + +--- + +## Extender el ejemplo + +Ahora que sabes cómo **crear nuevo libro de trabajo C#**, puedes: + +- Agregar fórmulas más complejas que referencien el rango derramado (`=SUM(A1#)` donde `#` indica el derrame). +- Exportar a PDF con `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Insertar gráficos que se ajusten automáticamente al tamaño de la matriz dinámica. + +Todo esto se basa en la misma base de **cálculo del libro de trabajo C#** que acabamos de cubrir. + +--- + +## Conclusión + +Hemos recorrido todo el proceso de **crear nuevo libro de trabajo C#**, desde instanciar el objeto `Workbook` hasta insertar una fórmula `SEQUENCE` derramada, modificar una celda dependiente y finalmente forzar una recalculación para que todo permanezca actualizado. El fragmento de código completo arriba está listo para ejecutarse—simplemente colócalo en una aplicación de consola, agrega el paquete NuGet Aspose.Cells y tendrás un archivo de Excel funcional en segundos. + +¿Listo para el siguiente paso? Prueba cambiar el `5` estático por una referencia a una celda, experimenta con otras funciones de matriz dinámica como `FILTER` o `UNIQUE`, y explora cómo **Aspose.Cells C#** puede impulsar motores de informes completos. ¡Feliz codificación! + +--- + +*Image placeholder:* + +![Captura de pantalla que muestra un libro de trabajo recién creado con fórmula SEQUENCE derramada – ejemplo de crear nuevo libro de trabajo C#](/images/create-new-workbook-csharp.png) + +--- + +*Si encontraste útil este tutorial, considera dar una estrella al repositorio, compartirlo con compañeros, o dejar un comentario abajo. ¡Tu feedback alimenta futuras guías!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/formulas-functions/_index.md b/cells/spanish/net/formulas-functions/_index.md index 7c9dae98ab..f6e645b7e8 100644 --- a/cells/spanish/net/formulas-functions/_index.md +++ b/cells/spanish/net/formulas-functions/_index.md @@ -102,6 +102,9 @@ Aprenda a especificar el idioma de sus archivos de Excel con Aspose.Cells .NET. ### [Actualizar fórmulas de Excel Power Query con Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Aprenda a actualizar mediante programación fórmulas de Power Query en libros de Excel con Aspose.Cells para .NET. Gestión de fuentes de datos maestros para informes dinámicos. +### [Cómo usar Lambda en C# con fórmulas de Excel – Guía completa](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) +Aprenda a aplicar expresiones Lambda en C# para crear y calcular fórmulas de Excel mediante Aspose.Cells, mejorando la flexibilidad y el rendimiento. + ## Comprensión de los tipos de fórmulas de Excel Las fórmulas de Excel vienen en varias formas, cada una con características únicas que Aspose.Cells puede administrar: diff --git a/cells/spanish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/spanish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..735665fc8e --- /dev/null +++ b/cells/spanish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Cómo usar lambda en C# para trabajar con fórmulas de Excel. Aprende a + escribir una fórmula en una celda, convertir un rango a una matriz, mostrar la matriz + en la consola y calcular la cotangente en Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: es +og_description: Cómo usar lambda en C# para manipular fórmulas de Excel, convertir + un rango a matriz, escribir una fórmula en una celda, mostrar la matriz en la consola + y calcular la cotangente en Excel. +og_title: Cómo usar Lambda en C# con fórmulas de Excel – Paso a paso +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Cómo usar Lambda en C# con fórmulas de Excel – Guía completa +url: /es/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo usar Lambda en C# con fórmulas de Excel – Guía completa + +¿Alguna vez te has preguntado **cómo usar lambda** al automatizar Excel desde C#? No estás solo. Muchos desarrolladores se topan con un obstáculo cuando necesitan combinar el poder de las nuevas funciones de matrices dinámicas de Excel con la capacidad `LAMBDA` de C#. ¿La buena noticia? En realidad es bastante sencillo una vez que ves cómo encajan las piezas. + +En este tutorial recorreremos **escribir una fórmula en una celda**, **convertir un rango a un array**, **mostrar ese array en la consola**, e incluso **calcular la cotangente en Excel**—todo mientras te mostramos **cómo usar lambda** dentro de una llamada a `REDUCE`. Al final tendrás un fragmento ejecutable que podrás insertar en cualquier proyecto .NET que haga referencia a Aspose.Cells (o una biblioteca similar). + +--- + +## Qué aprenderás + +- Cómo **escribir fórmula en celda** usando C#. +- Cómo **convertir rango a array** con la función `EXPAND`. +- Cómo **mostrar array en consola** después del cálculo. +- Cómo **calcular cotangente en Excel** usando `COT` y `COTH`. +- La sintaxis exacta para **cómo usar lambda** dentro de la función `REDUCE` de Excel desde C#. + +> **Prerequisite:** Necesitas una versión reciente de .NET (Core 6+ o .NET Framework 4.7+) y la biblioteca Aspose.Cells para .NET instalada vía NuGet. + +--- + +## Paso 1: Configurar el libro y escribir la fórmula en la celda + +Lo primero que hacemos es crear un libro nuevo y obtener la primera hoja. Luego **escribimos una fórmula en una celda** – en este caso `A1` contendrá el resultado de una llamada a `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Por qué es importante:** Escribir la fórmula directamente desde el código te permite generar hojas de cálculo complejas al vuelo sin abrir Excel. Además prepara el escenario para el siguiente paso donde **convertimos rango a array**. + +--- + +## Paso 2: Convertir rango a array con EXPAND + +`EXPAND` es la forma que tiene Excel de transformar un rango pequeño en una matriz mayor. Al colocar la fórmula en `A1`, Excel derramará un bloque de 4 × 5 a partir de esa celda. Desde C#, no tenemos que copiar valores manualmente – la biblioteca hará el trabajo pesado cuando llamemos a `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Cómo usar lambda:** Aún no, pero espera. Primero necesitamos los datos en la hoja, luego los reduciremos con una lambda. + +--- + +## Paso 3: Usar LAMBDA dentro de REDUCE – El núcleo de “Cómo usar lambda” + +Excel 365 introdujo `REDUCE`, que acepta un **valor inicial**, un **rango**, y un **LAMBDA** que indica cómo combinar cada elemento. Desde C# simplemente asignamos la cadena de fórmula; la lambda vive dentro de la fórmula de Excel, no en el código C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explicación:** +- `0` es el acumulador inicial (`acc`). +- `A1:D4` es el rango que queremos procesar (las primeras cuatro columnas del derrame). +- `LAMBDA(acc, x, acc + x)` le dice a Excel que sume cada celda (`x`) al acumulador. + +Eso es la esencia de **cómo usar lambda** para agregación en el contexto de una hoja de cálculo. + +--- + +## Paso 4: Calcular cotangente en Excel – De grados a hiperbólico + +Si necesitas resultados trigonométricos, las funciones `COT` y `COTH` de Excel son muy útiles. Las colocaremos en `G1` y `G2` respectivamente. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Por qué es útil:** Saber **calcular cotangente en Excel** puede ahorrarte escribir código matemático personalizado, sobre todo cuando el libro será compartido con usuarios que no son desarrolladores. + +--- + +## Paso 5: Forzar el cálculo y obtener el array expandido + +Ahora indicamos al libro que evalúe todas las fórmulas y luego extraemos la matriz derramada de `A1`. Aquí es donde **mostramos el array en la consola**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Lo que verás:** +- Una matriz 4 × 5 bien formateada impresa línea por línea. +- La suma calculada por la lambda de `REDUCE`. +- Los dos valores de cotangente. + +Eso completa el flujo desde **escribir fórmula en celda** hasta **mostrar array en consola**. + +--- + +## Ejemplo completo (listo para copiar y pegar) + +A continuación tienes el programa completo que puedes colocar en una aplicación de consola. Recuerda agregar primero el paquete NuGet `Aspose.Cells` (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Salida esperada en la consola (los valores variarán según el contenido predeterminado de B1:C2, que es 0 por defecto):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Si lo deseas, rellena `B1:C2` con tus propios números antes de ejecutar – la matriz reflejará esos valores. + +--- + +## Consejos profesionales y errores comunes + +- **Consejo:** Si necesitas que el rango derramado empiece en otro lugar, simplemente cambia la celda objetivo (`A1`). La función `EXPAND` respeta el ancla. +- **Cuidado con:** Las celdas vacías en el rango de origen se convierten en `0` en la matriz derramada, lo que puede afectar la suma de `REDUCE`. +- **Caso límite:** Cuando el libro contiene fórmulas que dependen de funciones volátiles (p. ej., `NOW()`), llama a `workbook.Calculate()` después de establecer todas las fórmulas para asegurar que todo esté actualizado. +- **Nota de rendimiento:** Para derrames muy grandes, considera limitar el tamaño en la llamada a `EXPAND`; de lo contrario podrías asignar más memoria de la necesaria. +- **Compatibilidad:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/number-and-display-formats-in-excel/_index.md b/cells/spanish/net/number-and-display-formats-in-excel/_index.md index ae79662831..a2471531a0 100644 --- a/cells/spanish/net/number-and-display-formats-in-excel/_index.md +++ b/cells/spanish/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Si busca darle un toque personal a sus hojas de Excel, personalizar los formatos Automatice el formato de números en Excel con Aspose.Cells para .NET. Aprenda a aplicar formatos de fecha, porcentaje y moneda mediante programación. ### [Personalización de formatos de visualización con números definidos por el usuario](./customizing-display-formats-with-user-defined-numbers/) Aprenda a personalizar los formatos de visualización con Aspose.Cells para .NET. Formatee fechas, porcentajes y monedas con esta guía paso a paso. +### [Cómo exportar Excel con formato – preservar el formato numérico](./how-to-export-excel-with-formatting-preserve-number-format/) +Aprenda a exportar archivos Excel manteniendo el formato de número original usando Aspose.Cells para .NET. +### [Formato de fecha y hora a ISO en C# – Guía completa](./format-datetime-to-iso-in-c-complete-guide/) +Aprenda a convertir fechas y horas a formato ISO en C# usando Aspose.Cells para .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/spanish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..30a53e9a8c --- /dev/null +++ b/cells/spanish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Aprende cómo formatear la fecha y hora a ISO al extraer la fecha de Excel + y mostrar la fecha ISO usando Aspose.Cells en C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: es +og_description: Formatear fecha y hora a ISO hecho fácil. Esta guía muestra cómo extraer + la fecha de Excel y mostrar la fecha ISO con Aspose.Cells. +og_title: formatear datetime a iso en C# – tutorial paso a paso +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formatear datetime a ISO en C# – Guía completa +url: /es/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# formatear datetime a iso en C# – Guía completa + +¿Alguna vez necesitaste **formatear datetime a iso** pero la fuente está dentro de un libro de Excel? Tal vez la celda contiene una era japonesa como “令和3年5月1日” y estás rascándote la cabeza preguntándote cómo convertir eso en una cadena limpia `2021‑05‑01`. No estás solo. En este tutorial **extraeremos la fecha de excel**, analizaremos la era japonesa y luego **mostraremos la fecha iso** en la consola, todo con unas pocas líneas de C# y Aspose.Cells. + +Recorreremos todo lo que necesitas: el paquete NuGet requerido, el código exacto que puedes copiar‑pegar, por qué cada línea es importante y algunos consejos para casos límite. Al final tendrás un fragmento reutilizable que formatea datetime a iso sin importar lo peculiar que sea el valor original de Excel. + +## Lo que necesitarás + +- .NET 6.0 o posterior (el código también compila en .NET Framework 4.6+) +- Visual Studio 2022 (o cualquier editor que prefieras) +- **Aspose.Cells for .NET** paquete NuGet – `Install-Package Aspose.Cells` +- Un archivo Excel (o un libro nuevo) que contiene una fecha en formato de era japonesa + +Eso es todo. Sin bibliotecas extra, sin interop COM, solo un método único y bien documentado. + +## Paso 1: Crear un libro y escribir una fecha de era japonesa + +Primero, necesitamos un libro con el que trabajar. Si ya tienes un archivo Excel, puedes cargarlo con `new Workbook("path")`. Para este ejemplo crearemos un nuevo libro en memoria y colocaremos una cadena de era japonesa en la celda **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Por qué hacemos esto:** Aspose.Cells trata los valores de celda como cadenas por defecto. Al insertar el texto de era sin procesar simulamos un escenario del mundo real donde un cliente japonés ha introducido fechas en su calendario nativo. + +## Paso 2: Habilitar el análisis de era japonesa y extraer la fecha + +Aspose.Cells puede traducir automáticamente cadenas de era japonesa a objetos .NET `DateTime`, siempre que se lo indiques. La bandera `DateTimeParseOptions.EnableJapaneseEra` realiza el trabajo pesado. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Consejo profesional:** Si olvidas la opción `EnableJapaneseEra`, la biblioteca devolverá la cadena original y tu conversión posterior fallará. Siempre verifica `parsed.Type` si manejas contenido mixto. + +## Paso 3: Convertir el DateTime analizado a ISO 8601 + +Ahora que tenemos un `DateTime` correcto, convertirlo a una cadena con formato ISO es pan comido. El patrón `"yyyy-MM-dd"` cumple con la parte de fecha de ISO 8601, que es lo que la mayoría de las API esperan. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Ejecutar el programa imprime: + +``` +ISO date: 2021-05-01 +``` + +Ese es el **mostrar fecha iso** que buscabas. + +## Ejemplo completo y ejecutable + +A continuación está el bloque de código completo que puedes copiar directamente en un proyecto de consola. Sin dependencias ocultas, sin configuración extra. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Salida esperada:** `ISO date: 2021-05-01` + +## Desglose paso a paso (Por qué cada pieza es importante) + +| Paso | Qué ocurre | Por qué es importante | +|------|------------|-----------------------| +| **Crear libro** | Inicializa un contenedor Excel en memoria. | Te brinda un entorno de pruebas sin tocar el sistema de archivos. | +| **PutValue** | Almacena la cadena cruda de era japonesa en **A1**. | Imita la entrada de datos real; asegura que el analizador vea el texto exacto. | +| **GetValue con `EnableJapaneseEra`** | Convierte la cadena de era a un .NET `DateTime`. | Gestiona la conversión del calendario automáticamente—no se necesitan tablas de búsqueda manuales. | +| `ToString("yyyy-MM-dd")` | Formatea el `DateTime` a ISO 8601. | Garantiza una cadena de fecha invariante a la cultura, ordenable y aceptada por APIs REST, bases de datos, etc. | +| **Console.WriteLine** | Muestra la fecha ISO final. | Confirma que todo el proceso funciona de extremo a extremo. | + +## Manejo de variaciones comunes + +### 1. Diferentes ubicaciones de celda + +Si tu fecha está en **B2** o en un rango con nombre, simplemente reemplaza `"A1"` con la dirección adecuada: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Múltiples fechas en una columna + +Cuando necesitas **extraer la fecha de excel** para muchas filas, recorre el rango usado: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Alternativa para fechas sin era + +Si una celda ya contiene una cadena de fecha estándar, el analizador aún funciona, pero podrías querer una red de seguridad: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +La bandera `TryParse` evita excepciones y devuelve el valor original si la conversión falla. + +### 4. Componente de tiempo + +Si también necesitas la parte de tiempo, usa `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Eso produce una marca de tiempo ISO 8601 completa (`2021-05-01T00:00:00`). + +## Ayuda visual + +![ejemplo de formatear datetime a iso](image.png "Un ejemplo de formatear datetime a iso en C#") + +*Texto alternativo:* *ejemplo de formatear datetime a iso mostrando salida de consola* + +## Preguntas frecuentes + +- **¿Puedo usar esto con archivos .xls?** + Sí. Aspose.Cells soporta `.xls`, `.xlsx`, `.csv` y muchos otros formatos listos para usar. + +- **¿Qué pasa si el libro está protegido con contraseña?** + Cárgalo con `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **¿El formato ISO depende de la configuración regional?** + No. El patrón `"yyyy-MM-dd"` es invariable a la cultura, garantizando la misma cadena en cualquier máquina. + +- **¿Funciona esto en .NET Core?** + Absolutamente—Aspose.Cells es compatible con .NET Standard 2.0. + +## Conclusión + +Hemos cubierto cómo **formatear datetime a iso** mediante **extraer la fecha de excel**, analizando cadenas de era japonesa y finalmente **mostrando la fecha iso** en la consola. Los pasos clave—crear un libro, escribir o cargar el texto de era, habilitar el análisis de era japonesa y formatear con `ToString("yyyy-MM-dd")`—son todo lo que necesitas para la mayoría de los escenarios. + +A continuación, podrías querer: + +- Escribir las fechas ISO de nuevo en otra columna para procesamiento posterior. +- Exportar el libro transformado a CSV para importación masiva. +- Combinar esta lógica con una API web que acepte cargas de Excel y devuelva fechas ISO codificadas en JSON. + +Siéntete libre de experimentar con diferentes formatos de fecha, zonas horarias o incluso calendarios personalizados. La flexibilidad de Aspose.Cells significa que rara vez encontrarás un obstáculo. + +¡Feliz codificación, y que todas tus fechas sean perfectamente compatibles con ISO! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/spanish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..53e87bdc35 --- /dev/null +++ b/cells/spanish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Cómo exportar Excel con formato y preservar el formato numérico. Aprende + a convertir un rango de Excel, obtener el resultado de una fórmula y exportar Excel + con formato usando Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: es +og_description: Cómo exportar Excel con formato y conservar el formato numérico. Guía + paso a paso para convertir un rango de Excel, obtener el resultado de la fórmula + y exportar Excel con formato en C#. +og_title: Cómo exportar Excel con formato – Conservar el formato numérico +tags: +- C# +- Aspose.Cells +- Excel automation +title: Cómo exportar Excel con formato – Conservar el formato numérico +url: /es/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo exportar Excel con formato – conservar el formato numérico + +¿Alguna vez te has preguntado **cómo exportar Excel** manteniendo el aspecto de cada celda exactamente como lo ves en el libro? Tal vez necesites enviar un informe a un cliente, alimentar un control de cuadrícula o simplemente almacenar los valores en una base de datos. El problema habitual es la pérdida del formato numérico o que las fórmulas se conviertan en cadenas crudas. + +En este tutorial recorreremos un ejemplo completo, listo‑para‑ejecutar en C# que **conserva el formato numérico**, **convierte un rango de Excel** a un `DataTable`, **obtiene el resultado de la fórmula**, y finalmente **exporta Excel con formato** usando Aspose.Cells. Al final tendrás un método único que puedes insertar en cualquier proyecto y llamar con una referencia a la hoja de cálculo. + +> **Vista rápida:** el código crea un libro de trabajo, escribe un valor y una fórmula, indica a Aspose.Cells que exporte las celdas como cadenas formateadas, y muestra `123.456 | 246.912` – exactamente lo que esperarías ver en Excel. + +--- + +## Lo que necesitarás + +- **Aspose.Cells for .NET** (la versión de prueba gratuita funciona bien para aprender) +- .NET 6.0 o posterior (la API es la misma en .NET Framework) +- Un entorno básico de desarrollo C# (Visual Studio, VS Code, Rider… tú eliges) + +No se requieren paquetes NuGet adicionales más allá de Aspose.Cells. Si aún no lo has instalado, ejecuta: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Paso 1 – Crear un libro de trabajo y escribir valores (incluyendo una fórmula) + +Primero creamos un libro de trabajo nuevo y colocamos un valor numérico en **A1**. Luego añadimos una fórmula sencilla en **B1** que multiplica la primera celda por dos. Esto prepara el escenario para demostrar **obtener el resultado de la fórmula** más adelante. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Por qué es importante:** +- `PutValue` almacena el número bruto, mientras que `PutFormula` almacena el cálculo. +- Aspose.Cells mantiene la fórmula **activa**, de modo que cuando más tarde solicitemos el valor de la celda obtendremos realmente `246.912`, no la cadena `"=A1*2"`. + +--- + +## Paso 2 – Indicar a Aspose.Cells que exporte los valores como cadenas formateadas + +Si simplemente llamas a `ExportDataTable` con la configuración predeterminada, las celdas numéricas se devolverán como sus valores subyacentes `double`. Eso elimina los separadores de miles, símbolos de moneda o decimales personalizados que hayas configurado. La clase `ExportTableOptions` nos permite **conservar el formato numérico** y **exportar como cadena**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Punto clave:** `ExportNumberFormat = true` es la bandera que hace que **conservar el formato numérico** funcione. Sin ella verías `"123.456"` y `"246.912"` como números crudos, lo que puede verse bien en código pero no cuando pegas los datos en una UI que espera el mismo formato que Excel. + +--- + +## Paso 3 – Imprimir los datos exportados (verificación) + +Ahora que tenemos un `DataTable` lleno de cadenas formateadas, volcamos su contenido a la consola. Esto también demuestra que hemos **obtenido el resultado de la fórmula** sin evaluar la fórmula nosotros mismos. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Ejecutar el programa muestra: + +``` +123.456 | 246.912 +``` + +Observa cómo la segunda columna muestra el **resultado de la fórmula**, no el texto de la fórmula. Eso es exactamente lo que necesitas cuando **exportas Excel con formato** para procesamiento posterior. + +--- + +## Paso 4 – Convertir rangos de Excel más grandes (opcional) + +El ejemplo anterior maneja una pequeña porción `A1:B1`, pero los escenarios del mundo real a menudo requieren exportar tablas completas. El mismo método funciona para cualquier bloque rectangular – solo ajusta los argumentos `firstRow`, `firstColumn`, `totalRows` y `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Consejo profesional:** Si tu hoja ya tiene una fila de encabezado, establece `includeColumnNames` en `true`. Aspose.Cells usará la primera fila del rango como nombres de columna, lo cual es útil cuando luego enlazas el `DataTable` a una cuadrícula de UI. + +--- + +## Paso 5 – Problemas comunes y cómo evitarlos + +| Problema | Por qué ocurre | Solución | +|----------|----------------|----------| +| **Los números pierden comas o símbolos de moneda** | `ExportAsString` es `false` o `ExportNumberFormat` está omitido | Establece tanto `ExportAsString = true` **como** `ExportNumberFormat = true`. | +| **Las celdas con fórmula devuelven el texto de la fórmula** | No llamaste a `CalculateFormula` antes de exportar (solo necesario si el libro no está configurado para auto‑calcular) | Activa el auto‑cálculo (`workbook.CalculateFormula()`) o confía en `ExportAsString` que fuerza la evaluación. | +| **Los encabezados aparecen como filas de datos** | `includeColumnNames` está configurado como `false` mientras tu rango incluye una fila de encabezado | Establece `includeColumnNames = true` para tratar la primera fila como nombres de columna. | +| **Los rangos grandes provocan presión de memoria** | Exportar toda la hoja de una vez carga todo en memoria | Exporta en bloques (p.ej., 500 filas a la vez) y combina los `DataTable`s si es necesario. | + +--- + +## Paso 6 – Ejemplo completo listo para copiar y pegar + +A continuación tienes el programa completo, desde las sentencias `using` hasta `Main`. Pégalo en una aplicación de consola y pulsa **F5** – verás la salida formateada al instante. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Salida esperada** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Ese es todo el flujo de **cómo exportar Excel**, con el formato intacto, resultados de fórmulas evaluados y un `DataTable` limpio listo para cualquier consumidor .NET. + +--- + +## Conclusión + +Hemos cubierto todo lo que necesitas saber sobre **cómo exportar Excel** manteniendo **el formato numérico**, **convirtiendo un rango de Excel** a un `DataTable`, y **obteniendo resultados de fórmulas** sin análisis adicional. La clave es la configuración de `ExportTableOptions` – una vez que estableces `ExportAsString` y `ExportNumberFormat` en `true`, Aspose.Cells hace el trabajo pesado por ti. + +A partir de aquí puedes: + +- Insertar el `DataTable` en un `DataGrid` de WPF o en una vista ASP.NET MVC. +- Escribir la tabla a un archivo CSV manteniendo la representación visual exacta. +- Extender el enfoque a múltiples hojas o rangos dinámicos. + +Siéntete libre de experimentar con diferentes formatos (moneda, porcentajes) y bloques de datos más grandes. Si encuentras alguna anomalía, vuelve a consultar la tabla de **problemas comunes**, que cubre los contratiempos más frecuentes al **exportar Excel con formato**. + +¡Feliz codificación, y que tus hojas de cálculo exportadas siempre luzcan tan pulidas como los originales! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/spanish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..558bf49424 --- /dev/null +++ b/cells/spanish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,189 @@ +--- +category: general +date: 2026-03-22 +description: Aprenda cómo duplicar una tabla dinámica en C# usando Aspose.Cells. Esta + guía también muestra cómo copiar filas y cargar un libro de Excel en C# para una + automatización de Excel sin problemas al copiar filas. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: es +og_description: ¿Cómo duplicar una tabla dinámica en C#? Sigue este tutorial conciso + para cargar un libro de Excel en C#, copiar filas y dominar la automatización de + Excel copiando filas. +og_title: Cómo duplicar Pivot en C# – Guía completa +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Cómo duplicar Pivot en C# – Guía completa paso a paso +url: /es/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo duplicar una tabla dinámica en C# – Guía completa paso a paso + +¿Alguna vez te has preguntado **cómo duplicar una tabla dinámica** de forma programática sin arrastrarla manualmente en Excel? No eres el único. En muchos flujos de informes se necesita el mismo diseño de tabla dinámica en un nuevo conjunto de filas, y hacerlo a mano es una pérdida de tiempo. + +¿La buena noticia? Con unas pocas líneas de C# puedes cargar un libro de Excel, definir el área que contiene la tabla dinámica y **cómo copiar filas** para que la tabla dinámica aparezca en una nueva ubicación, todo en una ejecución automatizada. En este tutorial también cubriremos los conceptos básicos de **load excel workbook c#** y te daremos una base sólida para tareas de **excel automation copy rows**. + +> **Lo que obtendrás** +> • Un ejemplo completo y ejecutable que duplica una tabla dinámica. +> • Una explicación de por qué cada línea es importante. +> • Consejos para manejar casos límite como hojas ocultas o múltiples tablas dinámicas. + +--- + +## Requisitos previos + +- **.NET 6.0** (o cualquier versión reciente de .NET) instalado. +- **Aspose.Cells for .NET** – la biblioteca que usaremos para manipular archivos Excel. Puedes obtenerla vía NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Un libro de origen (`Source.xlsx`) que ya contiene una tabla dinámica en el rango **A1:J20** (el rango que duplicaremos). +- Familiaridad básica con la sintaxis de C# – nada sofisticado, solo las habituales sentencias `using` y el método `Main`. + +Si alguno de estos conceptos te resulta desconocido, detente un momento e instala el paquete; el resto de la guía asume que la biblioteca está lista para usar. + +![Ilustración de cómo duplicar una tabla dinámica en C# usando Aspose.Cells](https://example.com/duplicate-pivot.png "ilustración de cómo duplicar una tabla dinámica en C#") + +*Texto alternativo de la imagen: "cómo duplicar una tabla dinámica en C# ejemplo que muestra filas de la tabla dinámica original y duplicada".* + +## Paso 1: Cargar libro de Excel C# – Abrir el archivo + +Lo primero que necesitas hacer cuando quieres **load excel workbook c#** es crear una instancia de `Workbook` que apunte a tu archivo. Este objeto te brinda acceso a cada hoja, celda y tabla dinámica dentro del archivo. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Por qué es importante:** +`Workbook` abstrae todo el archivo Excel en un modelo en memoria. Sin cargarlo primero no puedes inspeccionar la ubicación de la tabla dinámica ni copiar filas. Además, el constructor detecta automáticamente el formato del archivo (XLS, XLSX, CSV, etc.), por lo que no necesitas código adicional para la detección del formato. + +## Paso 2: Cómo copiar filas – Definir el área de la tabla dinámica + +Ahora que el libro está en memoria, necesitamos indicarle a Aspose.Cells qué filas contienen la tabla dinámica. En nuestro ejemplo la tabla dinámica está en **A1:J20**, lo que corresponde a las filas **0‑19** (indexado basado en cero). Lo envolveremos en una estructura `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Por qué usamos `CellArea`:** +Es una forma ligera de describir un bloque rectangular. Cuando más adelante llames a `CopyRows`, el método lee este objeto para saber exactamente qué filas duplicar. Si alguna vez necesitas ajustar el rango (por ejemplo, que la tabla dinámica crezca hasta la columna K), solo cambias el valor de `endColumn`. + +## Paso 3: Acceder a la hoja de destino + +La mayoría de los libros tienen una sola hoja, pero la API funciona igual para múltiples hojas. Obtén la primera hoja (índice 0) – allí está la tabla dinámica original. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Consejo profesional:** +Si tienes hojas con nombre, también puedes obtenerlas por nombre: `workbook.Worksheets["Sheet1"]`. Esto ayuda a evitar codificar índices cuando la estructura del libro cambia. + +## Paso 4: Cómo copiar filas – Duplicar la tabla dinámica + +Este es el núcleo de **how to duplicate pivot**: copiamos las filas que contienen la tabla dinámica a una nueva ubicación. En nuestro caso empezamos en la fila 31 (índice basado en cero 30). El método `CopyRows` copia *tanto* los datos como la caché subyacente de la tabla dinámica, por lo que las nuevas filas se comportan exactamente como las originales. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**¿Qué ocurre internamente?** +`CopyRows` clona cada fila, preservando fórmulas, estilos y definiciones de la tabla dinámica. Como la caché de la tabla dinámica reside a nivel del libro, la tabla duplicada referencia automáticamente la misma fuente de datos – no se necesita configuración adicional. + +**Caso límite – filas ocultas:** +Si alguna de las filas del rango de origen está oculta, permanecerá oculta después de copiar. Si deseas mostrarlas, llama a `worksheet.Rows[destRow].IsHidden = false` después de la copia. + +## Paso 5: Guardar el libro – Verificar el duplicado + +Finalmente, escribe los cambios de vuelta al disco. Puedes sobrescribir el archivo original o, de forma más segura, guardarlo con un nuevo nombre para poder comparar antes y después. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Resultado que deberías ver:** +Abre `CopyWithPivot.xlsx`. Encontrarás la tabla dinámica original en **A1:J20** y una copia idéntica que comienza en **A31:J50**. Ambas tablas dinámicas pueden actualizarse de forma independiente, y cualquier segmentador (slicer) asociado a la original seguirá funcionando para la copia porque comparten la misma caché. + +## Preguntas frecuentes y variaciones + +### ¿Puedo duplicar varias tablas dinámicas a la vez? + +Absolutamente. Recorre todas las tablas dinámicas (`worksheet.PivotTables`) y copia el rango de cada una a un destino diferente. Solo asegúrate de que los rangos de destino no se superpongan. + +### ¿Qué pasa si el libro de origen está protegido con contraseña? + +Aspose.Cells te permite abrir un archivo protegido pasando la contraseña al constructor `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### ¿Cómo copiar filas sin afectar las fórmulas? + +Si solo necesitas los *valores* (sin fórmulas), usa `CopyRows` con la bandera `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### ¿Hay una forma de copiar filas a un libro *diferente*? + +Sí. Después de copiar filas en la hoja de origen, puedes clonar la hoja en otra instancia de `Workbook` mediante `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Consejos profesionales para una copia de filas fiable en automatización de Excel + +- **Validar el rango** antes de copiar. Un rápido `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` evita errores fuera de rango. +- **Desactivar el cálculo** mientras se copian rangos grandes: `workbook.Settings.CalcMode = CalcMode.Manual;` – esto acelera la operación dramáticamente. +- **Liberar objetos** (`workbook.Dispose()`) si procesas muchos archivos en un bucle para liberar recursos nativos. +- **Registrar la operación** – especialmente en pipelines de producción – para poder rastrear qué archivos fueron procesados y detectar fallos temprano. + +## Conclusión + +Ahora sabes **how to duplicate pivot** tablas en C# usando Aspose.Cells, y has visto el flujo completo desde **load excel workbook c#** hasta **excel automation copy rows** y finalmente guardar el resultado. El ejemplo es autónomo, se ejecuta directamente, y puede ampliarse para manejar múltiples tablas dinámicas, archivos protegidos o copias entre libros. + +¿Próximos pasos? Prueba adaptar el script para: + +- Actualizar la tabla dinámica duplicada programáticamente (`pivotTable.RefreshData();`). +- Exportar el área duplicada a un CSV para procesamiento posterior. +- Integrar el código en una API ASP.NET Core para que los usuarios puedan subir un archivo y recibir instantáneamente una versión con la tabla dinámica duplicada. + +¡Feliz codificación, y que tu automatización de Excel sea siempre fluida! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/row-and-column-management/_index.md b/cells/spanish/net/row-and-column-management/_index.md index 00da234e8a..75d90ead5b 100644 --- a/cells/spanish/net/row-and-column-management/_index.md +++ b/cells/spanish/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Aprenda a mostrar filas y columnas en Excel usando Aspose.Cells para .NET con nu Aprenda a eliminar una columna en un archivo de Excel con Aspose.Cells para .NET. Siga nuestra guía detallada paso a paso para optimizar las modificaciones de sus archivos de Excel. ### [Eliminar una fila en Aspose.Cells .NET](./delete-row-aspose-cells/) Aprenda a eliminar una fila en Excel con Aspose.Cells para .NET. Esta guía paso a paso cubre los prerrequisitos, la importación de código y una guía detallada para una manipulación de datos fluida. +### [Eliminar filas usando Aspose.Cells para .NET – Proteger la fila de encabezado en Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Aprenda a eliminar filas en Excel mientras protege la fila de encabezado con Aspose.Cells para .NET. ### [Eliminar varias filas en Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Aprenda a eliminar varias filas en Excel con Aspose.Cells para .NET. Esta guía detallada, paso a paso, cubre los prerrequisitos, ejemplos de código y preguntas frecuentes para desarrolladores. ### [Insertar una columna en Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/spanish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/spanish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..367e455122 --- /dev/null +++ b/cells/spanish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells elimina filas mientras protege la fila de encabezado. Aprende + cómo obtener la primera tabla y eliminar de forma segura filas de la tabla de Excel + en C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: es +og_description: Aspose Cells elimina filas mientras protege la fila de encabezado. + Aprende cómo obtener la primera tabla y eliminar de forma segura las filas de la + tabla de Excel en C#. +og_title: Aspose Cells Eliminar filas – Proteger la fila de encabezado en Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Eliminar filas – Proteger la fila de encabezado en Excel +url: /es/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Proteger la fila de encabezado en Excel + +¿Alguna vez intentaste **aspose cells delete rows** de una tabla solo para descubrir que el encabezado desapareció? Ese es un error común al manipular hojas de Excel programáticamente. En esta guía recorreremos una solución completa y ejecutable que **protects the header row**, te muestra cómo **retrieve first table**, y elimina de forma segura **delete Excel table rows** sin romper la estructura. + +Cubrirémos todo, desde cargar el libro de trabajo hasta manejar la excepción que Aspose lanza cuando intentas dejar huérfano el encabezado. Al final tendrás un patrón sólido que puedes incorporar en cualquier proyecto .NET que use Aspose.Cells. + +--- + +## Lo que necesitarás + +- **Aspose.Cells for .NET** (v23.12 o posterior) – la biblioteca que te permite trabajar con archivos Excel sin necesidad de Office instalado. +- Un entorno básico de desarrollo C# (Visual Studio, Rider o la CLI `dotnet`). +- Un archivo Excel (`TableWithHeader.xlsx`) que contenga al menos un **ListObject** (tabla de Excel) con una fila de encabezado en la primera fila. + +No se requieren paquetes NuGet adicionales más allá de Aspose.Cells. + +--- + +## Paso 1: Cargar el libro de trabajo y recuperar la primera tabla + +Lo primero que debes hacer es abrir el libro de trabajo y obtener la tabla que deseas modificar. Aquí es donde entra en juego la palabra clave secundaria **retrieve first table**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Por qué es importante:** +- `Workbook` lee el archivo sin necesidad de que Excel esté instalado. +- `worksheet.ListObjects[0]` es la forma más directa de **retrieve first table**; si tienes varias tablas puedes iterar o usar el nombre de la tabla. + +> **Consejo profesional:** Si no estás seguro de que una hoja de cálculo contenga realmente una tabla, verifica primero `worksheet.ListObjects.Count` para evitar una `IndexOutOfRangeException`. + +--- + +## Paso 2: Proteger la fila de encabezado mientras se eliminan filas + +Ahora llega el meollo del asunto: **aspose cells delete rows** sin eliminar el encabezado. El método `DeleteRows` de Aspose recibe un índice de inicio basado en cero y una cantidad. Intentar eliminar el encabezado (fila 0) genera una excepción, que es precisamente lo que queremos evitar. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explanation of the logic:** + +| Paso | Razón | +|------|--------| +| `table.DeleteRows(1, 2);` | El índice 1 apunta a la **segunda** fila (la primera fila de datos). Eliminar dos filas quita las filas 2‑3 en términos de Excel, dejando intacto el encabezado (fila 1). | +| `catch (Exception ex)` | Aspose lanza una excepción **solo** cuando la operación dejaría huérfano el encabezado. Capturarla te permite registrar un mensaje amigable en lugar de que la aplicación se bloquee. | +| `Save` | Persistir los cambios te permite abrir `Result.xlsx` y ver que el encabezado sigue presente. | + +> **¿Qué pasa si realmente necesitas eliminar el encabezado?** +> Usa `table.ShowHeaders = false;` antes de la eliminación, o elimina toda la tabla y vuelve a crearla. Pero en la mayoría de los escenarios empresariales querrás **protect header row**. + +--- + +## Paso 3: Verificar el resultado – Salida esperada + +After running the program, open `Result.xlsx`. You should see: + +- La primera fila sigue conteniendo los títulos de columna originales. +- Las filas 2‑3 (las que seleccionamos) han desaparecido, y los datos restantes se han desplazado hacia arriba. + +The console will display: + +``` +Rows deleted successfully. +``` + +If you mistakenly tried to delete the header (e.g., `table.DeleteRows(0, 1);`), the output would be: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Ese mensaje confirma que la salvaguarda incorporada de Aspose está cumpliendo su función. + +--- + +## Paso 4: Formas alternativas de **Delete Excel Table Rows** + +A veces necesitas más control—como eliminar filas basadas en una condición, o eliminar filas no contiguas. Aquí tienes dos patrones rápidos que mantienen seguro el encabezado. + +### 4.1 Eliminar filas mediante filtro de datos + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Eliminación masiva usando un rango + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Ambos fragmentos respetan la regla de **protect header row** porque el índice de inicio nunca baja de 1. + +--- + +## Paso 5: Errores comunes y cómo evitarlos + +| Error | Por qué ocurre | Solución | +|-------|----------------|----------| +| Eliminar accidentalmente el encabezado | Usar `0` como índice de inicio | Siempre comenzar en `1` para filas de datos, o verificar `table.ShowHeaders` primero. | +| `IndexOutOfRangeException` cuando la hoja no tiene tablas | Suponer que una tabla existe | Verificar `worksheet.ListObjects.Count > 0` antes de acceder a `[0]`. | +| Cambios no guardados | Olvidar llamar a `Save` | Llamar a `workbook.Save` después de las modificaciones. | +| Eliminar filas en el medio desplaza índices, provocando omisiones | Iteración hacia adelante mientras se elimina | Iterar **hacia atrás** o recopilar primero las filas a eliminar. | + +--- + +## Paso 6: Juntar todo – Ejemplo completo y funcional + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Ejecuta este programa, abre `Result.xlsx`, y verás el encabezado intacto mientras las filas seleccionadas desaparecen. Esa es la **solución completa y autónoma** para **aspose cells delete rows** sin sacrificar el encabezado. + +--- + +## Conclusión + +Acabamos de demostrar cómo **aspose cells delete rows** mientras **protecting the header row**, cómo **retrieve first table**, y varias formas de **delete excel table rows** de forma segura. Los puntos clave son: + +- Siempre comienza las eliminaciones en el índice 1 para mantener vivo el encabezado. +- Usa `try/catch` para manejar la excepción de protección incorporada de Aspose. +- Verifica la existencia de la tabla antes de operar, e itera hacia atrás al eliminar filas condicionalmente. + +¿Listo para subir de nivel? Prueba combinar este enfoque con las APIs de estilo de **Aspose Cells** para resaltar filas eliminadas antes de su supresión, o automatiza el proceso en varias hojas de cálculo. Las posibilidades son infinitas, y ahora tienes un patrón confiable para construir. + +Si encontraste útil este tutorial, dale un pulgar arriba, compártelo con tus compañeros, o deja un comentario con tus propias soluciones a casos límite. ¡Feliz codificación! + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/spanish/net/saving-and-exporting-excel-files-with-options/_index.md index ebc4949abf..8afbe379cd 100644 --- a/cells/spanish/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/spanish/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aprenda a manejar advertencias al cargar archivos Excel en .NET usando Aspose.Ce Aprenda a especificar propiedades de documentos como versión, autor y título en un archivo Excel mediante programación utilizando Aspose.Cells para .NET con instrucciones paso a paso. ### [Recorte de filas y columnas en blanco iniciales al exportar](./trimming-leading-blank-rows-and-columns/) Optimice sus exportaciones CSV eliminando las filas y columnas vacías iniciales con Aspose.Cells para .NET. Limpiar sus datos está a solo unos pasos. +### [Cómo guardar un libro de trabajo en C# – Guía completa de automatización de Excel](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Aprenda a guardar libros de Excel programáticamente en C# con una guía paso a paso para automatizar procesos completos. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/spanish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..bc6814f5b0 --- /dev/null +++ b/cells/spanish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-22 +description: Cómo guardar un libro de trabajo en C# usando Aspose.Cells—guía paso + a paso que cubre cómo cargar Excel, crear hoja, reutilizar hoja y generar informe. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: es +og_description: Cómo guardar un libro de trabajo en C# con Aspose.Cells. Aprende a + cargar Excel, crear una hoja, reutilizar la hoja y generar un informe en un solo + tutorial. +og_title: Cómo guardar un libro de trabajo en C# – Guía completa de automatización + de Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Cómo guardar un libro de trabajo en C# – Guía completa de automatización de + Excel +url: /es/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo guardar un libro de trabajo en C# – Guía completa de automatización de Excel + +¿Alguna vez te has preguntado **cómo guardar un libro de trabajo** en C# después de haber procesado algunos datos? No estás solo. La mayoría de los desarrolladores se topan con un obstáculo cuando el informe se ve perfecto en pantalla pero se niega a escribir en el disco. En este tutorial recorreremos un ejemplo completo que no solo te muestra **cómo guardar un libro de trabajo**, sino que también cubre **cómo cargar Excel**, **cómo crear hoja**, **cómo reutilizar hoja**, y **cómo generar informe**—todo con Aspose.Cells. + +Piénsalo como una charla durante el café donde saco el código de mi portátil y explico cada línea. Al final tendrás un programa ejecutable que carga una plantilla, inyecta datos mediante SmartMarker, reutiliza el nombre de una hoja de detalle existente y, finalmente, escribe el archivo en tu carpeta. Sin misterios, solo pasos claros que puedes copiar y pegar. + +## Lo que necesitarás + +- **Aspose.Cells for .NET** (última versión a partir de 2026). Puedes obtenerlo de NuGet con `Install-Package Aspose.Cells`. +- Un entorno de desarrollo .NET (Visual Studio, Rider, o VS Code con la extensión C# funciona bien). +- Un archivo de plantilla de Excel básico llamado `MasterTemplate.xlsx` colocado en una carpeta que controles. +- Conocimientos mínimos de C#—si has escrito un `Console.WriteLine` antes, estás listo para continuar. + +> **Consejo profesional:** Mantén tu plantilla en una carpeta *Resources* separada y márcala como “Copy if newer” para que la ruta permanezca consistente en todas las compilaciones. + +Ahora, sumerjámonos en el código. + +## Paso 1: Cómo cargar Excel – Abrir el libro de plantilla + +Lo primero que debes hacer es cargar el libro de trabajo en memoria. Aspose.Cells lo convierte en una sola línea, pero entender el porqué ayuda cuando necesitas solucionar problemas más adelante. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Por qué es importante:** Cargar el libro de trabajo te da acceso a cada hoja, estilo y rango con nombre dentro de la plantilla. Si el archivo no se encuentra, Aspose lanza una `FileNotFoundException`, así que verifica la ruta. +- **Caso límite:** Si la plantilla está protegida con contraseña, pasa la contraseña al constructor `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Paso 2: Cómo reutilizar hoja – Configurar opciones de SmartMarker + +SmartMarker puede crear automáticamente una nueva hoja de detalle, pero puede que ya tengas una hoja llamada **Detail**. Para evitar un conflicto, indicamos al procesador que reutilice ese nombre. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Por qué es importante:** Sin esta opción Aspose añadiría un sufijo numérico (p.ej., “Detail1”) lo que puede romper macros o fórmulas posteriores que esperan un nombre de hoja fijo. +- **¿Qué pasa si la hoja no existe?** Aspose la creará por ti—por lo que el mismo código funciona tanto si la hoja está presente como si no. + +## Paso 3: Cómo crear hoja – Preparar la fuente de datos + +Aunque aquí no añadimos una hoja manualmente, los datos que alimentas a SmartMarker determinan si se crea una nueva hoja. Construyamos un objeto anónimo simple que imite una lista de pedidos. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Por qué es importante:** SmartMarker escanea la plantilla en busca de marcadores como `&=Header` y `&=Items.Id`. La estructura de `orderData` debe coincidir exactamente con esos marcadores, de lo contrario el procesador los omite silenciosamente. +- **Variación:** Si obtienes datos de una base de datos, reemplaza el tipo anónimo con una lista de DTOs o un `DataTable`. El procesador maneja ambos casos. + +## Paso 4: Cómo generar informe – Procesar SmartMarker + +Ahora vinculamos los datos a la plantilla. El procesador recorre la primera hoja, reemplaza los marcadores y construye la hoja de detalle. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Por qué es importante:** Esta única línea realiza el trabajo pesado—poblando el encabezado, iterando sobre `Items` y respetando el `DetailSheetNewName` que establecimos antes. +- **Pregunta frecuente:** *¿Qué pasa si tengo varias hojas con marcadores?* Recorre cada hoja y llama a `SmartMarkerProcessor.Process` individualmente. + +## Paso 5: Cómo guardar el libro de trabajo – Persistir el archivo resultante + +Finalmente, escribimos el libro de trabajo modificado de nuevo al disco. Este es el momento en que **cómo guardar un libro de trabajo** se vuelve concreto. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Por qué es importante:** El método `Save` admite muchos formatos (`.xlsx`, `.xls`, `.csv`, `.pdf`, etc.). Por defecto escribe un archivo Excel, pero puedes pasar un objeto `SaveOptions` para cambiar la salida. +- **Caso límite:** Si el archivo de destino está abierto en Excel, `Save` lanza una `IOException`. Asegúrate de cerrar cualquier instancia o usa un nombre de archivo único en cada ejecución. + +![Ejemplo de cómo guardar un libro de trabajo en C#](/images/how-to-save-workbook-csharp.png "Cómo guardar un libro de trabajo en C# – visión general visual del proceso") + +### Ejemplo completo funcional + +Juntando todo, aquí tienes una aplicación de consola autónoma que puedes compilar y ejecutar: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Salida esperada:** Después de ejecutar, encontrarás `SmartMarkerWithDupDetail.xlsx` en `YOUR_DIRECTORY`. Ábrelo y deberías ver: + +- El encabezado original poblado con “Orders”. +- Una hoja nueva (o reutilizada) llamada **Detail** que contiene dos filas: `Id=1, Qty=5` y `Id=2, Qty=3`. + +Si la hoja **Detail** ya existía, su contenido será sobrescrito con los datos nuevos—sin hojas extra que desordenen tu archivo. + +## Preguntas frecuentes (FAQ) + +| Pregunta | Respuesta | +|----------|-----------| +| *¿Puedo guardar en PDF en lugar de XLSX?* | Sí. Reemplaza `workbook.Save("file.xlsx")` con `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *¿Qué pasa si mi plantilla tiene múltiples secciones SmartMarker?* | Llama a `SmartMarkerProcessor.Process` en cada hoja que contenga marcadores, o pasa una colección de objetos de datos que coincidan con cada sección. | +| *¿Hay una forma de añadir datos en lugar de sobrescribir la hoja Detail?* | Usa `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (disponible en versiones más recientes de Aspose). | +| *¿Necesito disponer del Workbook?* | La clase `Workbook` implementa `IDisposable`. Envuélvela en un bloque `using` para una gestión limpia de recursos. | + +## Conclusión + +Acabamos de cubrir **cómo guardar un libro de trabajo** en C# de principio a fin, demostrando todo el flujo: **cómo cargar Excel**, **cómo crear hoja** (implícitamente vía SmartMarker), **cómo reutilizar hoja**, y **cómo generar informe**. El código está listo para integrarse en cualquier proyecto .NET, y las explicaciones deberían brindarte suficiente contexto para adaptarlo a escenarios más complejos—como informes multi‑hoja, formato condicional o exportación a PDF. + +¿Listo para el próximo desafío? Intenta añadir un gráfico que visualice las cantidades de los pedidos, o cambia el formato de salida a CSV para procesamiento posterior. Los mismos principios—cargar, procesar y guardar—siguen aplicándose, así que te encontrarás reutilizando este patrón en muchas tareas de generación de informes. + +Si encuentras algún obstáculo o tienes ideas para extensiones, no dudes en dejar un comentario. ¡Feliz codificación, y disfruta de la experiencia fluida de poder **guardar un libro de trabajo** exactamente como lo necesitas! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/smart-markers-dynamic-data/_index.md b/cells/spanish/net/smart-markers-dynamic-data/_index.md index 42cd300b60..9d3326a4c0 100644 --- a/cells/spanish/net/smart-markers-dynamic-data/_index.md +++ b/cells/spanish/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ Descubra el poder de Aspose.Cells con este tutorial paso a paso sobre el uso de Descubra el potencial de los informes de Excel con Aspose.Cells manejando objetos anidados sin esfuerzo mediante marcadores inteligentes en una guía paso a paso. ### [Implementar una matriz de variables con marcadores inteligentes Aspose.Cells](./variable-array-smart-markers/) Descubra el poder de Aspose.Cells. Aprenda a implementar matrices de variables con marcadores inteligentes paso a paso para generar informes de Excel sin problemas. +### [Cómo generar un informe de Excel en C# – Guía completa usando SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +Aprenda paso a paso a crear informes de Excel en C# utilizando SmartMarker para generar documentos dinámicos y profesionales. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/spanish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..d23fa35579 --- /dev/null +++ b/cells/spanish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Cómo generar un informe de Excel en C# con una plantilla maestro‑detalle. + Aprende a poblar una plantilla de Excel en C# rápidamente, usando SmartMarker para + hojas repetibles. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: es +og_description: Cómo generar un informe de Excel en C# usando una plantilla reutilizable. + Esta guía paso a paso le muestra cómo rellenar una plantilla de Excel en C# con + datos maestro‑detalle. +og_title: Cómo generar un informe de Excel en C# – Tutorial completo de SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Cómo generar un informe de Excel en C# – Guía completa usando SmartMarker +url: /es/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo generar un informe de Excel en C# – Guía completa usando SmartMarker + +¿Alguna vez te has preguntado **cómo generar un informe de Excel** en C# sin escribir interminable código celda por celda? No eres el único. La mayoría de los desarrolladores se topan con un muro cuando necesitan un informe pulido, con varias hojas, que refleje relaciones maestro‑detalle —piensa en pedidos y líneas de artículo— y no quieren reinventar la rueda cada vez. + +¿La buena noticia? Con una plantilla de Excel lista y el motor **SmartMarker** de Aspose.Cells, puedes **populate Excel template C#** en solo unas cuantas líneas. En este tutorial recorreremos un escenario real, explicaremos por qué cada paso es importante y te daremos un ejemplo completo y ejecutable que puedes copiar‑pegar hoy. + +> **Lo que obtendrás:** un informe de Excel maestro‑detalle donde cada pedido genera su propia hoja de cálculo, todo impulsado por objetos C# simples. Sin bucles manuales sobre celdas, sin fórmulas frágiles —solo código limpio y mantenible. + +--- + +## Requisitos previos + +Antes de sumergirnos, asegúrate de tener: + +- **.NET 6.0** (o superior) instalado – el código está dirigido a .NET 6 pero también funciona en .NET Framework 4.7+. +- **Aspose.Cells for .NET** paquete NuGet (`Install-Package Aspose.Cells`) – proporciona las clases `Workbook`, `SmartMarkerProcessor` y relacionadas. +- Un archivo Excel llamado **MasterDetailTemplate.xlsx** ubicado en `YOUR_DIRECTORY`. Debe contener un bloque SmartMarker como `{{Orders.OrderId}}` en la primera hoja y un bloque anidado `{{Orders.Items.Prod}}` para los artículos. +- Un entendimiento básico de tipos anónimos en C# – los usaremos para modelar pedidos y artículos. + +Si alguno de estos conceptos te resulta desconocido, no te preocupes. Más adelante mencionaremos alternativas (p. ej., usando EPPlus), pero el concepto central sigue siendo el mismo. + +--- + +## Paso 1: Cargar la plantilla de Excel que contiene bloques SmartMarker + +Lo primero que hacemos es abrir el archivo de plantilla. Piensa en la plantilla como un esqueleto; SmartMarker la completará más tarde con datos reales. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Por qué es importante:** Al separar el diseño (la plantilla) de los datos (los objetos C#), mantienes felices a los diseñadores y a los desarrolladores. Los diseñadores pueden ajustar fuentes, colores o fórmulas sin tocar el código. + +--- + +## Paso 2: Construir la fuente de datos maestro‑detalle + +A continuación, creamos los datos que poblarán la plantilla. Para un informe típico de pedidos, tienes una colección de pedidos, cada uno con su propia colección de artículos. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Consejo profesional:** Usa clases fuertemente tipadas en lugar de tipos anónimos si necesitas reutilizarlos en varios informes. El enfoque con tipos anónimos mantiene el ejemplo conciso. + +**Por qué es importante:** SmartMarker funciona haciendo coincidir los nombres de propiedades (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) con los marcadores de posición en la plantilla. La jerarquía debe alinearse exactamente; de lo contrario, el motor omitirá esas secciones. + +--- + +## Paso 3: Indicar a SmartMarker que cree una nueva hoja para cada registro maestro + +Por defecto, SmartMarker escribe todas las filas en una sola hoja. Queremos que cada pedido aparezca en su propia hoja de cálculo, lo cual es perfecto para imprimir o enviar PDFs por pedido más adelante. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Por qué es importante:** `EnableRepeatingSheet` elimina la necesidad de clonar hojas manualmente. El motor copia la hoja original, inyecta los datos del pedido y renombra la hoja automáticamente (usualmente usando el valor de la primera columna). + +--- + +## Paso 4: Procesar la plantilla con tus datos + +Ahora vinculamos todo. El `SmartMarkerProcessor` recorre el libro de trabajo, reemplaza las etiquetas y crea nuevas hojas según lo indicado. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Por qué es importante:** Esta única línea realiza el trabajo pesado: parsea la plantilla, itera sobre colecciones y maneja tablas anidadas. Es el corazón de **populate Excel template C#** sin bucles manuales. + +--- + +## Paso 5: Guardar el informe final + +Finalmente, escribe el libro de trabajo poblado en disco. También puedes enviarlo directamente como flujo a una respuesta HTTP para aplicaciones web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Por qué es importante:** Guardar en un archivo te brinda un artefacto tangible que puedes abrir en Excel, compartir con interesados o alimentar a procesos posteriores como la conversión a PDF. + +--- + +## Ejemplo completo (listo para copiar‑pegar) + +A continuación tienes el programa completo, incluyendo directivas `using` y un método `Main`. Colócalo en una aplicación de consola, ajusta las rutas de archivo y ejecútalo. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Salida esperada + +Al abrir `MasterDetailResult.xlsx` verás: + +- **Hoja “Order_1”** – contiene el encabezado del Pedido 1 y dos filas para los productos A y B. +- **Hoja “Order_2”** – contiene el encabezado del Pedido 2 y una única fila para el producto C. +- Todas las fórmulas, formatos y gráficos de la plantilla original se conservan. + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Texto alternativo de la imagen: informe de Excel generado con hojas separadas para cada pedido, mostrando cómo generar un informe de Excel usando C# y SmartMarker.* + +--- + +## Preguntas frecuentes y casos límite + +### ¿Qué pasa si necesito una hoja estática (p. ej., un resumen) junto a las hojas repetitivas? + +Establece `EnableRepeatingSheet = true` **solo** en la hoja que contiene el bloque maestro. Las demás hojas permanecerán intactas, por lo que puedes mantener una página de resumen en la plantilla original. + +### ¿Puedo usar un DataTable en lugar de objetos anónimos? + +Absolutamente. SmartMarker funciona con cualquier objeto que implemente `IEnumerable`. Simplemente reemplaza el tipo anónimo por un `DataTable` y asegura que los nombres de columna coincidan con las etiquetas. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### ¿Cómo cambio la convención de nombres de las hojas generadas? + +Implementa una interfaz personalizada `ISmartMarkerSheetNaming` (o manipula `workbook.Worksheets` después del procesamiento). La mayoría de los desarrolladores simplemente renombran las hojas basándose en el valor de una celda: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### ¿Qué ocurre si mi plantilla usa una sintaxis de marcador diferente? + +SmartMarker permite delimitadores personalizados mediante `SmartMarkerOptions`. Por ejemplo, para usar `<< >>` en lugar de `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Consejos para escalar este enfoque + +- **Cachea la plantilla** en memoria si generas muchos informes por solicitud; cargar desde disco cada vez añade latencia. +- **Combínalo con conversión a PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) para salidas amigables por correo electrónico. +- **Parametriza las rutas de archivo** usando archivos de configuración o variables de entorno para que la solución sea portable entre desarrollo, pruebas y producción. +- **Prueba unitariamente la capa de datos** por separado; SmartMarker es determinista, así que solo necesitas verificar que los datos que alimentas coincidan con el esquema esperado. + +--- + +## Conclusión + +Hemos cubierto **cómo generar un informe de Excel** en C# de extremo a extremo, desde cargar una plantilla habilitada para SmartMarker hasta guardar un libro de trabajo multi‑hoja que refleja relaciones maestro‑detalle. Al **populate Excel template C#** con solo unas pocas líneas de código, evitas lógica frágil celda por celda y das libertad a los diseñadores para dar forma al aspecto final. + +A continuación, podrías explorar: + +- Usar **populate Excel template C#** con gráficos que se actualicen automáticamente por hoja. +- Integrar **excel smartmarker c#** con ASP.NET Core para transmitir informes directamente a los navegadores. +- Automatizar pipelines de **c# excel automation** que extraigan datos de APIs o bases de datos. + +Pruébalo, ajusta la plantilla y observa lo rápido que puedes convertir datos crudos en un informe de Excel pulido. ¿Tienes preguntas o un caso de uso interesante? Deja un comentario abajo — ¡feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/spanish/net/tables-and-lists/_index.md b/cells/spanish/net/tables-and-lists/_index.md index f644251397..006c4e4edd 100644 --- a/cells/spanish/net/tables-and-lists/_index.md +++ b/cells/spanish/net/tables-and-lists/_index.md @@ -34,7 +34,7 @@ De forma similar, contamos con tutoriales que te guían en la conversión de una Por último, ¡no te olvides de los comentarios! Son como notas adhesivas para tus tablas, que te ayudan a mantener un registro de notas o recordatorios importantes. Nuestro tutorial sobre... [Establecer comentario de tabla o lista en Excel](./setting-comment-of-table-or-list/) Le mostrará cómo anotar sus datos, agregando otra capa de organización a sus hojas de cálculo. ## Leer y escribir una tabla con una fuente de datos de consulta -Una de las características más potentes de Aspose.Cells para .NET es su capacidad para leer y escribir tablas con fuentes de datos de consulta fácilmente. Imagina extraer datos directamente de tu base de datos a tus hojas de Excel sin necesidad de introducirlos manualmente. ¿Suena práctico, verdad? Nuestro tutorial... [Leer y escribir una tabla con una fuente de datos de consulta](./reading-and-writing-table-with-query-data-source/)Te guiará por este proceso con instrucciones muy claras. Aprenderás a conectarte a tus fuentes de datos, recuperar información y presentarla de forma impecable en Excel. +Una de las características más potentes de Aspose.Cells para .NET es su capacidad para leer y escribir tablas con fuentes de datos de consulta fácilmente. Imagina extraer datos directamente de tu base de datos a tus hojas de Excel sin necesidad de introducirlos manualmente. ¿Suena práctico, verdad? Nuestro tutorial... [Leer y escribir una tabla con una fuente de datos de consulta](./reading-and-writing-table-with-query-data-source/)Te guiará por este proceso con instrucciones muy claras. Aprenderá a conectarse a sus fuentes de datos, recuperar información y presentarla de forma impecable en Excel. ## Tutoriales de tablas y listas ### [Crear un objeto de lista en Excel usando Aspose.Cells](./creating-list-object/) @@ -51,6 +51,8 @@ Convierte fácilmente tablas en rangos en Excel con Aspose.Cells para .NET y gu Descubra el poder de Aspose.Cells para .NET. Aprenda a leer y escribir tablas con fuentes de datos de consulta con esta guía detallada paso a paso. ### [Establecer comentario de tabla o lista en Excel](./setting-comment-of-table-or-list/) Aprenda a configurar comentarios para tablas en Excel usando Aspose.Cells para .NET con nuestra sencilla guía paso a paso. +### [Crear tabla de Excel en C# – Guía paso a paso](./create-excel-table-in-c-step-by-step-guide/) +Aprenda a crear tablas de Excel en C# con Aspose.Cells paso a paso, simplificando la gestión y el formato de datos. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/spanish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/spanish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..528da7735d --- /dev/null +++ b/cells/spanish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Crear tabla de Excel en C# rápidamente. Aprende cómo agregar una tabla, + definir el rango de la tabla, ocultar el encabezado de la tabla y desactivar el + filtro de la tabla con un ejemplo de código completo. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: es +og_description: Crea una tabla de Excel en C# con un ejemplo claro. Aprende cómo agregar + una tabla, definir el rango de la tabla, ocultar el encabezado y desactivar el filtro + en solo unas pocas líneas. +og_title: Crear tabla de Excel en C# – Guía completa de programación +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Crear tabla de Excel en C# – Guía paso a paso +url: /es/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear tabla de Excel en C# – Guía paso a paso + +¿Alguna vez necesitaste **create Excel table** programáticamente usando C#? Crear una tabla de Excel puede ser muy fácil cuando conoces los pasos correctos. En este tutorial recorreremos un ejemplo completo y ejecutable que muestra **how to add table**, **define table range**, **hide table header**, e incluso **disable table filter**, todo sin salir de tu IDE. + +Si alguna vez has tenido problemas con la UI de AutoFilter apareciendo cuando no la deseas, estás en el lugar correcto. Al final de esta guía tendrás un fragmento listo‑para‑ejecutar que produce un libro de trabajo limpio llamado *TableNoFilter.xlsx* y comprenderás por qué cada línea es importante. + +## Lo que aprenderás + +- Cómo **create Excel table** desde cero con Aspose.Cells. +- La sintaxis exacta para **define table range** (A1:D5 en nuestro caso). +- Cómo habilitar la fila de encabezado para que aparezca la UI de filtro incorporada. +- El truco para **hide table header** y **disable table filter** cuando ya no los necesitas. +- Un programa C# completo, listo para copiar y pegar, que puedes ejecutar hoy. + +### Requisitos previos + +- .NET 6.0 o posterior (el código también funciona con .NET Framework 4.7+). +- Aspose.Cells para .NET instalado vía NuGet (`Install-Package Aspose.Cells`). +- Familiaridad básica con C# y Visual Studio (o cualquier IDE que prefieras). + +--- + +## Paso 1: Configurar el proyecto e importar los espacios de nombres + +Antes de que puedas **create Excel table**, necesitas un proyecto de consola que haga referencia a Aspose.Cells. Abre una terminal y ejecuta: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Ahora abre *Program.cs* y agrega las declaraciones `using` requeridas: + +```csharp +using System; +using Aspose.Cells; +``` + +Estas importaciones te dan acceso a las clases `Workbook`, `Worksheet`, `CellArea` y `ListObject` que impulsan el resto del tutorial. + +## Paso 2: Inicializar un nuevo Workbook y obtener la primera Worksheet + +Crear un workbook nuevo es el primer paso lógico. Piensa en el workbook como el contenedor del archivo Excel, y la worksheet como la hoja individual donde colocaremos nuestra tabla. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Por qué es importante:** Un `Workbook` recién creado comienza con una sola hoja vacía. Al obtener `Worksheets[0]` nos aseguramos de trabajar en la hoja predeterminada sin necesidad de crear una manualmente. + +## Paso 3: Definir el rango de la tabla (A1:D5) + +En la terminología de Excel, una *table* vive dentro de un bloque rectangular de celdas. La estructura `CellArea` nos permite precisar ese bloque. Aquí cubriremos **define table range** para las celdas A1 a D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Consejo:** Si alguna vez necesitas un rango dinámico, puedes calcular `endRow` y `endColumn` basándote en la longitud de los datos. La indexación basada en cero es una fuente común de errores de off‑by‑one, así que verifica tus números dos veces. + +## Paso 4: Añadir la tabla y habilitar la fila de encabezado + +Ahora llega el corazón del tutorial: **how to add table** a la worksheet. La colección `ListObjects` maneja las tablas, y establecer `ShowHeaders = true` inyecta automáticamente la UI de AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Explicación:** +> - `Add(tableRange, true)` crea un nuevo `ListObject` (es decir, una tabla de Excel) dentro del rango especificado. +> - El indicador `true` indica a Aspose.Cells que la primera fila del rango debe tratarse como encabezado. +> - Establecer `ShowHeaders` a `true` hace visible el encabezado y activa la UI de filtro incorporada. + +En este punto, si abres el workbook generado, verás una tabla bien formateada con flechas de filtro en cada encabezado de columna. + +## Paso 5: Ocultar la fila de encabezado y desactivar el AutoFilter + +A veces deseas los datos sin el desorden de la UI. Tal vez estés exportando un informe limpio donde los filtros no son necesarios. Aquí está la técnica de **hide table header** y **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Por qué harías esto:** +> - `ShowHeaders = false` elimina la fila de encabezado visual, convirtiendo la tabla en un bloque de datos simple. +> - Establecer `AutoFilter = null` elimina el objeto de filtro oculto, asegurando que no quede lógica de filtro residual. Esto es lo que queremos decir con **disable table filter**. + +## Paso 6: Guardar el workbook en disco + +Finalmente, escribimos el archivo en una ubicación de tu elección. Reemplaza `"YOUR_DIRECTORY"` con una ruta real en tu máquina. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Cuando ejecutes el programa, deberías ver: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Al abrir el archivo se revela una hoja con el bloque de datos (sin encabezado, sin flechas de filtro). Ese es el ciclo completo, desde **create Excel table** hasta **disable table filter**. + +--- + +## Ejemplo completo (listo para copiar y pegar) + +A continuación está el programa completo, listo para compilar. Simplemente reemplaza el directorio de marcador de posición con una ruta válida. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Resultado esperado:** Un archivo llamado *TableNoFilter.xlsx* que contiene un rango de datos simple A1:D5 sin fila de encabezado visible y sin menús desplegables de filtro. + +--- + +## Preguntas frecuentes y casos límite + +### ¿Qué pasa si necesito múltiples tablas en la misma worksheet? + +Simplemente repite **Step 3** con un nuevo `CellArea` y un `ListObject` nuevo. Cada tabla mantiene sus propios ajustes de encabezado y filtro, por lo que puedes ocultar una y mantener otra visible. + +### ¿Puedo aplicar estilo a la tabla (filas con bandas, colores) antes de ocultar el encabezado? + +Absolutamente. El `ListObject` expone una propiedad `TableStyleType`. Por ejemplo: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Puedes aplicar el estilo **antes** de ocultar el encabezado; el formato visual permanecerá intacto. + +### ¿Qué pasa si necesito mantener el encabezado pero solo ocultar las flechas de filtro? + +Establece `ShowHeaders = true` (mantén la fila) y luego elimina el filtro: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Eso satisface el requisito de **disable table filter** sin perder las etiquetas de columna. + +### ¿Esto funciona solo con archivos .xlsx? + +Aspose.Cells detecta automáticamente el formato basado en la extensión del archivo que pasas a `Save`. También podrías generar `.xls`, `.csv`, o incluso `.pdf` con una extensión diferente. + +--- + +## Conclusión + +Acabamos de cubrir todo lo que necesitas para **create Excel table** en C# usando Aspose.Cells, desde **define table range** hasta **hide table header** y **disable table filter**. El código es corto, claro y listo para uso en producción. + +A continuación, podrías explorar **how to add table** con datos dinámicos, aplicar estilos personalizados, o exportar el mismo workbook a PDF. Cada uno de esos temas se basa en la base que acabas de dominar, así que siéntete libre de experimentar y adaptar el fragmento a tus propios proyectos. + +¿Tienes una variante que te gustaría compartir? Deja un comentario abajo, ¡y feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/converting-excel-files-to-other-formats/_index.md b/cells/swedish/net/converting-excel-files-to-other-formats/_index.md index 20c5cd31b2..fbe52207ad 100644 --- a/cells/swedish/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/swedish/net/converting-excel-files-to-other-formats/_index.md @@ -45,7 +45,7 @@ Aspose.Cells för .NET förenklar dokumenttransformationer, vilket gör det möj ### [Konvertera CSV till JSON programmatiskt i .NET](./converting-csv-to-json/) Lär dig hur du konverterar CSV till JSON i .NET med Aspose.Cells. Steg-för-steg-guide för datatransformation med lättförståeliga kodexempel. ### [Konvertera Excel-fil till DOCX programmatiskt i .NET](./converting-excel-file-to-docx/) -Lär dig hur du programmatiskt konverterar Excel-filer till DOCX med Aspose.Cells för .NET i den här steg-för-steg-guiden. Perfekt för rapportgenerering och datadelning. +Lär dig hur du programmerar konverterar Excel-filer till DOCX med Aspose.Cells för .NET i den här steg-för-steg-guiden. Perfekt för rapportgenerering och datadelning. ### [Konvertera Excel-fil till HTML med verktygstips i .NET](./converting-excel-file-to-html-with-tooltip/) Konvertera Excel till HTML med verktygstips med Aspose.Cells för .NET i några enkla steg. Förbättra dina webbappar med interaktiva Excel-data utan ansträngning. ### [Konvertera Excel-fil till Markdown programmatiskt i .NET](./converting-excel-file-to-markdown/) @@ -56,6 +56,10 @@ Lär dig hur du konverterar Excel-filer till PDF/A-1a för arkivering med Aspose Lär dig hur du konverterar JSON till CSV programmatiskt i .NET med hjälp av Aspose.Cells. Följ vår steg-för-steg-guide för att säkerställa sömlös datatransformation. ### [Konvertera Excel-fil till PPTX programmatiskt i .NET](./converting-excel-file-to-pptx/) Lär dig hur du konverterar en Excel-fil till en PowerPoint-presentation (PPTX) programmatiskt med hjälp av Aspose.Cells för .NET med den här steg-för-steg-guiden. +### [Exportera Excel till PowerPoint – Komplett C#-guide](./export-excel-to-powerpoint-complete-c-guide/) +Lär dig hur du exporterar Excel-data till PowerPoint-presentationer med en komplett C#-guide och Aspose.Cells för .NET. +### [Ställ in utskriftsområde i Excel och exportera till PowerPoint – steg‑för‑steg‑guide](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Lär dig hur du ställer in utskriftsområde i Excel och exporterar till PowerPoint med Aspose.Cells för .NET i en detaljerad steg‑för‑steg‑guide. ### [Ange HTML CrossType i utdata-HTML programmatiskt i .NET](./specifying-html-crosstype-in-output-html/) Lär dig hur du anger HTML CrossType i Aspose.Cells för .NET. Följ vår steg-för-steg-handledning för att konvertera Excel-filer till HTML med precision. ### [Läsa siffror programmatiskt i .NET](./reading-numbers-spreadsheet/) diff --git a/cells/swedish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/swedish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..7f451d5a38 --- /dev/null +++ b/cells/swedish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Lär dig hur du exporterar Excel till PowerPoint, ställer in utskriftsområdet + i Excel och sparar Excel som PPTX med redigerbara diagram och OLE‑objekt på bara + några steg. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: sv +og_description: Exportera Excel till PowerPoint snabbt. Den här handledningen visar + hur du ställer in utskriftsområdet i Excel och sparar Excel som PPTX med redigerbara + diagram och OLE‑objekt. +og_title: Exportera Excel till PowerPoint – Komplett C#-guide +tags: +- Aspose.Cells +- C# +- Office Automation +title: Exportera Excel till PowerPoint – Komplett C#‑guide +url: /sv/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Exportera Excel till PowerPoint – Komplett C#-guide + +Behöver du **exportera Excel till PowerPoint**? Du har hamnat på rätt ställe. Oavsett om du bygger en veckovis försäljningspresentation eller automatiserar en rapporteringspipeline, kan det spara timmar av copy‑and‑paste‑arbete att omvandla ett Excel‑ark till en PowerPoint‑presentation. + +I den här handledningen går vi igenom ett praktiskt exempel som inte bara **export excel to powerpoint**, utan också visar hur du **set print area Excel** och **save excel as pptx** så att de resulterande bilderna behåller diagram och OLE‑objekt fullt redigerbara. I slutet har du ett färdigt C#‑program som skapar en professionell `.pptx`‑fil utan någon manuell justering. + +## Vad du behöver + +- **.NET 6+** (valfri modern .NET‑runtime fungerar; koden använder C# 10‑syntax) +- **Aspose.Cells for .NET** – biblioteket som driver exporten. Du kan hämta det från NuGet (`Install-Package Aspose.Cells`). +- En Excel‑arbetsbok som innehåller minst ett diagram och/eller ett OLE‑objekt (exempel‑filen `ChartAndOle.xlsx` används i koden). +- En favorit‑IDE (Visual Studio, Rider eller VS Code – vad du än föredrar). + +Det är allt. Ingen COM‑interop, ingen Office‑installation krävs. + +> **Varför använda ett bibliotek?** +> Inbyggd Office Interop är skör, kräver Office på servern och producerar ofta rasterbilder när du egentligen vill ha vektorbaserade, redigerbara former. Aspose.Cells sköter det tunga arbetet och håller allt redigerbart i PowerPoint. + +--- + +## Steg 1: Läs in Excel‑arbetsboken + +Först laddar vi in källfilen i minnet. Klassen `Workbook` abstraherar hela Excel‑filen och ger oss åtkomst till arbetsblad, diagram och OLE‑objekt. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Varför detta är viktigt:** Att läsa in arbetsboken är grunden. Om sökvägen är fel eller filen är korrupt körs resten av pipeline aldrig. `try…catch`‑blocket ger dig ett vänligt felmeddelande istället för en krasch. + +--- + +## Steg 2: Ange utskriftsområdet i Excel + +Innan du exporterar vill du vanligtvis begränsa utskriften till ett specifikt område. Här kommer **set print area excel** in i bilden. Genom att definiera ett utskriftsområde talar du om för Aspose.Cells exakt vilka celler (och tillhörande objekt) som ska visas på bilden. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Proffstips:** Om du har flera arbetsblad, upprepa `PrintArea`‑tilldelningen för varje blad du planerar att exportera. Att lämna utskriftsområdet odefinierat exporterar hela bladet, vilket kan göra PowerPoint‑filen onödigt stor. + +--- + +## Steg 3: Konfigurera exportalternativ – behåll diagram & OLE redigerbara + +Aspose.Cells erbjuder ett rikt `ImageOrPrintOptions`‑objekt. Genom att slå på `ExportChartObjects` och `ExportOleObjects` bevarar vi vektorformen på diagrammen och den levande redigerbarheten för OLE‑objekt (såsom inbäddade Word‑dokument eller PDF‑filer). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Vad händer under huven?** +När `ExportChartObjects` är `true` konverterar Aspose diagrammet till ett inbyggt PowerPoint‑diagram, med serier, axlar och formatering intakta. Med `ExportOleObjects` aktiverat infogas inbäddade objekt som OLE‑ramar, så ett dubbelklick i PowerPoint öppnar den ursprungliga applikationen (Word, Excel osv.) för redigering. + +--- + +## Steg 4: Spara arbetsbladet som en redigerbar PowerPoint‑fil + +Nu knyter vi ihop allt. Metoden `Save` skriver `.pptx`‑filen med de alternativ vi konfigurerat. Resultatet blir en presentation där varje arbetsblad blir en bild (eller en serie bilder om utskriftsområdet sträcker sig över flera sidor). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Förväntat resultat + +- **Filplats:** `C:\MyProjects\EditableChartOle.pptx` +- **Innehåll:** + - En bild som visar området `A1:H30` exakt som det ser ut i Excel. + - Alla diagram är PowerPoint‑diagramobjekt – klicka på ett stapeldiagram och redigera data. + - OLE‑objekt (t.ex. ett inbäddat Word‑dokument) kan öppnas och redigeras direkt från bilden. + +Om du öppnar PPTX‑filen i PowerPoint bör du se en ren bild med fullt redigerbara komponenter – inga rasteriserade skärmbilder. + +--- + +## Edge Cases & Variationer + +### Flera arbetsblad → Flera bilder +Om du vill att varje arbetsblad ska bli en egen bild, loopa helt enkelt igenom `workbook.Worksheets` och anropa `Save` med ett `SheetToImageOptions`‑objekt som pekar på ett specifikt bladindex. Aspose genererar automatiskt en ny bild för varje iteration. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Stora områden & prestanda +Att exportera ett massivt utskriftsområde (t.ex. `A1:Z1000`) kan öka minnesanvändningen. För att mildra detta, överväg: +- Dela upp området i mindre delar och exportera dem som separata bilder. +- Använd `WorkbookSettings` för att öka `MemorySetting` om du får `OutOfMemoryException`. + +### Kompatibilitetsfrågor +Den genererade PPTX‑filen fungerar i PowerPoint 2016 och nyare. Äldre versioner kan fortfarande öppna filen men kan förlora vissa avancerade diagramfunktioner. Testa alltid i den mål‑Office‑version du planerar att distribuera till. + +--- + +## Fullständigt fungerande exempel (Kopiera‑klistra‑klart) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Tips:** Byt ut de hårdkodade sökvägarna mot konfigurationsvärden eller kommandoradsargument för ett mer flexibelt verktyg. + +--- + +## Vanliga frågor + +**Q: Kan jag exportera bara ett diagram utan de omgivande cellerna?** +A: Ja. Använd bara `ExportChartObjects` och sätt utskriftsområdet till diagrammets omfång. Diagrammet visas centrerat på bilden. + +**Q: Vad händer om min arbetsbok innehåller makron?** +A: Aspose.Cells ignorerar VBA‑makron under export. Om du behöver makrofunktionalitet i PowerPoint måste du återskapa den med PowerPoint‑VBA eller tillägg. + +**Q: Fungerar detta på Linux/macOS?** +A: Absolut. Aspose.Cells är ett rent .NET‑bibliotek; så länge du har .NET‑runtime körs koden plattformsoberoende. + +--- + +## Slutsats + +Du har just lärt dig hur du **exporterar Excel till PowerPoint** samtidigt som du exakt **set print area excel** och **save excel as pptx** med fullt redigerbara diagram och OLE‑objekt. Nyckelstegen är att läsa in arbetsboken, definiera utskriftsområdet, konfigurera `ImageOrPrintOptions` och slutligen spara PPTX‑filen. + +Härifrån kan du utforska: +- Exportera flera arbetsblad till en enda presentation. +- Lägga till anpassade bildrubriker eller anteckningar programatiskt. +- Konvertera PPTX till PDF för distribution (använd `SaveFormat.Pdf`). + +Kör koden, justera utskriftsområdet och se hur dina Excel‑data magiskt dyker upp i PowerPoint – utan manuellt copy‑pasting. Om du stöter på problem, kolla Aspose.Cells‑dokumentationen eller lämna en kommentar nedan. Lycka till med kodandet! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/swedish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..2a7d385aa9 --- /dev/null +++ b/cells/swedish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-22 +description: Ställ in utskriftsområde i Excel och konvertera Excel till PowerPoint + med redigerbara former. Lär dig hur du upprepar rubrikraden, skapar PowerPoint från + Excel och exporterar Excel till pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: sv +og_description: Ställ in utskriftsområde i Excel och konvertera det till en PowerPoint-bild + med redigerbara former. Följ den här kompletta guiden för att upprepa rubrikraden + och exportera Excel till pptx. +og_title: Ställ in utskriftsområde i Excel – Export till PowerPoint‑handledning +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Ställ in utskriftsområde i Excel och exportera till PowerPoint – Steg‑för‑steg‑guide +url: /sv/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ställ in utskriftsområde i Excel och exportera till PowerPoint – Komplett programmeringshandledning + +Har du någonsin behövt **set print area** i ett Excel‑ark och sedan omvandla den delen till en PowerPoint‑bild? Du är inte ensam. I många rapporteringsflöden måste samma data som skrivs ut snyggt också visas i en presentation, ofta med den första raden upprepad som en titel. Den goda nyheten? Med några rader C# kan du **convert excel to powerpoint**, behålla alla textrutor redigerbara och till och med **repeat title row** automatiskt. + +I den här guiden går vi igenom allt du behöver veta: från att konfigurera utskriftsområdet till att skapa en PPTX‑fil som du kan redigera direkt i PowerPoint. I slutet kommer du kunna **create powerpoint from excel**, exportera resultatet som **export excel to pptx**, och återanvända samma kod i vilket .NET‑projekt som helst. Ingen magi, bara tydliga steg och ett komplett, körbart exempel. + +## Vad du behöver + +- **.NET 6.0** eller senare (API:et fungerar även med .NET Framework) +- **Aspose.Cells for .NET** (biblioteket som tillhandahåller `Workbook`, `ImageOrPrintOptions` osv.) +- En grundläggande C#‑IDE (Visual Studio, Rider eller VS Code med C#‑tillägget) +- En Excel‑fil (`input.xlsx`) som innehåller de data du vill exportera + +Det är allt—inga extra NuGet‑paket utöver Aspose.Cells. Om du ännu inte har lagt till biblioteket, kör: + +```bash +dotnet add package Aspose.Cells +``` + +Nu är vi redo att köra. + +## Steg 1: Ladda arbetsboken – startpunkten för export + +Det första du måste göra är att ladda arbetsboken som innehåller bladet du vill omvandla till en bild. Tänk på arbetsboken som källdokumentet; utan den spelar inget annat någon roll. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Varför detta är viktigt:** Att ladda arbetsboken ger dig åtkomst till samlingen av arbetsblad, sidinställningsalternativ och exportmotorn. Om du hoppar över detta steg kan du inte ställa in **print area** eller upprepa några rader. + +> **Proffstips:** Använd en absolut sökväg under testning, byt sedan till en relativ eller konfigurationsbaserad sökväg för produktion. + +## Steg 2: Konfigurera exportalternativ – behåll textrutor och former redigerbara + +När du exporterar till PowerPoint vill du förmodligen att den resulterande bilden ska vara redigerbar. Aspose.Cells låter dig styra detta med `ImageOrPrintOptions`. Genom att sätta `ExportTextBoxes` och `ExportShapeObjects` till `true` instruerar du biblioteket att bevara dessa objekt som inbyggda PowerPoint‑element istället för att platta ner dem till en bild. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Varför detta är viktigt:** Om du någonsin behövt **convert excel to powerpoint** och sedan justera bilden manuellt, sparar den här inställningen dig från att återskapa textrutor från grunden. Den säkerställer också att alla former (som pilar eller diagram) förblir vektorobjekt som du kan ändra storlek på. + +## Steg 3: Ställ in utskriftsområde och upprepa titelraden + +Nu kommer vi till tutorialens kärna: **set print area** och låta den första raden upprepas på varje utskriven sida (eller, i vårt fall, på den exporterade bilden). Utskriftsområdet talar om för Excel vilka celler som ska beaktas för utskrift—eller export i vårt scenario. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Varför detta är viktigt:** Genom att begränsa exporten till `A1:G20` undviker du att hämta in enorma tomma områden, vilket snabbar upp konverteringen och håller bilden prydlig. `PrintTitleRows`‑raden får den första raden att fungera som en rubrik—precis vad du vill när du **repeat title row** i en presentation. + +> **Edge case:** Om dina data börjar på rad 2, justera området därefter (t.ex. `PrintTitleRows = "$2:$2"`). + +## Steg 4: Spara arbetsbladet som en PowerPoint‑fil + +Till sist skriver vi bilden till disk. Metoden `Save` tar målfilnamnet och de alternativ vi konfigurerade tidigare. Resultatet blir en PPTX‑fil med redigerbara textrutor och former, redo att öppnas i PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Vad du kommer att se:** Öppna `SheetWithEditableShapes.pptx` i PowerPoint. Den första raden visas som en titel, alla celler från `A1:G20` renderas, och eventuella former du lagt till i Excel är fortfarande flyttbara och redigerbara. Inga rasterbilder—bara inbyggda PowerPoint‑objekt. + +## Fullt fungerande exempel – alla steg kombinerade + +Nedan är det kompletta, kopiera‑och‑klistra‑klara programmet. Kör det som en konsolapp eller bädda in det i någon större lösning. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Förväntad output:** Efter att programmet har körts skriver konsolen ut ett lyckat meddelande, och PPTX‑filen visas på den angivna platsen. När du öppnar filen visas en enda bild med det valda området, redigerbara textrutor och eventuella ursprungliga former. + +## Vanliga frågor & fallgropar + +| Fråga | Svar | +|----------|--------| +| **Does this work with multiple worksheets?** | Ja. Loopa igenom `workbook.Worksheets` och upprepa samma steg för varje blad, och ändra utdatafilnamnet varje gång. | +| **What if I need to export more than one slide?** | Anropa `workbook.Save` flera gånger med olika `ImageOrPrintOptions`‑objekt, var och en konfigurerad med en annan `PageSetup` om så behövs. | +| **Can I change the slide size?** | Använd `exportOptions.ImageFormat` för att sätta DPI, eller justera `sheet.PageSetup.PaperSize` innan du sparar. | +| **Is Aspose.Cells free?** | Det finns en gratis utvärdering med vattenstämplar. För produktion krävs en licens. | +| **What about Excel formulas?** | De exporterade värdena är de **calculated results** vid exporttidpunkten. Om du behöver levande formler i PowerPoint måste du använda en annan metod. | + +## Tips för ett smidigt arbetsflöde + +- **Proffstips:** Sätt `Workbook.Settings.CalcMode = CalculationModeType.Automatic` före export för att garantera att alla formler är uppdaterade. +- **Se upp för:** Mycket stora områden kan orsaka minnespress. Trimma utskriftsområdet till det minsta nödvändiga intervallet. +- **Prestandatips:** Återanvänd en enda `ImageOrPrintOptions`‑instans om du exporterar många blad; att skapa en ny varje gång ger extra overhead. +- **Versionsnotering:** Koden ovan riktar sig mot Aspose.Cells 23.10 (släppt november 2023). Senare versioner behåller samma API, men kontrollera alltid versionsnoterna för eventuella brytande förändringar. + +## Slutsats + +Vi har gått igenom hur man **set print area** i ett Excel‑ark, upprepar den första raden som en titel, och sedan **export excel to pptx** samtidigt som redigerbara textrutor och former bevaras. Kort sagt, du känner nu till ett pålitligt sätt att **convert excel to powerpoint**, **repeat title row**, och **create powerpoint from excel** med bara några rader C#. + +Redo för nästa steg? Prova att automatisera en batchkonvertering av dussintals rapporter, eller lägg till anpassade bildlayouter med PowerPoint‑SDK efter exporten. Himlen är gränsen—experimentera, bryt saker och njut av kraften i programmatisk dokumentgenerering. + +Om du fann den här tutorialen användbar, dela den, lämna en kommentar med dina egna justeringar, eller utforska våra andra guider om **export excel to pptx** och relaterade automatiseringsteman. Lycka till med kodandet! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/csv-file-handling/_index.md b/cells/swedish/net/csv-file-handling/_index.md index 0850f6e729..85eeffc570 100644 --- a/cells/swedish/net/csv-file-handling/_index.md +++ b/cells/swedish/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ För ytterligare insikter, kolla gärna in våra detaljerade handledningar på [ Lär dig hur du öppnar CSV-filer med Aspose.Cells för .NET med vår omfattande steg-för-steg-guide. Manipulering av masterdata. ### [Öppna CSV-filer med föredragen parser](./csv-file-opening-csv-files-with-preferred-parser/) Lär dig hur du öppnar och analyserar CSV-filer med anpassade parsers i Aspose.Cells för .NET. Hantera text och datum utan ansträngning. Perfekt för utvecklare. +### [Spara arbetsbok som CSV i C# – Exportera Excel till CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Lär dig hur du sparar en Excel-arbetsbok som CSV med C# och Aspose.Cells för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/swedish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..9089d441b3 --- /dev/null +++ b/cells/swedish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-22 +description: Spara arbetsbok som CSV i C# snabbt. Lär dig hur du exporterar Excel + till CSV, ställer in precision och konverterar xlsx till CSV med Aspose.Cells på + bara några rader. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: sv +og_description: Spara arbetsbok som CSV i C# snabbt. Den här guiden visar hur du exporterar + Excel till CSV, ställer in precision och konverterar xlsx till CSV med Aspose.Cells. +og_title: Spara arbetsbok som CSV i C# – Exportera Excel till CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Spara arbetsbok som CSV i C# – Exportera Excel till CSV +url: /sv/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara arbetsbok som CSV i C# – Exportera Excel till CSV + +Har du någonsin behövt **spara arbetsbok som CSV** men varit osäker på hur du håller siffrorna prydliga? Du är inte ensam. I många data‑pipeline‑scenarier måste vi **exportera Excel till CSV** samtidigt som vi bevarar ett specifikt antal signifikanta siffror, och Aspose.Cells‑biblioteket gör det till en barnlek. + +I den här handledningen får du ett komplett, färdigt exempel som **sparar en arbetsbok som CSV**, visar *hur du ställer in precision*, och förklarar *hur du konverterar xlsx till CSV* för verkliga projekt. Inga vaga referenser – bara kod du kan kopiera, klistra in och köra idag. + +## Vad du kommer att lära dig + +- De exakta stegen för att **spara arbetsbok som CSV** med en anpassad precisioninställning. +- Hur du **exporterar Excel till CSV** med `CsvSaveOptions` och varför egenskapen `SignificantDigits` är viktig. +- Variationer för olika precisionsbehov och vanliga fallgropar när du hanterar stora tal. +- En snabb titt på hur du konverterar en `.xlsx`‑fil till `.csv` utan att förlora dataintegritet. + +### Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även på .NET Framework 4.6+). +- **Aspose.Cells for .NET** NuGet‑paketet (`Install-Package Aspose.Cells`). +- Grundläggande kunskap om C# och fil‑I/O. + +Om du har detta, låt oss dyka ner. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Spara arbetsbok som CSV – Steg‑för‑steg‑guide + +Nedan är hela programmet. Varje rad är kommenterad så att du kan se *varför* varje del finns, inte bara *vad* den gör. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Varför använda `CsvSaveOptions.SignificantDigits`? + +När du **hur man ställer in precision** för en CSV‑export bestämmer du egentligen hur många siffror i ett flyttal som överlever konverteringen. Excel lagrar tal med upp till 15‑siffrig precision, men de flesta nedströmsystem (databaser, analys‑pipelines) behöver bara några få. Genom att sätta `SignificantDigits = 4` avrundar biblioteket `123.456789` till `123.5`, vilket håller filen kompakt och mänskligt läsbar. + +> **Proffstips:** Om du behöver *exakta* värden (t.ex. för finansiella data), sätt `SignificantDigits` till ett högre tal eller utelämna det helt. Standardvärdet är 15, vilket speglar Excels interna precision. + +## Exportera Excel till CSV – Vanliga variationer + +### Ändra avgränsare + +Vissa system förväntar ett semikolon (`;`) istället för ett kommatecken. Du kan justera det så här: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Exportera ett specifikt kalkylblad + +Om du bara vill exportera det andra bladet, ersätt det valfria blocket med: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Anropa sedan `workbook.Save` som tidigare. Denna teknik är praktisk när du **konverterar xlsx till csv** men bara bryr dig om en viss flik. + +### Hantera stora dataset + +När du arbetar med miljontals rader, överväg att strömma CSV‑filen istället för att ladda hela arbetsboken i minnet. Aspose.Cells erbjuder en `CsvSaveOptions`‑egenskap `ExportDataOnly` som hoppar över stilinformation, vilket minskar minnesbelastningen: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Hur man exporterar CSV – Verifiera resultatet + +Efter att ha kört programmet, öppna `Numbers_4sd.csv` i en vanlig textredigerare. Du bör se något i stil med: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Lägg märke till hur siffrorna är begränsade till fyra signifikanta siffror, exakt som vi begärde. Om du öppnar filen i Excel kommer värdena att se identiska ut eftersom Excel respekterar den avrundning som applicerades under exporten. + +## Edge Cases & Felsökning + +| Situation | Vad du ska kontrollera | Åtgärd | +|-----------|------------------------|--------| +| **Fil ej hittad** | Verifiera att `sourcePath` pekar på en riktig `.xlsx`‑fil. | Använd `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Felaktig avrundning** | Säkerställ att `SignificantDigits` är satt innan `Save` anropas. | Flytta `CsvSaveOptions`‑tilldelningen tidigare eller dubbelkolla värdet. | +| **Specialtecken visas som �** | CSV‑kodning är standard UTF‑8 utan BOM. | Sätt `csvOptions.Encoding = System.Text.Encoding.UTF8` eller `Encoding.Unicode`. | +| **Extra tomma kolumner** | Vissa kalkylblad har stray‑formatering utanför det använda området. | Anropa `worksheet.Cells.MaxDisplayRange` för att trimma oanvända kolumner före export. | + +## Hur man ställer in precision dynamiskt + +Ibland är den erforderliga precisionen inte känd vid kompileringstid. Du kan läsa den från en konfigurationsfil eller ett kommandoradsargument: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Kör nu: + +``` +dotnet run -- 6 +``` + +och få en CSV med sex signifikanta siffror. Denna lilla justering gör lösningen flexibel för **hur man exporterar csv** i varierande miljöer. + +## Fullt fungerande exempel – Sammanfattning + +När allt sätts ihop ser det kompletta programmet (inklusive valfria justeringar) ut så här: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Kör programmet, öppna den genererade CSV‑filen, och du kommer att se den precision du begärde, vilket bekräftar att du framgångsrikt **sparade arbetsbok som CSV**. + +## Slutsats + +Du har nu ett robust, produktionsklart recept för **att spara en arbetsbok som CSV** i C#. Guiden täckte *hur man exporterar Excel till CSV*, demonstrerade *hur man ställer in precision* via `CsvSaveOptions.SignificantDigits`, och visade flera variationer för **konvertera xlsx till csv**‑scenarier. Med hela kodsnutten kan du lägga in detta i vilket .NET‑projekt som helst och börja exportera data omedelbart. + +**Vad blir nästa steg?** + +- Experimentera med olika avgränsare (`;`, `\t`) för TSV‑export. +- Kombinera detta tillvägagångssätt med en fil‑watcher för att automatiskt generera CSV när en Excel‑fil ändras. +- Utforska Aspose.Cells `CsvLoadOptions` om du någonsin behöver läsa CSV‑filer tillbaka till en arbetsbok. + +Känn dig fri att justera precisionen, lägga till egna rubriker eller koppla in exportören + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/document-properties/_index.md b/cells/swedish/net/document-properties/_index.md index 0c1f785ec4..a731b3d9ff 100644 --- a/cells/swedish/net/document-properties/_index.md +++ b/cells/swedish/net/document-properties/_index.md @@ -35,6 +35,8 @@ Lär dig hur du får åtkomst till dokumentegenskaper i Excel med Aspose.Cells f Lär dig hur du får åtkomst till dokumentegenskaper i Excel med Aspose.Cells för .NET med vår steg-för-steg-guide. Hantera dina kalkylblad effektivt. ### [Lägga till dokumentegenskaper i .NET](./adding-document-properties/) Lär dig hur du lägger till dokumentegenskaper i Excel med hjälp av Aspose.Cells för .NET med den här detaljerade steg-för-steg-guiden. +### [Skapa Excel-arbetsbok – Lägg till anpassade egenskaper och spara som XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Lär dig hur du skapar en Excel-arbetsbok, lägger till anpassade dokumentegenskaper och sparar den som en XLSB-fil med Aspose.Cells för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/swedish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..1f917e4b7f --- /dev/null +++ b/cells/swedish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Skapa en Excel-arbetsbok, lägg till anpassade egenskaper, sätt bladnamn + och spara som en XLSB-binärfil med C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: sv +og_description: Skapa Excel-arbetsbok, lägg till anpassade egenskaper, ange bladnamn + och spara som XLSB-binärfil med C#. +og_title: Skapa Excel-arbetsbok – Lägg till anpassade egenskaper och spara som XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Skapa Excel-arbetsbok – Lägg till anpassade egenskaper och spara som XLSB +url: /sv/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa Excel-arbetsbok – Lägg till anpassade egenskaper och spara som XLSB + +Har du någonsin behövt **skapa Excel-arbetsbok** programatiskt men också behålla lite metadata kopplad? Kanske bygger du en rapportmotor som märker varje fil med ett rapport‑ID, författarnamn eller versionsnummer. I så fall kommer kunskapen om hur du **lägger till anpassade egenskaper** samtidigt som du **sätter bladnamn** och slutligen **sparar som XLSB** att spara dig mycket manuellt efterarbete. + +I den här handledningen går vi igenom ett komplett, körbart exempel som visar exakt hur du **skriver en binär Excel‑fil** med C#. Du får se varför XLSB‑formatet är rätt val för att transportera anpassade egenskaper, hur du undviker de vanligaste fallgroparna och vad du ska göra om du måste stödja äldre Excel‑versioner. + +--- + +## Vad du behöver + +- **.NET 6+** (eller .NET Framework 4.6+). Koden fungerar på alla moderna körmiljöer. +- **Aspose.Cells for .NET** (gratis provversion eller licens). Den tillhandahåller klasserna `Workbook`, `Worksheet` och `CustomProperties` som används nedan. +- En IDE du är bekväm med – Visual Studio, Rider eller till och med VS Code räcker. +- Skrivbehörighet till en mapp där den genererade filen ska sparas. + +Inga andra tredjepartsbibliotek krävs. + +--- + +## Steg 1: Installera Aspose.Cells + +Börja med att lägga till Aspose.Cells NuGet‑paketet i ditt projekt: + +```bash +dotnet add package Aspose.Cells +``` + +> **Proffstips:** Om du kör på en CI‑server, lagra licensnyckeln i en miljövariabel och läs in den vid körning – det förhindrar att “evaluation”-vattenstämpeln smyger sig in i ditt resultat. + +--- + +## Steg 2: Skapa Excel-arbetsbok – Översikt + +Den första riktiga handlingen är att **skapa Excel-arbetsbok**. Detta objekt representerar hela filen i minnet och ger dig åtkomst till blad, stilar och anpassade egenskaper. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Varför instansiera en ny `Workbook` istället för att ladda en mall? En tom arbetsbok garanterar att inga dolda stilar eller kvarvarande anpassade egenskaper finns kvar, vilket är särskilt viktigt när du avser att **skriva en binär Excel‑fil** för downstream‑system som förväntar sig en ren startpunkt. + +--- + +## Steg 3: Sätt bladnamn (och varför det är viktigt) + +Excel‑blad har standardnamnen “Sheet1”, “Sheet2” osv. Att ge ett blad ett meningsfullt namn gör efterföljande bearbetning – som Power Query eller VBA‑makron – mycket enklare att läsa. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Om du försöker tilldela ett duplicerat namn kommer Aspose.Cells att kasta ett `ArgumentException`. För att vara på den säkra sidan kan du kontrollera `Worksheets.Exists("Data")` innan du byter namn. + +--- + +## Steg 4: Lägg till anpassade egenskaper + +Anpassade egenskaper lagras i arbetsbokens interna XML och följer med filen oavsett format. De är perfekta för att bädda in saker som `ReportId` eller `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Varför använda anpassade egenskaper?** +> • De är åtkomliga via Excels “File → Info → Properties”-panel. +> • Kod som konsumerar arbetsboken kan läsa dem utan att skanna cellinnehåll. +> • De överlever formatkonverteringar (XLSX ↔ XLSB) eftersom de är en del av filens metadata. + +Du kan också lagra datum, booleska värden eller till och med binära blobbar, men håll payloaden liten – Excel är ingen databas. + +--- + +## Steg 5: Spara som XLSB (Skriv binär Excel‑fil) + +XLSB‑formatet lagrar data i en binär struktur, vilket gör filen mindre och snabbare att öppna. Ännu viktigare för den här handledningen är att **anpassade egenskaper är inbäddade i den binära strömmen**, vilket garanterar att de följer med filen. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Förväntat resultat + +Efter att programmet har körts hittar du `WithCustomProps.xlsb` på ditt skrivbord. Öppna den i Excel, gå till **File → Info → Properties**, och du kommer att se `ReportId` och `GeneratedBy` listade under *Custom*. + +--- + +## Steg 6: Edge Cases & Vanliga frågor + +### Vad händer om mål‑mappen är skrivskyddad? + +Omge `Save`‑anropet med ett `try/catch`‑block och falla tillbaka till en användar‑skrivbar plats, såsom `%TEMP%`. Detta förhindrar att applikationen kraschar på grund av behörighetsfel. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Kan jag **spara som XLSX** och ändå behålla anpassade egenskaper? + +Ja – byt bara `SaveFormat.Xlsb` till `SaveFormat.Xlsx`. Egenskaperna lagras i samma XML‑del, så de överlever formatbytet. Dock är XLSX‑filer större eftersom de är zip‑komprimerad XML, medan XLSB ger bättre prestanda för stora dataset. + +### Hur läser jag de anpassade egenskaperna senare? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Detta kodstycke skriver ut varje anpassad egenskap, vilket gör det enkelt för downstream‑tjänster att verifiera filens ursprung. + +--- + +## Fullt fungerande exempel + +Nedan är hela programmet som du kan kopiera‑klistra in i ett nytt konsol‑projekt. Inga delar saknas – allt från `using`‑satser till den sista `Console.WriteLine` är med. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Kör programmet, öppna den resulterande filen och verifiera de anpassade egenskaperna. Det är hela processen för att **skapa Excel-arbetsbok**, **lägga till anpassade egenskaper**, **sätta bladnamn** och **spara som XLSB** i ett smidigt flöde. + +--- + +## Slutsats + +Du vet nu exakt hur du **skapar Excel-arbetsbok**, ger dess blad ett tydligt **bladnamn**, bäddar in användbar metadata med **anpassade egenskaper**, och slutligen **sparar som XLSB** för att producera en kompakt, binär Excel‑fil. Detta arbetsflöde är pålitligt, fungerar över .NET‑versioner och skalar bra oavsett om du genererar en rapport eller tusen. + +Vad blir nästa steg? Prova att lägga till en datatabell på bladet “Data”, experimentera med olika egenskapstyper (datum, booleska), eller byt ut output till **spara som XLSB** för massiva dataset. Du kan även utforska att skydda arbetsboken med ett lösenord – Aspose.Cells gör det till en enkel rad kod. + +Kasta gärna in en kommentar om du stöter på problem, eller dela hur du har utökat detta mönster i dina egna projekt. Lycka till med kodandet! + +--- + +![Create Excel workbook screenshot](image.png){alt="Skärmdump av skapad Excel-arbetsbok med anpassade egenskaper"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/excel-advanced-named-ranges/_index.md b/cells/swedish/net/excel-advanced-named-ranges/_index.md index 609adf3dbd..f45c32e4db 100644 --- a/cells/swedish/net/excel-advanced-named-ranges/_index.md +++ b/cells/swedish/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Det fina med den här funktionen ligger i dess användarvänlighet. Du kan samma Identifiera enkelt celler i ett namngivet område i Excel med hjälp av Aspose.Cells för .NET med den här omfattande steg-för-steg-handledningen. ### [Sammanfoga celler i namngivet område i Excel](./merge-cells-in-named-range/) Lär dig hur du sammanfogar celler i ett namngivet område med hjälp av Aspose.Cells för .NET i den här steg-för-steg-handledningen. Upptäck hur du formaterar, stiliserar och automatiserar Excel-rapporter. +### [Skapa Excel-arbetsbok – Steg‑för‑steg‑guide för att lägga till tabeller och namngivningsregler](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Lär dig hur du skapar en Excel-arbetsbok, lägger till tabeller och definierar namngivningsregler med Aspose.Cells för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/swedish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..419d25ad70 --- /dev/null +++ b/cells/swedish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: Skapa en Excel-arbetsbok med en tabell, lär dig Excel‑tabellnamngivningsregler, + undvik fel med namngivna områden och ange Excel‑tabellnamnet korrekt i C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: sv +og_description: Skapa Excel-arbetsbok i C# och behärska reglerna för namngivning av + Excel-tabeller. Lär dig hur du lägger till ett tabellblad, sätter Excel-tabellnamn + och åtgärdar fel i namngivna områden. +og_title: Skapa Excel-arbetsbok – Komplett C#-tabell‑ och namngivningsguide +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Skapa Excel‑arbetsbok – Steg‑för‑steg‑guide för att lägga till tabeller och + namngivningsregler +url: /sv/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa Excel-arbetsbok – Komplett C#‑guide till tabeller och namngivning + +Har du någonsin behövt **skapa excel workbook** programatiskt och undrat varför ditt tabellnamn plötsligt kolliderar med ett namngivet område? Du är inte ensam. I många automationsprojekt, så snart du försöker ge en tabell en vänlig identifierare, kastar Excel ett *named range error* som stoppar hela processen. + +I den här handledningen går vi igenom ett fullt körbart exempel som **skapar en Excel-arbetsbok**, **lägger till en tabell i ett kalkylblad**, och förklarar **excel table naming rules** som hindrar dig från att snubbla på dig själv. I slutet vet du exakt hur du **add table worksheet**, **set excel table name**, och hanterar den tillfälliga namnkollisionen på ett elegant sätt. + +> **Pro tip:** Det mesta av förvirringen beror på att Excel behandlar tabellnamn och arbetsboks‑nivåns namngivna områden som ett enda namnrymd. Att förstå den regeln tidigt sparar dig timmar av felsökning. + +## Vad du behöver + +- **Aspose.Cells for .NET** (eller vilket bibliotek som helst som exponerar `Workbook`, `Worksheet`, `ListObject`‑klasser). +- .NET 6+ eller .NET Framework 4.8 – koden fungerar i båda. +- En grundläggande förståelse för C#‑syntax – inga avancerade knep krävs. + +Om du har detta, låt oss dyka ner. + +![Skärmbild av en ny skapad Excel-arbetsbok med en tabell namngiven SalesData](create_excel_workbook_example.png "exempel på skapa excel workbook") + +## Steg 1: Skapa Excel-arbetsbok och få åtkomst till det första kalkylbladet + +Det första du gör när du **create excel workbook** är att instansiera `Workbook`‑klassen och hämta en referens till bladet du ska arbeta på. I Aspose.Cells startar arbetsboken med ett standardblad som heter “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Varför är detta steg avgörande? Utan ett arbetsboksobjekt har du inget att fästa en tabell till, och `Worksheet`‑referensen ger dig en duk där operationen **add table worksheet** kommer att ske. + +## Steg 2: Lägg till tabell (ListObject) som täcker ett specifikt område + +Nästa steg är att **add table worksheet**‑nivådata. Metoden `ListObjects.Add` förväntar sig en områdessträng och en boolean som anger om den första raden innehåller rubriker. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Lägg märke till anropet `salesTable.Name = "SalesData"`. Här träder **excel table naming rules** i kraft: namnet måste vara unikt i hela arbetsboken, inte bara i bladet. Det får inte heller innehålla mellanslag eller specialtecken, och det måste börja med en bokstav eller understreck. + +## Steg 3: Försök skapa ett arbetsboks‑nivåns namngivet område med samma identifierare + +Nu provocerar vi medvetet **named range error** för att se vad som händer när en namnkollision uppstår. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Om du avkommenterar raden kastar Aspose.Cells ett `ArgumentException` som säger att namnet redan finns. Felmeddelandet ser ut så här: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Det meddelandet är **named range error** som vi varnade för tidigare. Det visar att **excel table naming rules** behandlar tabellnamn och namngivna områden som en enda namnrymd. + +## Steg 4: Hantera namnkollisionen på ett elegant sätt + +I verklig kod vill du fånga det undantaget och antingen byta namn på tabellen eller välja ett annat områdesnamn. Så här kan du göra det på ett snyggt sätt: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Genom att omsluta anropet med en `try/catch` undviker du ett hårt krasch och ger användaren (eller anropande kod) en tydlig förklaring – exakt den typ av **excel table naming rules**‑insikt som förhindrar framtida buggar. + +## Steg 5: Spara arbetsboken och verifiera resultatet + +Till sist sparar du filen till disk och öppnar den i Excel för att bekräfta att tabellen och eventuella namngivna områden finns. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +När du öppnar *SalesReport.xlsx* ser du: + +- En tabell som sträcker sig över **A1:C5** med namnet **SalesData**. +- Om du behöll det alternativa området, ett arbetsboks‑nivåns namngivet område **SalesData_Range** som pekar på **D1**. + +Inga körningsfel, och namnkollisionen är löst. + +## Fördjupning i Excel Table Naming Rules + +Låt oss gå igenom varför reglerna finns: + +| Regel | Vad den betyder | Exempel | +|------|----------------|---------| +| **Unik i hela arbetsboken** | Inga två tabeller eller namngivna områden får dela samma identifierare. | `Table1` vs `Table1` → konflikt | +| **Börjar med en bokstav eller understreck** | Namn får inte börja med en siffra. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Inga mellanslag eller specialtecken** | Använd CamelCase eller understreck. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Längd ≤ 255 tecken** | Praktiskt taget alltid uppfyllt. | N/A | + +Att ha dessa regler i åtanke när du **set excel table name** eliminerar det fruktade *named range error*. + +## Vanliga variationer och edge‑cases + +1. **Lägga till flera tabeller** – Varje tabell måste ha ett eget unikt namn. +2. **Byta namn på en befintlig tabell** – Använd `salesTable.Name = "NewName"` innan du skapar några konflikterande namngivna områden. +3. **Använda dynamiska områden** – Om du behöver ett område som expanderar, använd en strukturerad referens som `=SalesData[Amount]` istället för en statisk adress. +4. **Namngivna områden över blad** – De är fortfarande en del av samma namnrymd, så en tabell på Sheet1 blockerar ett område med samma namn på Sheet2. + +## Pro‑tips för smidig Excel‑automation + +- **Kontrollera existens innan du lägger till**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generera säkra namn programatiskt**: Lägg till ett GUID eller en inkrementell räknare (`SalesData_{Guid.NewGuid()}`) när du är osäker. +- **Använd `ListObject.ShowHeaders = true`** för att göra dina tabeller själv‑dokumenterande. +- **Validera efter sparning**: Öppna filen med ett lättviktigt bibliotek (t.ex. EPPlus) för att säkerställa att tabellen skapades korrekt. + +## Sammanfattning: Vad vi gick igenom + +- Hur du **create excel workbook** från grunden med Aspose.Cells. +- De exakta **excel table naming rules** som styr tabell‑ och namngivna områdesidentifierare. +- Varför ett **named range error** visas när du återanvänder ett namn. +- Det korrekta sättet att **add table worksheet** och **set excel table name** utan kollisioner. +- Ett robust mönster för att hantera namnkollisioner på ett elegant sätt. + +## Vad blir nästa steg? + +Nu när du behärskar grunderna, överväg att utforska: + +- **Dynamisk tabelltillväxt** med `ListObject.Resize`. +- **Applicera stilar** på tabeller (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Exportera till CSV** samtidigt som du bevarar tabellstrukturer. +- **Integrera med Office Open XML** för ännu striktare kontroll över arbetsbokens interna delar. + +Känn dig fri att experimentera – ändra området, lägg till fler tabeller eller lek med olika namnscheman. Ju mer du provar, desto djupare blir din förståelse för **excel table naming rules**. + +--- + +*Lycka till med kodandet, och må dina arbetsböcker aldrig kollidera igen!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/excel-custom-number-date-formatting/_index.md b/cells/swedish/net/excel-custom-number-date-formatting/_index.md index dbba5ff40e..f60b6567a7 100644 --- a/cells/swedish/net/excel-custom-number-date-formatting/_index.md +++ b/cells/swedish/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Den här handledningen ger dig färdigheterna att importera dina dataset samtidi Lär dig hur du kontrollerar Excel-cellvärden mot anpassade talformat med Aspose.Cells för .NET med den här steg-för-steg-handledningen. ### [Ange formelfält vid import av data till Excel-ark](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Lär dig hur du importerar data till Excel-ark med angivna formelfält med hjälp av Aspose.Cells för .NET i den här detaljerade handledningen. +### [Anpassat talformat i Excel i C# – Komplett guide](./custom-number-format-excel-in-c-complete-guide/) +Lär dig hur du skapar och använder anpassade talformat i Excel med C# och Aspose.Cells i en komplett guide. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/swedish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..158db0aa13 --- /dev/null +++ b/cells/swedish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Anpassad talformat‑Excel‑handledning som visar hur man importerar en + datatabell till Excel, sätter kolumnens bakgrundsfärg, formaterar kolumnen som valuta + och sparar arbetsboken som xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: sv +og_description: Anpassad talformat i Excel-handledning som guidar dig genom att importera + en DataTable, sätta kolumnens bakgrundsfärg, formatera en kolumn som valuta och + spara arbetsboken som xlsx. +og_title: Anpassat talformat i Excel med C# – Steg‑för‑steg‑guide +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Anpassade talformat i Excel med C# – Komplett guide +url: /sv/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Anpassat talformat Excel – Full‑Stack C#‑handledning + +Har du någonsin undrat hur man applicerar ett **custom number format excel**‑stil direkt från C#? Kanske har du försökt dumpa en DataTable i ett kalkylblad bara för att se rena siffror, inga färger och ingen valutformatering. Det är ett vanligt problem—särskilt när du behöver en polerad rapport för intressenter. + +I den här guiden kommer vi att lösa det problemet tillsammans: du kommer att lära dig hur man **import datatable to excel**, **set column background color**, **format column as currency**, och slutligen **save workbook as xlsx** med ett anpassat talformat som får dina siffror att sticka ut. Inga vaga referenser, bara en komplett, körbar lösning som du kan kopiera‑klistra in i ditt projekt. + +--- + +## Vad du kommer att bygga + +I slutet av den här handledningen kommer du att ha en självständig C#‑konsolapp som: + +1. Hämtar en `DataTable` (du kan ersätta stubben med din egen fråga). +2. Skapar en ny Excel-arbetsbok med Aspose.Cells (eller vilket kompatibelt bibliotek som helst). +3. Applicerar ett blått, fetstilat teckensnitt på den första kolumnen, en ljus‑gul bakgrund på den andra, och ett valutformat (`$#,##0.00`) på den tredje. +4. Sparar filen som `DataTableWithStyleArray.xlsx` i en mapp du väljer. + +Du kommer att se exakt hur varje rad bidrar till den slutgiltiga Excel-filen, och vi kommer att diskutera varför dessa val är viktiga för underhållbarhet och prestanda. + +--- + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även med .NET Framework 4.7+). +- Aspose.Cells för .NET (gratis provversion eller licensierad version). Installera via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Grundläggande kunskap om `DataTable` och C#‑konsolapplikationer. + +--- + +## Steg 1: Hämta källdata som en DataTable + +Först behöver vi lite data att exportera. I ett verkligt scenario skulle du förmodligen anropa ett repository eller köra en SQL‑fråga. För illustration skapar vi en enkel tabell i minnet. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Varför detta är viktigt:** Att använda en `DataTable` ger dig en tabellbaserad, schema‑medveten källa som mappar rent på Excel‑rader och -kolumner. Det låter dig också återanvända samma exportlogik för vilken dataset som helst utan att skriva om koden. + +--- + +## Steg 2: Skapa en ny arbetsbok och hämta det första kalkylbladet + +Nu skapar vi en Excel‑arbetsbok. Klassen `Workbook` representerar hela filen; dess `Worksheets[0]` är standardbladet där vi placerar våra data. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Proffstips:** Om du behöver flera blad, anropa bara `workbook.Worksheets.Add("SheetName")` och upprepa stilstegen för varje. + +--- + +## Steg 3: Definiera kolumnstilar – teckensnitt, bakgrund och talformat + +Stil i Aspose.Cells görs via `Style`‑objekt. Vi kommer att bygga en array där varje element motsvarar en kolumn i DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Varför en stilarray?** Att skicka en array till `ImportDataTable` låter dig applicera en distinkt stil på varje kolumn i ett enda anrop, vilket är både koncist och prestandaeffektivt. Det garanterar också att formateringen hålls i synk med datasekvensen. + +--- + +## Steg 4: Importera DataTable samtidigt som du applicerar stilarna + +Här är kärnan i operationen: vi matar in `DataTable` i kalkylbladet, instruerar Aspose att inkludera rubrikraden, och överlämnar vår `columnStyles`‑array. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Vad händer under huven?** Aspose itererar genom varje kolumn, skriver rubriken och sedan varje radvärde. Under tiden applicerar den motsvarande `Style` från arrayen, så du får en blå rubrik för “Product”, en gul‑tonad “Quantity” och en snyggt formaterad “Revenue”-kolumn. + +--- + +## Steg 5: Spara arbetsboken som en XLSX‑fil + +Till sist sparar vi arbetsboken till disk. Metoden `Save` väljer automatiskt XLSX‑formatet baserat på filändelsen. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Tips:** Om du behöver strömma filen (t.ex. för ett web‑API), använd `workbook.Save(stream, SaveFormat.Xlsx)` istället för en filsökväg. + +--- + +## Fullständigt fungerande exempel + +Nedan är det kompletta programmet som du kan klistra in i ett nytt konsolprojekt. Det kompileras och körs som det är, och producerar en stylad Excel‑fil. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Förväntat resultat + +När du öppnar `DataTableWithStyleArray.xlsx` kommer du att se: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Det **custom number format excel** du specificerade (`$#,##0.00`) säkerställer att varje intäktscell visar ett dollartecken, tusentalsavgränsare och två decimaler—precis vad finansavdelningar förväntar sig. + +--- + +## Vanliga frågor & specialfall + +### Kan jag använda detta med ett annat Excel‑bibliotek? + +Absolut. Konceptet—att skapa en stil per kolumn och applicera den under import—översätts till EPPlus, ClosedXML eller NPOI. API‑anropen skiljer sig, men mönstret förblir detsamma. + +### Vad händer om min DataTable har fler kolumner än stilar? + +Aspose kommer att applicera standardstilen på varje kolumn utan motsvarande post i `columnStyles`‑arrayen. För att undvika överraskningar, antingen storleksanpassa arrayen till `dataTable.Columns.Count` eller generera stilar dynamiskt i en loop. + +### Hur sätter jag ett anpassat talformat för datum? + +Ställ bara in `style.Custom = "dd‑mm‑yyyy"` (eller någon giltig Excel‑formatsträng). Samma array‑baserade metod fungerar för datum, procenttal eller vetenskaplig notation. + +### Finns det ett sätt att automatiskt anpassa kolumnbredder efter import? + +Ja—anropa `worksheet.AutoFitColumns();` efter importen. Det kör en snabb breddberäkning baserad på cellinnehållet. + +### Vad händer med stora dataset (100 000+ rader)? + +`ImportDataTable` är optimerad för bulkoperationer, men du kan stöta på minnesgränser. I så fall, överväg att strömma rader manuellt med `Cells[i, j].PutValue(...)` och återanvända ett enda `Style`‑objekt för att minska overhead. + +--- + +## Proffstips & vanliga fallgropar + +- **Undvik att hårdkoda sökvägar** i produktionskod; använd `Environment.GetFolderPath` eller konfigurationsinställningar. +- **Disposera arbetsboken** om du kör i en långlivad tjänst—omslut den i ett `using`‑block för att frigöra inhemska resurser. +- **Var uppmärksam på kulturspecifika avgränsare**. Det anpassade formatet `$#,##0.00` tvingar en punkt som decimalavgränsare oavsett OS‑lokal, vilket vanligtvis är önskvärt för finansiella rapporter. +- **Kom ihåg att referera System.Drawing** (eller `System.Drawing.Common` på .NET Core) för färgstrukturerna som används i styling. +- **Testa utdata i olika Excel‑versioner**; äldre versioner kan tolka vissa anpassade format lite annorlunda. + +--- + +## Slutsats + +Vi har gått igenom allt du behöver för att **custom number format excel**‑filer från C#: hämta data från en `DataTable`, **import datatable to excel**, applicera en **set column background color**, använda **format column as currency**, och slutligen **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/excel-workbook/_index.md b/cells/swedish/net/excel-workbook/_index.md index 1e4aa5269d..c60786d6f6 100644 --- a/cells/swedish/net/excel-workbook/_index.md +++ b/cells/swedish/net/excel-workbook/_index.md @@ -75,6 +75,7 @@ Så varför inte ta chansen att förbättra dina Excel-kunskaper? Varje handledn | [Justera kompressionsnivån](./adjust-compression-level/) Lär dig hur du justerar komprimeringsnivåer för Excel-filer med Aspose.Cells för .NET. Optimera dina filstorlekar effektivt med den här steg-för-steg-guiden. | | [Tillåt inledande apostrof](./allow-leading-apostrophe/) | Hantera enkelt inledande apostrofer i Excel med Aspose.Cells för .NET. Den här omfattande handledningen guidar dig steg för steg genom processen. | | [Skapa delad arbetsbok](./create-shared-workbook/) | Lär dig hur du skapar en delad arbetsbok med Aspose.Cells för .NET med den här enkla steg-för-steg-guiden. Perfekt för att förbättra teamsamarbetet. | +| [Skapa ny arbetsbok C# – Steg‑för‑steg‑guide med spildformler](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Lär dig hur du skapar en ny arbetsbok i C# med spildformler med Aspose.Cells för .NET i vår steg‑för‑steg‑guide. | | [Identifiera länktyper](./detect-link-types/) | Lär dig hur du identifierar hyperlänktyper i Excel med Aspose.Cells för .NET. Enkla steg och kodexempel ingår. | | [Extrahera inbäddad Mol-fil](./extract-embedded-mol-file/) | Lär dig hur du enkelt extraherar inbäddade MOL-filer från en Excel-arbetsbok med Aspose.Cells för .NET. | | [Filtrera definierade namn vid inläsning av arbetsbok](./filter-defined-names-while-loading-workbook/) Lär dig hur du filtrerar definierade namn när du laddar en arbetsbok med Aspose.Cells för .NET i den här omfattande guiden. | diff --git a/cells/swedish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/swedish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..fbedee21b1 --- /dev/null +++ b/cells/swedish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Skapa en ny arbetsbok i C# snabbt med Aspose.Cells. Lär dig hur du lägger + till en SEQUENCE‑spillerformel, får automatisk omberäkning och hanterar beroende + celler. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: sv +og_description: Skapa en ny arbetsbok i C# med Aspose.Cells. Denna handledning visar + hur du lägger till en SEQUENCE‑spärrningsformel, beräknar om arbetsboken och hanterar + beroende celler. +og_title: Skapa ny arbetsbok C# – Komplett guide +tags: +- C# +- Excel automation +- Aspose.Cells +title: Skapa ny arbetsbok C# – Steg‑för‑steg‑guide med spridda formler +url: /sv/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa ny arbetsbok C# – Komplett programmeringsgenomgång + +Har du någonsin undrat hur man **create new workbook C#** utan att kämpa med COM interop? Du är inte ensam. I många projekt behöver du snabbt skapa en Excel‑fil, lägga in en dynamisk array‑formel och låta allt uppdateras automatiskt. + +I den här guiden visar vi exakt det—med det moderna **Aspose.Cells**‑biblioteket, genom att lägga till en spillande `SEQUENCE`‑formel, justera en beroende cell och tvinga en omberäkning så resultaten förblir färska. I slutet har du ett självständigt, körbart exempel som du kan kopiera‑klistra in i vilken .NET‑app som helst. + +## Vad du kommer att lära dig + +- Hur man **create new workbook C#** programatiskt. +- Mekanismerna bakom en **spilled array formula** och varför den är praktisk. +- Använda **Excel SEQUENCE function** från C#‑kod. +- Utlösa **C# workbook calculation** så beroende celler uppdateras omedelbart. +- Vanliga fallgropar (t.ex. glömma att anropa `Calculate`) och snabba lösningar. + +Ingen extern dokumentation behövs—allt du behöver finns här. + +## Förutsättningar + +- .NET 6+ (eller .NET Framework 4.7.2+) installerat. +- Visual Studio 2022 eller någon IDE du föredrar. +- NuGet‑paketet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Grundläggande kunskap om C#‑syntax (om du är helt ny är koden kraftigt kommenterad). + +--- + +## Steg 1: Skapa en ny arbetsbok i C# + +Denna H2‑rubrik innehåller det **primära nyckelordet** exakt där SEO‑checklistan kräver det. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Varför detta är viktigt:** +> Att instansiera `Workbook` ger dig en in‑minnet‑representation av en Excel‑fil. Ingen COM, ingen interop, bara rena .NET‑objekt som du kan manipulera säkert. + +--- + +## Steg 2: Lägg till en spillande SEQUENCE‑formel + +En **spilled array formula** expanderar automatiskt till intilliggande celler, vilket är perfekt för att generera dynamiska listor. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Hur det fungerar:** +> `SEQUENCE`‑funktionen (införd i Excel 365) skapar en vertikal array av tal. Eftersom vi använder en *spillande* formel fyller Excel (och Aspose.Cells) automatiskt området under `A1` utan att vi behöver skriva en loop. + +--- + +## Steg 3: Ändra en beroende cell för att se automatisk uppdatering + +Låt oss modifiera `B1` så att vi kan observera hur arbetsboken omberäknar den spillade arrayen. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Tips:** +> Om du senare refererar till det spillade området i andra formler, kommer en ändring av någon cell i spillen att få dessa formler att uppdateras efter att du anropar `Calculate`. + +--- + +## Steg 4: Tvinga C#‑arbetsboksberäkning + +Utan ett explicit anrop kommer Aspose.Cells inte automatiskt att beräkna om formler. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **Vad `Calculate` gör:** +> Den går igenom varje formelcell, utvärderar dem och skriver tillbaka resultaten till bladet. Detta är kärnan i **C# workbook calculation** och säkerställer att din spillade array hålls i synk med all beroende data. + +### Förväntat resultat + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Öppna `SpilledSequenceDemo.xlsx` så ser du siffrorna 1‑5 fylla `A1:A5`, medan `B1` innehåller värdet `10`. Ändra någon cell i spillen, kör `Calculate` igen, så visas de nya värdena omedelbart. + +--- + +## Förstå Excel SEQUENCE‑funktionen i C# + +Om du är nyfiken på varför `SEQUENCE` föredras framför en manuell loop, överväg dessa punkter: + +1. **Prestanda** – Motorn utvärderar hela arrayen i ett pass. +2. **Läsbarhet** – En rad kod ersätter dussintals `PutValue`‑anrop. +3. **Dynamisk storlek** – Du kan ersätta den statiska `5` med en referens till en annan cell, vilket gör längden justerbar vid körning. + +Detta är ett klassiskt exempel på en **spilled array formula** som förenklar uppgifter för datagenerering. + +## Vanliga fallgropar & pro‑tips + +| Fallgrop | Lösning | +|----------|---------| +| Glömmer `workbook.Calculate()` | Anropa alltid den efter att du har ändrat formler; annars visar bladet gamla cachade värden. | +| Använder en äldre version av Aspose.Cells | Uppgradera till det senaste NuGet‑paketet för att säkerställa stöd för dynamiska array‑funktioner som `SEQUENCE`. | +| Sparar innan beräkning | Spara **efter** `Calculate` så att filen innehåller de senaste resultaten. | +| Antar att spillen skriver över befintlig data | Aspose.Cells respekterar befintlig data utanför spill‑området; rensa området först om du behöver en ren start. | + +**Pro‑tips:** Om du vill att sekvenslängden ska vara konfigurerbar, lagra antalet i en cell (t.ex. `C1`) och använd `=SEQUENCE(C1)` — beräkningsmotorn läser då värdet vid körning. + +## Utöka exemplet + +Nu när du vet hur man **create new workbook C#**, kan du: + +- Lägg till mer komplexa formler som refererar till det spillade området (`=SUM(A1#)` där `#` betecknar spillen). +- Exportera till PDF med `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Infoga diagram som automatiskt anpassar sig till den dynamiska array‑storleken. + +Alla dessa bygger på samma **C# workbook calculation**‑grund som vi just har gått igenom. + +## Slutsats + +Vi har gått igenom hela processen för **create new workbook C#**, från att instansiera `Workbook`‑objektet till att infoga en spillande `SEQUENCE`‑formel, justera en beroende cell och slutligen tvinga en omberäkning så allt hålls uppdaterat. Den kompletta kodsnutten ovan är redo att köras—klistra bara in den i en konsolapp, lägg till Aspose.Cells‑NuGet‑paketet, så har du en fungerande Excel‑fil på några sekunder. + +Redo för nästa steg? Prova att byta ut den statiska `5` mot en cellreferens, experimentera med andra dynamiska array‑funktioner som `FILTER` eller `UNIQUE`, och utforska hur **Aspose.Cells C#** kan driva fullskaliga rapporteringsmotorer. Lycka till med kodandet! + +--- + +*Bildplats:* + +![Skärmbild som visar en nyskapad arbetsbok med spillande SEQUENCE‑formel – create new workbook C#‑exempel](/images/create-new-workbook-csharp.png) + +--- + +*Om du tyckte att den här handledningen var hjälpsam, överväg att stjärnmärka repot, dela med kollegor eller lämna en kommentar nedan. Din feedback driver framtida guider!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/formulas-functions/_index.md b/cells/swedish/net/formulas-functions/_index.md index 90a3ddaca9..2c156e2c94 100644 --- a/cells/swedish/net/formulas-functions/_index.md +++ b/cells/swedish/net/formulas-functions/_index.md @@ -45,7 +45,7 @@ Lär dig hur du programmatiskt extraherar formeltext från Excel-filer med Aspos ### [Automatisera Excel-uppgifter med Aspose.Cells .NET: Ställ in formler i intervall](./aspose-cells-net-set-formulas-ranges) Lär dig hur du automatiserar inställningen av formler i intervall med Aspose.Cells för .NET. Effektivisera dina Excel-arbetsflöden effektivt med C# genom att tillämpa samma formel på flera celler samtidigt. -### [Effektiv CSV-import med formler med hjälp av Aspose.Cells .NET Guide](./csv-imports-formulas-aspose-cells-net-guide) +### [Effektiv CSV-import med förmler med hjälp av Aspose.Cells .NET Guide](./csv-imports-formulas-aspose-cells-net-guide) Lär dig hur du importerar CSV-filer som innehåller komplexa formler till Excel med Aspose.Cells för .NET utan att förlora funktionalitet. Bemästra hur du bevarar formellogik under dataimport. ### [Anpassa cellformler i Aspose.Cells .NET: Guide till globaliseringsinställningar](./custom-aspose-cells-net-globalization-settings) @@ -102,6 +102,8 @@ Lär dig hur du anger språket för dina Excel-filer med Aspose.Cells .NET. För ### [Uppdatera Excel Power Query-formler med Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Lär dig hur du programmatiskt uppdaterar Power Query-formler i Excel-arbetsböcker med Aspose.Cells för .NET. Hantering av huvuddatakällor för dynamisk rapportering. +### [Hur man använder Lambda i C# med Excel-formler – Komplett guide](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) + ## Förstå Excel-formeltyper Excel-formler finns i olika former, var och en med unika egenskaper som Aspose.Cells kan hantera: diff --git a/cells/swedish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/swedish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..caf1133e61 --- /dev/null +++ b/cells/swedish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Hur man använder lambda i C# för att arbeta med Excel‑formler. Lär dig + att skriva formel till en cell, konvertera ett område till en array, visa arrayen + i konsolen och beräkna cotangens i Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: sv +og_description: Hur man använder lambda i C# för att manipulera Excel‑formler, konvertera + område till array, skriva formel till cell, visa array i konsolen och beräkna cotangens + i Excel. +og_title: Hur man använder Lambda i C# med Excel‑formler – Steg för steg +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Hur man använder Lambda i C# med Excel‑formler – Komplett guide +url: /sv/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man använder Lambda i C# med Excel-formler – Komplett guide + +Har du någonsin undrat **hur man använder lambda** när du automatiserar Excel från C#? Du är inte ensam. Många utvecklare stöter på problem när de måste kombinera kraften i Excels nya dynamiska matrisfunktioner med C#'s `LAMBDA`‑funktionalitet. Den goda nyheten? Det är faktiskt ganska enkelt när du ser hur delarna passar ihop. + +I den här handledningen går vi igenom **att skriva en formel till en cell**, **att konvertera ett område till en matris**, **att visa den matrisen i konsolen**, och till och med **att beräkna cotangens i Excel**—allt medan vi visar dig **hur man använder lambda** inuti ett `REDUCE`‑anrop. I slutet har du ett körbart kodexempel som du kan klistra in i vilket .NET‑projekt som helst som refererar till Aspose.Cells (eller ett liknande bibliotek). + +--- + +## Vad du kommer att lära dig + +- Hur man **skriver en formel till en cell** med C#. +- Hur man **konverterar ett område till en matris** med `EXPAND`‑funktionen. +- Hur man **visar matrisen i konsolen** efter beräkning. +- Hur man **beräknar cotangens i Excel** med `COT` och `COTH`. +- Den exakta syntaxen för **hur man använder lambda** inuti Excels `REDUCE`‑funktion från C#. + +> **Förutsättning:** Du behöver en recent version of .NET (Core 6+ eller .NET Framework 4.7+) och Aspose.Cells for .NET‑biblioteket installerat via NuGet. + +## Steg 1: Skapa arbetsboken och skriv formel till cell + +Det första vi gör är att skapa en ny arbetsbok och hämta det första kalkylbladet. Sedan **skriver vi en formel till en cell** – i det här fallet kommer `A1` att innehålla resultatet av ett `EXPAND`‑anrop. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Varför detta är viktigt:** Att skriva formeln direkt från koden innebär att du kan generera komplexa kalkylblad på språng utan att någonsin öppna Excel. Det förbereder också nästa steg där vi **konverterar ett område till en matris**. + +--- + +## Steg 2: Konvertera område till matris med EXPAND + +`EXPAND` är Excels sätt att omvandla ett litet område till en större matris. Genom att placera formeln i `A1` kommer Excel att spilla ut ett 4 × 5‑block som börjar i den cellen. Från C# behöver vi inte manuellt kopiera värden – biblioteket sköter det tunga arbetet när vi anropar `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Hur man använder lambda:** Inte ännu, men håll utkik. Först behöver vi data i bladet, sedan kommer vi att reducera det med en lambda. + +## Steg 3: Använd LAMBDA inuti REDUCE – Kärnan i “Hur man använder Lambda” + +Excel 365 introducerade `REDUCE`, som accepterar ett **initialt värde**, ett **område** och en **LAMBDA** som talar om hur varje element ska kombineras. Från C# tilldelar vi helt enkelt formelsträngen; lambdan lever i Excel‑formeln, inte i C#‑koden. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Förklaring:** +- `0` är startackumulatorn (`acc`). +- `A1:D4` är det område vi vill bearbeta (de första fyra kolumnerna av spillen). +- `LAMBDA(acc, x, acc + x)` talar om för Excel att lägga till varje cell (`x`) till ackumulatorn. + +Det är essensen av **hur man använder lambda** för aggregering i ett kalkylblads‑sammanhang. + +## Steg 4: Beräkna cotangens i Excel – Från grader till hyperbolisk + +Om du behöver trigonometriska resultat är Excels funktioner `COT` och `COTH` enkla att använda. Vi placerar dem i `G1` respektive `G2`. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Varför detta är praktiskt:** Att veta **hur man beräknar cotangens i Excel** kan spara dig från att skriva egen matematik‑kod, särskilt när arbetsboken ska delas med icke‑utvecklare. + +## Steg 5: Tvinga beräkning och hämta den expanderade matrisen + +Nu instruerar vi arbetsboken att utvärdera varje formel och sedan hämta den spillade matrisen från `A1`. Det är här vi **visar matrisen i konsolen**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Vad du kommer att se:** +- En snyggt formaterad 4 × 5‑matris utskriven rad för rad. +- Summan beräknad av `REDUCE`‑lambdan. +- De två cotangensvärdena. + +Det avslutar flödet från **skriva formel till cell** hela vägen till **visa matris i konsolen**. + +## Fullt fungerande exempel (Klar att kopiera och klistra in) + +Nedan är hela programmet som du kan klistra in i en konsolapp. Kom ihåg att först lägga till `Aspose.Cells`‑NuGet‑paketet (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Förväntad konsolutdata (värdena kan variera beroende på standardinnehållet i B1:C2, som är 0 som standard):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Känn dig fri att fylla `B1:C2` med egna siffror innan du kör – matrisen kommer att spegla dessa värden. + +## Proffstips & vanliga fallgropar + +- **Proffstips:** Om du behöver att den spillade matrisen ska börja någon annanstans, ändra bara målcell (`A1`). `EXPAND`‑funktionen respekterar ankaret. +- **Se upp för:** Tomma celler i källområdet blir `0` i den spillade matrisen, vilket kan påverka din `REDUCE`‑summa. +- **Edge case:** När arbetsboken innehåller formler som beror på volatila funktioner (t.ex. `NOW()`), anropa `workbook.Calculate()` efter att alla formler har satts för att säkerställa att allt är uppdaterat. +- **Prestanda‑notering:** För enorma spill, överväg att begränsa storleken i `EXPAND`‑anropet; annars kan du allokera mer minne än nödvändigt. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/number-and-display-formats-in-excel/_index.md b/cells/swedish/net/number-and-display-formats-in-excel/_index.md index d5ca1cd4be..af853a11d8 100644 --- a/cells/swedish/net/number-and-display-formats-in-excel/_index.md +++ b/cells/swedish/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Om du vill ge dina Excel-ark en personlig touch är det rätt val att anpassa vi Automatisera talformatering i Excel med Aspose.Cells för .NET. Lär dig hur du använder datum-, procent- och valutaformat programmatiskt. ### [Anpassa visningsformat med användardefinierade siffror](./customizing-display-formats-with-user-defined-numbers/) Lär dig hur du anpassar visningsformat med Aspose.Cells för .NET. Formatera datum, procenttal och valuta med hjälp av den här steg-för-steg-guiden. +### [Hur du exporterar Excel med formatering – bevara talformat](./how-to-export-excel-with-formatting-preserve-number-format/) +Lär dig att exportera Excel-filer med Aspose.Cells för .NET samtidigt som du behåller befintliga talformat. +### [Formatera datum och tid till ISO i C# – Komplett guide](./format-datetime-to-iso-in-c-complete-guide/) +Lär dig hur du formaterar datum och tid till ISO‑format i C# med Aspose.Cells för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/swedish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..57acd656db --- /dev/null +++ b/cells/swedish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Lär dig hur du formaterar datum/tid till ISO när du extraherar datum + från Excel och visar ISO‑datum med Aspose.Cells i C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: sv +og_description: Formatera datum och tid till ISO gjort enkelt. Denna guide visar hur + du extraherar datum från Excel och visar ISO-datum med Aspose.Cells. +og_title: Formatera datum/tid till ISO i C# – Steg‑för‑steg‑handledning +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Formatera datum/tid till ISO i C# – Komplett guide +url: /sv/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime to iso i C# – Komplett guide + +Har du någonsin behövt **format datetime to iso** men källan finns i en Excel‑arbetsbok? Kanske innehåller cellen en japansk era som “令和3年5月1日” och du kliar dig i huvudet och undrar hur du omvandlar det till en ren `2021‑05‑01`‑sträng. Du är inte ensam. I den här handledningen kommer vi att **extract date from excel**, parsar den japanska eran och sedan **display iso date** i konsolen—allt med några rader C# och Aspose.Cells. + +Vi går igenom allt du behöver: det nödvändiga NuGet‑paketet, den exakta koden du kan kopiera‑klistra, varför varje rad är viktig, och ett antal edge‑case‑tips. I slutet har du ett återanvändbart snippet som formaterar datetime to iso oavsett hur knasigt det ursprungliga Excel‑värdet ser ut. + +## Vad du behöver + +- .NET 6.0 eller senare (koden kompileras även på .NET Framework 4.6+) +- Visual Studio 2022 (eller någon annan editor du föredrar) +- **Aspose.Cells for .NET** NuGet‑paket – `Install-Package Aspose.Cells` +- En Excel‑fil (eller en ny arbetsbok) som innehåller ett datum i japansk era‑format + +Det är allt. Inga extra bibliotek, ingen COM‑interop, bara en enda, väl‑dokumenterad metod. + +## Steg 1: Skapa en arbetsbok och skriv ett datum i japansk era + +Först behöver vi en arbetsbok att arbeta med. Om du redan har en Excel‑fil kan du ladda den med `new Workbook("path")`. I det här exemplet skapar vi en ny arbetsbok i minnet och placerar en japansk era‑sträng i cell **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Varför vi gör detta:** Aspose.Cells behandlar cellvärden som strängar som standard. Genom att infoga den råa era‑texten simulerar vi ett verkligt scenario där en japansk kund har angett datum i sin inhemska kalender. + +## Steg 2: Aktivera parsning av japansk era och extrahera datumet + +Aspose.Cells kan automatiskt översätta japanska era‑strängar till .NET `DateTime`‑objekt—förutsatt att du talar om för det. Flaggan `DateTimeParseOptions.EnableJapaneseEra` gör det tunga arbetet. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro‑tips:** Om du glömmer `EnableJapaneseEra`‑alternativet kommer biblioteket att returnera den ursprungliga strängen, och din efterföljande konvertering kommer att misslyckas. Verifiera alltid `parsed.Type` om du hanterar blandat innehåll. + +## Steg 3: Konvertera den parsade DateTime till ISO 8601 + +Nu när vi har ett riktigt `DateTime` är det en barnlek att göra om det till en ISO‑formaterad sträng. Mönstret `"yyyy-MM-dd"` följer ISO 8601‑datumsdelen, vilket är vad de flesta API:er förväntar sig. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +När programmet körs skrivs ut: + +``` +ISO date: 2021-05-01 +``` + +Det är den **display iso date** du var ute efter. + +## Fullt, körbart exempel + +Nedan är hela kodblocket som du kan kopiera rakt in i ett konsolprojekt. Inga dolda beroenden, ingen extra konfiguration. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Förväntad output:** `ISO date: 2021-05-01` + +## Steg‑för‑steg‑genomgång (Varför varje del är viktig) + +| Steg | Vad händer | Varför det är viktigt | +|------|------------|-----------------------| +| **Create workbook** | Initierar en Excel‑behållare i minnet. | Ger dig en sandlåda för testning utan att röra filsystemet. | +| **PutValue** | Lagrar den råa japanska era‑strängen i **A1**. | Efterliknar verklig datainmatning; säkerställer att parsern ser exakt texten. | +| **GetValue with `EnableJapaneseEra`** | Omvandlar era‑strängen till ett .NET `DateTime`. | Hanterar kalenderomvandlingen automatiskt—inga manuella uppslagstabeller behövs. | +| **`ToString("yyyy-MM-dd")`** | Formaterar `DateTime` till ISO 8601. | Garantiar en kultur‑invariant, sorteringsbar datumsträng som accepteras av REST‑API:er, databaser osv. | +| **Console.WriteLine** | Visar det slutgiltiga ISO‑datumet. | Bekräftar att hela pipeline:n fungerar från början till slut. | + +## Hantera vanliga variationer + +### 1. Olika cellpositioner + +Om ditt datum finns i **B2** eller ett namngivet område, ersätt helt enkelt `"A1"` med den aktuella adressen: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Flera datum i en kolumn + +När du behöver **extract date from excel** för många rader, loopa igenom det använda området: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback för icke‑era datum + +Om en cell redan innehåller en standard datumsträng fungerar parsern fortfarande, men du kanske vill ha ett skyddsnät: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Flaggan `TryParse` förhindrar undantag och returnerar det ursprungliga värdet om konverteringen misslyckas. + +### 4. Tidskomponent + +Om du även behöver tidsdelen, använd `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Det ger en fullständig ISO 8601‑tidsstämpel (`2021-05-01T00:00:00`). + +## Visuell hjälp + +![exempel på format datetime to iso](image.png "Ett exempel på format datetime to iso i C#") + +*Alt‑text:* *exempel på format datetime to iso som visar konsolutdata* + +## Vanliga frågor + +- **Kan jag använda detta med .xls‑filer?** + Ja. Aspose.Cells stödjer `.xls`, `.xlsx`, `.csv` och många andra format direkt ur lådan. + +- **Vad händer om arbetsboken är lösenordsskyddad?** + Ladda den med `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Är ISO‑formatet lokalt beroende?** + Nej. Mönstret `"yyyy-MM-dd"` är kultur‑invariant och garanterar samma sträng på vilken maskin som helst. + +- **Fungerar detta på .NET Core?** + Absolut—Aspose.Cells är kompatibel med .NET Standard 2.0. + +## Sammanfattning + +Vi har gått igenom hur man **format datetime to iso** genom att **extract date from excel**, parsar japanska era‑strängar och slutligen **display iso date** i konsolen. De grundläggande stegen—skapa en arbetsbok, skriv eller läs in era‑texten, aktivera japansk era‑parsning och formatera med `ToString("yyyy-MM-dd")`—är allt du behöver för de flesta scenarier. + +Nästa steg kan vara att: + +- Skriva tillbaka ISO‑datumen till en annan kolumn för vidare bearbetning. +- Exportera den transformerade arbetsboken till CSV för massimport. +- Kombinera denna logik med ett web‑API som accepterar Excel‑uppladdningar och returnerar JSON‑kodade ISO‑datum. + +Känn dig fri att experimentera med olika datumformat, tidszoner eller till och med anpassade kalendrar. Flexibiliteten i Aspose.Cells innebär att du sällan stöter på en vägg. + +Lycka till med kodandet, och må alla dina datum vara perfekt ISO‑kompatibla! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/swedish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..4460aeb454 --- /dev/null +++ b/cells/swedish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Hur man exporterar Excel med formatering och bevarar talformat. Lär dig + att konvertera Excel‑område, hämta formelresultat och exportera Excel med formatering + med hjälp av Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: sv +og_description: Hur man exporterar Excel med formatering och bevarar talformat. Steg‑för‑steg‑guide + för att konvertera Excel‑område, hämta formelresultat och exportera Excel med formatering + i C#. +og_title: Hur man exporterar Excel med formatering – Bevara talformat +tags: +- C# +- Aspose.Cells +- Excel automation +title: Hur man exporterar Excel med formatering – bevara talformat +url: /sv/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man exporterar Excel med formatering – bevara talformat + +Har du någonsin funderat **hur man exporterar Excel**‑data samtidigt som varje cells utseende behålls exakt som du ser det i arbetsboken? Kanske behöver du skicka en rapport till en kund, fylla ett rutnät‑kontroll eller bara lagra värdena i en databas. Smärtan är oftast att talformatet går förlorat eller att formler blir till rena strängar. + +I den här handledningen går vi igenom ett komplett, färdigt C#‑exempel som **bevarar talformat**, **konverterar ett Excel‑område** till en `DataTable`, **hämtar formelresultatet**, och slutligen **exporterar Excel med formatering** med Aspose.Cells. I slutet har du en enda metod som du kan klistra in i vilket projekt som helst och anropa med en arbetsbladsreferens. + +> **Snabb förhandsgranskning:** koden skapar en arbetsbok, skriver ett värde och en formel, säger åt Aspose.Cells att exportera cellerna som formaterade strängar, och skriver ut `123.456 | 246.912` – exakt vad du förväntar dig att se i Excel. + +--- + +## Vad du behöver + +- **Aspose.Cells for .NET** (gratis provversion räcker för inlärning) +- .NET 6.0 eller senare (API‑et är detsamma på .NET Framework) +- En grundläggande C#‑utvecklingsmiljö (Visual Studio, VS Code, Rider… du bestämmer) + +Inga extra NuGet‑paket utöver Aspose.Cells krävs. Om du inte har installerat det ännu, kör: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Steg 1 – Skapa en arbetsbok och skriv värden (inklusive en formel) + +Först startar vi en ny arbetsbok och lägger in ett numeriskt värde i **A1**. Sedan lägger vi till en enkel formel i **B1** som multiplicerar den första cellen med två. Detta förbereder demonstrationen av **get formula result** senare. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Varför detta är viktigt:** +- `PutValue` lagrar det råa talet, medan `PutFormula` lagrar beräkningen. +- Aspose.Cells håller formeln **levande**, så när vi senare frågar efter cellens värde får vi faktiskt `246.912`, inte strängen `"=A1*2"`. + +--- + +## Steg 2 – Berätta för Aspose.Cells att exportera värden som formaterade strängar + +Om du bara anropar `ExportDataTable` med standardinställningar returneras numeriska celler som deras underliggande `double`‑värden. Det tar bort tusentalsavgränsare, valutasymboler eller anpassade decimalplatser du eventuellt har ställt in. Klassen `ExportTableOptions` låter oss **bevara talformat** och **exportera som sträng**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Viktig punkt:** `ExportNumberFormat = true` är flaggan som får **preserve number format** att fungera. Utan den ser du `"123.456"` och `"246.912"` som råa tal, vilket kan se okej ut i kod men inte när du klistrar in data i ett UI som förväntar sig samma formatering som i Excel. + +--- + +## Steg 3 – Skriv ut den exporterade datan (verifiering) + +Nu när vi har en `DataTable` full av formaterade strängar, låt oss dumpa innehållet till konsolen. Detta visar också att vi framgångsrikt **get formula result** utan att själva utvärdera formeln. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +När programmet körs skrivs ut: + +``` +123.456 | 246.912 +``` + +Lägg märke till hur den andra kolumnen visar **formelresultatet**, inte formeltexten. Det är exakt vad du behöver när du **exporterar Excel med formatering** för vidare bearbetning. + +--- + +## Steg 4 – Konvertera större Excel‑områden (valfritt) + +Exemplet ovan hanterar en liten `A1:B1`‑slice, men i verkligheten krävs ofta export av hela tabeller. Samma metod fungerar för vilket rektangulärt block som helst – justera bara argumenten `firstRow`, `firstColumn`, `totalRows` och `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Proffstips:** Om ditt blad redan har en rubrikrad, sätt `includeColumnNames` till `true`. Aspose.Cells använder då den första raden i området som kolumnnamn, vilket är praktiskt när du senare binder `DataTable` till ett UI‑rutnät. + +--- + +## Steg 5 – Vanliga fallgropar & hur du undviker dem + +| Problem | Varför det händer | Lösning | +|---------|-------------------|---------| +| **Tal förlorar kommatecken eller valutasymboler** | `ExportAsString` är `false` eller `ExportNumberFormat` saknas | Sätt både `ExportAsString = true` **och** `ExportNumberFormat = true`. | +| **Formelceller returnerar formeltexten** | Du anropade inte `CalculateFormula` före export (endast behövs om arbetsboken inte är satt till auto‑calculate) | Aktivera auto‑calculate (`workbook.CalculateFormula()`) eller förlita dig på `ExportAsString` som tvingar utvärdering. | +| **Rubriker visas som datarader** | `includeColumnNames` är `false` medan ditt område innehåller en rubrikrad | Sätt `includeColumnNames = true` för att behandla den första raden som kolumnnamn. | +| **Stora områden ger minnespress** | Export av hela bladet på en gång laddar allt i minnet | Exportera i delar (t.ex. 500 rader åt gången) och slå ihop `DataTable`s vid behov. | + +--- + +## Steg 6 – Fullt fungerande exempel (Kopiera‑klistra‑klart) + +Nedan är hela programmet, från `using`‑satser till `Main`. Klistra in det i en konsolapp och tryck **F5** – du ser den formaterade utskriften omedelbart. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Förväntad utskrift** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Det är hela **hur man exporterar Excel**‑arbetsflödet, med formatering intakt, formelresultat utvärderade och en ren `DataTable` klar för vilken .NET‑konsument som helst. + +--- + +## Slutsats + +Vi har gått igenom allt du behöver veta om **hur man exporterar Excel**‑data samtidigt som du **bevarar talformat**, **konverterar ett Excel‑område** till en `DataTable`, och **hämtar formelresultat** utan extra parsning. Nyckeln är konfigurationen av `ExportTableOptions` – när du sätter `ExportAsString` och `ExportNumberFormat` till `true` sköter Aspose.Cells det tunga lyftet åt dig. + +Från här kan du: + +- Koppla `DataTable` till ett WPF `DataGrid` eller en ASP.NET MVC‑vy. +- Skriva tabellen till en CSV‑fil medan du behåller den exakta visuella representationen. +- Utöka metoden till flera blad eller dynamiska områden. + +Känn dig fri att experimentera med olika format (valuta, procent) och större datamängder. Om du stöter på några konstigheter, gå tillbaka till tabellen **vanliga fallgropar** – den täcker de mest frekventa hindren när du **exporterar Excel med formatering**. + +Lycka till med kodandet, och må dina exporterade kalkylblad alltid se lika polerade ut som originalen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/swedish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..b1ce917d0a --- /dev/null +++ b/cells/swedish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,207 @@ +--- +category: general +date: 2026-03-22 +description: Lär dig hur du duplicerar pivottabell i C# med Aspose.Cells. Den här + guiden visar också hur du kopierar rader och laddar en Excel-arbetsbok i C# för + sömlös Excel‑automatisering av radkopiering. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: sv +og_description: Hur du duplicerar pivottabell i C#? Följ den här koncisa handledningen + för att ladda en Excel-arbetsbok i C#, kopiera rader och bemästra Excel‑automation + för att kopiera rader. +og_title: Hur man duplicerar pivot i C# – Komplett guide +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Hur man duplicerar Pivot i C# – Komplett steg‑för‑steg‑guide +url: /sv/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man duplicerar pivot i C# – Komplett steg‑för‑steg‑guide + +Har du någonsin undrat **hur man duplicerar pivot** tabeller programatiskt utan att manuellt dra dem i Excel? Du är inte ensam. I många rapporteringspipeline behövs samma pivottlayout på en ny uppsättning rader, och att göra det för hand är slöseri med tid. + +Den goda nyheten? Med några rader C# kan du ladda en Excel‑arbetsbok, definiera området som innehåller pivoten, och **how to copy rows** så att pivoten visas på en ny plats — allt i ett automatiserat körning. I den här handledningen kommer vi också att gå igenom grunderna för **load excel workbook c#** och ge dig en solid grund för **excel automation copy rows**‑uppgifter. + +> **What you’ll walk away with** +> • Ett komplett, körbart exempel som duplicerar en pivottabell. +> • En förklaring av varför varje rad är viktig. +> • Tips för att hantera kantfall som dolda arbetsblad eller flera pivoter. + +--- + +## Förutsättningar + +Innan vi dyker ner, se till att du har: + +- **.NET 6.0** (eller någon nyare .NET‑version) installerad. +- **Aspose.Cells for .NET** – biblioteket vi använder för att manipulera Excel‑filer. Du kan hämta det via NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- En källarbetsbok (`Source.xlsx`) som redan innehåller en pivottabell i området **A1:J20** (området vi ska duplicera). +- Grundläggande kunskap om C#‑syntax – inget avancerat, bara de vanliga `using`‑satserna och `Main`‑metoden. + +Om någon av dessa punkter känns obekanta, pausa ett ögonblick och installera paketet; resten av guiden förutsätter att biblioteket är redo att användas. + +![illustration av hur man duplicerar pivot i C# med Aspose.Cells](https://example.com/duplicate-pivot.png "illustration av hur man duplicerar pivot i C#") + +*Bildtext: "illustration av hur man duplicerar pivot i C# exempel som visar käll‑ och duplicerade pivotrader".* + +--- + +## Steg 1: Load Excel Workbook C# – Öppna filen + +Det allra första du behöver göra när du vill **load excel workbook c#** är att skapa en `Workbook`‑instans som pekar på din fil. Detta objekt ger dig åtkomst till varje arbetsblad, cell och pivot i filen. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Varför detta är viktigt:** +`Workbook` abstraherar hela Excel‑filen till en modell i minnet. Utan att ladda den först kan du inte inspektera pivotens placering eller kopiera rader. Dessutom upptäcker konstruktorn automatiskt filformatet (XLS, XLSX, CSV osv.), så du behöver ingen extra kod för formatdetektering. + +--- + +## Steg 2: How to Copy Rows – Definiera pivotområdet + +Nu när arbetsboken är i minnet måste vi tala om för Aspose.Cells vilka rader som innehåller pivoten. I vårt exempel ligger pivoten i **A1:J20**, vilket motsvarar raderna **0‑19** (nollbaserad indexering). Vi omsluter detta i en `CellArea`‑struktur. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Varför vi använder `CellArea`:** +Det är ett lättviktigt sätt att beskriva ett rektangulärt block. När du senare anropar `CopyRows` läser metoden detta objekt för att exakt veta vilka rader som ska dupliceras. Om du någonsin behöver justera intervallet (t.ex. om pivoten växer till kolumn K) ändrar du bara värdet för `endColumn`. + +--- + +## Steg 3: Åtkomst till målbladet + +De flesta arbetsböcker har bara ett blad, men API‑et fungerar likadant för flera blad. Hämta det första arbetsbladet (index 0) – det är där den ursprungliga pivoten finns. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro tip:** +Om du har namngivna blad kan du även hämta dem med namn: `workbook.Worksheets["Sheet1"]`. Detta hjälper dig undvika hårdkodade index när arbetsbokens struktur förändras. + +--- + +## Steg 4: How to Copy Rows – Duplicera pivottabellen + +Här är kärnan i **how to duplicate pivot**: vi kopierar raderna som innehåller pivoten till en ny plats. I vårt fall börjar vi på rad 31 (nollbaserad index 30). Metoden `CopyRows` kopierar *både* data och den underliggande pivot‑cachen, så de nya raderna beter sig exakt som originalet. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Vad som händer under huven?** +`CopyRows` klonar varje rad och bevarar formler, format och pivottdefinitioner. Eftersom pivotens cache finns på arbetsboksnivå refererar den duplicerade pivoten automatiskt till samma datakälla – ingen extra konfiguration behövs. + +**Kantfall – dolda rader:** +Om någon av raderna i källintervallet är dolda, förblir de dolda efter kopieringen. Vill du visa dem, anropa `worksheet.Rows[destRow].IsHidden = false` efter kopieringen. + +--- + +## Steg 5: Spara arbetsboken – Verifiera duplikatet + +Till sist skriver du tillbaka ändringarna till disk. Du kan skriva över originalfilen eller, för säkerhets skull, spara till ett nytt namn så att du kan jämföra före/efter. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Resultat du bör se:** +Öppna `CopyWithPivot.xlsx`. Du hittar den ursprungliga pivoten i **A1:J20** och en identisk kopia som börjar på **A31:J50**. Båda pivoterna kan uppdateras oberoende, och eventuella slicers som är kopplade till originalet fungerar fortfarande för kopian eftersom de delar samma cache. + +--- + +## Vanliga frågor & variationer + +### Kan jag duplicera flera pivoter samtidigt? + +Absolut. Loopa igenom alla pivottabeller (`worksheet.PivotTables`) och kopiera varje intervall till en annan destination. Se bara till att destinationsintervallen inte överlappar. + +### Vad händer om källarbetsboken är lösenordsskyddad? + +Aspose.Cells låter dig öppna en skyddad fil genom att skicka lösenordet till `Workbook`‑konstruktorn: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Hur kopierar man rader utan att påverka formler? + +Om du bara behöver *värdena* (inga formler), använd `CopyRows` med flaggan `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Finns det ett sätt att kopiera rader till en *annan* arbetsbok? + +Ja. Efter att ha kopierat rader i källbladet kan du klona bladet till en annan `Workbook`‑instans via `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +--- + +## Proffstips för pålitlig Excel Automation Copy Rows + +- **Validera intervallet** innan du kopierar. En snabb `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` förhindrar out‑of‑range‑fel. +- **Stäng av beräkning** medan du kopierar stora områden: `workbook.Settings.CalcMode = CalcMode.Manual;` – detta snabbar upp operationen avsevärt. +- **Disposera objekt** (`workbook.Dispose()`) om du bearbetar många filer i en loop för att frigöra inhemska resurser. +- **Logga operationen** – särskilt i produktionspipeline – så att du kan spåra vilka filer som bearbetats och fånga fel tidigt. + +--- + +## Slutsats + +Du vet nu **how to duplicate pivot** tabeller i C# med Aspose.Cells, och du har sett hela arbetsflödet från **load excel workbook c#** till **excel automation copy rows** och slutligen sparandet av resultatet. Exemplet är självständigt, körs direkt och kan utökas för att hantera flera pivoter, skyddade filer eller kopiering mellan arbetsböcker. + +Nästa steg? Prova att anpassa skriptet för att: + +- Uppdatera den duplicerade pivoten programatiskt (`pivotTable.RefreshData();`). +- Exportera det duplicerade området till en CSV för vidare bearbetning. +- Integrera koden i ett ASP.NET Core‑API så att användare kan ladda upp en fil och få en version med duplicerad pivot direkt. + +Lycka till med kodandet, och må din Excel‑automation alltid vara smidig! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/row-and-column-management/_index.md b/cells/swedish/net/row-and-column-management/_index.md index e38619a2b9..a3f1e73bd9 100644 --- a/cells/swedish/net/row-and-column-management/_index.md +++ b/cells/swedish/net/row-and-column-management/_index.md @@ -66,6 +66,8 @@ Lär dig hur du visar rader och kolumner i Excel med hjälp av Aspose.Cells för Lär dig hur du tar bort en kolumn i en Excel-fil med Aspose.Cells för .NET. Följ vår detaljerade steg-för-steg-guide för att effektivisera dina Excel-filändringar. ### [Ta bort en rad i Aspose.Cells .NET](./delete-row-aspose-cells/) Lär dig hur du tar bort en rad i Excel med Aspose.Cells för .NET. Den här steg-för-steg-guiden täcker förutsättningar, kodiport och en detaljerad genomgång för sömlös datamanipulation. +### [Aspose Cells ta bort rader – skydda rubrikrad i Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Lär dig hur du tar bort rader men behåller rubrikraden skyddad i Excel med Aspose.Cells för .NET. ### [Ta bort flera rader i Aspose.Cells .NET](./delete-multiple-rows-aspose-cells/) Lär dig ta bort flera rader i Excel med Aspose.Cells för .NET. Den här detaljerade steg-för-steg-guiden täcker förutsättningar, kodningsexempel och vanliga frågor för utvecklare. ### [Infoga en kolumn i Aspose.Cells .NET](./insert-column-aspose-cells/) diff --git a/cells/swedish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/swedish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..49495cbab6 --- /dev/null +++ b/cells/swedish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells raderar rader samtidigt som rubrikraden skyddas. Lär dig + hur du hämtar den första tabellen och säkert tar bort Excel‑tabellrader i C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: sv +og_description: Aspose Cells raderar rader samtidigt som rubrikraden skyddas. Lär + dig hur du hämtar den första tabellen och säkert tar bort Excel‑tabellrader i C#. +og_title: Aspose Cells Radera rader – Skydda rubrikrad i Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells ta bort rader – skydda rubrikrad i Excel +url: /sv/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Skydda rubrikrad i Excel + +Har du någonsin försökt **aspose cells delete rows** från en tabell bara för att upptäcka att rubriken försvann? Det är en vanlig fallgrop när man manipulerar Excel‑ark programmässigt. I den här guiden går vi igenom en komplett, körbar lösning som **skyddar rubrikraden**, visar hur du **retrieve first table**, och säkert **delete Excel table rows** utan att förstöra strukturen. + +Vi täcker allt från att läsa in arbetsboken till att hantera det undantag som Aspose kastar när du försöker göra rubriken föräldralös. I slutet har du ett robust mönster som du kan använda i vilket .NET‑projekt som helst som använder Aspose.Cells. + +--- + +## Vad du behöver + +- **Aspose.Cells for .NET** (v23.12 eller senare) – biblioteket som låter dig arbeta med Excel‑filer utan att Office är installerat. +- En grundläggande C#‑utvecklingsmiljö (Visual Studio, Rider eller `dotnet`‑CLI). +- En Excel‑fil (`TableWithHeader.xlsx`) som innehåller minst ett **ListObject** (Excel‑tabell) med en rubrikrad i den första raden. + +Inga ytterligare NuGet‑paket krävs utöver Aspose.Cells. + +--- + +## Steg 1: Läs in arbetsboken och hämta den första tabellen + +Det första du måste göra är att öppna arbetsboken och hämta tabellen du vill ändra. Här kommer det sekundära nyckelordet **retrieve first table** in i bilden. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Varför detta är viktigt:** + +- `Workbook` läser filen utan att Excel behöver vara installerat. +- `worksheet.ListObjects[0]` är det enklaste sättet att **retrieve first table**; om du har flera tabeller kan du iterera eller använda tabellnamnet. + +> **Proffstips:** Om du inte är säker på om ett arbetsblad faktiskt innehåller en tabell, kontrollera `worksheet.ListObjects.Count` först för att undvika ett `IndexOutOfRangeException`. + +--- + +## Steg 2: Skydda rubrikraden medan rader tas bort + +Nu kommer kärnan i saken: **aspose cells delete rows** utan att radera rubriken. Asposes `DeleteRows`‑metod tar ett nollbaserat startindex och ett antal. Att försöka ta bort rubriken (rad 0) utlöser ett undantag, vilket är precis vad vi vill undvika. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Förklaring av logiken:** + +| Steg | Orsak | +|------|--------| +| `table.DeleteRows(1, 2);` | Index 1 pekar på den **andra** raden (den första dataraden). Att ta bort två rader tar bort rader 2‑3 i Excel‑termer, och lämnar rubriken (rad 1) orörd. | +| `catch (Exception ex)` | Aspose kastar ett undantag **endast** när operationen skulle göra rubriken föräldralös. Att fånga det låter dig logga ett vänligt meddelande istället för att krascha appen. | +| `Save` | Att spara förändringarna låter dig öppna `Result.xlsx` och se att rubriken fortfarande finns kvar. | + +> **Vad händer om du verkligen måste ta bort rubriken?** +> Använd `table.ShowHeaders = false;` innan borttagning, eller ta bort hela tabellen och återskapa den. Men i de flesta affärsscenarier vill du **protect header row**. + +--- + +## Steg 3: Verifiera resultatet – Förväntad utdata + +Efter att ha kört programmet, öppna `Result.xlsx`. Du bör se: + +- Den första raden innehåller fortfarande de ursprungliga kolumnrubrikerna. +- Rader 2‑3 (de vi riktade in oss på) är borta, och återstående data har flyttats upp. + +Konsolen kommer att visa: + +``` +Rows deleted successfully. +``` + +Om du av misstag försökte ta bort rubriken (t.ex. `table.DeleteRows(0, 1);`), skulle utdata vara: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Det meddelandet bekräftar att Asposes inbyggda skydd fungerar som det ska. + +--- + +## Steg 4: Alternativa sätt att **Delete Excel Table Rows** + +Ibland behöver du mer kontroll — som att ta bort rader baserat på ett villkor, eller ta bort icke‑sammanhängande rader. Här är två snabba mönster som håller rubriken säker. + +### 4.1 Ta bort rader med datafiltrering + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Massborttagning med ett område + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Båda kodsnuttarna respekterar regeln **protect header row** eftersom startindexet aldrig går under 1. + +--- + +## Steg 5: Vanliga fallgropar & hur du undviker dem + +| Fallgrop | Varför det händer | Lösning | +|----------|-------------------|--------| +| Av misstag radera rubriken | Använder `0` som startindex | Börja alltid på `1` för datarader, eller kontrollera `table.ShowHeaders` först. | +| `IndexOutOfRangeException` när bladet saknar tabeller | Förutsätter att en tabell finns | Verifiera `worksheet.ListObjects.Count > 0` innan du åtkommer `[0]`. | +| Ändringar sparas inte | Glömmer att anropa `Save` | Anropa `workbook.Save` efter ändringar. | +| Borttagning av rader i mitten förskjuter index, vilket leder till att rader hoppas över | Framåtriktad iteration vid borttagning | Iterera **baklänges** eller samla rader att ta bort först. | + +--- + +## Steg 6: Sätt ihop allt – Fullt fungerande exempel + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Kör detta program, öppna `Result.xlsx`, och du kommer att se att rubriken är orörd medan de valda raderna är borta. Det är den **complete, self‑contained solution** för **aspose cells delete rows** utan att offra rubriken. + +--- + +## Slutsats + +Vi har just demonstrerat hur man **aspose cells delete rows** samtidigt som man **protecting the header row**, hur man **retrieve first table**, och flera sätt att **delete excel table rows** säkert. De viktigaste slutsatserna är: + +- Börja alltid borttagningar på index 1 för att hålla rubriken levande. +- Använd `try/catch` för att hantera Asposes inbyggda skyddsunntag. +- Verifiera att tabellen finns innan du arbetar, och iterera baklänges när du tar bort rader villkorsbaserat. + +Redo att ta nästa steg? Prova att kombinera detta tillvägagångssätt med **Aspose Cells’** styling‑API:er för att markera rader som ska tas bort innan de tas bort, eller automatisera processen över flera arbetsblad. Möjligheterna är oändliga, och nu har du ett pålitligt mönster att bygga vidare på. + +Om du fann den här handledningen hjälpsam, ge den en tumme‑upp, dela den med kollegor, eller lämna en kommentar med dina egna edge‑case‑lösningar. Lycka till med kodandet! + +--- + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/swedish/net/saving-and-exporting-excel-files-with-options/_index.md index 8feb0d7e5e..d34777e89d 100644 --- a/cells/swedish/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/swedish/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Lär dig hur du hanterar varningar när du laddar Excel-filer i .NET med Aspose. Lär dig hur du anger dokumentegenskaper som version, författare och titel i en Excel-fil programmatiskt med hjälp av Aspose.Cells för .NET med steg-för-steg-instruktioner. ### [Trimma inledande tomma rader och kolumner vid export](./trimming-leading-blank-rows-and-columns/) Effektivisera dina CSV-exporter genom att ta bort inledande tomma rader och kolumner med Aspose.Cells för .NET. Ren data är bara några steg bort. +### [Hur man sparar arbetsbok i C# – Komplett guide för Excel-automatisering](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Lär dig steg för steg hur du sparar en arbetsbok i C# med Aspose.Cells och automatiserar hela Excel-processen. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/swedish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..acb37b9cb5 --- /dev/null +++ b/cells/swedish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Hur man sparar arbetsbok i C# med Aspose.Cells – steg‑för‑steg‑guide + som täcker hur man laddar Excel, skapar blad, återanvänder blad och genererar rapport. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: sv +og_description: Hur man sparar arbetsbok i C# med Aspose.Cells. Lär dig hur du laddar + Excel, skapar blad, återanvänder blad och genererar rapport i en enda handledning. +og_title: Hur man sparar en arbetsbok i C# – Komplett guide för Excel‑automatisering +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Hur man sparar en arbetsbok i C# – Komplett guide för Excel‑automatisering +url: /sv/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så sparar du en arbetsbok i C# – Komplett guide för Excel‑automatisering + +Har du någonsin funderat **hur man sparar en arbetsbok** i C# efter att du har bearbetat data? Du är inte ensam. De flesta utvecklare stöter på ett hinder när rapporten ser perfekt ut på skärmen men vägrar att skriva tillbaka till disk. I den här handledningen går vi igenom ett fullständigt exempel som inte bara visar **hur man sparar en arbetsbok**, utan också täcker **hur man laddar Excel**, **hur man skapar blad**, **hur man återanvänder blad** och **hur man genererar rapport** – allt med Aspose.Cells. + +Tänk dig att det är ett kaffepaus‑samtal där jag drar fram koden från min laptop och förklarar varje rad. I slutet har du ett körbart program som laddar en mall, injicerar data via SmartMarker, återanvänder ett befintligt detaljbladnamn och slutligen skriver filen till din mapp. Inga mysterier, bara tydliga steg du kan kopiera‑klistra. + +## Vad du behöver + +- **Aspose.Cells for .NET** (senaste versionen 2026). Du kan hämta den från NuGet med `Install-Package Aspose.Cells`. +- En .NET‑utvecklingsmiljö (Visual Studio, Rider eller VS Code med C#‑tillägget fungerar bra). +- En grundläggande Excel‑mallfil med namnet `MasterTemplate.xlsx` placerad i en mapp du kontrollerar. +- Grundläggande kunskaper i C# – om du har skrivit ett `Console.WriteLine` tidigare är du redo att köra. + +> **Proffstips:** Håll din mall i en separat *Resources*-mapp och markera den som “Copy if newer” så att sökvägen förblir konsekvent mellan byggen. + +Nu dyker vi ner i koden. + +## Steg 1: Hur man laddar Excel – Öppna mall‑arbetsboken + +Det första du måste göra är att få arbetsboken i minnet. Aspose.Cells gör detta till en end‑rad, men att förstå varför hjälper när du senare behöver felsöka. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Varför detta är viktigt:** När du laddar arbetsboken får du åtkomst till varje kalkylblad, stil och namngivet område i mallen. Om filen inte hittas kastar Aspose en `FileNotFoundException`, så dubbelkolla sökvägen. +- **Edge case:** Om mallen är lösenordsskyddad, skicka lösenordet till `Workbook`‑konstruktorn: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Steg 2: Hur man återanvänder blad – Konfigurera SmartMarker‑alternativ + +SmartMarker kan automatiskt skapa ett nytt detaljblad, men du kanske redan har ett blad som heter **Detail**. För att undvika en krock talar vi om för processorn att återanvända det namnet. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Varför detta är viktigt:** Utan detta alternativ skulle Aspose lägga till ett numeriskt suffix (t.ex. “Detail1”) vilket kan bryta makron eller formler som förväntar ett fast bladnamn. +- **Vad händer om bladet inte finns?** Aspose skapar det åt dig – så samma kod fungerar oavsett om bladet finns eller inte. + +## Steg 3: Hur man skapar blad – Förbered datakällan + +Även om vi inte manuellt lägger till ett blad här, bestämmer den data du matar in i SmartMarker om ett nytt blad ska skapas. Låt oss bygga ett enkelt anonymt objekt som efterliknar en orderlista. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Varför detta är viktigt:** SmartMarker skannar mallen efter markörer som `&=Header` och `&=Items.Id`. Strukturen på `orderData` måste exakt matcha dessa markörer, annars hoppar processorn tyst över dem. +- **Variation:** Om du hämtar data från en databas, ersätt den anonyma typen med en lista av DTO:er eller en `DataTable`. Processorn hanterar båda. + +## Steg 4: Hur man genererar rapport – Processa SmartMarker + +Nu binder vi data till mallen. Processorn går igenom det första kalkylbladet, ersätter markörer och bygger detaljbladet. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Varför detta är viktigt:** Denna enda rad gör det tunga arbetet – fyller i rubriken, itererar över `Items` och respekterar `DetailSheetNewName` som vi satte tidigare. +- **Vanlig fråga:** *Vad händer om jag har flera kalkylblad med markörer?* Loop igenom varje kalkylblad och anropa `SmartMarkerProcessor.Process` separat. + +## Steg 5: Hur man sparar arbetsbok – Skriv den resulterande filen + +Till sist skriver vi den modifierade arbetsboken tillbaka till disk. Här blir **hur man sparar en arbetsbok** konkret. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Varför detta är viktigt:** `Save`‑metoden stödjer många format (`.xlsx`, `.xls`, `.csv`, `.pdf` osv.). Som standard skriver den en Excel‑fil, men du kan skicka ett `SaveOptions`‑objekt för att ändra utdata. +- **Edge case:** Om målfilen är öppen i Excel kastar `Save` en `IOException`. Se till att stänga alla instanser eller använd ett unikt filnamn för varje körning. + +![Exempel på hur man sparar arbetsbok i C#](/images/how-to-save-workbook-csharp.png "Hur man sparar arbetsbok i C# – visuell översikt av processen") + +### Fullständigt fungerande exempel + +Sätter vi ihop allt får du en självständig konsolapp som du kan kompilera och köra: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Förväntad utdata:** Efter körning hittar du `SmartMarkerWithDupDetail.xlsx` i `YOUR_DIRECTORY`. Öppna den så bör du se: + +- Den ursprungliga rubriken fylld med “Orders”. +- Ett nytt (eller återanvänt) blad med namnet **Detail** som innehåller två rader: `Id=1, Qty=5` och `Id=2, Qty=3`. + +Om **Detail**‑bladet redan fanns, kommer dess innehåll att skrivas över med den nya datan – inga extra blad som skräpar ner filen. + +## Vanliga frågor (FAQ) + +| Fråga | Svar | +|----------|--------| +| *Kan jag spara till PDF istället för XLSX?* | Ja. Ersätt `workbook.Save("file.xlsx")` med `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Vad händer om min mall har flera SmartMarker‑sektioner?* | Anropa `SmartMarkerProcessor.Process` på varje kalkylblad som innehåller markörer, eller skicka en samling av dataobjekt som matchar varje sektion. | +| *Finns det ett sätt att lägga till data istället för att skriva över Detail‑bladet?* | Använd `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (tillgängligt i nyare Aspose‑versioner). | +| *Behöver jag disponera Workbook?* | Klassen `Workbook` implementerar `IDisposable`. Wrappa den i ett `using`‑block för ren resurs‑hantering. | + +## Slutsats + +Vi har precis gått igenom **hur man sparar en arbetsbok** i C# från början till slut, och demonstrerat hela kedjan: **hur man laddar Excel**, **hur man skapar blad** (implicit via SmartMarker), **hur man återanvänder blad** och **hur man genererar rapport**. Koden är klar att klistra in i vilket .NET‑projekt som helst, och förklaringarna ger dig tillräckligt med kontext för att anpassa den till mer komplexa scenarier – som flervalblad‑rapporter, villkorlig formatering eller export till PDF. + +Redo för nästa utmaning? Prova att lägga till ett diagram som visualiserar orderkvantiteter, eller byt ut utdataformatet till CSV för vidare bearbetning. Samma principer – laddning, bearbetning och sparning – gäller fortfarande, så du kommer att återanvända detta mönster i många rapporteringsuppgifter. + +Om du stöter på problem eller har idéer för utökningar, lämna gärna en kommentar. Lycka till med kodandet, och njut av den smidiga upplevelsen att äntligen kunna **spara arbetsbok** exakt som du vill! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/smart-markers-dynamic-data/_index.md b/cells/swedish/net/smart-markers-dynamic-data/_index.md index ae7b99e58c..262f4e1322 100644 --- a/cells/swedish/net/smart-markers-dynamic-data/_index.md +++ b/cells/swedish/net/smart-markers-dynamic-data/_index.md @@ -53,7 +53,7 @@ Att hantera tomma värden i datamängder kan vara krångligt, men Aspose.Cells f Hanterar du ofta varierande mängder data? Funktionen variabel array i Smart Markers låter dig hantera datalistor flexibelt. Det betyder att du kan generera rapporter som anpassar sig till olika storlekar på datamängder utan att behöva omforma dina mallar varje gång. Genom att lära dig hur du implementerar variabel arrayer kan du effektivisera dina rapporteringsprocesser och förbättra din datapresentation. Den här handledningen bryter ner stegen som hjälper dig att komma igång med variabel arrayer i dina rapporter. [Läs mer](./variable-array-smart-markers/) ## Använd generisk lista i smarta markörer -Flexibiliteten hos generiska listor gör det möjligt för utvecklare att hantera data på ett strukturerat sätt utan att prestandan försämras. I den här handledningen lär du dig hur du använder generiska listor med smarta markörer för att skapa robusta, dynamiska Excel-rapporter. Den här metoden säkerställer att du enkelt kan manipulera datasamlingar samtidigt som du bibehåller stark typsäkerhet och prestanda i dina applikationer. Följ med för att se hur detta kan gynna din rapportgenerering. [Läs mer](./generic-list-smart-markers/) +Flexibiliteten hos generiska listor gör det möjligt för utvecklare att hantera data på ett strukturerat sätt utan att prestandan försämras. I den här handledningen lär du dig hur du använder generiska listor med smarta markörer för att skapa robusta, dynamiska Excel-rapporter. Denna metod säkerställer att du enkelt kan manipulera datasamlingar samtidigt som du bibehåller stark typsäkerhet och prestanda i dina applikationer. Följ med för att se hur detta kan gynna din rapportgenerering. [Läs mer](./generic-list-smart-markers/) ## Smarta markörer i Aspose.Cells för dynamiska datahandledningar ### [Lägg till anpassade etiketter med smarta markörer i Aspose.Cells](./add-custom-labels-smart-markers/) @@ -84,6 +84,7 @@ Lås upp kraften i Aspose.Cells med den här steg-för-steg-handledningen om hur Frigör potentialen i Excel-rapportering med Aspose.Cells genom att enkelt hantera kapslade objekt med hjälp av smarta markörer i en steg-för-steg-guide. ### [Implementera variabel array med smarta markörer Aspose.Cells](./variable-array-smart-markers/) Lås upp kraften i Aspose.Cells. Lär dig hur du implementerar variabla arrayer med smarta markörer steg för steg för sömlös generering av Excel-rapporter. +### [Hur man genererar Excel-rapport i C# – Fullständig guide med SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/swedish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..1b9078fccb --- /dev/null +++ b/cells/swedish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-03-22 +description: Hur man genererar Excel‑rapport i C# med en master‑detail‑mall. Lär dig + att snabbt fylla i Excel‑mall i C# med SmartMarker för repeterbara blad. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: sv +og_description: Hur man genererar Excel‑rapport i C# med en återanvändbar mall. Denna + steg‑för‑steg‑guide visar hur du fyller i Excel‑mallen i C# med master‑detail‑data. +og_title: Hur man genererar Excel‑rapport i C# – Komplett SmartMarker‑handledning +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Hur man genererar Excel‑rapport i C# – Fullständig guide med SmartMarker +url: /sv/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man genererar Excel‑rapport i C# – Fullständig guide med SmartMarker + +Har du någonsin undrat **hur man genererar Excel‑rapport** i C# utan att skriva oändlig cell‑för‑cell‑kod? Du är inte ensam. De flesta utvecklare stöter på problem när de behöver en polerad, flikar‑rapport som speglar master‑detail‑relationer—tänk beställningar och radposter—men de vill inte uppfinna hjulet på nytt varje gång. + +Den goda nyheten? Med en färdig Excel‑mall och Aspose.Cells **SmartMarker**‑motor kan du **populate Excel template C#** på bara några få rader. I den här handledningen går vi igenom ett verkligt scenario, förklarar varför varje steg är viktigt och ger dig ett komplett, körbart exempel som du kan kopiera‑klistra in idag. + +> **Vad du får:** en master‑detail Excel‑rapport där varje beställning får ett eget kalkylblad, allt styrt av enkla C#‑objekt. Ingen manuell looping över celler, inga sköra formler—bara ren, underhållbar kod. + +--- + +## Förutsättningar + +Innan vi dyker ner, se till att du har: + +- **.NET 6.0** (eller senare) installerat – koden riktar sig mot .NET 6 men fungerar även på .NET Framework 4.7+. +- **Aspose.Cells for .NET** NuGet‑paket (`Install-Package Aspose.Cells`) – detta tillhandahåller `Workbook`, `SmartMarkerProcessor` och relaterade klasser. +- En Excel‑fil med namnet **MasterDetailTemplate.xlsx** placerad i `YOUR_DIRECTORY`. Den ska innehålla ett SmartMarker‑block som `{{Orders.OrderId}}` i det första bladet och ett nästlat block `{{Orders.Items.Prod}}` för radposterna. +- En grundläggande förståelse för C#‑anonyma typer – vi kommer att använda dem för att modellera beställningar och artiklar. + +Om någon av dessa är obekanta, oroa dig inte. Vi kommer att nämna alternativ (t.ex. med EPPlus) senare, men kärnkonceptet förblir detsamma. + +## Steg 1: Ladda Excel‑mallen som innehåller SmartMarker‑block + +Det första vi gör är att öppna mallfilen. Tänk på mallen som ett skelett; SmartMarker kommer senare att fylla i den med riktiga data. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Varför detta är viktigt:** Genom att separera layout (mallen) från data (C#‑objekten) håller du både designers och utvecklare nöjda. Designers kan justera typsnitt, färger eller formler utan att röra koden. + +## Steg 2: Bygg master‑detail‑datakällan + +Nästa steg är att skapa data som ska fylla i mallen. För en typisk beställningsrapport har du en samling beställningar, där varje beställning har sin egen samling artiklar. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +**Proffstips:** Använd starkt typade klasser istället för anonyma typer om du behöver återanvända dem i flera rapporter. Det anonyma tillvägagångssättet håller exemplet kortfattat. + +**Varför detta är viktigt:** SmartMarker fungerar genom att matcha egenskapsnamn (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) med platshållarna i mallen. Hierarkin måste stämma exakt, annars hoppar motorn över dessa sektioner. + +## Steg 3: Instruera SmartMarker att skapa ett nytt blad för varje master‑post + +Som standard skriver SmartMarker alla rader till ett enda blad. Vi vill ha varje beställning på ett eget kalkylblad, vilket är perfekt för utskrift eller e‑postning av PDF‑filer per beställning senare. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Varför detta är viktigt:** `EnableRepeatingSheet` eliminerar behovet av manuell bladkloning. Motorn kopierar originalbladet, injicerar beställningsdata och döper om bladet automatiskt (vanligtvis med värdet i den första kolumnen). + +## Steg 4: Bearbeta mallen med dina data + +Nu binder vi ihop allt. `SmartMarkerProcessor` går igenom arbetsboken, ersätter taggar och skapar nya blad enligt instruktionerna. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Varför detta är viktigt:** Denna enda rad gör det tunga arbetet—parsar mallen, itererar över samlingar och hanterar nästlade tabeller. Det är kärnan i **populate Excel template C#** utan några manuella loopar. + +## Steg 5: Spara den färdiga rapporten + +Slutligen skriver du den fyllda arbetsboken till disk. Du kan också strömma den direkt till ett HTTP‑svar för webbappar. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Varför detta är viktigt:** Att spara till en fil ger dig ett konkret artefakt som du kan öppna i Excel, dela med intressenter eller föra in i efterföljande processer som PDF‑konvertering. + +## Fullt fungerande exempel (klar att kopiera‑klistra in) + +Nedan är det kompletta programmet, inklusive `using`‑direktiv och en `Main`‑metod. Klistra in det i en konsolapp, justera filsökvägarna och kör. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Förväntad utskrift + +När du öppnar `MasterDetailResult.xlsx` kommer du att se: + +- **Blad “Order_1”** – innehåller Order 1:s rubrik och två rader för produkter A och B. +- **Blad “Order_2”** – innehåller Order 2:s rubrik och en enda rad för produkt C. +- Alla formler, formatering och diagram från originalmallen bevaras. + +![Excel‑rapport med separata blad för varje beställning – exempel på fylld arbetsbok](/images/excel-report-example.png "Genererad Excel‑rapport med master‑detail‑data") + +*Bildtext: genererad Excel‑rapport med separata blad för varje beställning, visar hur man genererar Excel‑rapport med C# och SmartMarker.* + +## Vanliga frågor & kantfall + +### Vad händer om jag behöver ett statiskt blad (t.ex. en sammanfattning) tillsammans med de upprepande bladen? + +Ställ in `EnableRepeatingSheet = true` **endast** på det kalkylblad som innehåller master‑blocket. Övriga blad förblir orörda, så du kan behålla en sammanfattningssida i originalmallen. + +### Kan jag använda en DataTable istället för anonyma objekt? + +Absolut. SmartMarker fungerar med alla objekt som implementerar `IEnumerable`. Byt bara ut den anonyma typen mot en `DataTable` och se till att kolumnnamnen matchar taggarna. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Hur ändrar jag namngivningskonventionen för de genererade bladen? + +Implementera ett anpassat `ISmartMarkerSheetNaming`‑gränssnitt (eller manipulera `workbook.Worksheets` efter bearbetning). De flesta utvecklare döper helt enkelt om bladen baserat på ett cellvärde: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Vad händer om min mall använder en annan platshållarsyntax? + +SmartMarker tillåter anpassade avgränsare via `SmartMarkerOptions`. Till exempel, för att använda `<< >>` istället för `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +## Tips för att skala detta tillvägagångssätt + +- **Cacha mallen** i minnet om du genererar många rapporter per begäran; att läsa från disk varje gång ökar latensen. +- **Kombinera med PDF‑konvertering** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) för e‑postvänliga utdata. +- **Parametrisera filsökvägarna** med konfigurationsfiler eller miljövariabler för att göra lösningen portabel mellan dev, test och prod. +- **Enhetstesta datalagret** separat; SmartMarker i sig är deterministisk, så du behöver bara verifiera att de data du matar in matchar det förväntade schemat. + +## Slutsats + +Vi har gått igenom **hur man genererar Excel‑rapport** i C# från början till slut, från att ladda en SmartMarker‑aktiverad mall till att spara en flikar‑arbetsbok som speglar master‑detail‑relationer. Genom att **populate Excel template C#** med bara några rader kod undviker du skör cell‑för‑cell‑logik och ger designers frihet att forma det slutgiltiga utseendet. + +Nästa steg kan du utforska: + +- Använda **populate Excel template C#** med diagram som automatiskt uppdateras per blad. +- Integrera **excel smartmarker c#** med ASP.NET Core för att strömma rapporter direkt till webbläsare. +- Automatisera **c# excel automation**‑pipelines som hämtar data från API:er eller databaser. + +Prova det, justera mallen och se hur snabbt du kan omvandla rådata till en polerad Excel‑rapport. Har du frågor eller ett coolt användningsfall? lämna en kommentar nedan—lycka till med kodandet! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/swedish/net/tables-and-lists/_index.md b/cells/swedish/net/tables-and-lists/_index.md index 2d2b2f916b..8ec18f2f8b 100644 --- a/cells/swedish/net/tables-and-lists/_index.md +++ b/cells/swedish/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Konvertera enkelt tabeller till områden i Excel med Aspose.Cells för .NET med Lås upp kraften i Aspose.Cells för .NET. Lär dig läsa och skriva tabeller med frågedatakällor i den här detaljerade steg-för-steg-guiden. ### [Ange kommentar för tabell eller lista i Excel](./setting-comment-of-table-or-list/) Lär dig hur du anger kommentarer för tabeller i Excel med Aspose.Cells för .NET med vår enkla steg-för-steg-guide. +### [Skapa Excel-tabell i C# – Steg‑för‑steg‑guide](./create-excel-table-in-c-step-by-step-guide/) +Lär dig skapa en Excel‑tabell i C# med en detaljerad steg‑för‑steg‑guide med Aspose.Cells för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/swedish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/swedish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..d869990d3f --- /dev/null +++ b/cells/swedish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: Skapa Excel‑tabell i C# snabbt. Lär dig hur du lägger till en tabell, + definierar tabellområde, döljer tabellrubriken och inaktiverar tabellfilter med + ett komplett kodexempel. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: sv +og_description: Skapa Excel-tabell i C# med ett tydligt exempel. Lär dig hur du lägger + till en tabell, definierar tabellområde, döljer tabellrubriken och inaktiverar filter + med bara några rader. +og_title: Skapa Excel‑tabell i C# – Komplett programmeringsguide +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Skapa Excel‑tabell i C# – Steg‑för‑steg‑guide +url: /sv/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa Excel-tabell i C# – Steg‑för‑steg guide + +Har du någonsin behövt **create Excel table** programatiskt med C#? Att skapa en Excel-tabell kan vara en barnlek när du känner till rätt steg. I den här handledningen går vi igenom ett komplett, körbart exempel som visar **how to add table**, **define table range**, **hide table header**, och till och med **disable table filter** – allt utan att lämna din IDE. + +Om du någonsin har kämpat med att AutoFilter‑UI:n dyker upp när du inte vill ha den, är du på rätt plats. I slutet av den här guiden har du ett färdigt kodexempel som skapar en ren arbetsbok med namnet *TableNoFilter.xlsx* och du kommer att förstå varför varje rad är viktig. + +## Vad du kommer att lära dig + +- Hur man **create Excel table** från början med Aspose.Cells. +- Den exakta syntaxen för att **define table range** (A1:D5 i vårt fall). +- Hur man aktiverar rubrikraden så den inbyggda filter‑UI:n visas. +- Tricket för att **hide table header** och **disable table filter** när du inte längre behöver dem. +- Ett komplett, copy‑paste‑klart C#‑program som du kan köra idag. + +### Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även med .NET Framework 4.7+). +- Aspose.Cells för .NET installerat via NuGet (`Install-Package Aspose.Cells`). +- Grundläggande kunskap om C# och Visual Studio (eller någon annan IDE du föredrar). + +--- + +## Steg 1: Ställ in projektet och importera namnrymder + +Innan du kan **create Excel table** behöver du ett konsolprojekt som refererar till Aspose.Cells. Öppna en terminal och kör: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Öppna nu *Program.cs* och lägg till de nödvändiga `using`‑satserna: + +```csharp +using System; +using Aspose.Cells; +``` + +Dessa importeringar ger dig åtkomst till klasserna `Workbook`, `Worksheet`, `CellArea` och `ListObject` som driver resten av handledningen. + +## Steg 2: Initiera en ny arbetsbok och hämta det första kalkylbladet + +Att skapa en ny arbetsbok är det första logiska steget. Tänk på arbetsboken som behållaren för Excel‑filen, och kalkylbladet som det enskilda bladet där vi placerar vår tabell. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Varför detta är viktigt:** En helt ny `Workbook` startar med ett enda tomt blad. Genom att hämta `Worksheets[0]` säkerställer vi att vi arbetar på standardbladet utan att behöva skapa ett manuellt. + +## Steg 3: Definiera tabellområdet (A1:D5) + +I Excel‑terminologi lever en *table* inom ett rektangulärt block av celler. `CellArea`‑strukturen låter oss peka ut det blocket. Här går vi igenom **define table range** för cellerna A1 till D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Tips:** Om du någonsin behöver ett dynamiskt område kan du beräkna `endRow` och `endColumn` baserat på datalängden. Noll‑baserad indexering är en vanlig källa till off‑by‑one‑buggar, så dubbelkolla dina siffror. + +## Steg 4: Lägg till tabellen och aktivera rubrikraden + +Nu kommer hjärtat i handledningen: **how to add table** till kalkylbladet. `ListObjects`‑samlingen hanterar tabeller, och genom att sätta `ShowHeaders = true` injiceras AutoFilter‑UI:n automatiskt. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Förklaring:** +> - `Add(tableRange, true)` skapar ett nytt `ListObject` (dvs. en Excel‑tabell) inom det angivna området. +> - Flaggan `true` talar om för Aspose.Cells att den första raden i området ska behandlas som en rubrik. +> - Att sätta `ShowHeaders` till `true` gör rubriken synlig och triggar den inbyggda filter‑UI:n. + +Vid den här punkten, om du öppnar den genererade arbetsboken, kommer du att se en snyggt formaterad tabell med filterpilar på varje kolumnrubrik. + +## Steg 5: Dölj rubrikraden och inaktivera AutoFilter + +Ibland vill du ha data utan UI‑stök. Kanske exporterar du en ren rapport där filter inte behövs. Här är tekniken för **hide table header** och **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Varför du skulle göra detta:** +> - `ShowHeaders = false` tar bort den visuella rubrikraden och förvandlar tabellen till ett enkelt datablok. +> - Att sätta `AutoFilter = null` rensar det dolda filterobjektet, vilket säkerställer att ingen återstående filterlogik finns kvar. Detta är vad vi menar med **disable table filter**. + +## Steg 6: Spara arbetsboken till disk + +Till sist skriver vi filen till en plats du väljer. Ersätt `"YOUR_DIRECTORY"` med en faktisk sökväg på din maskin. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +När du kör programmet bör du se: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +När du öppnar filen visas ett blad med datablocket (ingen rubrik, inga filterpilar). Det är hela cykeln – från **create Excel table** till **disable table filter**. + +--- + +## Fullt fungerande exempel (Kopiera‑klistra klart) + +Nedan är hela programmet, redo att kompileras. Byt bara ut platshållar‑katalogen mot en giltig sökväg. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Förväntat resultat:** En fil med namnet *TableNoFilter.xlsx* som innehåller ett enkelt dataintervall A1:D5 utan synlig rubrikrad och utan filterrullgardinsmenyer. + +--- + +## Vanliga frågor & kantfall + +### Vad händer om jag behöver flera tabeller i samma kalkylblad? + +Upprepa helt enkelt **Step 3** med en ny `CellArea` och ett nytt `ListObject`. Varje tabell behåller sina egna rubrik‑ och filterinställningar, så du kan dölja en och behålla en annan synlig. + +### Kan jag styla tabellen (bandade rader, färger) innan jag döljer rubriken? + +Absolut. `ListObject` har en `TableStyleType`‑egenskap. Till exempel: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Du kan applicera stilen **innan** du döljer rubriken; den visuella formateringen förblir intakt. + +### Vad händer om jag vill behålla rubriken men bara dölja filterpilarna? + +Sätt `ShowHeaders = true` (behåll raden) och rensa sedan filtret: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Det uppfyller kravet **disable table filter** utan att förlora kolumnetiketterna. + +### Fungerar detta bara med .xlsx‑filer? + +Aspose.Cells upptäcker automatiskt formatet baserat på filändelsen du anger i `Save`. Du kan också skriva ut till `.xls`, `.csv` eller till och med `.pdf` med en annan filändelse. + +--- + +## Slutsats + +Vi har precis gått igenom allt du behöver för att **create Excel table** i C# med Aspose.Cells, från **define table range** till **hide table header** och **disable table filter**. Koden är kort, tydlig och klar för produktionsanvändning. + +Nästa steg kan vara att utforska **how to add table** med dynamisk data, applicera anpassade stilar eller exportera samma arbetsbok till PDF. Varje ämne bygger på den grund du just har lärt dig, så känn dig fri att experimentera och anpassa kodsnutten till dina egna projekt. + +Har du ett eget knep du vill dela? Lägg en kommentar nedan, och lycka till med kodandet! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/converting-excel-files-to-other-formats/_index.md b/cells/thai/net/converting-excel-files-to-other-formats/_index.md index fdad3c44c3..e65ba16539 100644 --- a/cells/thai/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/thai/net/converting-excel-files-to-other-formats/_index.md @@ -37,6 +37,9 @@ - [การแปลงไฟล์ Excel เป็น PPTX โดยโปรแกรมใน .NET](./converting-excel-file-to-pptx/):เปลี่ยนแผ่นงาน Excel ให้เป็นสไลด์การนำเสนอ บทช่วยสอนนี้นำเสนอตัวอย่างโค้ดที่ใช้งานง่ายสำหรับการแปลงข้อมูล Excel เป็น PPTX +- [ส่งออก Excel ไปยัง PowerPoint – คู่มือ C# ฉบับสมบูรณ์](./export-excel-to-powerpoint-complete-c-guide/) +เรียนรู้วิธีส่งออกไฟล์ Excel ไปเป็น PowerPoint ด้วย C# โดยใช้ Aspose.Cells สำหรับ .NET อย่างละเอียด + - [ติดตามความคืบหน้าการแปลงเอกสารสำหรับโปรแกรม TIFF ใน .NET](./tracking-document-conversion-progress-for-tiff/):ติดตามและจัดการการแปลงไฟล์ TIFF ซึ่งเป็นเครื่องมือที่มีค่าสำหรับการสร้างไฟล์เก็บถาวรที่เป็นรูปภาพ Aspose.Cells สำหรับ .NET ทำให้การแปลงเอกสารเป็นเรื่องง่าย ช่วยให้นักพัฒนาสามารถดำเนินกระบวนการอัตโนมัติ และประหยัดเวลาในการแปลงเอกสารในรูปแบบต่างๆ @@ -56,6 +59,8 @@ Aspose.Cells สำหรับ .NET ทำให้การแปลงเอ เรียนรู้วิธีการแปลง JSON เป็น CSV ด้วยโปรแกรมใน .NET โดยใช้ Aspose.Cells ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อให้แน่ใจว่าการแปลงข้อมูลจะราบรื่น ### [การแปลงไฟล์ Excel เป็น PPTX โดยโปรแกรมใน .NET](./converting-excel-file-to-pptx/) เรียนรู้วิธีการแปลงไฟล์ Excel เป็นงานนำเสนอ PowerPoint (PPTX) ด้วยโปรแกรม Aspose.Cells สำหรับ .NET ด้วยคู่มือทีละขั้นตอนนี้ +### [ตั้งพื้นที่พิมพ์ใน Excel และส่งออกเป็น PowerPoint – คู่มือขั้นตอนโดยละเอียด](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +เรียนรู้วิธีตั้งพื้นที่พิมพ์ใน Excel แล้วส่งออกเป็นไฟล์ PowerPoint ด้วย Aspose.Cells สำหรับ .NET อย่างง่าย ### [การระบุ HTML CrossType ในโปรแกรมเอาท์พุต HTML ใน .NET](./specifying-html-crosstype-in-output-html/) เรียนรู้วิธีระบุ HTML CrossType ใน Aspose.Cells สำหรับ .NET ปฏิบัติตามบทช่วยสอนทีละขั้นตอนของเราเพื่อแปลงไฟล์ Excel เป็น HTML อย่างแม่นยำ ### [การอ่านสเปรดชีตตัวเลขโดยโปรแกรมใน .NET](./reading-numbers-spreadsheet/) diff --git a/cells/thai/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/thai/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..b88fa62ca0 --- /dev/null +++ b/cells/thai/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-22 +description: เรียนรู้วิธีส่งออก Excel ไปยัง PowerPoint ตั้งค่าพื้นที่พิมพ์ใน Excel + และบันทึก Excel เป็นไฟล์ PPTX พร้อมแผนภูมิที่แก้ไขได้และวัตถุ OLE เพียงไม่กี่ขั้นตอน. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: th +og_description: ส่งออก Excel ไปยัง PowerPoint อย่างรวดเร็ว บทเรียนนี้แสดงวิธีตั้งค่าพื้นที่พิมพ์ใน + Excel และบันทึก Excel เป็นไฟล์ PPTX พร้อมแผนภูมิที่แก้ไขได้และวัตถุ OLE. +og_title: ส่งออก Excel ไปยัง PowerPoint – คู่มือ C# ฉบับสมบูรณ์ +tags: +- Aspose.Cells +- C# +- Office Automation +title: ส่งออก Excel ไปยัง PowerPoint – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ส่งออก Excel ไปยัง PowerPoint – คู่มือ C# ฉบับสมบูรณ์ + +ต้องการ **export Excel to PowerPoint** หรือไม่? คุณมาถูกที่แล้ว ไม่ว่าคุณจะกำลังสร้างชุดสไลด์การขายประจำสัปดาห์หรือทำระบบอัตโนมัติสำหรับการรายงาน การแปลงแผ่นงาน Excel ให้เป็นชุดสไลด์ PowerPoint สามารถประหยัดเวลาการคัดลอก‑และ‑วางหลายชั่วโมงได้ + +ในบทแนะนำนี้ เราจะพาคุณผ่านตัวอย่างเชิงปฏิบัติที่ไม่เพียงแต่ **export excel to powerpoint** แต่ยังแสดงวิธี **set print area Excel** และ **save excel as pptx** เพื่อให้สไลด์ที่ได้คงแผนภูมิและวัตถุ OLE ที่แก้ไขได้อย่างเต็มที่ เมื่อเสร็จสิ้นคุณจะได้โปรแกรม C# ที่พร้อมรันซึ่งสร้างไฟล์ `.pptx` ที่ดูเป็นมืออาชีพโดยไม่ต้องปรับแต่งด้วยมือเลย + +## สิ่งที่คุณต้องการ + +- **.NET 6+** (runtime .NET ล่าสุดใดก็ได้; โค้ดใช้ไวยากรณ์ C# 10) +- **Aspose.Cells for .NET** – ไลบรารีที่ทำหน้าที่ส่งออก คุณสามารถดาวน์โหลดได้จาก NuGet (`Install-Package Aspose.Cells`). +- ไฟล์ Excel workbook ที่มีอย่างน้อยหนึ่งแผนภูมิและ/หรือวัตถุ OLE (ไฟล์ตัวอย่าง `ChartAndOle.xlsx` ถูกใช้ในโค้ด). +- IDE ที่คุณชื่นชอบ (Visual Studio, Rider หรือ VS Code – ตามที่คุณต้องการ). + +แค่นั้นเอง ไม่ต้องใช้ COM interop ไม่ต้องติดตั้ง Office + +> **ทำไมต้องใช้ไลบรารี?** +> Office Interop ที่มาพร้อมนั้นเปราะบาง ต้องมี Office บนเซิร์ฟเวอร์ และมักสร้างภาพแบบราสเตอร์เมื่อคุณต้องการรูปแบบเวกเตอร์ที่แก้ไขได้ Aspose.Cells จัดการงานหนักและทำให้ทุกอย่างแก้ไขได้ใน PowerPoint. + +--- + +## ขั้นตอนที่ 1: โหลด Excel Workbook + +ก่อนอื่นเรานำไฟล์ต้นทางเข้ามาในหน่วยความจำ คลาส `Workbook` ทำหน้าที่เป็นตัวแทนของไฟล์ Excel ทั้งหมด ให้เราสามารถเข้าถึง worksheets, แผนภูมิ และวัตถุ OLE ได้ + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**ทำไมเรื่องนี้สำคัญ:** การโหลด workbook เป็นพื้นฐาน หากเส้นทางผิดหรือไฟล์เสียหาย ส่วนที่เหลือของ pipeline จะไม่ทำงาน บล็อก `try…catch` จะให้ข้อผิดพลาดที่เป็นมิตรแทนการพัง. + +--- + +## ขั้นตอนที่ 2: ตั้งค่า Print Area ใน Excel + +ก่อนทำการส่งออก คุณมักต้องการจำกัดผลลัพธ์ให้อยู่ในช่วงเฉพาะ นี่คือจุดที่ **set print area excel** เข้ามา ทำการกำหนด print area จะบอก Aspose.Cells ว่าเซลล์ใด (และวัตถุที่เกี่ยวข้อง) ควรปรากฏบนสไลด์. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **เคล็ดลับ:** หากคุณมีหลาย worksheets ให้ทำการกำหนด `PrintArea` ซ้ำสำหรับแต่ละแผ่นที่คุณต้องการส่งออก การไม่ตั้งค่า print area จะทำให้ส่งออกทั้งแผ่น ซึ่งอาจทำให้ไฟล์ PowerPoint ใหญ่ขึ้น. + +--- + +## ขั้นตอนที่ 3: กำหนดค่า Export Options – รักษาแผนภูมิและ OLE ให้แก้ไขได้ + +Aspose.Cells มีอ็อบเจกต์ `ImageOrPrintOptions` ที่หลากหลาย โดยการสลับ `ExportChartObjects` และ `ExportOleObjects` เราจะคงลักษณะเวกเตอร์ของแผนภูมิและความสามารถแก้ไขแบบสดของวัตถุ OLE (เช่น เอกสาร Word หรือ PDF ที่ฝังอยู่). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**อะไรเกิดขึ้นเบื้องหลัง?** +เมื่อ `ExportChartObjects` เป็น `true` Aspose จะเปลี่ยนแผนภูมิเป็นรูปแบบแผนภูมิ PowerPoint ดั้งเดิม คง series, axes, และการจัดรูปแบบไว้ เมื่อเปิดใช้งาน `ExportOleObjects` วัตถุที่ฝังจะถูกแทรกเป็นกรอบ OLE ดังนั้นการดับเบิลคลิกใน PowerPoint จะเปิดแอปพลิเคชันต้นฉบับ (Word, Excel ฯลฯ) เพื่อแก้ไข. + +--- + +## ขั้นตอนที่ 4: บันทึก Worksheet เป็นไฟล์ PowerPoint ที่แก้ไขได้ + +ตอนนี้เราจะเชื่อมทุกอย่างเข้าด้วยกัน เมธอด `Save` จะเขียนไฟล์ `.pptx` โดยใช้ตัวเลือกที่เราตั้งค่า ผลลัพธ์คือชุดสไลด์ที่แต่ละ worksheet กลายเป็นสไลด์ (หรือหลายสไลด์หาก print area ครอบหลายหน้า). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### ผลลัพธ์ที่คาดหวัง + +- **ตำแหน่งไฟล์:** `C:\MyProjects\EditableChartOle.pptx` +- **เนื้อหา:** + - สไลด์ที่แสดงช่วง `A1:H30` ตรงตามที่แสดงใน Excel. + - แผนภูมิทั้งหมดเป็นวัตถุแผนภูมิ PowerPoint—คลิกแถบเพื่อแก้ไขข้อมูล. + - วัตถุ OLE (เช่น เอกสาร Word ที่ฝัง) สามารถเปิดและแก้ไขโดยตรงจากสไลด์. + +หากคุณเปิดไฟล์ PPTX ใน PowerPoint คุณจะเห็นสไลด์ที่สะอาดตาพร้อมส่วนประกอบที่แก้ไขได้เต็มที่—ไม่มีภาพสกรีนช็อตแบบราสเตอร์. + +--- + +## กรณีขอบและรูปแบบต่าง ๆ + +### หลาย Worksheet → หลายสไลด์ +หากคุณต้องการให้แต่ละ worksheet กลายเป็นสไลด์ของตนเอง เพียงวนลูปผ่าน `workbook.Worksheets` และเรียก `Save` ด้วย `SheetToImageOptions` ที่ระบุดัชนีแผ่นเฉพาะ Aspose จะสร้างสไลด์ใหม่โดยอัตโนมัติสำหรับแต่ละรอบ. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### ช่วงขนาดใหญ่และประสิทธิภาพ +การส่งออก print area ขนาดใหญ่ (เช่น `A1:Z1000`) อาจทำให้การใช้หน่วยความจำเพิ่มขึ้น เพื่อบรรเทาให้พิจารณา: +- แบ่งช่วงเป็นส่วนย่อย ๆ แล้วส่งออกเป็นสไลด์แยกกัน. +- ใช้ `WorkbookSettings` เพื่อเพิ่มค่า `MemorySetting` หากเจอ `OutOfMemoryException`. + +### ข้อกังวลเรื่องความเข้ากันได้ +PPTX ที่สร้างขึ้นทำงานได้กับ PowerPoint 2016 ขึ้นไป เวอร์ชันเก่าอาจเปิดไฟล์ได้แต่บางคุณลักษณะแผนภูมิขั้นสูงอาจหายไป ควรทดสอบบนเวอร์ชัน Office ที่เป้าหมายหากคุณจะแจกจ่ายชุดสไลด์อย่างกว้างขวาง. + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **เคล็ดลับ:** แทนที่เส้นทางที่กำหนดแบบคงที่ด้วยค่าการกำหนดค่า หรืออาร์กิวเมนต์บรรทัดคำสั่ง เพื่อให้เครื่องมือยืดหยุ่นมากขึ้น. + +--- + +## คำถามที่พบบ่อย + +**Q: ฉันสามารถส่งออกเฉพาะแผนภูมิโดยไม่รวมเซลล์รอบข้างได้หรือไม่?** +A: ได้ ใช้ `ExportChartObjects` เพียงอย่างเดียวและตั้งค่า print area ให้ครอบแผนภูมิ แผนภูมิจะปรากฏตรงกลางสไลด์. + +**Q: ถ้า workbook ของฉันมีแมโครล่ะ?** +A: Aspose.Cells จะละเลยแมโคร VBA ระหว่างการส่งออก หากคุณต้องการฟังก์ชันแมโครใน PowerPoint คุณต้องสร้างใหม่โดยใช้ PowerPoint VBA หรือแอด‑อิน. + +**Q: ทำงานบน Linux/macOS ได้หรือไม่?** +A: ได้แน่นอน Aspose.Cells เป็นไลบรารี .NET แท้ ๆ; ตราบใดที่คุณมี .NET runtime โค้ดก็ทำงานข้ามแพลตฟอร์ม. + +--- + +## สรุป + +คุณเพิ่งเรียนรู้วิธี **export Excel to PowerPoint** พร้อมกับการ **set print area excel** อย่างแม่นยำและ **save excel as pptx** ที่มีแผนภูมิและวัตถุ OLE ที่แก้ไขได้เต็มที่ ขั้นตอนสำคัญคือการโหลด workbook, กำหนด print area, ตั้งค่า `ImageOrPrintOptions` และสุดท้ายบันทึกเป็น PPTX. + +จากนี้คุณสามารถสำรวจต่อได้: +- ส่งออกหลาย worksheet ไปยังชุดสไลด์เดียว. +- เพิ่มหัวข้อสไลด์หรือโน้ตแบบกำหนดเองโดยโปรแกรม. +- แปลง PPTX เป็น PDF เพื่อแจกจ่าย (ใช้ `SaveFormat.Pdf`). + +ลองรันโค้ด ปรับ print area แล้วดูข้อมูล Excel ของคุณปรากฏใน PowerPoint อย่างมหัศจรรย์—ไม่ต้องคัดลอก‑วางด้วยมือ หากพบปัญหา ให้ตรวจสอบเอกสาร Aspose.Cells หรือแสดงความคิดเห็นด้านล่าง ขอให้เขียนโค้ดสนุก! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/thai/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..02b3b7e1ca --- /dev/null +++ b/cells/thai/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-03-22 +description: ตั้งค่าพื้นที่พิมพ์ใน Excel และแปลง Excel เป็น PowerPoint พร้อมรูปทรงที่แก้ไขได้ + เรียนรู้วิธีทำให้แถวหัวเรื่องซ้ำ สร้าง PowerPoint จาก Excel และส่งออก Excel เป็นไฟล์ + pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: th +og_description: ตั้งค่าพื้นที่พิมพ์ใน Excel และแปลงเป็นสไลด์ PowerPoint พร้อมรูปทรงที่แก้ไขได้ + ทำตามคู่มือฉบับเต็มนี้เพื่อทำซ้ำแถวหัวเรื่องและส่งออก Excel เป็นไฟล์ pptx. +og_title: ตั้งค่าพื้นที่พิมพ์ใน Excel – การสอนการส่งออกไป PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: กำหนดพื้นที่พิมพ์ใน Excel และส่งออกเป็น PowerPoint – คู่มือขั้นตอนโดยละเอียด +url: /th/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ตั้งพื้นที่พิมพ์ใน Excel และส่งออกเป็น PowerPoint – คู่มือการเขียนโปรแกรมเต็มรูปแบบ + +เคยต้องการ **set print area** ในแผ่นงาน Excel แล้วแปลงส่วนนั้นเป็นสไลด์ PowerPoint หรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายกระบวนการรายงาน ข้อมูลเดียวกันที่พิมพ์ออกมาดีก็ต้องปรากฏในงานนำเสนอด้วย โดยมักจะทำให้แถวแรกทำซ้ำเป็นหัวเรื่อง ข่าวดีคือ ด้วยไม่กี่บรรทัดของ C# คุณสามารถ **convert excel to powerpoint**, ทำให้กล่องข้อความทั้งหมดแก้ไขได้, และแม้กระทั่ง **repeat title row** โดยอัตโนมัติ. + +ในคู่มือนี้ เราจะพาคุณผ่านทุกอย่างที่ต้องรู้: ตั้งแต่การกำหนดพื้นที่พิมพ์จนถึงการสร้างไฟล์ PPTX ที่คุณสามารถแก้ไขได้โดยตรงใน PowerPoint. เมื่อจบคุณจะสามารถ **create powerpoint from excel**, ส่งออกผลลัพธ์เป็น **export excel to pptx**, และใช้โค้ดเดียวกันในโครงการ .NET ใดก็ได้. ไม่มีเวทมนตร์ เพียงขั้นตอนที่ชัดเจนและตัวอย่างที่ทำงานได้เต็มรูปแบบ. + +## สิ่งที่คุณต้องมี + +- **.NET 6.0** หรือใหม่กว่า (API ทำงานกับ .NET Framework ด้วย) +- **Aspose.Cells for .NET** (ไลบรารีที่ให้ `Workbook`, `ImageOrPrintOptions` เป็นต้น) +- IDE C# เบื้องต้น (Visual Studio, Rider, หรือ VS Code พร้อมส่วนขยาย C#) +- ไฟล์ Excel (`input.xlsx`) ที่มีข้อมูลที่คุณต้องการส่งออก + +เท่านี้—ไม่มีแพ็กเกจ NuGet เพิ่มเติมนอกจาก Aspose.Cells. หากคุณยังไม่ได้เพิ่มไลบรารีนี้ ให้รัน: + +```bash +dotnet add package Aspose.Cells +``` + +ตอนนี้เราพร้อมแล้ว. + +## ขั้นตอนที่ 1: โหลด Workbook – จุดเริ่มต้นสำหรับการส่งออก + +สิ่งแรกที่คุณต้องทำคือโหลด workbook ที่บรรจุแผ่นงานที่คุณต้องการแปลงเป็นสไลด์. ให้คิดว่า workbook คือเอกสารต้นทาง; หากไม่มีมัน สิ่งอื่นทั้งหมดก็ไม่มีความหมาย. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** การโหลด workbook ทำให้คุณเข้าถึงคอลเลกชันของ worksheet, ตัวเลือกการตั้งค่าหน้ากระดาษ, และเอนจินการส่งออก. หากข้ามขั้นตอนนี้ คุณจะไม่สามารถตั้ง **print area** หรือทำซ้ำแถวใด ๆ ได้. + +> **เคล็ดลับ:** ใช้เส้นทางแบบ absolute ระหว่างการทดสอบ, จากนั้นเปลี่ยนเป็นเส้นทางแบบ relative หรือเส้นทางที่กำหนดจากการตั้งค่าสำหรับการใช้งานจริง. + +## ขั้นตอนที่ 2: กำหนดค่า Export Options – ทำให้ Text Boxes และ Shapes แก้ไขได้ + +เมื่อคุณส่งออกเป็น PowerPoint คุณอาจต้องการให้สไลด์ที่ได้สามารถแก้ไขได้. Aspose.Cells ให้คุณควบคุมสิ่งนี้ด้วย `ImageOrPrintOptions`. การตั้งค่า `ExportTextBoxes` และ `ExportShapeObjects` เป็น `true` บอกไลบรารีให้เก็บวัตถุเหล่านั้นเป็นองค์ประกอบ PowerPoint ดั้งเดิมแทนการแปลงเป็นภาพ. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** หากคุณเคยต้องการ **convert excel to powerpoint** แล้วปรับแต่งสไลด์ด้วยตนเอง การตั้งค่านี้จะช่วยคุณไม่ต้องสร้าง Text Boxes ใหม่จากศูนย์. มันยังทำให้แน่ใจว่า Shapes ใด ๆ (เช่น ลูกศรหรือแผนภูมิ) จะคงเป็นวัตถุเวกเตอร์ที่คุณสามารถปรับขนาดได้. + +## ขั้นตอนที่ 3: ตั้ง Print Area และทำให้แถวหัวเรื่องซ้ำ + +ตอนนี้เรามาถึงหัวใจของบทเรียน: **set print area** และทำให้แถวแรกซ้ำบนทุกหน้าที่พิมพ์ (หรือในกรณีของเรา บนสไลด์ที่ส่งออก). Print area บอก Excel ว่าเซลล์ใดควรพิจารณาเพื่อพิมพ์—หรือส่งออกในสถานการณ์ของเรา. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** การจำกัดการส่งออกเป็น `A1:G20` จะช่วยหลีกเลี่ยงการดึงช่วงว่างขนาดใหญ่, ทำให้การแปลงเร็วขึ้นและสไลด์ดูเป็นระเบียบ. บรรทัด `PrintTitleRows` ทำให้แถวแรกทำหน้าที่เป็นหัวเรื่อง—ตรงกับที่คุณต้องการเมื่อ **repeat title row** ในการนำเสนอ. + +> **กรณีพิเศษ:** หากข้อมูลของคุณเริ่มที่แถว 2 ให้ปรับช่วงให้เหมาะสม (เช่น `PrintTitleRows = "$2:$2"`). + +## ขั้นตอนที่ 4: บันทึก Worksheet เป็นไฟล์ PowerPoint + +สุดท้าย เราเขียนสไลด์ลงดิสก์. เมธอด `Save` รับชื่อไฟล์เป้าหมายและตัวเลือกที่เราตั้งค่าก่อนหน้านี้. ผลลัพธ์คือไฟล์ PPTX ที่มี Text Boxes และ Shapes ที่แก้ไขได้, พร้อมเปิดใน PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**สิ่งที่คุณจะเห็น:** เปิด `SheetWithEditableShapes.pptx` ใน PowerPoint. แถวแรกปรากฏเป็นหัวเรื่อง, ทุกเซลล์จาก `A1:G20` ถูกเรนเดอร์, และ Shapes ใด ๆ ที่คุณเพิ่มใน Excel ยังคงย้ายและแก้ไขได้. ไม่มีภาพแรสเตอร์—เพียงวัตถุ PowerPoint ดั้งเดิม. + +## ตัวอย่างทำงานเต็มรูปแบบ – รวมทุกขั้นตอน + +ด้านล่างเป็นโปรแกรมที่สมบูรณ์พร้อมคัดลอก‑วาง. รันเป็นแอปคอนโซลหรือฝังในโซลูชันที่ใหญ่ขึ้นใดก็ได้. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** หลังจากรันโปรแกรม, คอนโซลจะแสดงข้อความสำเร็จ, และไฟล์ PPTX จะปรากฏที่ตำแหน่งที่ระบุ. การเปิดไฟล์จะแสดงสไลด์เดียวที่มีช่วงที่เลือก, Text Boxes ที่แก้ไขได้, และ Shapes ดั้งเดิมใด ๆ. + +## คำถามทั่วไป & ปัญหาที่พบบ่อย + +| Question | Answer | +|----------|--------| +| **ทำงานได้กับหลาย Worksheet หรือไม่?** | ใช่. วนลูปผ่าน `workbook.Worksheets` และทำซ้ำขั้นตอนเดียวกันสำหรับแต่ละแผ่น, เปลี่ยนชื่อไฟล์ผลลัพธ์ในแต่ละครั้ง. | +| **ถ้าต้องการส่งออกมากกว่าหนึ่งสไลด์จะทำอย่างไร?** | เรียก `workbook.Save` หลายครั้งโดยใช้ `ImageOrPrintOptions` ที่แตกต่างกัน, แต่ละอันตั้งค่า `PageSetup` ที่ต่างกันหากจำเป็น. | +| **สามารถเปลี่ยนขนาดสไลด์ได้หรือไม่?** | ใช้ `exportOptions.ImageFormat` เพื่อตั้งค่า DPI, หรือปรับ `sheet.PageSetup.PaperSize` ก่อนบันทึก. | +| **Aspose.Cells ฟรีหรือไม่?** | มีการประเมินฟรีพร้อมลายน้ำ. สำหรับการใช้งานจริง จำเป็นต้องมีลิขสิทธิ์. | +| **สูตร Excel จะเป็นอย่างไร?** | ค่าที่ส่งออกคือ **ผลลัพธ์ที่คำนวณแล้ว** ณ เวลาที่ส่งออก. หากต้องการสูตรสดใน PowerPoint คุณจะต้องใช้วิธีอื่น. | + +## เคล็ดลับสำหรับการทำงานที่ราบรื่น + +- **เคล็ดลับ:** ตั้งค่า `Workbook.Settings.CalcMode = CalculationModeType.Automatic` ก่อนส่งออกเพื่อรับประกันว่าทุกสูตรเป็นรุ่นล่าสุด. +- **ระวัง:** ช่วงที่ใหญ่เกินไปอาจทำให้ใช้หน่วยความจำมาก. ลด Print Area ให้เล็กที่สุดที่จำเป็น. +- **เคล็ดลับด้านประสิทธิภาพ:** ใช้ `ImageOrPrintOptions` ตัวเดียวซ้ำหากส่งออกหลายแผ่น; การสร้างใหม่ทุกครั้งเพิ่มภาระ. +- **บันทึกเวอร์ชัน:** โค้ดข้างต้นมุ่งเป้าไปที่ Aspose.Cells 23.10 (ออกในเดือนพฤศจิกายน 2023). เวอร์ชันต่อมายังคง API เดียวกัน, แต่ควรตรวจสอบบันทึกการปล่อยเพื่อหาการเปลี่ยนแปลงที่ทำให้โค้ดเสีย. + +## สรุป + +เราได้อธิบายวิธี **set print area** ในแผ่นงาน Excel, ทำให้แถวแรกเป็นหัวเรื่อง, และจากนั้น **export excel to pptx** พร้อมคง Text Boxes และ Shapes ที่แก้ไขได้. สรุปคือ คุณรู้วิธีที่เชื่อถือได้ในการ **convert excel to powerpoint**, **repeat title row**, และ **create powerpoint from excel** ด้วยเพียงไม่กี่บรรทัดของ C#. + +พร้อมสำหรับขั้นตอนต่อไปหรือยัง? ลองทำการแปลงเป็นชุดของหลายสิบรายงานอัตโนมัติ, หรือเพิ่มเลย์เอาต์สไลด์แบบกำหนดเองโดยใช้ PowerPoint SDK หลังการส่งออก. ไม่มีขีดจำกัด—ทดลอง, ทำลายสิ่งต่าง ๆ, และสนุกกับพลังของการสร้างเอกสารแบบโปรแกรม. + +หากคุณพบว่าบทเรียนนี้มีประโยชน์, แชร์ให้คนอื่น, แสดงความคิดเห็นพร้อมการปรับแต่งของคุณ, หรือสำรวจคู่มืออื่น ๆ ของเราที่เกี่ยวกับ **export excel to pptx** และหัวข้อการทำอัตโนมัติเกี่ยวข้อง. Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/csv-file-handling/_index.md b/cells/thai/net/csv-file-handling/_index.md index 187a74ca83..b2d774e973 100644 --- a/cells/thai/net/csv-file-handling/_index.md +++ b/cells/thai/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ เรียนรู้วิธีเปิดไฟล์ CSV โดยใช้ Aspose.Cells สำหรับ .NET ด้วยคู่มือทีละขั้นตอนแบบครอบคลุมของเรา การจัดการข้อมูลอย่างเชี่ยวชาญ ### [การเปิดไฟล์ CSV ด้วยโปรแกรมแยกวิเคราะห์ที่ต้องการ](./csv-file-opening-csv-files-with-preferred-parser/) เรียนรู้วิธีเปิดและแยกไฟล์ CSV ด้วยตัวแยกวิเคราะห์แบบกำหนดเองใน Aspose.Cells สำหรับ .NET จัดการข้อความและวันที่ได้อย่างง่ายดาย เหมาะสำหรับนักพัฒนา +### [บันทึกเวิร์กบุ๊กเป็น CSV ใน C# – ส่งออก Excel เป็น CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +เรียนรู้วิธีบันทึกไฟล์ Excel เป็น CSV ด้วย C# โดยใช้ Aspose.Cells สำหรับ .NET อย่างง่ายดายและมีประสิทธิภาพ {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/thai/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..271f6b1d73 --- /dev/null +++ b/cells/thai/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: บันทึกเวิร์กบุ๊กเป็น CSV ใน C# อย่างรวดเร็ว เรียนรู้วิธีส่งออก Excel + เป็น CSV ตั้งค่าความแม่นยำ และแปลงไฟล์ xlsx เป็น CSV ด้วย Aspose.Cells เพียงไม่กี่บรรทัด +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: th +og_description: บันทึกเวิร์กบุ๊กเป็น CSV ใน C# อย่างรวดเร็ว คู่มือนี้แสดงวิธีส่งออก + Excel เป็น CSV ตั้งค่าความแม่นยำ และแปลงไฟล์ xlsx เป็น CSV ด้วย Aspose.Cells +og_title: บันทึกเวิร์กบุ๊กเป็น CSV ใน C# – ส่งออก Excel เป็น CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: บันทึกเวิร์กบุ๊กเป็น CSV ใน C# – ส่งออก Excel เป็น CSV +url: /th/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก workbook เป็น CSV ใน C# – ส่งออก Excel เป็น CSV + +เคยต้อง **บันทึก workbook เป็น CSV** แต่ไม่แน่ใจว่าจะทำให้ตัวเลขเรียบร้อยได้อย่างไรหรือไม่? คุณไม่ได้อยู่คนเดียว ในหลายสถานการณ์ของ data‑pipeline เราต้อง **ส่งออก Excel เป็น CSV** พร้อมคงจำนวนหลักสำคัญที่ต้องการไว้ และไลบรารี Aspose.Cells ทำให้เรื่องนี้ง่ายดาย + +ในบทเรียนนี้คุณจะได้เห็นตัวอย่างที่พร้อมรันเต็มรูปแบบที่ **บันทึก workbook เป็น CSV** แสดง *วิธีตั้งค่าความแม่นยำ* และแม้กระทั่งอธิบาย *วิธีแปลง xlsx เป็น CSV* สำหรับโครงการจริง ไม่มีการอ้างอิงที่คลุมเครือ—แค่โค้ดที่คุณคัดลอก วาง และรันได้ทันที + +## สิ่งที่คุณจะได้เรียนรู้ + +- ขั้นตอนที่แน่นอนในการ **บันทึก workbook เป็น CSV** ด้วยการตั้งค่าความแม่นยำที่กำหนดเอง +- วิธี **ส่งออก Excel เป็น CSV** ด้วย `CsvSaveOptions` และเหตุผลที่คุณสมบัติ `SignificantDigits` มีความสำคัญ +- ตัวเลือกต่าง ๆ สำหรับความแม่นยำที่แตกต่างกันและข้อผิดพลาดทั่วไปเมื่อทำงานกับตัวเลขขนาดใหญ่ +- การมองอย่างรวดเร็วที่การแปลงไฟล์ `.xlsx` เป็น `.csv` โดยไม่สูญเสียความสมบูรณ์ของข้อมูล + +### ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ยังทำงานบน .NET Framework 4.6+ ด้วย) +- แพคเกจ NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`) +- ความเข้าใจพื้นฐานเกี่ยวกับ C# และการทำงานกับไฟล์ I/O + +ถ้าคุณมีสิ่งเหล่านี้แล้ว ไปกันเลย + +![ตัวอย่างการบันทึก workbook เป็น csv](image.png "ตัวอย่างการบันทึก workbook เป็น csv") + +## บันทึก workbook เป็น CSV – คู่มือขั้นตอนโดยละเอียด + +ด้านล่างเป็นโปรแกรมเต็มทุกบรรทัด ทุกบรรทัดมีคอมเมนต์เพื่อให้คุณเห็น *ทำไม* แต่ละส่วนถึงอยู่ที่นั่น ไม่ใช่แค่ *ทำอะไร* + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### ทำไมต้องใช้ `CsvSaveOptions.SignificantDigits`? + +เมื่อคุณ **ตั้งค่าความแม่นยำ** สำหรับการส่งออก CSV คุณกำลังกำหนดจำนวนหลักของตัวเลขแบบ floating‑point ที่จะคงอยู่หลังการแปลง Excel เก็บตัวเลขด้วยความแม่นยำสูงสุด 15 หลัก แต่ระบบส่วนใหญ่ (ฐานข้อมูล, pipeline การวิเคราะห์) ต้องการแค่ไม่กี่หลักเท่านั้น การตั้งค่า `SignificantDigits = 4` ทำให้ไลบรารีปัด `123.456789` เป็น `123.5` ทำให้ไฟล์กระชับและอ่านง่าย + +> **เคล็ดลับ:** หากคุณต้องการค่าที่ *แม่นยำ* (เช่น ข้อมูลการเงิน) ให้ตั้งค่า `SignificantDigits` ให้สูงขึ้นหรือไม่ตั้งค่าเลย ค่าเริ่มต้นคือ 15 ซึ่งสอดคล้องกับความแม่นยำภายในของ Excel + +## ส่งออก Excel เป็น CSV – ตัวเลือกทั่วไป + +### การเปลี่ยนตัวคั่น + +บางระบบคาดหวังเซมิโคลอน (`;`) แทนคอมม่า คุณสามารถปรับได้ดังนี้ + +```csharp +csvOptions.Delimiter = ';'; +``` + +### ส่งออก Worksheet เฉพาะ + +หากต้องการส่งออกเฉพาะแผ่นที่สอง ให้แทนที่บล็อกตัวเลือกด้วย: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +จากนั้นเรียก `workbook.Save` เหมือนเดิม เทคนิคนี้มีประโยชน์เมื่อคุณ **แปลง xlsx เป็น csv** แต่สนใจเฉพาะแท็บหนึ่งเท่านั้น + +### การจัดการชุดข้อมูลขนาดใหญ่ + +เมื่อทำงานกับแถวหลายล้านแถว ควรพิจารณาการสตรีม CSV แทนการโหลด workbook ทั้งหมดเข้าสู่หน่วยความจำ Aspose.Cells มีคุณสมบัติ `CsvSaveOptions` ชื่อ `ExportDataOnly` ที่ข้ามข้อมูลสไตล์ ลดภาระหน่วยความจำ + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## วิธีตรวจสอบผลลัพธ์ของ CSV + +หลังจากรันโปรแกรม เปิดไฟล์ `Numbers_4sd.csv` ด้วยโปรแกรมแก้ไขข้อความธรรมดา คุณควรเห็นประมาณนี้ + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +สังเกตว่าตัวเลขถูกจำกัดไว้ที่สี่หลักสำคัญ ตามที่เราตั้งค่า หากเปิดไฟล์ใน Excel ค่าจะปรากฏเหมือนกัน เพราะ Excel เคารพการปัดที่ทำในขั้นตอนส่งออก + +## กรณีขอบและการแก้ไขปัญหา + +| สถานการณ์ | สิ่งที่ต้องตรวจสอบ | วิธีแก้ | +|-----------|-------------------|--------| +| **ไฟล์ไม่พบ** | ตรวจสอบว่า `sourcePath` ชี้ไปยังไฟล์ `.xlsx` ที่มีอยู่จริง | ใช้ `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")` | +| **การปัดไม่ถูกต้อง** | ตรวจสอบว่าได้ตั้งค่า `SignificantDigits` ก่อนเรียก `Save` | ย้ายการกำหนด `CsvSaveOptions` ให้ก่อนหรือเช็คค่าที่ตั้งไว้อีกครั้ง | +| **อักขระพิเศษแสดงเป็น �** | การเข้ารหัส CSV เริ่มต้นเป็น UTF‑8 โดยไม่มี BOM | ตั้งค่า `csvOptions.Encoding = System.Text.Encoding.UTF8` หรือ `Encoding.Unicode` | +| **คอลัมน์ว่างเพิ่มขึ้น** | บาง worksheet มีการจัดรูปแบบเกินช่วงที่ใช้จริง | เรียก `worksheet.Cells.MaxDisplayRange` เพื่อตัดคอลัมน์ที่ไม่ได้ใช้ก่อนส่งออก | + +## วิธีตั้งค่าความแม่นยำแบบไดนามิก + +บางครั้งความแม่นยำที่ต้องการไม่ทราบล่วงหน้า คุณสามารถอ่านค่าจากไฟล์ config หรืออาร์กิวเมนต์บรรทัดคำสั่งได้ + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +จากนั้นรัน: + +``` +dotnet run -- 6 +``` + +และจะได้ CSV ที่มีหกหลักสำคัญ การปรับเล็ก ๆ นี้ทำให้โซลูชันยืดหยุ่นสำหรับ **การส่งออก csv** ในสภาพแวดล้อมที่หลากหลาย + +## สรุปตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน โปรแกรมเต็ม (รวมการปรับแต่งเสริม) มีดังนี้ + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +รันโปรแกรม เปิด CSV ที่สร้างขึ้น คุณจะเห็นความแม่นยำตามที่กำหนด ยืนยันว่าคุณได้ **บันทึก workbook เป็น CSV** สำเร็จแล้ว + +## สรุป + +ตอนนี้คุณมีสูตรที่พร้อมใช้งานในระดับ production สำหรับ **การบันทึก workbook เป็น CSV** ด้วย C# คู่มือนี้ครอบคลุม *วิธีส่งออก Excel เป็น CSV* แสดง *วิธีตั้งค่าความแม่นยำ* ผ่าน `CsvSaveOptions.SignificantDigits` และแสดงหลายรูปแบบสำหรับสถานการณ์ **แปลง xlsx เป็น csv** ด้วยโค้ดเต็มคุณสามารถนำไปใส่ในโปรเจกต์ .NET ใดก็ได้และเริ่มส่งออกข้อมูลได้ทันที + +**ต่อไปคุณจะทำอะไร?** + +- ทดลองใช้ตัวคั่นต่าง ๆ (`;`, `\t`) สำหรับการส่งออกเป็น TSV +- ผสานวิธีนี้กับ file‑watcher เพื่อทำให้ CSV สร้างอัตโนมัติเมื่อไฟล์ Excel มีการเปลี่ยนแปลง +- สำรวจ `CsvLoadOptions` ของ Aspose.Cells หากต้องการอ่าน CSV กลับเข้า workbook + +ปรับความแม่นยำ เพิ่มหัวเรื่องแบบกำหนดเอง หรือเชื่อมต่อ exporter ตามต้องการ + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/document-properties/_index.md b/cells/thai/net/document-properties/_index.md index 503bbc8b25..90b49a8bc4 100644 --- a/cells/thai/net/document-properties/_index.md +++ b/cells/thai/net/document-properties/_index.md @@ -20,7 +20,7 @@ คุณสมบัติเอกสารใน Excel ทำหน้าที่เหมือนเมตาดาต้าเกี่ยวกับไฟล์ของคุณ ลองนึกภาพดู: ไฟล์ Excel แต่ละไฟล์มีบัตรประจำตัวของตัวเองซึ่งประกอบด้วยข้อมูลสำคัญ เช่น ชื่อเรื่อง ผู้เขียน และคำสำคัญ เมื่อใช้ Aspose.Cells สำหรับ .NET การเข้าถึงและจัดการคุณสมบัติเหล่านี้จะกลายเป็นเรื่องง่าย โปรดจำไว้ว่าคุณสมบัติเหล่านี้ไม่เพียงช่วยให้คุณจัดระเบียบไฟล์ได้เท่านั้น แต่ยังช่วยเพิ่มความสามารถในการค้นหาเอกสารของคุณได้อีกด้วย อยากรู้ไหมว่าทำอย่างไร มาเริ่มกันเลย! ## การเข้าถึงคุณสมบัติของเอกสาร -ก่อนอื่นมาพูดถึงการเข้าถึงคุณสมบัติของเอกสารใน .NET กันก่อน นี่คือจุดเริ่มต้น ลองนึกภาพว่าคุณต้องการทราบว่าใครเป็นผู้เขียนสเปรดชีตเฉพาะเจาะจง โดยใช้ Aspose.Cells คุณสามารถดึงข้อมูลนี้ได้อย่างรวดเร็ว [การเข้าถึงคุณสมบัติของเอกสารใน .NET](./accessing-document-properties/) บทช่วยสอนคือคู่มือที่คุณควรอ่าน เพราะจะให้คำแนะนำที่ใช้งานง่ายในการค้นหาอัญมณีที่ซ่อนอยู่ภายในไฟล์ของคุณ คุณจะได้เรียนรู้วิธีเรียกค้นคุณสมบัติต่างๆ เช่น วันที่สร้างและวันที่แก้ไขล่าสุด และเชื่อฉันเถอะว่ามันง่ายกว่าเช้าวันอาทิตย์เสียอีก! +ก่อนแรกมาพูดถึงการเข้าถึงคุณสมบัติของเอกสารใน .NET กันก่อน นี่คือจุดเริ่มต้น ลองนึกภาพว่าคุณต้องการทราบว่าใครเป็นผู้เขียนสเปรดชีตเฉพาะเจาะจง โดยใช้ Aspose.Cells คุณสามารถดึงข้อมูลนี้ได้อย่างรวดเร็ว [การเข้าถึงคุณสมบัติของเอกสารใน .NET](./accessing-document-properties/) บทช่วยสอนคือคู่มือที่คุณควรอ่าน เพราะจะให้คำแนะนำที่ใช้งานง่ายในการค้นหาอัญมณีที่ซ่อนอยู่ภายในไฟล์ของคุณ คุณจะได้เรียนรู้วิธีเรียกค้นคุณสมบัติต่างๆ เช่น วันที่สร้างและวันที่แก้ไขล่าสุด และเชื่อฉันเถอะว่ามันง่ายกว่าเช้าวันอาทิตย์เสียอีก! ## การเพิ่มคุณสมบัติของเอกสาร ตอนนี้คุณสามารถเข้าถึงคุณสมบัติที่มีอยู่แล้วได้ แล้วถ้าคุณต้องการเพิ่มคุณสมบัติของคุณเองล่ะ? นี่คือจุดที่ความคิดสร้างสรรค์เข้ามามีบทบาท! คุณอาจต้องการแท็กไฟล์ Excel ของคุณด้วยชื่อโครงการหรือรายละเอียดที่เกี่ยวข้องอื่นๆ โดยทำตามขั้นตอนต่อไปนี้ [การเพิ่มคุณสมบัติเอกสารใน .NET](./adding-document-properties/) บทช่วยสอนนี้จะช่วยให้คุณได้ค้นพบวิธีการเพิ่มคุณสมบัติที่กำหนดเองให้กับเอกสารของคุณ เหมือนกับการเพิ่มสัมผัสส่วนตัวให้กับไฟล์ของคุณ ลองนึกภาพว่าคุณกำลังตกแต่งบ้านของคุณ ยิ่งคุณเพิ่มสัมผัสที่เป็นเอกลักษณ์มากเท่าไหร่ ก็ยิ่งสะท้อนถึงบุคลิกของคุณมากขึ้นเท่านั้น @@ -35,6 +35,8 @@ เรียนรู้วิธีการเข้าถึงคุณสมบัติเอกสารใน Excel โดยใช้ Aspose.Cells สำหรับ .NET พร้อมคำแนะนำทีละขั้นตอนของเรา จัดการสเปรดชีตของคุณอย่างมีประสิทธิภาพ ### [การเพิ่มคุณสมบัติเอกสารใน .NET](./adding-document-properties/) เรียนรู้วิธีการเพิ่มคุณสมบัติเอกสารใน Excel โดยใช้ Aspose.Cells สำหรับ .NET ด้วยคู่มือทีละขั้นตอนโดยละเอียดนี้ +### [สร้างเวิร์กบุ๊ก Excel – เพิ่มคุณสมบัติกำหนดเองและบันทึกเป็น XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +เรียนรู้วิธีการสร้างไฟล์ Excel เพิ่มคุณสมบัติกำหนดเองและบันทึกเป็นรูปแบบ XLSB ด้วย Aspose.Cells สำหรับ .NET {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/thai/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..7bddf32295 --- /dev/null +++ b/cells/thai/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-22 +description: สร้างเวิร์กบุ๊ก Excel, เพิ่มคุณสมบัติแบบกำหนดเอง, ตั้งชื่อแผ่นงาน, และบันทึกเป็นไฟล์ไบนารี + XLSB ด้วย C# +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: th +og_description: สร้างเวิร์กบุ๊ก Excel, เพิ่มคุณสมบัติกำหนดเอง, ตั้งชื่อแผ่นงาน, และบันทึกเป็นไฟล์ไบนารี + XLSB ด้วย C# +og_title: สร้างสมุดงาน Excel – เพิ่มคุณสมบัติกำหนดเองและบันทึกเป็น XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: สร้างเวิร์กบุ๊ก Excel – เพิ่มคุณสมบัติกำหนดเองและบันทึกเป็น XLSB +url: /th/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง Excel Workbook – เพิ่ม Custom Properties และบันทึกเป็น XLSB + +เคยต้อง **create Excel workbook** ด้วยโปรแกรมและต้องการเก็บ metadata แนบมาด้วยหรือไม่? บางทีคุณอาจกำลังสร้างเครื่องมือรายงานที่ใส่แท็กให้ไฟล์แต่ละไฟล์ด้วย Report ID, ชื่อผู้เขียน, หรือหมายเลขเวอร์ชัน ในกรณีนั้น การเรียนรู้วิธี **add custom properties** ขณะ **set worksheet name** และสุดท้าย **save as XLSB** จะช่วยคุณประหยัดการทำงานหลังจากนั้นเป็นจำนวนมาก + +ในบทเรียนนี้ เราจะพาคุณผ่านตัวอย่างที่สมบูรณ์และสามารถรันได้ ซึ่งแสดงอย่างชัดเจนว่าต้อง **write binary Excel file** อย่างไรโดยใช้ C#. คุณจะเห็นว่าทำไมรูปแบบ XLSB จึงเป็นตัวเลือกที่เหมาะสมสำหรับการส่งต่อ custom properties, วิธีหลีกเลี่ยงข้อผิดพลาดที่พบบ่อยที่สุด, และควรทำอย่างไรหากต้องรองรับเวอร์ชัน Excel เก่า + +--- + +## สิ่งที่คุณต้องการ + +- **.NET 6+** (หรือ .NET Framework 4.6+). โค้ดทำงานบน runtime ใดก็ได้ที่เป็นรุ่นใหม่ +- **Aspose.Cells for .NET** (ทดลองใช้ฟรีหรือแบบมีลิขสิทธิ์). มันให้คลาส `Workbook`, `Worksheet`, และ `CustomProperties` ที่ใช้ด้านล่าง +- IDE ที่คุณถนัด – Visual Studio, Rider, หรือแม้แต่ VS Code ก็ใช้ได้ +- สิทธิ์การเขียนไปยังโฟลเดอร์ที่ไฟล์ที่สร้างจะถูกบันทึก +- ไม่จำเป็นต้องใช้ไลบรารีของบุคคลที่สามอื่น ๆ + +## ขั้นตอนที่ 1: ติดตั้ง Aspose.Cells + +เริ่มต้นโดยเพิ่มแพ็กเกจ NuGet ของ Aspose.Cells ไปยังโปรเจคของคุณ: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro tip:** หากคุณทำงานบนเซิร์ฟเวอร์ CI ให้เก็บ license key ไว้ใน environment variable แล้วโหลดใน runtime – วิธีนี้จะป้องกันไม่ให้ลายน้ำ “evaluation” แทรกเข้ามาในผลลัพธ์ของคุณ + +## ขั้นตอนที่ 2: สร้าง Excel Workbook – ภาพรวม + +การกระทำแรกที่แท้จริงคือการ **create Excel workbook**. วัตถุนี้เป็นตัวแทนของไฟล์ทั้งหมดในหน่วยความจำและให้คุณเข้าถึง worksheets, styles, และ custom properties. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +ทำไมต้องสร้าง `Workbook` ใหม่แทนการโหลดเทมเพลต? Workbook ที่ว่างเปล่ารับประกันว่าจะไม่มีสไตล์ที่ซ่อนอยู่หรือ custom properties ที่เหลืออยู่ ซึ่งสำคัญอย่างยิ่งเมื่อคุณต้องการ **write binary excel file** สำหรับระบบ downstream ที่คาดหวังไฟล์ที่สะอาด + +## ขั้นตอนที่ 3: ตั้งชื่อ Worksheet (และเหตุผลที่สำคัญ) + +Worksheet ของ Excel มีค่าเริ่มต้นเป็น “Sheet1”, “Sheet2”, เป็นต้น การตั้งชื่อ Worksheet ให้มีความหมายทำให้การประมวลผล downstream—เช่น Power Query หรือ VBA macro—อ่านง่ายขึ้นมาก + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +หากคุณพยายามกำหนดชื่อซ้ำ Aspose.Cells จะโยน `ArgumentException`. เพื่อความปลอดภัย คุณสามารถตรวจสอบ `Worksheets.Exists("Data")` ก่อนทำการเปลี่ยนชื่อได้ + +## ขั้นตอนที่ 4: เพิ่ม Custom Properties + +Custom properties จะถูกเก็บใน XML ภายในของ workbook และเดินทางพร้อมไฟล์ไม่ว่ารูปแบบใดก็ตาม พวกมันเหมาะอย่างยิ่งสำหรับฝังข้อมูลเช่น `ReportId` หรือ `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **ทำไมต้องใช้ custom properties?** +> • สามารถเข้าถึงได้ผ่านแผง “File → Info → Properties” ของ Excel. +> • โค้ดที่ใช้ workbook สามารถอ่านได้โดยไม่ต้องสแกนเนื้อหาเซลล์. +> • พวกมันคงอยู่หลังการแปลงรูปแบบ (XLSX ↔ XLSB) เนื่องจากเป็นส่วนหนึ่งของ metadata ของไฟล์. + +คุณยังสามารถเก็บวันที่, ค่าบูลีน, หรือแม้แต่ binary blob ได้ แต่ควรทำให้ payload มีขนาดเล็ก—Excel ไม่ใช่ฐานข้อมูล + +## ขั้นตอนที่ 5: บันทึกเป็น XLSB (Write Binary Excel File) + +รูปแบบ XLSB จะเก็บข้อมูลในโครงสร้างแบบไบนารี ซึ่งทำให้ไฟล์มีขนาดเล็กลงและเปิดได้เร็วขึ้น ที่สำคัญสำหรับบทเรียนนี้ **custom properties จะฝังอยู่ใน binary stream** ทำให้มั่นใจว่าพวกมันจะเดินทางพร้อมไฟล์ + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### ผลลัพธ์ที่คาดหวัง + +หลังจากรันโปรแกรม คุณจะพบไฟล์ `WithCustomProps.xlsb` บนเดสก์ท็อปของคุณ เปิดไฟล์ใน Excel ไปที่ **File → Info → Properties** แล้วคุณจะเห็น `ReportId` และ `GeneratedBy` แสดงอยู่ภายใต้ *Custom*. + +## ขั้นตอนที่ 6: กรณีขอบและคำถามทั่วไป + +### ถ้าโฟลเดอร์เป้าหมายเป็นแบบอ่าน‑อย่างเดียว (read‑only) จะทำอย่างไร? + +ห่อ `Save` ด้วยบล็อก `try/catch` แล้วเปลี่ยนไปใช้ตำแหน่งที่ผู้ใช้เขียนได้ เช่น `%TEMP%`. วิธีนี้จะป้องกันแอปพลิเคชันจากการหยุดทำงานเมื่อเกิดข้อผิดพลาดเรื่องสิทธิ์ + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### ฉันสามารถ **save as XLSX** และยังคงเก็บ custom properties ได้หรือไม่? + +ได้—เพียงเปลี่ยน `SaveFormat.Xlsb` เป็น `SaveFormat.Xlsx`. properties จะถูกเก็บในส่วน XML เดียวกัน ดังนั้นจึงคงอยู่หลังการสลับรูปแบบ อย่างไรก็ตาม ไฟล์ XLSX จะใหญ่กว่าเพราะเป็น XML ที่บีบอัดเป็น zip, ในขณะที่ XLSB ให้ประสิทธิภาพดีกว่าสำหรับชุดข้อมูลขนาดใหญ่ + +### ฉันจะอ่าน custom properties ภายหลังอย่างไร? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +โค้ดส่วนนี้พิมพ์ custom property ทั้งหมด ทำให้บริการ downstream ตรวจสอบที่มาของไฟล์ได้อย่างง่ายดาย + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในโปรเจคคอนโซลใหม่ได้ ไม่มีส่วนใดหาย—ทุกอย่างตั้งแต่คำสั่ง `using` จนถึง `Console.WriteLine` สุดท้ายรวมอยู่ด้วย + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +รันโปรแกรม เปิดไฟล์ที่ได้และตรวจสอบ custom properties นั่นคือกระบวนการทั้งหมดของ **create excel workbook**, **add custom properties**, **set worksheet name**, และ **save as xlsb** ในขั้นตอนที่เรียบร้อยหนึ่งเดียว + +## สรุป + +ตอนนี้คุณรู้แล้วว่าต้องทำอย่างไรเพื่อ **create Excel workbook**, ตั้งชื่อแผ่นงานให้ชัดเจนด้วย **set worksheet name**, ฝัง metadata ที่เป็นประโยชน์ด้วย **add custom properties**, และสุดท้าย **save as XLSB** เพื่อสร้างไฟล์ Excel แบบไบนารีที่กะทัดรัด กระบวนการนี้เชื่อถือได้ ทำงานได้บนหลายเวอร์ชันของ .NET และขยายได้ดีไม่ว่าจะสร้างรายงานหนึ่งรายการหรือพันรายการ + +ต่อไปทำอะไรดี? ลองเพิ่มตารางข้อมูลลงในแผ่น “Data”, ทดลองกับประเภท property ต่าง ๆ (วันที่, ค่าบูลีน), หรือเปลี่ยนผลลัพธ์เป็น **save as xlsb** สำหรับชุดข้อมูลขนาดใหญ่ คุณอาจลองปกป้อง workbook ด้วยรหัสผ่าน—Aspose.Cells ทำให้เป็นบรรทัดเดียวเช่นกัน + +หากมีปัญหาใด ๆ อย่าลังเลที่จะคอมเมนต์ หรือแบ่งปันว่าคุณได้ขยายรูปแบบนี้ในโปรเจคของคุณอย่างไร ขอให้สนุกกับการเขียนโค้ด! + +--- + +![Create Excel workbook screenshot](image.png){alt="สร้าง Excel workbook พร้อม custom properties"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/excel-advanced-named-ranges/_index.md b/cells/thai/net/excel-advanced-named-ranges/_index.md index 7b90f7002a..4a0dcca52e 100644 --- a/cells/thai/net/excel-advanced-named-ranges/_index.md +++ b/cells/thai/net/excel-advanced-named-ranges/_index.md @@ -31,11 +31,13 @@ ข้อดีของฟังก์ชันนี้อยู่ที่ความสะดวกในการใช้งาน คุณสามารถผสานเซลล์ด้วยโปรแกรม ซึ่งหมายความว่าการจัดรูปแบบของคุณสามารถทำโดยอัตโนมัติได้ ลองนึกภาพการสร้างรายงานรายสัปดาห์ที่ส่วนหัวจะผสานโดยอัตโนมัติทุกครั้ง ด้วย Aspose งานนี้ใช้เวลาเพียงไม่กี่คลิกและเขียนโค้ดไม่กี่บรรทัด อยากรู้ไหมว่าจะทำอย่างไร ลองอ่านคู่มือของเรา [การผสานเซลล์ในช่วงที่ตั้งชื่อ](./merge-cells-in-named-range/). -## การดำเนินการขั้นสูงกับช่วงที่มีชื่อในบทช่วยสอน Excel +## การดำเนินการขั้นสูงกับช่วงที่ตั้งชื่อในบทช่วยสอน Excel ### [ระบุเซลล์ในช่วงที่ตั้งชื่อใน Excel](./identify-cells-in-named-range/) ระบุเซลล์ในช่วงที่ตั้งชื่อใน Excel ได้อย่างง่ายดายโดยใช้ Aspose.Cells สำหรับ .NET ด้วยบทช่วยสอนทีละขั้นตอนที่ครอบคลุมนี้ ### [รวมเซลล์ในช่วงที่ตั้งชื่อใน Excel](./merge-cells-in-named-range/) เรียนรู้วิธีการผสานเซลล์ในช่วงที่มีชื่อโดยใช้ Aspose.Cells สำหรับ .NET ในบทช่วยสอนทีละขั้นตอนนี้ ค้นพบวิธีการจัดรูปแบบ สไตล์ และการทำงานอัตโนมัติของรายงาน Excel +### [สร้างสมุดงาน Excel – คู่มือขั้นตอนการเพิ่มตารางและกฎการตั้งชื่อ](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +เรียนรู้วิธีสร้างสมุดงาน Excel พร้อมเพิ่มตารางและกำหนดกฎการตั้งชื่ออย่างละเอียดด้วย Aspose.Cells สำหรับ .NET {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/thai/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..8596a5423c --- /dev/null +++ b/cells/thai/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: สร้างไฟล์ Excel พร้อมตาราง, เรียนรู้กฎการตั้งชื่อของตาราง Excel, หลีกเลี่ยงข้อผิดพลาดของการตั้งชื่อช่วง, + และตั้งชื่อตาราง Excel อย่างถูกต้องใน C# +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: th +og_description: สร้างไฟล์ Excel ใน C# และเชี่ยวชาญกฎการตั้งชื่อตาราง Excel เรียนรู้วิธีเพิ่มแผ่นงานตาราง + ตั้งชื่อตาราง Excel และแก้ไขข้อผิดพลาดของช่วงที่ตั้งชื่อ +og_title: สร้างสมุดงาน Excel – คู่มือเต็มสำหรับตาราง C# และการตั้งชื่อ +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: สร้างสมุดงาน Excel – คู่มือขั้นตอนต่อขั้นตอนในการเพิ่มตารางและกฎการตั้งชื่อ +url: /th/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง Excel Workbook – คู่มือ C# ฉบับสมบูรณ์สำหรับตารางและการตั้งชื่อ + +เคยต้อง **create excel workbook** ด้วยโปรแกรมและสงสัยว่าทำไมชื่อของตารางของคุณจึงชนกับ named range หรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายโครงการอัตโนมัติเมื่อคุณพยายามตั้งชื่อที่เป็นมิตรให้กับตาราง Excel จะโยน *named range error* ที่ทำให้กระบวนการหยุดชะงัก + +ในบทเรียนนี้เราจะเดินผ่านตัวอย่างที่สามารถรันได้เต็มรูปแบบที่ **creates an Excel workbook**, **adds a table to a worksheet**, และอธิบาย **excel table naming rules** ที่ช่วยให้คุณไม่สะดุดเอง ตอนจบคุณจะรู้วิธี **add table worksheet**, **set excel table name**, และจัดการกับการชนกันของชื่ออย่างราบรื่น + +> **Pro tip:** ความสับสนส่วนใหญ่เกิดจากข้อเท็จจริงที่ว่า Excel ปฏิบัติต่อชื่อของตารางและ named range ระดับ workbook เป็น namespace เดียว การเข้าใจกฎนี้ตั้งแต่ต้นจะช่วยคุณประหยัดเวลาการดีบักหลายชั่วโมง + +## สิ่งที่คุณต้องเตรียม + +- **Aspose.Cells for .NET** (หรือไลบรารีใด ๆ ที่เปิดเผยคลาส `Workbook`, `Worksheet`, `ListObject`) +- .NET 6+ หรือ .NET Framework 4.8 – โค้ดทำงานได้ทั้งสองเวอร์ชัน +- ความเข้าใจพื้นฐานของไวยากรณ์ C# – ไม่ต้องใช้เทคนิคขั้นสูง + +หากคุณมีสิ่งเหล่านี้แล้ว มาเริ่มกันเลย + +![ภาพหน้าจอของ Excel workbook ที่สร้างใหม่พร้อมตารางชื่อ SalesData](create_excel_workbook_example.png "ตัวอย่างการสร้าง excel workbook") + +## ขั้นตอนที่ 1: สร้าง Excel Workbook และเข้าถึง Worksheet แรก + +สิ่งแรกที่คุณทำเมื่อ **create excel workbook** คือสร้างอินสแตนซ์ของคลาส `Workbook` และดึงอ้างอิงไปยังแผ่นงานที่คุณจะทำงาน ใน Aspose.Cells workbook จะเริ่มต้นด้วยแผ่นงานเริ่มต้นชื่อ “Sheet1” + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +ทำไมขั้นตอนนี้ถึงสำคัญ? หากไม่มีอ็อบเจกต์ workbook คุณจะไม่มีที่ใดให้แนบตารางได้ และอ้างอิง `Worksheet` จะเป็นผืนผ้าใบที่การทำงาน **add table worksheet** จะเกิดขึ้น + +## ขั้นตอนที่ 2: เพิ่ม Table (ListObject) ครอบคลุมช่วงที่กำหนด + +ต่อไปเราจะ **add table worksheet**‑level data วิธี `ListObjects.Add` ต้องการสตริงช่วงและบูลีนที่บ่งบอกว่าบรรทัดแรกเป็นหัวตารางหรือไม่ + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +สังเกตการเรียก `salesTable.Name = "SalesData"` นี่คือจุดที่ **excel table naming rules** เข้ามาแทรก: ชื่อต้องเป็นเอกลักษณ์ทั่วทั้ง workbook ไม่ใช่แค่ในแผ่นเดียว นอกจากนี้ยังห้ามมีช่องว่างหรืออักขระพิเศษ และต้องเริ่มด้วยตัวอักษรหรือ underscore + +## ขั้นตอนที่ 3: พยายามสร้าง Workbook‑Level Named Range ด้วยชื่อเดียวกัน + +ตอนนี้เราจะกระตุ้น **named range error** อย่างตั้งใจเพื่อดูว่าอะไรจะเกิดขึ้นเมื่อมีการชนกันของชื่อ + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +หากคุณยกเลิกคอมเมนต์บรรทัดนี้ Aspose.Cells จะโยน `ArgumentException` ระบุว่าชื่อนั้นมีอยู่แล้ว ข้อความข้อผิดพลาดจะเป็นดังนี้: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +ข้อความนั้นคือ **named range error** ที่เราเตือนไว้ก่อนหน้านี้ มันบอกคุณว่า **excel table naming rules** ปฏิบัติต่อชื่อของตารางและ named range เป็น namespace เดียว + +## ขั้นตอนที่ 4: จัดการกับความขัดแย้งของชื่ออย่างราบรื่น + +ในโค้ดจริงคุณควรจับข้อยกเว้นนี้และหรือเปลี่ยนชื่อของตารางหรือเลือกชื่อ range ที่ต่างออกไป นี่คือตัวอย่างที่เรียบร้อย: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +โดยการห่อการเรียกใน `try/catch` คุณจะหลีกเลี่ยงการหยุดทำงานอย่างรุนแรงและให้ผู้ใช้ (หรือโค้ดที่เรียก) คำอธิบายที่ชัดเจน—ซึ่งเป็นข้อมูลเชิงลึกของ **excel table naming rules** ที่ช่วยป้องกันบั๊กในอนาคต + +## ขั้นตอนที่ 5: บันทึก Workbook และตรวจสอบผลลัพธ์ + +สุดท้ายให้บันทึกไฟล์ลงดิสก์และเปิดใน Excel เพื่อตรวจสอบว่าตารางและ named range ที่มีอยู่ถูกสร้างขึ้นหรือไม่ + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +เมื่อคุณเปิด *SalesReport.xlsx* คุณจะเห็น: + +- ตารางที่ครอบคลุม **A1:C5** ชื่อ **SalesData** +- หากคุณเก็บ range ทางเลือกไว้ จะมี workbook‑level named range **SalesData_Range** ชี้ไปที่ **D1** + +ไม่มีการครช์ขณะรันและความขัดแย้งของชื่อได้รับการแก้ไข + +## ทำความเข้าใจ Excel Table Naming Rules อย่างละเอียด + +มาดูเหตุผลที่มีกฎเหล่านี้: + +| Rule | What It Means | Example | +|------|----------------|---------| +| **Unique across workbook** | ไม่สองตารางหรือ named range สามารถใช้ตัวระบุเดียวกันได้ | `Table1` vs `Table1` → conflict | +| **Starts with a letter or underscore** | ชื่อไม่สามารถเริ่มด้วยตัวเลข | `_Q1Sales` ✅, `1QSales` ❌ | +| **No spaces or special characters** | ใช้ CamelCase หรือ underscore | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Length ≤ 255 characters** | โดยปกติจะเป็นไปตามเงื่อนไข | N/A | + +การคำนึงถึงกฎเหล่านี้ขณะคุณ **set excel table name** จะทำให้หลีกเลี่ยง *named range error* ที่น่ากลัว + +## ความแปรผันทั่วไปและกรณีขอบ + +1. **การเพิ่มหลายตาราง** – แต่ละตารางต้องมีชื่อที่เป็นเอกลักษณ์ +2. **การเปลี่ยนชื่อตารางที่มีอยู่** – ใช้ `salesTable.Name = "NewName"` ก่อนสร้าง named range ที่อาจขัดแย้ง +3. **การใช้ dynamic ranges** – หากต้องการช่วงที่ขยายได้ ใช้การอ้างอิงโครงสร้างเช่น `=SalesData[Amount]` แทนที่อยู่คงที่ +4. **named range ข้ามแผ่น** – ยังคงเป็นส่วนของ namespace เดียวกัน ดังนั้นตารางบน Sheet1 จะบล็อก range ที่ใช้ชื่อเดียวกันบน Sheet2 + +## เคล็ดลับสำหรับการทำ Automation ของ Excel อย่างราบรื่น + +- **Check existence before adding**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Generate safe names programmatically**: เพิ่ม GUID หรือเคาน์เตอร์เพิ่ม (`SalesData_{Guid.NewGuid()}`) เมื่อคุณไม่แน่ใจ +- **Use `ListObject.ShowHeaders = true`** เพื่อทำให้ตารางของคุณเป็นเอกสารอธิบายตัวเอง +- **Validate after saving**: เปิดไฟล์ด้วยไลบรารีเบา ๆ (เช่น EPPlus) เพื่อตรวจสอบว่าตารางถูกสร้างอย่างถูกต้อง + +## สรุป: สิ่งที่เราได้ครอบคลุม + +- วิธี **create excel workbook** ตั้งแต่ต้นด้วย Aspose.Cells +- **excel table naming rules** ที่กำหนดตัวระบุของตารางและ named range อย่างชัดเจน +- ทำไม **named range error** ปรากฏเมื่อใช้ชื่อซ้ำ +- วิธีที่ถูกต้องในการ **add table worksheet** และ **set excel table name** โดยไม่ชนกัน +- แพทเทิร์นที่แข็งแรงสำหรับการจัดการความขัดแย้งของชื่ออย่างราบรื่น + +## ขั้นตอนต่อไป? + +ตอนนี้คุณเชี่ยวชาญพื้นฐานแล้ว ลองสำรวจต่อ: + +- **Dynamic table growth** ด้วย `ListObject.Resize` +- **Applying styles** ให้กับตาราง (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`) +- **Exporting to CSV** พร้อมคงโครงสร้างตารางไว้ +- **Integrating with Office Open XML** เพื่อควบคุมภายใน workbook อย่างละเอียดยิ่งขึ้น + +อย่ากลัวที่จะทดลอง—เปลี่ยนช่วง เพิ่มตารางมากขึ้น หรือเล่นกับสคีมการตั้งชื่อต่าง ๆ ยิ่งคุณทดลองมากเท่าไหร่ ความเข้าใจของคุณใน **excel table naming rules** ก็จะลึกซึ้งยิ่งขึ้น + +--- + +*ขอให้เขียนโค้ดอย่างสนุกสนานและขอให้ workbook ของคุณไม่มีการชนกันอีกเลย!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/excel-custom-number-date-formatting/_index.md b/cells/thai/net/excel-custom-number-date-formatting/_index.md index ad800fdf17..2d5f00d90f 100644 --- a/cells/thai/net/excel-custom-number-date-formatting/_index.md +++ b/cells/thai/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ เรียนรู้วิธีการตรวจสอบค่าเซลล์ Excel เทียบกับรูปแบบตัวเลขที่กำหนดเองโดยใช้ Aspose.Cells สำหรับ .NET ด้วยบทช่วยสอนทีละขั้นตอนนี้ ### [ระบุฟิลด์สูตรเมื่อนำเข้าข้อมูลไปยังแผ่นงาน Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) เรียนรู้วิธีการนำเข้าข้อมูลลงในแผ่นงาน Excel ด้วยฟิลด์สูตรที่ระบุโดยใช้ Aspose.Cells สำหรับ .NET ในบทช่วยสอนโดยละเอียดนี้ +### [คู่มือฉบับสมบูรณ์การจัดรูปแบบตัวเลขใน Excel ด้วย C#](./custom-number-format-excel-in-c-complete-guide/) +เรียนรู้วิธีสร้างและใช้รูปแบบตัวเลขที่กำหนดเองใน Excel ด้วย C# อย่างละเอียด {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/thai/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..8cc536cf67 --- /dev/null +++ b/cells/thai/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: บทเรียนการกำหนดรูปแบบตัวเลขแบบกำหนดเองใน Excel แสดงวิธีนำเข้า DataTable + ไปยัง Excel ตั้งค่าสีพื้นหลังของคอลัมน์ จัดรูปแบบคอลัมน์เป็นสกุลเงิน และบันทึกเวิร์กบุ๊กเป็นไฟล์ + xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: th +og_description: บทเรียนการจัดรูปแบบตัวเลขแบบกำหนดเองใน Excel ที่อธิบายขั้นตอนการนำเข้า + DataTable, ตั้งค่าสีพื้นหลังของคอลัมน์, จัดรูปแบบคอลัมน์เป็นสกุลเงิน, และบันทึกเวิร์กบุ๊กเป็นไฟล์ + xlsx. +og_title: การกำหนดรูปแบบตัวเลขแบบกำหนดเองใน Excel ด้วย C# – คู่มือแบบขั้นตอนต่อขั้นตอน +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: การกำหนดรูปแบบตัวเลขแบบกำหนดเองใน Excel ด้วย C# – คู่มือฉบับสมบูรณ์ +url: /th/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# รูปแบบตัวเลขแบบกำหนดเองใน Excel – บทเรียน Full‑Stack C# + +เคยสงสัยไหมว่าจะแปลงสไตล์ **custom number format excel** อย่างไรโดยตรงจาก C#? บางทีคุณอาจเคยลองส่ง DataTable ไปยังสเปรดชีตแล้วเห็นแค่ตัวเลขธรรมดา ไม่มีสีและไม่มีการจัดรูปแบบสกุลเงิน นั่นเป็นปัญหาที่พบบ่อย—โดยเฉพาะเมื่อคุณต้องการรายงานที่ดูเป็นมืออาชีพสำหรับผู้มีส่วนได้ส่วนเสีย + +ในคู่มือนี้เราจะแก้ปัญหานั้นร่วมกัน: คุณจะได้เรียนรู้วิธี **import datatable to excel**, **set column background color**, **format column as currency**, และสุดท้าย **save workbook as xlsx** พร้อมรูปแบบตัวเลขแบบกำหนดเองที่ทำให้ตัวเลขของคุณโดดเด่น ไม่มีการอ้างอิงที่คลุมเครือ เพียงโซลูชันที่สมบูรณ์และสามารถรันได้ที่คุณสามารถคัดลอก‑วางลงในโปรเจกต์ของคุณ + +--- + +## สิ่งที่คุณจะสร้าง + +เมื่อจบบทเรียนนี้ คุณจะมีแอปคอนโซล C# ที่ทำงานได้เองซึ่ง: + +1. ดึง `DataTable` (คุณสามารถแทนที่ส่วนจำลองด้วยคิวรีของคุณเอง) +2. สร้าง Excel workbook ใหม่โดยใช้ Aspose.Cells (หรือไลบรารีที่เข้ากันได้) +3. ใส่ฟอนต์สีน้ำเงินและหนาให้คอลัมน์แรก, พื้นหลังสีเหลืองอ่อนให้คอลัมน์ที่สอง, และรูปแบบสกุลเงิน (`$#,##0.00`) ให้คอลัมน์ที่สาม +4. บันทึกไฟล์เป็น `DataTableWithStyleArray.xlsx` ในโฟลเดอร์ที่คุณเลือก + +คุณจะเห็นอย่างชัดเจนว่าทุกบรรทัดมีส่วนช่วยอย่างไรต่อไฟล์ Excel สุดท้าย และเราจะอธิบายว่าทำไมการเลือกเหล่านั้นจึงสำคัญต่อการบำรุงรักษาและประสิทธิภาพ + +--- + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือรุ่นที่ใหม่กว่า (โค้ดนี้ทำงานได้กับ .NET Framework 4.7+ ด้วย) +- Aspose.Cells สำหรับ .NET (เวอร์ชันทดลองหรือเวอร์ชันที่มีลิขสิทธิ์) ติดตั้งผ่าน NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- ความคุ้นเคยพื้นฐานกับ `DataTable` และแอปพลิเคชันคอนโซล C# + +--- + +## ขั้นตอนที่ 1: ดึงข้อมูลต้นทางเป็น DataTable + +ก่อนอื่น เราต้องมีข้อมูลบางอย่างเพื่อส่งออก ในสถานการณ์จริงคุณอาจเรียกรีโพซิทอรีหรือรันคิวรี SQL เพื่อดึงข้อมูล สำหรับการอธิบายนี้เราจะสร้างตารางง่าย ๆ ในหน่วยความจำ + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **ทำไมเรื่องนี้สำคัญ:** การใช้ `DataTable` ให้แหล่งข้อมูลแบบตารางที่มีสคีมาซึ่งแมปได้อย่างตรงไปตรงมาบนแถวและคอลัมน์ของ Excel นอกจากนี้ยังทำให้คุณสามารถใช้ตรรกะการส่งออกเดียวกันสำหรับชุดข้อมูลใด ๆ โดยไม่ต้องเขียนโค้ดใหม่ + +--- + +## ขั้นตอนที่ 2: สร้าง Workbook ใหม่และดึง Worksheet แรก + +ตอนนี้เราจะสร้าง Excel workbook ใหม่ คลาส `Workbook` แทนไฟล์ทั้งหมด; `Worksheets[0]` คือแผ่นงานเริ่มต้นที่เราจะใส่ข้อมูลของเรา + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **เคล็ดลับ:** หากต้องการหลายแผ่นงาน เพียงเรียก `workbook.Worksheets.Add("SheetName")` แล้วทำซ้ำขั้นตอนการจัดรูปแบบสำหรับแต่ละแผ่น + +--- + +## ขั้นตอนที่ 3: กำหนดสไตล์คอลัมน์ – ฟอนต์, พื้นหลัง, และรูปแบบตัวเลข + +การจัดรูปแบบใน Aspose.Cells ทำผ่านอ็อบเจ็กต์ `Style` เราจะสร้างอาเรย์ที่แต่ละองค์ประกอบสอดคล้องกับคอลัมน์ใน DataTable + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **ทำไมต้องใช้สไตล์อาเรย์?** การส่งอาเรย์ไปยัง `ImportDataTable` ทำให้คุณสามารถใช้สไตล์ที่แตกต่างกันสำหรับแต่ละคอลัมน์ในหนึ่งคำสั่ง ซึ่งกระชับและมีประสิทธิภาพ อีกทั้งยังรับประกันว่าการจัดรูปแบบจะสอดคล้องกับลำดับของข้อมูล + +--- + +## ขั้นตอนที่ 4: นำเข้า DataTable พร้อมใช้สไตล์ + +นี่คือหัวใจของการทำงาน: เราใส่ `DataTable` ลงใน worksheet, บอก Aspose ให้รวมแถวหัวตาราง, และส่งอาเรย์ `columnStyles` ของเรา + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **อะไรเกิดขึ้นภายใน?** Aspose จะวนลูปแต่ละคอลัมน์ เขียนหัวตาราง แล้วเขียนค่าของแต่ละแถว ระหว่างนั้นจะใช้ `Style` ที่สอดคล้องจากอาเรย์ ทำให้คุณได้หัวคอลัมน์สีน้ำเงินสำหรับ “Product”, พื้นหลังสีเหลืองสำหรับ “Quantity”, และคอลัมน์ “Revenue” ที่จัดรูปแบบสกุลเงินอย่างสวยงาม + +--- + +## ขั้นตอนที่ 5: บันทึก Workbook เป็นไฟล์ XLSX + +สุดท้าย เราบันทึก workbook ลงดิสก์ เมธอด `Save` จะเลือกฟอร์แมต XLSX อัตโนมัติตามส่วนขยายของไฟล์ + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **เคล็ดลับ:** หากต้องการสตรีมไฟล์ (เช่น สำหรับเว็บ API) ให้ใช้ `workbook.Save(stream, SaveFormat.Xlsx)` แทนการระบุเส้นทางไฟล์ + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอกไปวางในโปรเจกต์คอนโซลใหม่ มันคอมไพล์และทำงานได้ทันที สร้างไฟล์ Excel ที่มีสไตล์ + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### ผลลัพธ์ที่คาดหวัง + +เมื่อคุณเปิด `DataTableWithStyleArray.xlsx` คุณจะเห็น: + +| **Product** (สีน้ำเงิน, หนา) | **Quantity** (สีเหลืองอ่อน) | **Revenue** (สกุลเงิน) | +|------------------------------|-------------------------------|--------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +**custom number format excel** ที่คุณระบุ (`$#,##0.00`) ทำให้ทุกเซลล์ของรายได้แสดงสัญลักษณ์ดอลลาร์, ตัวคั่นหลักพัน, และทศนิยมสองตำแหน่ง — ตรงกับที่ทีมการเงินคาดหวัง + +--- + +## คำถามที่พบบ่อยและกรณีขอบ + +### ฉันสามารถใช้กับไลบรารี Excel อื่นได้หรือไม่? + +ได้เลย แนวคิด—การสร้างสไตล์ต่อคอลัมน์และนำไปใช้ระหว่างการนำเข้า—สามารถนำไปใช้กับ EPPlus, ClosedXML หรือ NPOI ได้ การเรียก API อาจแตกต่างกัน แต่รูปแบบยังคงเหมือนเดิม + +### ถ้า DataTable ของฉันมีคอลัมน์มากกว่าสไตล์ล่ะ? + +Aspose จะใช้สไตล์เริ่มต้นกับคอลัมน์ใด ๆ ที่ไม่มีรายการที่ตรงกันในอาเรย์ `columnStyles` เพื่อหลีกเลี่ยงความประหลาดใจ ให้กำหนดขนาดอาเรย์ให้เท่ากับ `dataTable.Columns.Count` หรือสร้างสไตล์แบบไดนามิกในลูป + +### ฉันจะตั้งรูปแบบตัวเลขแบบกำหนดเองสำหรับวันที่อย่างไร? + +เพียงตั้งค่า `style.Custom = "dd‑mm‑yyyy"` (หรือสตริงฟอร์แมต Excel ที่ถูกต้องใด ๆ) วิธีการแบบอาเรย์เดียวกันนี้ทำงานได้กับวันที่, เปอร์เซ็นต์ หรือโนเทชันเชิงวิทยาศาสตร์ + +### มีวิธีทำให้คอลัมน์ออโต้ไซส์หลังการนำเข้าหรือไม่? + +ใช่—เรียก `worksheet.AutoFitColumns();` หลังการนำเข้า มันจะคำนวณความกว้างโดยอิงจากเนื้อหาในเซลล์อย่างรวดเร็ว + +### แล้วข้อมูลชุดใหญ่ (100k+ แถว) ล่ะ? + +`ImportDataTable` ถูกปรับให้ทำงานกับการดำเนินการแบบ bulk อย่างมีประสิทธิภาพ แต่คุณอาจเจอข้อจำกัดของหน่วยความจำ ในกรณีนั้น พิจารณาสตรีมแถวด้วยตนเองโดยใช้ `Cells[i, j].PutValue(...)` และใช้ `Style` ตัวเดียวซ้ำเพื่อ ลดภาระ + +--- + +## เคล็ดลับระดับมืออาชีพและข้อผิดพลาดทั่วไป + +- **หลีกเลี่ยงการกำหนดค่าเส้นทางแบบฮาร์ดโค้ด** ในโค้ดการผลิต; ใช้ `Environment.GetFolderPath` หรือการตั้งค่าในไฟล์คอนฟิก +- **ทำการ Dispose workbook** หากอยู่ในบริการที่ทำงานต่อเนื่อง—ห่อไว้ในบล็อก `using` เพื่อปล่อยทรัพยากรเนทีฟ +- **ระวังตัวคั่นที่ขึ้นกับวัฒนธรรม** รูปแบบกำหนดเอง `$#,##0.00` บังคับให้ใช้จุดเป็นตัวคั่นทศนิยมไม่ว่าภาษา OS จะเป็นอะไร ซึ่งโดยทั่วไปเป็นสิ่งที่ต้องการสำหรับรายงานการเงิน +- **อย่าลืมอ้างอิง System.Drawing** (หรือ `System.Drawing.Common` บน .NET Core) สำหรับโครงสร้างสีที่ใช้ในการจัดรูปแบบ +- **ทดสอบผลลัพธ์บนเวอร์ชัน Excel ต่าง ๆ**; เวอร์ชันเก่าอาจตีความรูปแบบกำหนดเองบางอย่างแตกต่างกันเล็กน้อย + +--- + +## สรุป + +เราได้ครอบคลุมทุกอย่างที่คุณต้องการเพื่อ **custom number format excel** ไฟล์จาก C#: ดึงข้อมูลจาก `DataTable`, **import datatable to excel**, ใช้ **set column background color**, ใช้ **format column as currency**, และสุดท้าย **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/excel-workbook/_index.md b/cells/thai/net/excel-workbook/_index.md index 3b2b78a6b4..12e77dc7e1 100644 --- a/cells/thai/net/excel-workbook/_index.md +++ b/cells/thai/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Power Query เป็นเครื่องมือสำคัญในก | [ตัวอย่างการพิมพ์สมุดงาน](./workbook-print-preview/) | เรียนรู้วิธีสร้างตัวอย่างก่อนพิมพ์สำหรับไฟล์ Excel โดยใช้ Aspose.Cells สำหรับ .NET เรียนรู้ขั้นตอนการเขียนโค้ดในบทช่วยสอนโดยละเอียดที่ทำตามได้ง่าย - | [การทำงานกับคุณสมบัติประเภทเนื้อหา](./working-with-content-type-properties/) | เรียนรู้วิธีใช้ Aspose.Cells สำหรับ .NET เพื่อทำงานกับคุณสมบัติประเภทเนื้อหาสำหรับการจัดการข้อมูลเมตาของ Excel ที่ได้รับการปรับปรุง ปฏิบัติตามคำแนะนำทีละขั้นตอนง่ายๆ นี้ - | [การสนับสนุนลายเซ็น Xades](./xades-signature-support/) | เรียนรู้วิธีเพิ่มลายเซ็น Xades ลงในไฟล์ Excel โดยใช้ Aspose.Cells สำหรับ .NET ด้วยคู่มือทีละขั้นตอนนี้ รักษาความปลอดภัยเอกสารของคุณ | +- [สร้างสมุดงานใหม่ด้วย C# – คู่มือทีละขั้นตอนพร้อมสูตรที่ล้น](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | เรียนรู้วิธีสร้างสมุดงานใหม่ใน C# พร้อมสูตรที่ล้นโดยใช้ Aspose.Cells สำหรับ .NET {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/thai/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..53ff0f2d50 --- /dev/null +++ b/cells/thai/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-03-22 +description: สร้างเวิร์กบุ๊กใหม่ด้วย C# อย่างรวดเร็วโดยใช้ Aspose.Cells เรียนรู้วิธีเพิ่มสูตร + SEQUENCE ที่ทำการ spill, การคำนวณใหม่อัตโนมัติ และการจัดการเซลล์ที่ขึ้นอยู่กัน. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: th +og_description: สร้างเวิร์กบุ๊กใหม่ด้วย C# และ Aspose.Cells บทเรียนนี้แสดงวิธีเพิ่มสูตร + SEQUENCE แบบสเปลลิง, คำนวณเวิร์กบุ๊กใหม่, และจัดการเซลล์ที่ขึ้นอยู่. +og_title: สร้างเวิร์กบุ๊กใหม่ C# – คู่มือฉบับสมบูรณ์ +tags: +- C# +- Excel automation +- Aspose.Cells +title: สร้างเวิร์กบุ๊กใหม่ด้วย C# – คู่มือแบบขั้นตอนต่อขั้นตอนพร้อมสูตรที่กระจาย +url: /th/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง workbook ใหม่ด้วย C# – คู่มือการเขียนโปรแกรมแบบครบถ้วน + +เคยสงสัยไหมว่าจะ **สร้าง workbook ใหม่ด้วย C#** อย่างไรโดยไม่ต้องต่อสู้กับ COM interop? คุณไม่ได้เป็นคนเดียว ในหลายโครงการคุณต้องสร้างไฟล์ Excel อย่างรวดเร็ว ใส่สูตรอาร์เรย์แบบไดนามิก แล้วให้ทุกอย่างรีเฟรชอัตโนมัติ + +ในคู่มือนี้เราจะแสดงขั้นตอนทั้งหมด—โดยใช้ไลบรารี **Aspose.Cells** รุ่นใหม่ เพิ่มสูตร `SEQUENCE` ที่ทำการ spill, ปรับเซลล์ที่ขึ้นกับสูตร, และบังคับให้คำนวณใหม่เพื่อให้ผลลัพธ์อัปเดตทันที สุดท้ายคุณจะได้ตัวอย่างที่พร้อมรันและคัดลอกไปใส่ในแอป .NET ใดก็ได้ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธี **สร้าง workbook ใหม่ด้วย C#** อย่างโปรแกรมเมติก +- กลไกของ **สูตรอาร์เรย์ที่ spill** และเหตุผลที่มันมีประโยชน์ +- การใช้ **ฟังก์ชัน Excel SEQUENCE** จากโค้ด C# +- การกระตุ้น **การคำนวณ workbook ด้วย C#** เพื่อให้เซลล์ที่ขึ้นกับสูตรอัปเดตทันที +- ข้อผิดพลาดทั่วไป (เช่น ลืมเรียก `Calculate`) และวิธีแก้อย่างรวดเร็ว + +ไม่ต้องอ้างอิงเอกสารภายนอก—ทุกอย่างที่คุณต้องการอยู่ที่นี่ + +## ข้อกำหนดเบื้องต้น + +- .NET 6+ (หรือ .NET Framework 4.7.2+) ติดตั้งแล้ว +- Visual Studio 2022 หรือ IDE ที่คุณชอบ +- แพคเกจ NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`) +- ความคุ้นเคยพื้นฐานกับไวยากรณ์ C# (หากคุณใหม่โค้ดนี้มีคอมเมนต์อธิบายละเอียด) + +--- + +## ขั้นตอนที่ 1: สร้าง workbook ใหม่ใน C# + +หัวข้อ H2 นี้มี **คีย์เวิร์ดหลัก** ตรงตามที่ SEO เช็คลิสต์ต้องการ + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **ทำไมเรื่องนี้ถึงสำคัญ:** +> การสร้างอินสแตนซ์ `Workbook` ให้คุณได้อ็อบเจ็กต์ Excel ในหน่วยความจำ ไม่ต้องใช้ COM, ไม่ต้องใช้ interop, เพียงแค่ .NET objects ที่ปลอดภัยต่อการจัดการ + +--- + +## ขั้นตอนที่ 2: เพิ่มสูตร SEQUENCE ที่ spill + +**สูตรอาร์เรย์ที่ spill** จะขยายอัตโนมัติไปยังเซลล์ข้างเคียง เหมาะอย่างยิ่งสำหรับการสร้างรายการแบบไดนามิก + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **วิธีการทำงาน:** +> ฟังก์ชัน `SEQUENCE` (เปิดตัวใน Excel 365) สร้างอาร์เรย์แนวตั้งของตัวเลข เนื่องจากเราใช้สูตร *spill* Excel (และ Aspose.Cells) จะเติมช่วงด้านล่าง `A1` ให้โดยอัตโนมัติโดยไม่ต้องเขียนลูป + +--- + +## ขั้นตอนที่ 3: เปลี่ยนค่าเซลล์ที่ขึ้นกับสูตรเพื่อดูการรีเฟรชอัตโนมัติ + +มาปรับค่า `B1` เพื่อสังเกตว่า workbook คำนวณสูตร spill ใหม่อย่างไร + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **เคล็ดลับ:** +> หากคุณอ้างอิงช่วงที่ spill ในสูตรอื่น ๆ การเปลี่ยนค่าใด ๆ ภายใน spill จะทำให้สูตรเหล่านั้นอัปเดตหลังจากที่คุณเรียก `Calculate` + +--- + +## ขั้นตอนที่ 4: บังคับให้ C# คำนวณ workbook + +หากไม่เรียกอย่างชัดเจน Aspose.Cells จะไม่คำนวณสูตรโดยอัตโนมัติ + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` ทำอะไร:** +> มันจะวนตรวจสอบทุกเซลล์สูตร, ประเมินค่า, และเขียนผลลัพธ์กลับไปยังชีต นี่คือหัวใจของ **การคำนวณ workbook ด้วย C#** และทำให้สูตร spill อยู่ใน sync กับข้อมูลที่ขึ้นกับมัน + +### ผลลัพธ์ที่คาดหวัง + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +เปิดไฟล์ `SpilledSequenceDemo.xlsx` คุณจะเห็นตัวเลข 1‑5 เติมใน `A1:A5` ส่วน `B1` มีค่า `10` เปลี่ยนค่าใด ๆ ภายใน spill, รัน `Calculate` อีกครั้ง แล้วค่าที่อัปเดตจะปรากฏทันที + +--- + +## ทำความเข้าใจฟังก์ชัน Excel SEQUENCE ใน C# + +หากคุณสงสัยว่าทำไม `SEQUENCE` ถึงดีกว่าการวนลูปด้วยตนเอง พิจารณาจุดต่อไปนี้: + +1. **ประสิทธิภาพ** – เอนจินประมวลผลอาร์เรย์ทั้งหมดในหนึ่งรอบ +2. **ความอ่านง่าย** – บรรทัดเดียวแทนหลายสิบคำสั่ง `PutValue` +3. **ขนาดแบบไดนามิก** – คุณสามารถแทนค่า `5` คงที่ด้วยการอ้างอิงเซลล์อื่น ทำให้ความยาวปรับได้ตามเวลารัน + +นี่คือตัวอย่างคลาสสิกของ **สูตรอาร์เรย์ที่ spill** ที่ทำให้การสร้างข้อมูลง่ายขึ้น + +--- + +## ข้อผิดพลาดทั่วไป & เคล็ดลับระดับมืออาชีพ + +| Pitfall | Fix | +|---------|-----| +| ลืมเรียก `workbook.Calculate()` | เรียกเสมอหลังแก้สูตร; ไม่เช่นนั้นชีตจะแสดงค่าที่แคชไว้ | +| ใช้ Aspose.Cells รุ่นเก่า | อัปเกรดเป็นแพคเกจ NuGet ล่าสุดเพื่อรองรับฟังก์ชันอาร์เรย์ไดนามิกอย่าง `SEQUENCE` | +| บันทึกก่อนคำนวณ | บันทึก **หลัง** `Calculate` เพื่อให้ไฟล์มีผลลัพธ์ล่าสุด | +| คิดว่า spill จะเขียนทับข้อมูลเดิม | Aspose.Cells จะไม่ลบข้อมูลนอกช่วง spill; หากต้องการพื้นที่ว่างให้ลบข้อมูลในพื้นที่นั้นก่อน | + +**Pro tip:** หากต้องการให้ความยาวของ sequence ปรับได้ ให้เก็บจำนวนไว้ในเซลล์ (เช่น `C1`) แล้วใช้ `=SEQUENCE(C1)` — เอนจินจะอ่านค่าที่รันไทม์ + +--- + +## ขยายตัวอย่างต่อ + +เมื่อคุณรู้วิธี **สร้าง workbook ใหม่ด้วย C#** แล้ว คุณสามารถ: + +- เพิ่มสูตรซับซ้อนที่อ้างอิงช่วง spill (`=SUM(A1#)` โดย `#` แทน spill) +- ส่งออกเป็น PDF ด้วย `workbook.Save("output.pdf", SaveFormat.Pdf)` +- ใส่ชาร์ตที่ปรับขนาดอัตโนมัติตามอาร์เรย์ไดนามิก + +ทั้งหมดนี้ต่อเนื่องจากพื้นฐาน **การคำนวณ workbook ด้วย C#** ที่เราได้อธิบายไว้ + +--- + +## สรุป + +เราได้เดินผ่านขั้นตอนทั้งหมดของการ **สร้าง workbook ใหม่ด้วย C#** ตั้งแต่การสร้างอ็อบเจ็กต์ `Workbook` ไปจนถึงการใส่สูตร `SEQUENCE` ที่ spill, ปรับเซลล์ที่ขึ้นกับสูตร, และบังคับให้คำนวณใหม่เพื่อให้ข้อมูลอัปเดตอยู่เสมอ โค้ดเต็มที่อยู่ด้านบนพร้อมรัน—แค่คัดลอกใส่แอปคอนโซล, เพิ่มแพคเกจ Aspose.Cells, แล้วคุณจะได้ไฟล์ Excel ทำงานในไม่กี่วินาที + +พร้อมก้าวต่อไปหรือยัง? ลองเปลี่ยน `5` เป็นการอ้างอิงเซลล์, ทดลองฟังก์ชันอาร์เรย์ไดนามิกอื่น ๆ เช่น `FILTER` หรือ `UNIQUE`, และสำรวจว่า **Aspose.Cells C#** สามารถขับเคลื่อนระบบรายงานเต็มรูปแบบได้อย่างไร ขอให้สนุกกับการโค้ด! + +--- + +*ตัวอย่างรูปภาพ:* + +![ภาพหน้าจอแสดง workbook ที่สร้างใหม่พร้อมสูตร SEQUENCE ที่ spill – ตัวอย่าง create new workbook C#](/images/create-new-workbook-csharp.png) + +--- + +*หากคุณพบว่าบทแนะนำนี้มีประโยชน์ โปรดให้ดาวที่รีโพซิทอรี, แชร์กับทีม, หรือแสดงความคิดเห็นด้านล่าง ความคิดเห็นของคุณเป็นแรงผลักดันให้เราสร้างคู่มือใหม่ต่อไป!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/thai/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..2e6830a460 --- /dev/null +++ b/cells/thai/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-22 +description: วิธีใช้ lambda ใน C# เพื่อทำงานกับสูตร Excel เรียนรู้การเขียนสูตรลงในเซลล์, + แปลงช่วงเป็นอาร์เรย์, แสดงอาร์เรย์ในคอนโซล, และคำนวณโคแทนเจนต์ใน Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: th +og_description: วิธีใช้ lambda ใน C# เพื่อจัดการสูตร Excel, แปลงช่วงเป็นอาร์เรย์, + เขียนสูตรลงในเซลล์, แสดงอาร์เรย์ในคอนโซล, และคำนวณคอตานเจนต์ใน Excel. +og_title: วิธีใช้ Lambda ใน C# กับสูตร Excel – ขั้นตอนต่อขั้นตอน +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: วิธีใช้ Lambda ใน C# กับสูตร Excel – คู่มือฉบับสมบูรณ์ +url: /th/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีใช้ Lambda ใน C# กับสูตร Excel – คู่มือฉบับสมบูรณ์ + +เคยสงสัย **วิธีใช้ lambda** เมื่อคุณทำงานอัตโนมัติกับ Excel จาก C# หรือไม่? คุณไม่ได้อยู่คนเดียว นักพัฒนาหลายคนเจออุปสรรคเมื่อต้องผสานพลังของฟังก์ชันอาเรย์ไดนามิกใหม่ของ Excel กับความสามารถ `LAMBDA` ของ C# ข่าวดีคือ? มันค่อนข้างตรงไปตรงมามากเมื่อคุณเห็นชิ้นส่วนต่าง ๆ เข้ากันได้ + +ในบทเรียนนี้เราจะเดินผ่าน **การเขียนสูตรลงในเซลล์**, **การแปลงช่วงเป็นอาเรย์**, **การแสดงอาเรย์ในคอนโซล**, และแม้กระทั่ง **การคำนวณ cotangent ใน Excel** — ทั้งหมดนี้พร้อมแสดง **วิธีใช้ lambda** ภายในการเรียก `REDUCE` สุดท้ายคุณจะได้โค้ดสั้น ๆ ที่สามารถนำไปวางในโปรเจกต์ .NET ใด ๆ ที่อ้างอิง Aspose.Cells (หรือไลบรารีที่คล้ายกัน) + +--- + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธี **เขียนสูตรลงในเซลล์** ด้วย C# +- วิธี **แปลงช่วงเป็นอาเรย์** ด้วยฟังก์ชัน `EXPAND` +- วิธี **แสดงอาเรย์ในคอนโซล** หลังการคำนวณ +- วิธี **คำนวณ cotangent ใน Excel** ด้วย `COT` และ `COTH` +- ไวยากรณ์ที่แม่นยำสำหรับ **วิธีใช้ lambda** ภายในฟังก์ชัน `REDUCE` ของ Excel จาก C# + +> **ข้อกำหนดเบื้องต้น:** คุณต้องมี .NET เวอร์ชันล่าสุด (Core 6+ หรือ .NET Framework 4.7+) และไลบรารี Aspose.Cells for .NET ที่ติดตั้งผ่าน NuGet + +--- + +## ขั้นตอนที่ 1: ตั้งค่า Workbook และเขียนสูตรลงในเซลล์ + +สิ่งแรกที่เราทำคือสร้าง workbook ใหม่และดึง worksheet แรกออกมา จากนั้นเราจะ **เขียนสูตรลงในเซลล์** – ในที่นี้ `A1` จะเก็บผลลัพธ์ของการเรียก `EXPAND` + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**ทำไมสิ่งนี้สำคัญ:** การเขียนสูตรโดยตรงจากโค้ดหมายความว่าคุณสามารถสร้างสเปรดชีตที่ซับซ้อนได้แบบอัตโนมัติโดยไม่ต้องเปิด Excel ซึ่งยังเป็นการเตรียมพื้นฐานสำหรับขั้นตอนต่อไปที่เราจะ **แปลงช่วงเป็นอาเรย์** + +--- + +## ขั้นตอนที่ 2: แปลงช่วงเป็นอาเรย์ด้วย EXPAND + +`EXPAND` คือวิธีของ Excel ที่ทำให้ช่วงเล็ก ๆ ขยายเป็นเมทริกซ์ขนาดใหญ่กว่า โดยการวางสูตรใน `A1` Excel จะ “spill” บล็อกขนาด 4 × 5 เริ่มจากเซลล์นั้น จาก C# เราไม่ต้องคัดลอกค่าด้วยตนเอง – ไลบรารีจะทำงานหนักให้เมื่อเราเรียก `Calculate` + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**วิธีใช้ lambda:** ยังไม่ได้ใช้ แต่รอให้ข้อมูลอยู่ในชีตก่อน แล้วเราจะลดค่าโดยใช้ lambda + +--- + +## ขั้นตอนที่ 3: ใช้ LAMBDA ภายใน REDUCE – แก่นของ “วิธีใช้ Lambda” + +Excel 365 แนะนำ `REDUCE` ซึ่งรับ **ค่าเริ่มต้น**, **ช่วง**, และ **LAMBDA** ที่บอกวิธีรวมแต่ละองค์ประกอบ จาก C# เราเพียงใส่สตริงสูตร; lambda อยู่ภายในสูตรของ Excel ไม่ได้อยู่ในโค้ด C# + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**คำอธิบาย:** +- `0` คือค่าเริ่มต้นของ accumulator (`acc`) +- `A1:D4` คือช่วงที่เราต้องการประมวลผล (สี่คอลัมน์แรกของ spill) +- `LAMBDA(acc, x, acc + x)` บอก Excel ให้บวกค่าแต่ละเซลล์ (`x`) ไปยัง accumulator + +นี่คือสาระสำคัญของ **วิธีใช้ lambda** สำหรับการรวมค่าในบริบทของสเปรดชีต + +--- + +## ขั้นตอนที่ 4: คำนวณ Cotangent ใน Excel – จากองศาไปยังไฮเปอร์โบลิก + +หากคุณต้องการผลลัพธ์ตรีโกณมิติ ฟังก์ชัน `COT` และ `COTH` ของ Excel ใช้งานง่าย เราจะวางสูตรเหล่านี้ใน `G1` และ `G2` ตามลำดับ + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**ทำไมสิ่งนี้เป็นประโยชน์:** การรู้ **คำนวณ cotangent ใน Excel** สามารถช่วยคุณหลีกเลี่ยงการเขียนโค้ดคณิตศาสตร์แบบกำหนดเอง โดยเฉพาะเมื่อ workbook จะถูกแชร์กับผู้ที่ไม่ใช่นักพัฒนา + +--- + +## ขั้นตอนที่ 5: บังคับให้คำนวณและดึงอาเรย์ที่ขยายออกมา + +ต่อไปเราจะบอก workbook ให้ประเมินสูตรทั้งหมด แล้วดึงอาเรย์ที่ spill จาก `A1` นี่คือจุดที่เราจะ **แสดงอาเรย์ในคอนโซล** + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**สิ่งที่คุณจะเห็น:** +- เมทริกซ์ 4 × 5 ที่จัดรูปแบบอย่างสวยงามพิมพ์ทีละบรรทัด +- ผลรวมที่คำนวณโดย lambda ของ `REDUCE` +- ค่าผลลัพธ์ cotangent สองค่า + +ขั้นตอนนี้สรุปการไหลจาก **เขียนสูตรลงในเซลล์** จนถึง **แสดงอาเรย์ในคอนโซล** อย่างครบถ้วน + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +ด้านล่างเป็นโปรแกรมทั้งหมดที่คุณสามารถวางในแอปคอนโซลได้ อย่าลืมเพิ่มแพคเกจ `Aspose.Cells` ผ่าน NuGet ก่อน (`dotnet add package Aspose.Cells`) + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**ผลลัพธ์ที่คาดว่าจะเห็นในคอนโซล (ค่าจะเปลี่ยนแปลงตามเนื้อหาเริ่มต้นของ B1:C2 ซึ่งโดยปกติเป็น 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +คุณสามารถใส่ค่าของคุณเองใน `B1:C2` ก่อนรัน – เมทริกซ์จะสะท้อนค่าที่คุณใส่เข้าไป + +--- + +## เคล็ดลับระดับมืออาชีพ & จุดหลบหลีกทั่วไป + +- **เคล็ดลับ:** หากต้องการให้ช่วงที่ spill เริ่มที่ตำแหน่งอื่น เพียงเปลี่ยนเซลล์เป้าหมาย (`A1`) ฟังก์ชัน `EXPAND` จะเคารพจุดยึดนั้น +- **ระวัง:** เซลล์ว่างในช่วงต้นจะกลายเป็น `0` ในอาเรย์ที่ spill ซึ่งอาจส่งผลต่อผลรวมของ `REDUCE` +- **กรณีพิเศษ:** เมื่อ workbook มีสูตรที่พึ่งพาฟังก์ชันเปลี่ยนแปลงบ่อย (เช่น `NOW()`) ให้เรียก `workbook.Calculate()` หลังตั้งสูตรทั้งหมดเพื่อให้ข้อมูลเป็นปัจจุบัน +- **หมายเหตุประสิทธิภาพ:** สำหรับ spill ขนาดใหญ่ ควรจำกัดขนาดในคำสั่ง `EXPAND` มิฉะนั้นอาจใช้หน่วยความจำเกินความจำเป็น +- **ความเข้ากันได้:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/number-and-display-formats-in-excel/_index.md b/cells/thai/net/number-and-display-formats-in-excel/_index.md index 7c84c6f7c7..826ae0ca5f 100644 --- a/cells/thai/net/number-and-display-formats-in-excel/_index.md +++ b/cells/thai/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ จัดรูปแบบตัวเลขอัตโนมัติใน Excel โดยใช้ Aspose.Cells สำหรับ .NET เรียนรู้วิธีการใช้รูปแบบวันที่ เปอร์เซ็นต์ และสกุลเงินในการเขียนโปรแกรม ### [การปรับแต่งรูปแบบการแสดงผลด้วยตัวเลขที่ผู้ใช้กำหนด](./customizing-display-formats-with-user-defined-numbers/) เรียนรู้วิธีปรับแต่งรูปแบบการแสดงผลด้วย Aspose.Cells สำหรับ .NET จัดรูปแบบวันที่ เปอร์เซ็นต์ และสกุลเงินโดยใช้คู่มือทีละขั้นตอนนี้ +### [วิธีส่งออก Excel พร้อมการจัดรูปแบบ – รักษารูปแบบตัวเลข](./how-to-export-excel-with-formatting-preserve-number-format/) +ส่งออกไฟล์ Excel พร้อมคงรูปแบบตัวเลขโดยใช้ Aspose.Cells สำหรับ .NET +### [แปลงวันที่และเวลาเป็น ISO ใน C# – คู่มือครบถ้วน](./format-datetime-to-iso-in-c-complete-guide/) +เรียนรู้วิธีแปลงค่า DateTime เป็นรูปแบบ ISO ใน C# ด้วย Aspose.Cells สำหรับ .NET อย่างละเอียด {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/thai/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..fd19076646 --- /dev/null +++ b/cells/thai/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: เรียนรู้วิธีจัดรูปแบบวันที่และเวลาเป็น ISO ขณะดึงข้อมูลวันที่จาก Excel + และแสดงวันที่ในรูปแบบ ISO ด้วย Aspose.Cells ใน C# +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: th +og_description: การแปลงวันที่และเวลาเป็นรูปแบบ ISO ทำได้ง่าย คู่มือนี้แสดงวิธีดึงวันที่จาก + Excel และแสดงวันที่ในรูปแบบ ISO ด้วย Aspose.Cells. +og_title: แปลง datetime เป็น ISO ใน C# – บทเรียนแบบขั้นตอนต่อขั้นตอน +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: จัดรูปแบบ DateTime เป็น ISO ใน C# – คู่มือฉบับสมบูรณ์ +url: /th/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# แปลง datetime เป็น iso ใน C# – คู่มือฉบับสมบูรณ์ + +เคยต้องการ **format datetime to iso** แต่แหล่งข้อมูลอยู่ในไฟล์ Excel ไหม? อาจเป็นไปได้ว่าตัวเซลล์มีรูปแบบยุคญี่ปุ่นเช่น “令和3年5月1日” แล้วคุณกำลังสงสัยว่าจะเปลี่ยนเป็นสตริง `2021‑05‑01` ที่สะอาดอย่างไร คุณไม่ได้อยู่คนเดียว ในบทแนะนำนี้เราจะ **extract date from excel**, แยกวิเคราะห์ยุคญี่ปุ่น, และจากนั้น **display iso date** บนคอนโซล—ทั้งหมดด้วยไม่กี่บรรทัดของ C# และ Aspose.Cells + +เราจะพาคุณผ่านทุกอย่างที่ต้องการ: แพ็กเกจ NuGet ที่จำเป็น, โค้ดที่สามารถคัดลอก‑วางได้ตรง, เหตุผลที่แต่ละบรรทัดสำคัญ, และเคล็ดลับกรณีขอบบางหลายข้อ สุดท้ายคุณจะได้สแนปช็อตที่นำกลับมาใช้ใหม่ได้ซึ่งแปลง datetime เป็น iso ไม่ว่า Excel ค่าเดิมจะดูแปลกแยกอย่างไร + +## สิ่งที่คุณต้องการ + +- .NET 6.0 หรือใหม่กว่า (โค้ดยังคอมไพล์บน .NET Framework 4.6+ ได้เช่นกัน) +- Visual Studio 2022 (หรือเครื่องมือแก้ไขใด ๆ ที่คุณชอบ) +- **Aspose.Cells for .NET** NuGet package – `Install-Package Aspose.Cells` +- ไฟล์ Excel (หรือเวิร์กบุ๊กใหม่) ที่มีวันที่ในรูปแบบยุคญี่ปุ่น + +แค่นั้นเอง ไม่ต้องใช้ไลบรารีเพิ่มเติม ไม่ต้องใช้ COM interop เพียงวิธีเดียวที่มีเอกสารครบถ้วน + +## ขั้นตอนที่ 1: สร้าง Workbook และเขียนวันที่ในรูปแบบยุคญี่ปุ่น + +ก่อนอื่นเราต้องมี workbook เพื่อทำงาน หากคุณมีไฟล์ Excel อยู่แล้วสามารถโหลดด้วย `new Workbook("path")` สำหรับตัวอย่างนี้เราจะสร้าง workbook ใหม่ในหน่วยความจำและใส่สตริงยุคญี่ปุ่นลงในเซลล์ **A1** + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **ทำไมเราต้องทำเช่นนี้:** Aspose.Cells ปฏิบัติต่อค่าของเซลล์เป็นสตริงโดยค่าเริ่มต้น การใส่ข้อความยุคดิบช่วยจำลองสถานการณ์จริงที่ลูกค้าญี่ปุ่นใส่วันที่ในปฏิทินท้องถิ่นของพวกเขา + +## ขั้นตอนที่ 2: เปิดใช้งานการแปลงยุคญี่ปุ่นและดึงวันที่ออกมา + +Aspose.Cells สามารถแปลงสตริงยุคญี่ปุ่นเป็นอ็อบเจ็กต์ .NET `DateTime` ได้โดยอัตโนมัติ—แต่ต้องบอกให้มันทำ `DateTimeParseOptions.EnableJapaneseEra` จะทำหน้าที่หลัก + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **เคล็ดลับ:** หากลืมใช้ตัวเลือก `EnableJapaneseEra` ไลบรารีจะคืนค่าสตริงเดิมและการแปลงต่อไปจะล้มเหลว ตรวจสอบ `parsed.Type` เสมอหากคุณจัดการกับเนื้อหาที่ผสมกัน + +## ขั้นตอนที่ 3: แปลง DateTime ที่แปลงแล้วเป็น ISO 8601 + +เมื่อเรามี `DateTime` ที่ถูกต้องแล้ว การแปลงเป็นสตริงรูปแบบ ISO‑เป็นเรื่องง่ายมาก รูปแบบ `"yyyy-MM-dd"` สอดคล้องกับส่วนวันที่ของ ISO 8601 ซึ่งเป็นสิ่งที่ API ส่วนใหญ่คาดหวัง + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +การรันโปรแกรมจะแสดงผล: + +``` +ISO date: 2021-05-01 +``` + +นั่นคือ **display iso date** ที่คุณต้องการ + +## ตัวอย่างเต็มที่สามารถรันได้ + +ด้านล่างเป็นบล็อกโค้ดเต็มที่คุณสามารถคัดลอกไปใส่ในโปรเจกต์คอนโซลได้โดยตรง ไม่ต้องมีการพึ่งพาที่ซ่อนอยู่หรือการตั้งค่าเพิ่มเติม + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **ผลลัพธ์ที่คาดหวัง:** `ISO date: 2021-05-01` + +## การวิเคราะห์ทีละขั้นตอน (ทำไมแต่ละส่วนถึงสำคัญ) + +| ขั้นตอน | สิ่งที่เกิดขึ้น | ทำไมจึงสำคัญ | +|------|--------------|--------------------| +| **Create workbook** | เริ่มต้นคอนเทนเนอร์ Excel ในหน่วยความจำ | ให้ sandbox สำหรับทดสอบโดยไม่ต้องเข้าถึงไฟล์ระบบ | +| **PutValue** | เก็บสตริงยุคญี่ปุ่นดิบใน **A1** | จำลองการป้อนข้อมูลจริง; ทำให้ parser เห็นข้อความที่ตรงกัน | +| **GetValue with `EnableJapaneseEra`** | แปลงสตริงยุคเป็น .NET `DateTime` | จัดการการแปลงปฏิทินโดยอัตโนมัติ—ไม่ต้องใช้ตาราง lookup ด้วยมือ | +| **`ToString("yyyy-MM-dd")`** | ฟอร์แมต `DateTime` เป็น ISO 8601 | รับประกันสตริงวันที่ที่เป็น culture‑invariant, สามารถเรียงลำดับได้และรับโดย REST API, ฐานข้อมูล ฯลฯ | +| **Console.WriteLine** | แสดง ISO date สุดท้าย | ยืนยันว่าทั้งกระบวนการทำงานจากต้นจนจบ | + +## การจัดการกับความแปรผันทั่วไป + +### 1. ตำแหน่งเซลล์ที่ต่างกัน + +หากวันที่ของคุณอยู่ใน **B2** หรือชื่อช่วง ให้เปลี่ยน `"A1"` เป็นที่อยู่ที่ต้องการแทน: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. หลายวันที่อยู่ในคอลัมน์เดียว + +เมื่อคุณต้องการ **extract date from excel** สำหรับหลายแถว ให้วนลูปผ่านช่วงที่ใช้: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. ตัวสำรองสำหรับค่าที่ไม่ใช่ยุค + +หากเซลล์มีสตริงวันที่มาตรฐานอยู่แล้ว parser ยังทำงานได้ แต่คุณอาจต้องการเฝ้าระวัง: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +แฟล็ก `TryParse` ป้องกันข้อยกเว้นและคืนค่าต้นฉบับหากการแปลงล้มเหลว + +### 4. ส่วนเวลา + +หากต้องการส่วนเวลาเพิ่มเติม ให้ใช้รูปแบบ `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +จะได้ timestamp แบบ ISO 8601 เต็มรูปแบบ (`2021-05-01T00:00:00`) + +## ภาพประกอบ + +![format datetime to iso example](image.png "An example of formatting datetime to iso in C#") + +*ข้อความแทนภาพ:* *ตัวอย่างการแปลง datetime เป็น iso แสดงผลบนคอนโซล* + +## คำถามที่พบบ่อย + +- **สามารถใช้กับไฟล์ .xls ได้หรือไม่?** + ใช่ Aspose.Cells รองรับ `.xls`, `.xlsx`, `.csv` และรูปแบบอื่น ๆ อีกมากมายโดยตรง + +- **ถ้าเวิร์กบุ๊กมีการป้องกันด้วยรหัสผ่านจะทำอย่างไร?** + โหลดด้วย `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` + +- **รูปแบบ ISO ขึ้นกับโลคัลหรือไม่?** + ไม่ รูปแบบ `"yyyy-MM-dd"` เป็น culture‑invariant ทำให้ได้สตริงเดียวกันบนเครื่องใดก็ได้ + +- **ทำงานบน .NET Core ได้หรือไม่?** + แน่นอน—Aspose.Cells รองรับ .NET Standard 2.0 + +## สรุป + +เราได้ครอบคลุมวิธี **format datetime to iso** โดย **extracting date from excel**, แยกวิเคราะห์สตริงยุคญี่ปุ่น, และสุดท้าย **displaying iso date** บนคอนโซล ขั้นตอนหลัก—สร้าง workbook, เขียนหรือโหลดข้อความยุค, เปิดใช้งานการแปลงยุคญี่ปุ่น, และฟอร์แมตด้วย `ToString("yyyy-MM-dd")`—เป็นทั้งหมดที่คุณต้องการสำหรับสถานการณ์ส่วนใหญ่ + +ต่อไปคุณอาจต้องการ: + +- เขียนวันที่ ISO กลับไปยังคอลัมน์อื่นสำหรับการประมวลผลต่อไป +- ส่งออกเวิร์กบุ๊กที่แปลงแล้วเป็น CSV เพื่อการนำเข้าจำนวนมาก +- ผสานตรรกะนี้กับเว็บ API ที่รับไฟล์ Excel อัปโหลดและคืนค่า JSON‑encoded ISO dates + +ลองทดลองกับรูปแบบวันที่ต่าง ๆ, โซนเวลา, หรือแม้แต่ปฏิทินกำหนดเอง ความยืดหยุ่นของ Aspose.Cells ทำให้คุณแทบไม่เจออุปสรรคใด ๆ + +Happy coding, and may all your dates be perfectly ISO‑compliant! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/thai/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..1cc76a8360 --- /dev/null +++ b/cells/thai/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-22 +description: วิธีส่งออก Excel พร้อมการจัดรูปแบบและคงรูปแบบตัวเลขไว้ เรียนรู้การแปลงช่วงของ + Excel, การดึงผลลัพธ์สูตร, และการส่งออก Excel พร้อมการจัดรูปแบบโดยใช้ Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: th +og_description: วิธีส่งออก Excel พร้อมการจัดรูปแบบและรักษารูปแบบตัวเลขไว้ ขั้นตอนโดยละเอียดในการแปลงช่วง + Excel, รับผลลัพธ์สูตร, และส่งออก Excel พร้อมการจัดรูปแบบใน C# +og_title: วิธีส่งออก Excel พร้อมการจัดรูปแบบ – รักษารูปแบบตัวเลข +tags: +- C# +- Aspose.Cells +- Excel automation +title: วิธีส่งออก Excel พร้อมการจัดรูปแบบ – รักษารูปแบบตัวเลข +url: /th/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการส่งออก Excel พร้อมการจัดรูปแบบ – รักษารูปแบบตัวเลข + +เคยสงสัย **วิธีการส่งออก Excel** ข้อมูลโดยคงลักษณะของแต่ละเซลล์ให้เหมือนกับที่เห็นในเวิร์กบุ๊กหรือไม่? บางครั้งคุณอาจต้องส่งรายงานให้ลูกค้า, เติมข้อมูลให้กับคอนโทรลกริด, หรือเพียงแค่เก็บค่าลงฐานข้อมูล จุดอ่อนที่มักเจอคือการสูญเสียการจัดรูปแบบตัวเลขหรือสูตรที่กลายเป็นสตริงธรรมดา + +ในบทเรียนนี้เราจะเดินผ่านตัวอย่าง C# ที่พร้อมรันเต็มรูปแบบซึ่ง **รักษารูปแบบตัวเลข**, **แปลงช่วง Excel** เป็น `DataTable`, **ดึงผลลัพธ์สูตร**, และสุดท้าย **ส่งออก Excel พร้อมการจัดรูปแบบ** ด้วย Aspose.Cells. เมื่อจบคุณจะได้เมธอดเดียวที่สามารถนำไปใส่ในโปรเจกต์ใดก็ได้และเรียกใช้ด้วยอ้างอิงเวิร์กชีต + +> **ตัวอย่างสั้น:** โค้ดจะสร้างเวิร์กบุ๊ก, เขียนค่าพร้อมสูตร, บอก Aspose.Cells ให้ส่งออกเซลล์เป็นสตริงที่จัดรูปแบบแล้ว, และพิมพ์ `123.456 | 246.912` – ตรงกับที่คุณคาดว่าจะเห็นใน Excel + +--- + +## สิ่งที่คุณต้องการ + +- **Aspose.Cells for .NET** (เวอร์ชันทดลองฟรีก็ใช้ได้สำหรับการเรียน) +- .NET 6.0 หรือใหม่กว่า (API เหมือนกันบน .NET Framework) +- สภาพแวดล้อมการพัฒนา C# เบื้องต้น (Visual Studio, VS Code, Rider… เลือกตามใจ) + +ไม่ต้องใช้แพ็กเกจ NuGet เพิ่มเติมนอกจาก Aspose.Cells หากคุณยังไม่ได้ติดตั้ง ให้รัน: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## ขั้นตอนที่ 1 – สร้าง Workbook และเขียนค่า (รวมสูตร) + +แรกเราจะสร้างเวิร์กบุ๊กใหม่และใส่ค่าตัวเลขลงใน **A1** จากนั้นเพิ่มสูตรง่าย ๆ ใน **B1** ที่คูณค่าจากเซลล์แรกสองเท่า เพื่อเตรียมการสาธิต **ดึงผลลัพธ์สูตร** ในขั้นต่อไป + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** +- `PutValue` จะเก็บตัวเลขดิบ, ส่วน `PutFormula` จะเก็บสูตรคำนวณ +- Aspose.Cells จะคงสูตร **ให้ทำงานอยู่**, ดังนั้นเมื่อเราถามค่าของเซลล์ภายหลัง เราจะได้ `246.912` จริง ๆ ไม่ใช่สตริง `"=A1*2"` + +--- + +## ขั้นตอนที่ 2 – บอก Aspose.Cells ให้ส่งออกค่าเป็นสตริงที่จัดรูปแบบแล้ว + +หากคุณเรียก `ExportDataTable` ด้วยการตั้งค่าเริ่มต้น เซลล์ตัวเลขจะถูกส่งกลับเป็นค่า `double` ดิบ ซึ่งจะลบเครื่องหมายคั่นหลักพัน, สัญลักษณ์สกุลเงิน, หรือตำแหน่งทศนิยมที่คุณตั้งไว้ `ExportTableOptions` ช่วยให้เราสามารถ **รักษารูปแบบตัวเลข** และ **ส่งออกเป็นสตริง** ได้ + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**จุดสำคัญ:** `ExportNumberFormat = true` คือค่าสถานะที่ทำให้ **รักษารูปแบบตัวเลข** ทำงาน หากไม่ได้ตั้งค่านี้ คุณจะเห็น `"123.456"` และ `"246.912"` เป็นตัวเลขดิบ ซึ่งอาจดูโอเคในโค้ดแต่ไม่ตรงกับการวางข้อมูลลง UI ที่ต้องการรูปแบบเดียวกับ Excel + +--- + +## ขั้นตอนที่ 3 – พิมพ์ข้อมูลที่ส่งออก (ตรวจสอบ) + +ตอนนี้เรามี `DataTable` ที่เต็มไปด้วยสตริงที่จัดรูปแบบแล้ว, ให้เราดึงข้อมูลออกมาพิมพ์ที่คอนโซล นอกจากนี้ยังแสดงให้เห็นว่าเรา **ดึงผลลัพธ์สูตร** ได้สำเร็จโดยไม่ต้องคำนวณสูตรด้วยตนเอง + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +การรันโปรแกรมจะพิมพ์: + +``` +123.456 | 246.912 +``` + +สังเกตว่าคอลัมน์ที่สองแสดง **ผลลัพธ์สูตร**, ไม่ใช่ข้อความสูตร นี่คือสิ่งที่คุณต้องการเมื่อ **ส่งออก Excel พร้อมการจัดรูปแบบ** เพื่อการประมวลผลต่อไป + +--- + +## ขั้นตอนที่ 4 – แปลงช่วง Excel ขนาดใหญ่ (ทางเลือก) + +ตัวอย่างข้างต้นจัดการกับส่วน `A1:B1` เล็ก ๆ เท่านั้น, แต่ในสถานการณ์จริงมักต้องส่งออกตารางเต็มรูปแบบ วิธีเดียวกันทำงานกับบล็อกสี่เหลี่ยมใด ๆ – เพียงปรับค่า `firstRow`, `firstColumn`, `totalRows`, และ `totalColumns` ให้ตรงกับช่วงของคุณ + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**เคล็ดลับ:** หากแผ่นของคุณมีแถวหัวตารางอยู่แล้ว, ตั้งค่า `includeColumnNames` เป็น `true`. Aspose.Cells จะใช้แถวแรกของช่วงเป็นชื่อคอลัมน์, ซึ่งสะดวกเมื่อคุณต้องผูก `DataTable` กับกริด UI ต่อไป + +--- + +## ขั้นตอนที่ 5 – ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| Issue | Why it Happens | Fix | +|-------|----------------|-----| +| **Numbers lose commas or currency symbols** | `ExportAsString` เป็น `false` หรือไม่ได้ตั้งค่า `ExportNumberFormat` | ตั้งค่า `ExportAsString = true` **และ** `ExportNumberFormat = true` | +| **Formula cells return the formula text** | ไม่ได้เรียก `CalculateFormula` ก่อนส่งออก (จำเป็นเฉพาะเมื่อเวิร์กบุ๊กไม่ได้ตั้งค่า auto‑calculate) | เปิดใช้งาน auto‑calculate (`workbook.CalculateFormula()`) หรือใช้ `ExportAsString` ที่บังคับให้ประเมินสูตร | +| **Headers appear as data rows** | `includeColumnNames` ตั้งเป็น `false` แต่ช่วงของคุณมีแถวหัวตาราง | ตั้งค่า `includeColumnNames = true` เพื่อให้แถวแรกเป็นชื่อคอลัมน์ | +| **Large ranges cause memory pressure** | การส่งออกทั้งชีตในครั้งเดียวทำให้โหลดข้อมูลทั้งหมดเข้าสู่หน่วยความจำ | ส่งออกเป็นชิ้นย่อย (เช่น 500 แถวต่อครั้ง) แล้วรวม `DataTable` หากจำเป็น | + +--- + +## ขั้นตอนที่ 6 – ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +ด้านล่างเป็นโปรแกรมทั้งหมด ตั้งแต่ `using` จนถึง `Main`. คัดลอกไปใส่ในแอปคอนโซลและกด **F5** – คุณจะเห็นผลลัพธ์ที่จัดรูปแบบทันที + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +นี่คือขั้นตอน **วิธีส่งออก Excel** ทั้งหมด, รักษาการจัดรูปแบบ, ประเมินผลลัพธ์สูตร, และได้ `DataTable` ที่พร้อมใช้ใน .NET ใด ๆ + +--- + +## สรุป + +เราได้ครอบคลุมทุกอย่างที่คุณต้องรู้เกี่ยวกับ **วิธีการส่งออก Excel** ขณะ **รักษารูปแบบตัวเลข**, **แปลงช่วง Excel** เป็น `DataTable`, และ **ดึงผลลัพธ์สูตร** โดยไม่ต้องทำการพาร์สเพิ่มเติม. กุญแจสำคัญคือการตั้งค่า `ExportTableOptions` – เพียงตั้งค่า `ExportAsString` และ `ExportNumberFormat` เป็น `true`, Aspose.Cells จะทำงานหนักให้คุณ + +ต่อจากนี้คุณสามารถ: + +- ผูก `DataTable` ไปยัง `DataGrid` ของ WPF หรือมุมมอง ASP.NET MVC +- เขียนตารางเป็นไฟล์ CSV พร้อมคงรูปแบบที่มองเห็นได้ +- ขยายวิธีนี้ไปยังหลายชีตหรือช่วงไดนามิก + +ลองเล่นกับรูปแบบต่าง ๆ (สกุลเงิน, เปอร์เซ็นต์) และบล็อกข้อมูลขนาดใหญ่ หากเจอข้อผิดพลาดใด ๆ ให้กลับไปดูตาราง **ข้อผิดพลาดทั่วไป** – มันครอบคลุมปัญหาที่พบบ่อยที่สุดเมื่อ **ส่งออก Excel พร้อมการจัดรูปแบบ** + +ขอให้เขียนโค้ดสนุกและสเปรดชีตที่ส่งออกออกมาดูดีเท่าต้นฉบับเสมอ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/thai/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..74e096ee83 --- /dev/null +++ b/cells/thai/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,189 @@ +--- +category: general +date: 2026-03-22 +description: เรียนรู้วิธีทำสำเนา Pivot ใน C# ด้วย Aspose.Cells คู่มือนี้ยังแสดงวิธีคัดลอกแถวและโหลดไฟล์ + Excel workbook ด้วย C# เพื่อการทำงานอัตโนมัติของ Excel อย่างราบรื่น +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: th +og_description: วิธีทำสำเนา Pivot ใน C#? ตามบทเรียนสั้น ๆ นี้เพื่อโหลดเวิร์กบุ๊ก Excel + ด้วย C#, คัดลอกแถว, และเชี่ยวชาญการทำอัตโนมัติของ Excel การคัดลอกแถว. +og_title: วิธีทำสำเนา Pivot ใน C# – คู่มือฉบับสมบูรณ์ +tags: +- C# +- Excel Automation +- Aspose.Cells +title: วิธีทำสำเนา Pivot ใน C# – คู่มือขั้นตอนเต็ม +url: /th/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีทำสำเนา Pivot ใน C# – คู่มือขั้นตอนเต็ม + +เคยสงสัยหรือไม่ว่า **how to duplicate pivot** ตารางสามารถทำได้โดยอัตโนมัติโดยไม่ต้องลากด้วยตนเองใน Excel? คุณไม่ได้เป็นคนเดียว ในหลาย ๆ กระบวนการรายงานต้องการรูปแบบ pivot เดียวกันบนชุดแถวใหม่ และทำด้วยมือเป็นการเสียเวลา + +ข่าวดีคืออะไร? ด้วยไม่กี่บรรทัดของ C# คุณสามารถโหลด Excel workbook, กำหนดพื้นที่ที่มี pivot, และ **how to copy rows** เพื่อให้ pivot ปรากฏในตำแหน่งใหม่—ทั้งหมดในหนึ่งการทำงานอัตโนมัติ ในบทแนะนำนี้เราจะครอบคลุมพื้นฐานของ **load excel workbook c#** และให้พื้นฐานที่แข็งแรงสำหรับงาน **excel automation copy rows** + +> **สิ่งที่คุณจะได้เรียนรู้** +> • ตัวอย่างที่สมบูรณ์และสามารถรันได้ซึ่งทำสำเนา pivot table. +> • คำอธิบายว่าทำไมแต่ละบรรทัดจึงสำคัญ. +> • เคล็ดลับการจัดการกรณีขอบเช่น worksheet ที่ซ่อนหรือหลาย pivot. + +--- + +## ข้อกำหนดเบื้องต้น + +ก่อนที่เราจะลงลึก โปรดตรวจสอบว่าคุณมี: + +- **.NET 6.0** (หรือเวอร์ชัน .NET ล่าสุด) ที่ติดตั้งแล้ว. +- **Aspose.Cells for .NET** – ไลบรารีที่เราจะใช้ในการจัดการไฟล์ Excel คุณสามารถดาวน์โหลดได้ผ่าน NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- ไฟล์ workbook ต้นทาง (`Source.xlsx`) ที่มี pivot table อยู่ในช่วง **A1:J20** (ช่วงที่เราจะทำสำเนา). +- ความคุ้นเคยพื้นฐานกับไวยากรณ์ C# – ไม่ต้องซับซ้อน เพียง `using` statements ปกติและเมธอด `Main`. + +หากส่วนใดส่วนหนึ่งดูแปลกใหม่ ให้หยุดพักและติดตั้งแพคเกจ; ส่วนที่เหลือของคู่มือถือว่าไลบรารีพร้อมใช้งาน. + +![ภาพอธิบายวิธีทำสำเนา pivot ใน C# ด้วย Aspose.Cells](https://example.com/duplicate-pivot.png "ภาพอธิบายวิธีทำสำเนา pivot ใน C#") + +*ข้อความอธิบายภาพ: "ตัวอย่างวิธีทำสำเนา pivot ใน C# แสดงแถวต้นฉบับและแถวที่ทำสำเนา".* + +## ขั้นตอนที่ 1: โหลด Excel Workbook C# – เปิดไฟล์ + +สิ่งแรกที่คุณต้องทำเมื่อคุณต้องการ **load excel workbook c#** คือสร้างอินสแตนซ์ `Workbook` ที่ชี้ไปยังไฟล์ของคุณ วัตถุนี้ให้คุณเข้าถึงทุก worksheet, cell, และ pivot ภายในไฟล์. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** +`Workbook` ทำหน้าที่เป็นแบบจำลองในหน่วยความจำของไฟล์ Excel ทั้งหมด หากไม่ได้โหลดก่อนคุณจะไม่สามารถตรวจสอบตำแหน่งของ pivot หรือคัดลอกแถวได้ นอกจากนี้คอนสตรัคเตอร์จะตรวจจับรูปแบบไฟล์โดยอัตโนมัติ (XLS, XLSX, CSV ฯลฯ) จึงไม่ต้องเขียนโค้ดเพิ่มเติมสำหรับการตรวจจับรูปแบบไฟล์. + +## ขั้นตอนที่ 2: วิธีคัดลอกแถว – กำหนดพื้นที่ Pivot + +ตอนนี้ workbook อยู่ในหน่วยความจำแล้ว เราต้องบอก Aspose.Cells ว่าแถวใดบรรจุ pivot ในตัวอย่างของเราพivot อยู่ใน **A1:J20** ซึ่งเทียบกับแถว **0‑19** (การนับจากศูนย์) เราจะห่อข้อมูลนี้ไว้ในโครงสร้าง `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**ทำไมเราถึงใช้ `CellArea`:** +มันเป็นวิธีที่เบาและง่ายในการอธิบายบล็อกสี่เหลี่ยม เมื่อคุณเรียก `CopyRows` ภายหลัง เมธอดจะอ่านอ็อบเจ็กต์นี้เพื่อทราบว่าแถวใดต้องทำสำเนา หากต้องการปรับช่วง (เช่น pivot ขยายไปถึงคอลัมน์ K) เพียงเปลี่ยนค่า `endColumn` เท่านั้น. + +## ขั้นตอนที่ 3: เข้าถึง Worksheet เป้าหมาย + +ส่วนใหญ่ workbook มีแผ่นเดียว แต่ API ทำงานเช่นเดียวกันสำหรับหลายแผ่น ดึง worksheet แรก (ดัชนี 0) – นั่นคือที่ที่ pivot ดั้งเดิมอยู่. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**เคล็ดลับ:** +หากคุณมีแผ่นที่ตั้งชื่อไว้ คุณสามารถดึงโดยใช้ชื่อได้เช่น `workbook.Worksheets["Sheet1"]` ซึ่งช่วยหลีกเลี่ยงการกำหนดดัชนีแบบคงที่เมื่อโครงสร้าง workbook มีการเปลี่ยนแปลง. + +## ขั้นตอนที่ 4: วิธีคัดลอกแถว – ทำสำเนา Pivot Table + +นี่คือหัวใจของ **how to duplicate pivot**: เราคัดลอกแถวที่บรรจุ pivot ไปยังตำแหน่งใหม่ ในกรณีของเราจะเริ่มที่แถว 31 (ดัชนีศูนย์ 30) เมธอด `CopyRows` จะคัดลอก *ทั้ง* ข้อมูลและแคชของ pivot ด้านล่าง ทำให้แถวใหม่ทำงานเหมือนกับต้นฉบับ. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**เกิดอะไรขึ้นเบื้องหลัง?** +`CopyRows` ทำการโคลนแต่ละแถวโดยคงสูตร, สไตล์, และคำนิยามของ pivot ไว้ เนื่องจากแคชของ pivot อยู่ระดับ workbook pivot ที่ทำสำเนาจะอ้างอิงแหล่งข้อมูลเดียวกันโดยอัตโนมัติ – ไม่ต้องตั้งค่าเพิ่มเติม. + +**กรณีขอบ – แถวที่ซ่อน:** +หากแถวใดในช่วงต้นทางถูกซ่อน จะยังคงซ่อนอยู่หลังการคัดลอก หากต้องการแสดงแถวเหล่านั้น ให้เรียก `worksheet.Rows[destRow].IsHidden = false` หลังการคัดลอก. + +## ขั้นตอนที่ 5: บันทึก Workbook – ตรวจสอบสำเนา + +สุดท้าย ให้เขียนการเปลี่ยนแปลงกลับไปยังดิสก์ คุณสามารถเขียนทับไฟล์ต้นฉบับหรือเพื่อความปลอดภัยบันทึกเป็นชื่อใหม่เพื่อเปรียบเทียบก่อน/หลัง. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**ผลลัพธ์ที่คุณควรเห็น:** +เปิด `CopyWithPivot.xlsx` คุณจะพบ pivot ดั้งเดิมที่ **A1:J20** และสำเนาเดียวกันที่เริ่มต้นที่ **A31:J50** ทั้งสอง pivot สามารถรีเฟรชได้อย่างอิสระ และ slicer ใด ๆ ที่เชื่อมกับต้นฉบับยังทำงานกับสำเนาได้เนื่องจากใช้แคชเดียวกัน. + +## คำถามทั่วไปและความหลากหลาย + +### ฉันสามารถทำสำเนา pivot หลายตัวพร้อมกันได้หรือไม่? + +แน่นอน. ลูปผ่าน pivot tables ทั้งหมด (`worksheet.PivotTables`) แล้วคัดลอกช่วงของแต่ละอันไปยังตำแหน่งปลายทางที่ต่างกัน เพียงตรวจสอบให้แน่ใจว่าช่วงปลายทางไม่ทับซ้อนกัน. + +### ถ้า workbook ต้นทางถูกป้องกันด้วยรหัสผ่านจะทำอย่างไร? + +Aspose.Cells ให้คุณเปิดไฟล์ที่ป้องกันด้วยการส่งรหัสผ่านไปยังคอนสตรัคเตอร์ `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### วิธีคัดลอกแถวโดยไม่กระทบสูตร? + +หากคุณต้องการเพียงค่า (*values*) เท่านั้น (ไม่มีสูตร) ให้ใช้ `CopyRows` พร้อมแฟล็ก `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### มีวิธีคัดลอกแถวไปยัง workbook *อื่น* หรือไม่? + +ได้. หลังจากคัดลอกแถวในแผ่นต้นทาง คุณสามารถโคลนแผ่นนั้นไปยัง `Workbook` ตัวอื่นได้ด้วย `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## เคล็ดลับมืออาชีพสำหรับการคัดลอกแถวใน Excel Automation อย่างเชื่อถือได้ + +- **ตรวจสอบช่วง** ก่อนทำการคัดลอก การตรวจ `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` อย่างรวดเร็วช่วยป้องกันข้อผิดพลาดจากการอ้างอิงนอกช่วง. +- **ปิดการคำนวณ** ขณะคัดลอกช่วงใหญ่: `workbook.Settings.CalcMode = CalcMode.Manual;` – จะทำให้การดำเนินการเร็วขึ้นอย่างมาก. +- **ปล่อยอ็อบเจ็กต์** (`workbook.Dispose()`) หากคุณประมวลผลไฟล์หลายไฟล์ในลูป เพื่อคืนทรัพยากรเนทีฟ. +- **บันทึกการทำงาน** – โดยเฉพาะในไพป์ไลน์การผลิต – เพื่อให้คุณสามารถติดตามไฟล์ที่ประมวลผลและตรวจจับความล้มเหลวได้ตั้งแต่แรก. + +## สรุป + +คุณตอนนี้รู้แล้วว่า **how to duplicate pivot** ตารางใน C# ด้วย Aspose.Cells และได้เห็นขั้นตอนเต็มจาก **load excel workbook c#** ไปจนถึง **excel automation copy rows** พร้อมกับการบันทึกผลลัพธ์ ตัวอย่างเป็นอิสระ สามารถรันได้ทันที และสามารถขยายเพื่อรองรับหลาย pivot, ไฟล์ที่ป้องกัน, หรือการคัดลอกข้าม workbook. + +ขั้นตอนต่อไป? ลองปรับสคริปต์ให้: + +- รีเฟรช pivot ที่ทำสำเนาโดยโปรแกรม (`pivotTable.RefreshData();`). +- ส่งออกพื้นที่ที่ทำสำเนาเป็น CSV เพื่อการประมวลผลต่อเนื่อง. +- ผสานโค้ดเข้ากับ ASP.NET Core API เพื่อให้ผู้ใช้อัปโหลดไฟล์และรับเวอร์ชันที่ทำสำเนา pivot ทันที. + +ขอให้เขียนโค้ดอย่างสนุกและขอให้การทำอัตโนมัติ Excel ของคุณราบรื่นเสมอ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/row-and-column-management/_index.md b/cells/thai/net/row-and-column-management/_index.md index 281e03448b..b36cdddd30 100644 --- a/cells/thai/net/row-and-column-management/_index.md +++ b/cells/thai/net/row-and-column-management/_index.md @@ -76,6 +76,8 @@ เรียนรู้การแทรกแถวด้วยการจัดรูปแบบใน Excel โดยใช้ Aspose.Cells สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อการใช้งานที่ง่ายดาย ### [แทรกหลายแถวใน Aspose.Cells .NET](./insert-multiple-rows-aspose-cells/) เรียนรู้การแทรกหลายแถวใน Excel โดยใช้ Aspose.Cells สำหรับ .NET ทำตามบทช่วยสอนโดยละเอียดของเราเพื่อการจัดการข้อมูลอย่างราบรื่น +### [Aspose Cells ลบแถว – ปกป้องแถวหัวเรื่องใน Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +เรียนรู้วิธีลบแถวใน Excel โดยคงแถวหัวเรื่องไว้ด้วย Aspose.Cells สำหรับ .NET {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/thai/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..210780c857 --- /dev/null +++ b/cells/thai/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells ลบแถวโดยคงไว้แถวหัวตาราง เรียนรู้วิธีดึงตารางแรกและลบแถวของตาราง + Excel อย่างปลอดภัยใน C# +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: th +og_description: Aspose Cells ลบแถวพร้อมปกป้องแถวหัวตาราง เรียนรู้วิธีดึงตารางแรกและลบแถวของตาราง + Excel อย่างปลอดภัยใน C# +og_title: Aspose Cells ลบแถว – ปกป้องแถวหัวตารางใน Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells ลบแถว – ปกป้องแถวหัวตารางใน Excel +url: /th/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – ปกป้องแถวหัวเรื่องใน Excel + +เคยลอง **aspose cells delete rows** จากตารางแล้วพบว่าหัวเรื่องหายไปหรือไม่? นี่เป็นข้อผิดพลาดทั่วไปเมื่อจัดการแผ่นงาน Excel ด้วยโปรแกรม ในคู่มือนี้เราจะพาคุณผ่านโซลูชันที่สมบูรณ์และสามารถรันได้ซึ่ง **protects the header row**, แสดงวิธี **retrieve first table**, และลบ **Excel table rows** อย่างปลอดภัยโดยไม่ทำให้โครงสร้างเสียหาย. + +เราจะครอบคลุมทุกอย่างตั้งแต่การโหลด workbook ไปจนถึงการจัดการข้อยกเว้นที่ Aspose โยนเมื่อคุณพยายามทำให้หัวเรื่องเป็นอิสระ ในตอนท้ายคุณจะได้รูปแบบที่มั่นคงซึ่งสามารถนำไปใช้ในโครงการ .NET ใด ๆ ที่ใช้ Aspose.Cells. + +--- + +## สิ่งที่คุณต้องการ + +- **Aspose.Cells for .NET** (v23.12 หรือใหม่กว่า) – ไลบรารีที่ช่วยให้คุณทำงานกับไฟล์ Excel โดยไม่ต้องติดตั้ง Office. +- สภาพแวดล้อมการพัฒนา C# เบื้องต้น (Visual Studio, Rider หรือ `dotnet` CLI). +- ไฟล์ Excel (`TableWithHeader.xlsx`) ที่มีอย่างน้อยหนึ่ง **ListObject** (ตาราง Excel) พร้อมแถวหัวเรื่องในแถวแรก. + +ไม่จำเป็นต้องใช้แพ็กเกจ NuGet เพิ่มเติมนอกจาก Aspose.Cells. + +## ขั้นตอนที่ 1: โหลด Workbook และ Retrieve the First Table + +สิ่งแรกที่คุณต้องทำคือเปิด workbook และดึงตารางที่ต้องการแก้ไข นี่คือจุดที่คีย์เวิร์ดรอง **retrieve first table** เข้ามามีบทบาท. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**ทำไมเรื่องนี้ถึงสำคัญ:** +- `Workbook` อ่านไฟล์โดยไม่ต้องติดตั้ง Excel. +- `worksheet.ListObjects[0]` เป็นวิธีที่ตรงที่สุดในการ **retrieve first table**; หากคุณมีหลายตารางคุณสามารถวนลูปหรือใช้ชื่อของตารางได้. + +> **เคล็ดลับ:** หากคุณไม่แน่ใจว่า worksheet มีตารางหรือไม่ ให้ตรวจสอบ `worksheet.ListObjects.Count` ก่อนเพื่อหลีกเลี่ยง `IndexOutOfRangeException`. + +## ขั้นตอนที่ 2: ปกป้องแถวหัวเรื่องขณะลบแถว + +ตอนนี้มาถึงหัวใจของเรื่อง: **aspose cells delete rows** โดยไม่ลบหัวเรื่องออก เมธอด `DeleteRows` ของ Aspose รับค่าเริ่มต้นแบบศูนย์‑ฐานและจำนวนแถว การพยายามลบหัวเรื่อง (แถว 0) จะทำให้เกิดข้อยกเว้น ซึ่งเป็นสิ่งที่เราต้องการหลีกเลี่ยง. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**คำอธิบายของตรรกะ:** + +| ขั้นตอน | เหตุผล | +|------|--------| +| `table.DeleteRows(1, 2);` | ดัชนี 1 ชี้ไปที่แถว **ที่สอง** (แถวข้อมูลแรก) การลบสองแถวจะลบแถว 2‑3 ในเชิงของ Excel ทำให้หัวเรื่อง (แถว 1) ไม่ถูกกระทบ. | +| `catch (Exception ex)` | Aspose จะโยนข้อยกเว้น **เฉพาะ** เมื่อการดำเนินการจะทำให้หัวเรื่องเป็นอิสระ การจับข้อยกเว้นนี้ทำให้คุณสามารถบันทึกข้อความที่เป็นมิตรแทนการทำแอปพัง. | +| `Save` | การบันทึกการเปลี่ยนแปลงทำให้คุณเปิด `Result.xlsx` แล้วเห็นว่าหัวเรื่องยังคงอยู่. | + +> **ถ้าคุณต้องการลบหัวเรื่องจริง ๆ จะทำอย่างไร?** ใช้ `table.ShowHeaders = false;` ก่อนการลบ, หรือ ลบตารางทั้งหมดแล้วสร้างใหม่ แต่ในสถานการณ์ธุรกิจส่วนใหญ่คุณจะต้อง **protect header row**. + +## ขั้นตอนที่ 3: ตรวจสอบผลลัพธ์ – ผลลัพธ์ที่คาดหวัง + +หลังจากรันโปรแกรม เปิด `Result.xlsx` คุณควรเห็น: + +- แถวแรกยังคงมีชื่อคอลัมน์เดิม. +- แถว 2‑3 (แถวที่เราตั้งเป้า) หายไปและข้อมูลที่เหลือได้เลื่อนขึ้น. + +คอนโซลจะแสดง: + +``` +Rows deleted successfully. +``` + +หากคุณโดยบังเอิญพยายามลบหัวเรื่อง (เช่น `table.DeleteRows(0, 1);`) ผลลัพธ์จะเป็น: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +ข้อความนั้นยืนยันว่าการป้องกันในตัวของ Aspose ทำงานตามที่ควร. + +## ขั้นตอนที่ 4: วิธีทางเลือกในการ **Delete Excel Table Rows** + +บางครั้งคุณต้องการการควบคุมมากขึ้น—เช่นการลบแถวตามเงื่อนไข หรือการลบแถวที่ไม่ต่อเนื่อง นี่คือสองรูปแบบที่รวดเร็วซึ่งทำให้หัวเรื่องปลอดภัย. + +### 4.1 ลบแถวโดยใช้ตัวกรองข้อมูล + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 ลบหลายแถวโดยใช้ช่วง + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +ทั้งสองสคริปต์เคารพกฎ **protect header row** เนื่องจากดัชนีเริ่มต้นไม่เคยต่ำกว่า 1. + +## ขั้นตอนที่ 5: ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| ข้อผิดพลาด | สาเหตุ | วิธีแก้ | +|---------|----------------|-----| +| ลบหัวเรื่องโดยบังเอิญ | ใช้ `0` เป็นดัชนีเริ่มต้น | เริ่มที่ `1` เสมอสำหรับแถวข้อมูล หรือเช็ค `table.ShowHeaders` ก่อน. | +| `IndexOutOfRangeException` เมื่อแผ่นงานไม่มีตาราง | สมมติว่ามีตาราง | ตรวจสอบ `worksheet.ListObjects.Count > 0` ก่อนเข้าถึง `[0]`. | +| การเปลี่ยนแปลงไม่ถูกบันทึก | ลืมเรียก `Save` | เรียก `workbook.Save` หลังจากแก้ไข. | +| การลบแถวในกลางทำให้ดัชนีเปลี่ยนตำแหน่ง ทำให้ข้ามแถว | การวนลูปไปข้างหน้าขณะลบ | วนลูป **ย้อนกลับ** หรือเก็บแถวที่ต้องลบไว้ก่อน. | + +## ขั้นตอนที่ 6: รวมทุกอย่างเข้าด้วยกัน – ตัวอย่างทำงานเต็มรูปแบบ + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +รันโปรแกรมนี้ เปิด `Result.xlsx` แล้วคุณจะเห็นหัวเรื่องไม่ถูกกระทบขณะที่แถวที่เลือกถูกลบ นั่นคือ **complete, self‑contained solution** สำหรับ **aspose cells delete rows** โดยไม่ทำให้หัวเรื่องเสียหาย. + +## สรุป + +เราได้สาธิตวิธี **aspose cells delete rows** ขณะ **protecting the header row**, วิธี **retrieve first table**, และหลายวิธีในการ **delete excel table rows** อย่างปลอดภัย จุดสำคัญที่ควรจำคือ: + +- เริ่มการลบที่ดัชนี 1 เสมอเพื่อให้หัวเรื่องยังคงอยู่. +- ใช้ `try/catch` เพื่อจัดการข้อยกเว้นการป้องกันในตัวของ Aspose. +- ตรวจสอบว่าตารางมีอยู่ก่อนดำเนินการ และวนลูปย้อนกลับเมื่อทำการลบแถวตามเงื่อนไข. + +พร้อมจะก้าวต่อไปหรือยัง? ลองผสานวิธีนี้กับ API การจัดรูปแบบของ **Aspose Cells’** เพื่อไฮไลท์แถวที่ลบก่อนลบออก, หรืออัตโนมัติกระบวนการนี้ในหลาย worksheet ความเป็นไปได้ไม่มีที่สิ้นสุด และตอนนี้คุณมีรูปแบบที่เชื่อถือได้สำหรับต่อยอด. + +ถ้าคุณพบว่าคู่มือนี้มีประโยชน์ อย่าลืมกดไลค์, แชร์ให้เพื่อนร่วมทีม, หรือแสดงความคิดเห็นพร้อมโซลูชันกรณีพิเศษของคุณเอง. Happy coding! + +![ตัวอย่าง Aspose Cells Delete Rows – ปกป้องแถวหัวเรื่อง](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/thai/net/saving-and-exporting-excel-files-with-options/_index.md index b81087b4b5..63a6259f0d 100644 --- a/cells/thai/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/thai/net/saving-and-exporting-excel-files-with-options/_index.md @@ -21,29 +21,31 @@ Aspose.Cells สำหรับ .NET มอบเครื่องมืออ ## การส่งออกความคิดเห็นขณะบันทึกไฟล์ Excel เป็น HTML -ต้องการรักษาคำติชมหรือบันทึกของผู้ใช้ให้สมบูรณ์เมื่อส่งออกไฟล์ Excel เป็น HTML หรือไม่ ด้วย [การส่งออกความคิดเห็นขณะบันทึกไฟล์ Excel เป็น HTML](./exporting-comments/) บทช่วยสอน Aspose.Cells สำหรับ .NET ช่วยให้คุณสามารถเก็บคำอธิบายประกอบได้อย่างง่ายดายระหว่างขั้นตอนนี้ คู่มือนี้นำเสนอขั้นตอนง่ายๆ ในการส่งออกคำอธิบายประกอบอย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าบันทึกและคำเตือนทุกรายการในไฟล์ Excel ของคุณจะมองเห็นได้ในผลลัพธ์ HTML ถือเป็นฟีเจอร์ที่มีประโยชน์สำหรับทีมที่ต้องการแบ่งปันเอกสารที่มีข้อมูลครบถ้วนทางออนไลน์โดยไม่สูญเสียคำอธิบายประกอบที่สำคัญใดๆ +ต้องการรักษาคำติชมหรือบันทึกของผู้ใช้ให้สมบูรณ์เมื่อส่งออกไฟล์ Excel เป็น HTML หรือไม่ ด้วย [การส่งออกความคิดเห็นขณะบันทึกไฟล์ Excelเป็น HTML](./exporting-comments/) บทช่วยสอน Aspose.Cells สำหรับ .NET ช่วยให้คุณสามารถเก็บคำอธิบายประกอบได้อย่างง่ายดายระหว่างขั้นตอนนี้ คู่มือนี้นำเสนอขั้นตอนง่ายๆ ในการส่งออกคำอธิบายประกอบอย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าบันทึกและคำเตือนทุกรายการในไฟล์ Excel ของคุณจะมองเห็นได้ในผลลัพธ์ HTML ถือเป็นฟีเจอร์ที่มีประโยชน์สำหรับทีมที่ต้องการแบ่งปันเอกสารที่มีข้อมูลครบถ้วนทางออนไลน์โดยไม่สูญเสียคำอธิบายประกอบที่สำคัญใดๆ ## ได้รับคำเตือนขณะโหลดไฟล์ Excel ใน .NET -เมื่อคุณโหลดไฟล์ Excel รูปแบบข้อมูลหรือเนื้อหาบางอย่างอาจแสดงคำเตือน เรียนรู้วิธีจัดการและตีความการแจ้งเตือนเหล่านี้ด้วย [ได้รับคำเตือนขณะโหลดไฟล์ Excel ใน .NET](./getting-warnings-while-loading-excel-file/) บทช่วยสอน คู่มือนี้เป็นสิ่งจำเป็นสำหรับนักพัฒนาที่ต้องการจัดการและแก้ไขปัญหาความเข้ากันได้หรือคำเตือนเกี่ยวกับการจัดรูปแบบอย่างมีประสิทธิภาพ การแก้ไขคำเตือนเหล่านี้ตั้งแต่เนิ่นๆ จะช่วยให้โหลดไฟล์ลงในแอปพลิเคชันได้อย่างราบรื่นและปราศจากข้อผิดพลาด +เมื่อคุณโหลดไฟล์ Excel รูปแบบข้อมูลหรือเนื้อหาบางอย่างอาจแสดงคำเตือน เรียนรู้วิธีจัดการและตีความการแจ้งเตือนเหล่านี้ด้วย [ได้รับคำเตือนขณะโหลดไฟล์ Excelใน .NET](./getting-warnings-while-loading-excel-file/) บทช่วยสอน คู่มือนี้เป็นสิ่งจำเป็นสำหรับนักพัฒนาที่ต้องการจัดการและแก้ไขปัญหาความเข้ากันได้หรือคำเตือนเกี่ยวกับการจัดรูปแบบอย่างมีประสิทธิภาพ การแก้ไขคำเตือนเหล่านี้ตั้งแต่เนิ่นๆ จะช่วยให้โหลดไฟล์ลงในแอปพลิเคชันได้อย่างราบรื่นและปราศจากข้อผิดพลาด ## การระบุเวอร์ชันเอกสารของไฟล์ Excel ในโปรแกรม .NET -การปรับแต่งข้อมูลเมตาของเอกสาร เช่น เวอร์ชัน ผู้เขียน หรือชื่อเรื่อง ถือเป็นสิ่งสำคัญสำหรับการจัดการและติดตามไฟล์อย่างเหมาะสม ด้วย [การระบุเวอร์ชันเอกสารของไฟล์ Excel ในโปรแกรม .NET](./specifying-document-version-of-excel-file/) บทช่วยสอน คุณสามารถปรับเปลี่ยนแอตทริบิวต์เหล่านี้ได้โดยตรงภายในโค้ดของคุณ คำแนะนำทีละขั้นตอนนี้ช่วยให้คุณตั้งค่าคุณสมบัติต่างๆ เช่น เวอร์ชันไฟล์ได้อย่างราบรื่น ช่วยปรับปรุงการจัดระเบียบและการตรวจสอบย้อนกลับของเอกสารของคุณ โดยเฉพาะอย่างยิ่งมีประโยชน์สำหรับโครงการร่วมมือหรือโครงการระยะยาว +การปรับแต่งข้อมูลเมตาของเอกสาร เช่น เวอร์ชัน ผู้เขียน หรือชื่อเรื่อง ถือเป็นสิ่งสำคัญสำหรับการจัดการและติดตามไฟล์อย่างเหมาะสม ด้วย [การระบุเวอร์ชันเอกสารของไฟล์ Excelในโปรแกรม .NET](./specifying-document-version-of-excel-file/) บทช่วยสอน คุณสามารถปรับเปลี่ยนแอตทริบิวต์เหล่านี้ได้โดยตรงภายในโค้ดของคุณ คำแนะนำทีละขั้นตอนนี้ช่วยให้คุณตั้งค่าคุณสมบัติต่างๆ เช่น เวอร์ชันไฟล์ได้อย่างราบรื่น ช่วยปรับปรุงการจัดระเบียบและการตรวจสอบย้อนกลับของเอกสารของคุณ โดยเฉพาะอย่างยิ่งมีประโยชน์สำหรับโครงการร่วมมือหรือโครงการระยะยาว ### การตัดแถวและคอลัมน์ว่างด้านหน้าขณะส่งออก แถวและคอลัมน์ที่ว่างเปล่าอาจทำให้การส่งออกของคุณยุ่งวุ่นวาย โดยเฉพาะเมื่อจัดการกับไฟล์ CSV [การตัดแถวและคอลัมน์ว่างด้านหน้าขณะส่งออก](./trimming-leading-blank-rows-and-columns/) บทช่วยสอนช่วยให้คุณทำความสะอาดข้อมูลของคุณโดยตัดช่องว่างที่ไม่จำเป็นที่จุดเริ่มต้นของแถวและคอลัมน์ บทช่วยสอนนี้เหมาะสำหรับนักพัฒนาที่ต้องการสร้างไฟล์ที่กระชับและเป็นระเบียบเรียบร้อยเพื่อพร้อมสำหรับการวิเคราะห์หรือการนำเสนอ ผลลัพธ์ที่สะอาดและสมบูรณ์แบบไม่เพียงแต่ดูเป็นมืออาชีพเท่านั้น แต่ยังทำให้การประมวลผลข้อมูลง่ายขึ้นมากอีกด้วย ## การบันทึกและส่งออกไฟล์ Excel พร้อมบทช่วยสอนตัวเลือก -### [การส่งออกความคิดเห็นขณะบันทึกไฟล์ Excel เป็น HTML](./exporting-comments/) -เรียนรู้วิธีการส่งออกความคิดเห็นได้อย่างง่ายดายในขณะที่บันทึกไฟล์ Excel เป็น HTML โดยใช้ Aspose.Cells สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนนี้เพื่อเก็บรักษาคำอธิบายประกอบ -### [ได้รับคำเตือนขณะโหลดไฟล์ Excel ใน .NET](./getting-warnings-while-loading-excel-file/) -เรียนรู้วิธีการจัดการคำเตือนในขณะโหลดไฟล์ Excel ใน .NET โดยใช้ Aspose.Cells ด้วยคู่มือทีละขั้นตอนง่ายๆ ของเรา -### [การระบุเวอร์ชันเอกสารของไฟล์ Excel ในโปรแกรม .NET](./specifying-document-version-of-excel-file/) -เรียนรู้วิธีระบุคุณสมบัติของเอกสาร เช่น เวอร์ชัน ผู้เขียน และชื่อเรื่องในไฟล์ Excel ด้วยโปรแกรม Aspose.Cells สำหรับ .NET พร้อมคำแนะนำทีละขั้นตอน +### [การส่งออกความคิดเห็นขณะบันทึกไฟล์ Excelเป็น HTML](./exporting-comments/) +เรียนรู้วิธีการส่งออกความคิดเห็นได้อย่างง่ายดายในขณะที่บันทึกไฟล์ Excelเป็น HTML โดยใช้ Aspose.Cells สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนนี้เพื่อเก็บรักษาคำอธิบายประกอบ +### [ได้รับคำเตือนขณะโหลดไฟล์ Excelใน .NET](./getting-warnings-while-loading-excel-file/) +เรียนรู้วิธีการจัดการคำเตือนในขณะโหลดไฟล์ Excelใน .NET โดยใช้ Aspose.Cells ด้วยคู่มือทีละขั้นตอนง่ายๆ ของเรา +### [การระบุเวอร์ชันเอกสารของไฟล์ Excelในโปรแกรม .NET](./specifying-document-version-of-excel-file/) +เรียนรู้วิธีระบุคุณสมบัติของเอกสาร เช่น เวอร์ชัน ผู้เขียน และชื่อเรื่องในไฟล์ Excelด้วยโปรแกรม Aspose.Cells สำหรับ .NET พร้อมคำแนะนำทีละขั้นตอน ### [การตัดแถวและคอลัมน์ว่างด้านหน้าขณะส่งออก](./trimming-leading-blank-rows-and-columns/) ปรับปรุงการส่งออก CSV ของคุณโดยตัดแถวและคอลัมน์ว่างด้านหน้าออกด้วย Aspose.Cells สำหรับ .NET ข้อมูลที่สะอาดอยู่ห่างออกไปเพียงไม่กี่ขั้นตอน +### [วิธีบันทึกเวิร์กบุ๊กใน C# – คู่มือการทำงานอัตโนมัติ Excel อย่างครบถ้วน](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +เรียนรู้วิธีบันทึกเวิร์กบุ๊กใน C# อย่างละเอียด พร้อมเทคนิคการทำงานอัตโนมัติของ Excel อย่างครบถ้วน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/thai/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..f047ef2b95 --- /dev/null +++ b/cells/thai/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: วิธีบันทึกเวิร์กบุ๊กใน C# ด้วย Aspose.Cells—คู่มือขั้นตอนต่อขั้นตอนที่ครอบคลุมวิธีโหลดไฟล์ + Excel, สร้างชีต, ใช้ชีตซ้ำ, และสร้างรายงาน. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: th +og_description: วิธีบันทึกเวิร์กบุ๊กใน C# ด้วย Aspose.Cells. เรียนรู้วิธีโหลด Excel, + สร้างชีต, ใช้ชีตซ้ำ, และสร้างรายงานในบทเรียนเดียว. +og_title: วิธีบันทึกเวิร์กบุ๊กใน C# – คู่มือการทำอัตโนมัติ Excel อย่างครบถ้วน +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: วิธีบันทึกเวิร์กบุ๊กใน C# – คู่มือการทำงานอัตโนมัติ Excel อย่างครบถ้วน +url: /th/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีบันทึก Workbook ใน C# – คู่มือการทำงานอัตโนมัติ Excel อย่างครบถ้วน + +เคยสงสัย **วิธีบันทึก workbook** ใน C# หลังจากที่คุณทำการประมวลผลข้อมูลหรือไม่? คุณไม่ได้เป็นคนเดียวที่เจอปัญหา นักพัฒนาส่วนใหญ่มักเจออุปสรรคเมื่อรายงานดูดีบนหน้าจอแต่กลับไม่สามารถบันทึกลงดิสก์ได้ ในบทเรียนนี้เราจะพาคุณผ่านตัวอย่างเต็มรูปแบบที่ไม่เพียงแสดง **วิธีบันทึก workbook** เท่านั้น แต่ยังครอบคลุม **วิธีโหลด Excel**, **วิธีสร้าง sheet**, **วิธีใช้ sheet ที่มีอยู่ซ้ำ**, และ **วิธีสร้างรายงาน** — ทั้งหมดด้วย Aspose.Cells + +คิดว่าเป็นการสนทนาขณะพักดื่มกาแฟที่ฉันดึงโค้ดออกจากแล็ปท็อปและอธิบายแต่ละบรรทัด เมื่อเสร็จคุณจะได้โปรแกรมที่สามารถรันได้ซึ่งโหลดเทมเพลต, แทรกข้อมูลผ่าน SmartMarker, ใช้ชื่อ sheet รายละเอียดที่มีอยู่แล้ว, และสุดท้ายเขียนไฟล์ลงโฟลเดอร์ของคุณ ไม่ต้องมีความลับ เพียงขั้นตอนที่ชัดเจนและคัดลอก‑วางได้ + +## สิ่งที่คุณต้องเตรียม + +- **Aspose.Cells for .NET** (เวอร์ชันล่าสุด ณ ปี 2026) คุณสามารถติดตั้งจาก NuGet ด้วย `Install-Package Aspose.Cells` +- สภาพแวดล้อมการพัฒนา .NET (Visual Studio, Rider หรือ VS Code พร้อมส่วนขยาย C# ก็ใช้ได้) +- ไฟล์เทมเพลต Excel เบื้องต้นชื่อ `MasterTemplate.xlsx` ที่วางไว้ในโฟลเดอร์ที่คุณควบคุม +- ความรู้พื้นฐานของ C# — หากคุณเคยเขียน `Console.WriteLine` มาก่อนก็พร้อมแล้ว + +> **เคล็ดลับ:** เก็บเทมเพลตไว้ในโฟลเดอร์ *Resources* แยกต่างหากและตั้งค่าเป็น “Copy if newer” เพื่อให้เส้นทางคงที่ในทุกการสร้าง + +ตอนนี้ เรามาเริ่มดูโค้ดกัน + +## ขั้นตอนที่ 1: วิธีโหลด Excel – เปิด Workbook เทมเพลต + +สิ่งแรกที่ต้องทำคือโหลด workbook เข้าไปในหน่วยความจำ Aspose.Cells ทำให้ขั้นตอนนี้เป็นบรรทัดเดียว แต่การเข้าใจเหตุผลช่วยให้แก้ปัญหาได้ง่ายขึ้นเมื่อเกิดข้อผิดพลาด + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **ทำไมต้องทำเช่นนี้:** การโหลด workbook ทำให้คุณเข้าถึงทุก worksheet, style, และ named range ภายในเทมเพลต หากไฟล์ไม่พบ Aspose จะโยน `FileNotFoundException` ดังนั้นตรวจสอบเส้นทางให้แน่ใจ +- **กรณีพิเศษ:** หากเทมเพลตมีการป้องกันด้วยรหัสผ่าน ให้ส่งรหัสผ่านไปยังคอนสตรัคเตอร์ `Workbook` เช่น `new Workbook(path, new LoadOptions { Password = "pwd" })` + +## ขั้นตอนที่ 2: วิธีใช้ Sheet ซ้ำ – ตั้งค่า SmartMarker Options + +SmartMarker สามารถสร้าง sheet รายละเอียดใหม่โดยอัตโนมัติได้ แต่คุณอาจมี sheet ชื่อ **Detail** อยู่แล้ว เพื่อหลีกเลี่ยงการชน เราต้องบอกให้โปรเซสเซอร์ใช้ชื่อเดิม + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **ทำไมต้องทำเช่นนี้:** หากไม่ตั้งค่านี้ Aspose จะต่อท้ายด้วยตัวเลข (เช่น “Detail1”) ซึ่งอาจทำให้มาโครหรือสูตรที่คาดหวังชื่อ sheet คงที่ทำงานผิดพลาด +- **ถ้า sheet ไม่มีอยู่?** Aspose จะสร้างให้โดยอัตโนมัติ — โค้ดเดียวกันทำงานได้ไม่ว่ามีหรือไม่มี sheet นั้น + +## ขั้นตอนที่ 3: วิธีสร้าง Sheet – เตรียมแหล่งข้อมูล + +แม้ว่าเราจะไม่ได้เพิ่ม sheet ด้วยตนเองในขั้นตอนนี้ แต่โครงสร้างข้อมูลที่ส่งให้ SmartMarker จะกำหนดว่าจะสร้าง sheet ใหม่หรือไม่ เราจะสร้างอ็อบเจกต์ไม่ระบุชื่อ (anonymous object) ที่จำลองรายการสั่งซื้อ + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **ทำไมต้องทำเช่นนี้:** SmartMarker จะสแกนเทมเพลตหามาร์คเกอร์เช่น `&=Header` และ `&=Items.Id` โครงสร้างของ `orderData` ต้องตรงกับมาร์คเกอร์เหล่านั้น มิฉะนั้นโปรเซสเซอร์จะข้ามโดยไม่แจ้งเตือน +- **ทางเลือก:** หากดึงข้อมูลจากฐานข้อมูล ให้แทนที่ประเภทไม่ระบุชื่อด้วยรายการ DTO หรือ `DataTable` ทั้งสองรูปแบบรองรับโดยโปรเซสเซอร์ + +## ขั้นตอนที่ 4: วิธีสร้างรายงาน – ประมวลผล SmartMarker + +ตอนนี้เราจะผูกข้อมูลเข้ากับเทมเพลต โปรเซสเซอร์จะเดินผ่าน worksheet แรก, แทนที่มาร์คเกอร์, และสร้าง sheet รายละเอียดตามที่กำหนด + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **ทำไมต้องทำเช่นนี้:** บรรทัดเดียวนี้ทำหน้าที่หนักทั้งหมด — เติมข้อมูลหัวเรื่อง, วนลูป `Items`, และเคารพ `DetailSheetNewName` ที่ตั้งไว้ก่อนหน้า +- **คำถามที่พบบ่อย:** *ถ้ามีหลาย worksheet ที่มีมาร์คเกอร์ล่ะ?* ให้วนลูปแต่ละ worksheet แล้วเรียก `SmartMarkerProcessor.Process` แยกกัน + +## ขั้นตอนที่ 5: วิธีบันทึก Workbook – เก็บไฟล์ผลลัพธ์ + +สุดท้าย เราจะเขียน workbook ที่แก้ไขแล้วกลับลงดิสก์ นี่คือจุดที่ **วิธีบันทึก workbook** กลายเป็นเรื่องจริง + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **ทำไมต้องทำเช่นนี้:** เมธอด `Save` รองรับหลายรูปแบบ (`.xlsx`, `.xls`, `.csv`, `.pdf` ฯลฯ) โดยค่าเริ่มต้นจะบันทึกเป็นไฟล์ Excel แต่คุณสามารถส่งอ็อบเจกต์ `SaveOptions` เพื่อเปลี่ยนรูปแบบได้ +- **กรณีพิเศษ:** หากไฟล์เป้าหมายเปิดอยู่ใน Excel, `Save` จะโยน `IOException` ตรวจสอบให้ปิดไฟล์ทั้งหมดหรือใช้ชื่อไฟล์ที่ไม่ซ้ำกันในแต่ละครั้ง + +![ตัวอย่างวิธีบันทึก Workbook ใน C#](/images/how-to-save-workbook-csharp.png "วิธีบันทึก Workbook ใน C# – ภาพรวมกระบวนการ") + +### ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน นี่คือแอปคอนโซลที่สมบูรณ์ซึ่งคุณสามารถคอมไพล์และรันได้ + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** หลังรันแล้วคุณจะพบไฟล์ `SmartMarkerWithDupDetail.xlsx` ใน `YOUR_DIRECTORY` เปิดไฟล์แล้วคุณจะเห็น: + +- หัวเรื่องเดิมที่เติมค่าด้วย “Orders” +- Sheet ใหม่ (หรือใช้ซ้ำ) ชื่อ **Detail** มีสองแถว: `Id=1, Qty=5` และ `Id=2, Qty=3` + +หาก sheet **Detail** มีอยู่แล้ว เนื้อหาจะถูกเขียนทับด้วยข้อมูลใหม่ — ไม่ได้สร้าง sheet เพิ่มเติมที่ทำให้ไฟล์รก + +## คำถามที่พบบ่อย (FAQ) + +| คำถาม | คำตอบ | +|----------|--------| +| *ฉันสามารถบันทึกเป็น PDF แทน XLSX ได้หรือไม่?* | ได้ แค่เปลี่ยน `workbook.Save("file.xlsx")` เป็น `workbook.Save("file.pdf", SaveFormat.Pdf);` | +| *ถ้าเทมเพลตของฉันมีหลายส่วน SmartMarker จะทำอย่างไร?* | เรียก `SmartMarkerProcessor.Process` บนแต่ละ worksheet ที่มีมาร์คเกอร์ หรือส่งคอลเลกชันของอ็อบเจกต์ข้อมูลที่ตรงกับแต่ละส่วน | +| *มีวิธีเพิ่มข้อมูลแทนการเขียนทับ sheet Detail ไหม?* | ใช้ `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (มีในเวอร์ชัน Aspose ล่าสุด) | +| *ต้องทำการ Dispose Workbook หรือไม่?* | คลาส `Workbook` implements `IDisposable` ควรใช้ `using` block เพื่อจัดการทรัพยากรอย่างสะอาด | + +## สรุป + +เราได้อธิบาย **วิธีบันทึก workbook** ใน C# ตั้งแต่ต้นจนจบ โดยแสดงขั้นตอนทั้งหมด: **วิธีโหลด Excel**, **วิธีสร้าง sheet** (โดยอ้อมผ่าน SmartMarker), **วิธีใช้ sheet ซ้ำ**, และ **วิธีสร้างรายงาน** โค้ดพร้อมใช้งานในโปรเจกต์ .NET ใดก็ได้ และคำอธิบายควรให้คุณมีบริบทพอที่จะปรับใช้กับสถานการณ์ที่ซับซ้อนกว่า — เช่น รายงานหลาย sheet, การจัดรูปแบบตามเงื่อนไข, หรือการส่งออกเป็น PDF + +พร้อมรับความท้าทายต่อไปหรือยัง? ลองเพิ่มแผนภูมิที่แสดงปริมาณการสั่งซื้อ, หรือเปลี่ยนรูปแบบผลลัพธ์เป็น CSV เพื่อการประมวลผลต่อไป หลักการเดียวกัน — โหลด, ประมวลผล, และบันทึก — ยังคงใช้ได้ คุณจะพบว่าตัวแบบนี้เป็นประโยชน์ในงานรายงานหลายประเภท + +หากคุณเจอปัญหาหรือมีไอเดียสำหรับการขยายฟีเจอร์ อย่าลังเลที่จะแสดงความคิดเห็น ขอให้สนุกกับการเขียนโค้ดและเพลิดเพลินกับประสบการณ์การ **บันทึก workbook** อย่างราบรื่นตามที่ต้องการ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/smart-markers-dynamic-data/_index.md b/cells/thai/net/smart-markers-dynamic-data/_index.md index 649144edf4..de69d09871 100644 --- a/cells/thai/net/smart-markers-dynamic-data/_index.md +++ b/cells/thai/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,8 @@ ปลดล็อกศักยภาพของการรายงาน Excel ด้วย Aspose.Cells โดยจัดการวัตถุที่ซ้อนกันได้อย่างง่ายดายด้วย Smart Markers ในคู่มือทีละขั้นตอน ### [การนำตัวแปรอาร์เรย์ไปใช้งานด้วย Smart Markers Aspose.Cells](./variable-array-smart-markers/) ปลดล็อกพลังของ Aspose.Cells เรียนรู้วิธีการนำตัวแปรอาร์เรย์มาใช้งานด้วย Smart Markers ทีละขั้นตอนเพื่อสร้างรายงาน Excel ได้อย่างราบรื่น +### [วิธีสร้างรายงาน Excel ด้วย C# – คู่มือเต็มการใช้ SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +เรียนรู้วิธีสร้างรายงาน Excel อย่างเต็มรูปแบบด้วย C# และ SmartMarker ด้วยคำแนะนำทีละขั้นตอนจาก Aspose.Cells {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/thai/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..7e1c4deccf --- /dev/null +++ b/cells/thai/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-03-22 +description: วิธีสร้างรายงาน Excel ใน C# ด้วยเทมเพลต master‑detail. เรียนรู้การเติมข้อมูลเทมเพลต + Excel ด้วย C# อย่างรวดเร็วโดยใช้ SmartMarker สำหรับแผ่นงานที่ทำซ้ำได้. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: th +og_description: วิธีสร้างรายงาน Excel ด้วย C# โดยใช้เทมเพลตที่นำกลับมาใช้ใหม่ได้ คู่มือขั้นตอนต่อขั้นตอนนี้จะแสดงวิธีเติมข้อมูลลงในเทมเพลต + Excel ด้วย C# จากข้อมูลแบบ master‑detail +og_title: วิธีสร้างรายงาน Excel ด้วย C# – คู่มือ SmartMarker ฉบับสมบูรณ์ +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: วิธีสร้างรายงาน Excel ด้วย C# – คู่มือฉบับเต็มโดยใช้ SmartMarker +url: /th/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้างรายงาน Excel ด้วย C# – คู่มือฉบับเต็มโดยใช้ SmartMarker + +เคยสงสัย **วิธีสร้างรายงาน Excel** ด้วย C# โดยไม่ต้องเขียนโค้ดเซลล์‑ต่อ‑เซลล์ตลอดเวลาไหม? คุณไม่ได้เป็นคนเดียว นักพัฒนาส่วนใหญ่มักเจออุปสรรคเมื่อจำเป็นต้องสร้างรายงานหลายชีตที่มีความสัมพันธ์แบบ master‑detail — เช่น คำสั่งซื้อและรายการสินค้า — แต่ไม่อยากสร้างโค้ดซ้ำทุกครั้ง + +ข่าวดีคืออะไร? ด้วยเทมเพลต Excel ที่เตรียมไว้แล้วและเอนจิน **SmartMarker** ของ Aspose.Cells คุณสามารถ **populate Excel template C#** ได้ในไม่กี่บรรทัดเท่านั้น ในบทแนะนำนี้เราจะเดินผ่านสถานการณ์จริง อธิบายเหตุผลของแต่ละขั้นตอน และให้ตัวอย่างที่พร้อมรันที่คุณสามารถคัดลอก‑วางได้ทันที + +> **สิ่งที่คุณจะได้:** รายงาน Excel แบบ master‑detail ที่แต่ละคำสั่งซื้อสร้างชีตของตนเองทั้งหมดโดยอิงจากอ็อบเจกต์ C# ธรรมดา ไม่ต้องวนลูปเซลล์ด้วยตนเอง ไม่ต้องพึ่งสูตรที่เปราะบาง — เพียงโค้ดที่สะอาดและดูแลง่าย + +--- + +## Prerequisites + +ก่อนที่เราจะลงมือทำ โปรดตรวจสอบว่าคุณมี: + +- **.NET 6.0** (หรือใหม่กว่า) ติดตั้งแล้ว — โค้ดนี้ตั้งเป้าหมายที่ .NET 6 แต่ก็ทำงานได้บน .NET Framework 4.7+ ด้วย +- **Aspose.Cells for .NET** NuGet package (`Install-Package Aspose.Cells`) — ให้คลาส `Workbook`, `SmartMarkerProcessor` และคลาสที่เกี่ยวข้อง +- ไฟล์ Excel ชื่อ **MasterDetailTemplate.xlsx** อยู่ใน `YOUR_DIRECTORY` ซึ่งต้องมีบล็อก SmartMarker เช่น `{{Orders.OrderId}}` ในชีตแรกและบล็อกซ้อน `{{Orders.Items.Prod}}` สำหรับรายการสินค้า +- ความเข้าใจพื้นฐานเกี่ยวกับ **anonymous types** ของ C# — เราจะใช้เพื่อจำลองคำสั่งซื้อและรายการสินค้า + +หากส่วนใดส่วนหนึ่งฟังดูแปลกใหม่ อย่ากังวล เราจะพูดถึงทางเลือก (เช่นใช้ EPPlus) ในภายหลัง แต่แนวคิดหลักยังคงเหมือนเดิม + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +สิ่งแรกที่เราทำคือเปิดไฟล์เทมเพลต คิดว่าเทมเพลตเป็นโครงกระดูก; SmartMarker จะเติมข้อมูลจริงลงไปในภายหลัง + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**ทำไมขั้นตอนนี้สำคัญ:** การแยกเลเยอร์การออกแบบ (เทมเพลต) ออกจากข้อมูล (อ็อบเจกต์ C#) ทำให้ดีไซเนอร์และนักพัฒนาต่างพึงพอใจ ดีไซเนอร์สามารถปรับฟอนต์ สี หรือสูตรได้โดยไม่ต้องแก้โค้ด + +--- + +## Step 2: Build the Master‑Detail Data Source + +ต่อไปเราจะสร้างข้อมูลที่จะเติมลงในเทมเพลต สำหรับรายงานคำสั่งซื้อทั่วไป คุณจะมีคอลเลกชันของคำสั่งซื้อ แต่ละคำสั่งซื้อมีคอลเลกชันของรายการสินค้า + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** ใช้คลาสที่มีการกำหนดประเภทอย่างชัดเจนแทนการใช้ anonymous types หากต้องการนำไปใช้ซ้ำในหลายรายงาน วิธีการแบบ anonymous ทำให้ตัวอย่างสั้นกระชับ + +**ทำไมขั้นตอนนี้สำคัญ:** SmartMarker ทำงานโดยจับคู่ชื่อคุณสมบัติ (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) กับตัวแปรในเทมเพลต โครงสร้างต้องตรงกันอย่างแม่นยำ ไม่เช่นนั้นเอนจินจะข้ามส่วนนั้นไป + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +โดยค่าเริ่มต้น SmartMarker จะเขียนแถวทั้งหมดลงในชีตเดียว เราต้องการให้แต่ละคำสั่งซื้ออยู่บนชีตของตนเอง ซึ่งเหมาะกับการพิมพ์หรือส่ง PDF แยกตามคำสั่งซื้อในภายหลัง + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**ทำไมขั้นตอนนี้สำคัญ:** `EnableRepeatingSheet` ลบความจำเป็นในการคัดลอกชีตด้วยตนเอง เอนจินจะคัดลอกชีตต้นฉบับ ใส่ข้อมูลคำสั่งซื้อ แล้วเปลี่ยนชื่อชีตอัตโนมัติ (โดยทั่วไปใช้ค่าจากคอลัมน์แรก) + +--- + +## Step 4: Process the Template with Your Data + +ตอนนี้เราจะผูกทุกอย่างเข้าด้วยกัน `SmartMarkerProcessor` จะเดินผ่าน workbook, แทนที่แท็ก และสร้างชีตใหม่ตามที่กำหนด + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**ทำไมขั้นตอนนี้สำคัญ:** บรรทัดเดียวนี้ทำงานหนักทั้งหมด — การแยกเทมเพลต, การวนลูปคอลเลกชัน, และการจัดการตารางซ้อน เป็นหัวใจของ **populate Excel template C#** โดยไม่ต้องเขียนลูปเอง + +--- + +## Step 5: Save the Finished Report + +สุดท้ายให้บันทึก workbook ที่เติมข้อมูลแล้วลงดิสก์ คุณยังสามารถสตรีมออกไปยัง HTTP response สำหรับแอปเว็บได้อีกด้วย + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**ทำไมขั้นตอนนี้สำคัญ:** การบันทึกเป็นไฟล์ทำให้คุณมีผลลัพธ์ที่สามารถเปิดใน Excel, แชร์กับผู้มีส่วนได้ส่วนเสีย, หรือส่งต่อไปยังกระบวนการต่อเนื่อง เช่น การแปลงเป็น PDF + +--- + +## Full Working Example (Copy‑Paste Ready) + +ด้านล่างเป็นโปรแกรมเต็มรวม `using` directives และเมธอด `Main` ใส่ลงในโปรเจกต์คอนโซล ปรับเส้นทางไฟล์ตามต้องการแล้วรัน + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +เมื่อคุณเปิด `MasterDetailResult.xlsx` จะเห็น: + +- **Sheet “Order_1”** – มีหัวข้อของ Order 1 และสองแถวสำหรับสินค้า A และ B +- **Sheet “Order_2”** – มีหัวข้อของ Order 2 และหนึ่งแถวสำหรับสินค้า C +- สูตร, การจัดรูปแบบ, และแผนภูมิจากเทมเพลตต้นฉบับทั้งหมดยังคงอยู่ + +![Excel report with separate sheets for each order – example of populated workbook](/images/excel-report-example.png "Generated Excel report with master‑detail data") + +*Image alt text: generated Excel report with separate sheets for each order, showing how to generate Excel report using C# and SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +ตั้งค่า `EnableRepeatingSheet = true` **เฉพาะ** บน worksheet ที่มีบล็อก master ส่วนชีตอื่นจะไม่ถูกแก้ไข ดังนั้นคุณสามารถเก็บหน้าสรุปไว้ในเทมเพลตต้นฉบับได้ + +### Can I use a DataTable instead of anonymous objects? + +ได้เลย SmartMarker รองรับอ็อบเจกต์ใด ๆ ที่ implement `IEnumerable` เพียงเปลี่ยนจาก anonymous type ไปเป็น `DataTable` แล้วให้ชื่อคอลัมน์ตรงกับแท็ก + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +คุณสามารถทำได้โดย implement อินเทอร์เฟซ `ISmartMarkerSheetNaming` (หรือปรับ `workbook.Worksheets` หลังการประมวลผล) นักพัฒนาส่วนใหญ่มักเปลี่ยนชื่อชีตตามค่าจากเซลล์: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker รองรับการกำหนด delimiter เองผ่าน `SmartMarkerOptions` ตัวอย่างเช่น ใช้ `<< >>` แทน `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache the template** ในหน่วยความจำหากต้องสร้างรายงานหลายครั้งต่อคำขอ; การโหลดจากดิสก์ทุกครั้งจะเพิ่ม latency +- **Combine with PDF conversion** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) เพื่อให้ได้ผลลัพธ์ที่พร้อมส่งอีเมล +- **Parameterize the file paths** ด้วยไฟล์ config หรือ environment variables เพื่อให้โซลูชันพกพาได้ระหว่าง dev, test, prod +- **Unit‑test the data layer** แยกออก; SmartMarker ทำงานแบบ deterministic จึงต้องตรวจสอบแค่ว่าโครงสร้างข้อมูลตรงตามสคีมาที่คาดไว้ + +--- + +## Conclusion + +เราได้ครอบคลุม **วิธีสร้างรายงาน Excel** ด้วย C# ตั้งแต่การโหลดเทมเพลตที่เปิดใช้งาน SmartMarker จนถึงการบันทึก workbook หลายชีตที่สะท้อนความสัมพันธ์ master‑detail ด้วยการ **populate Excel template C#** เพียงไม่กี่บรรทัด คุณจะหลีกเลี่ยงโค้ดที่เปราะบางแบบเซลล์‑ต่อ‑เซลล์และให้ดีไซเนอร์อิสระในการออกแบบรูปลักษณ์สุดท้าย + +ต่อไปคุณอาจสำรวจ: + +- การใช้ **populate Excel template C#** กับแผนภูมิที่อัปเดตอัตโนมัติในแต่ละชีต +- การผสาน **excel smartmarker c#** กับ ASP.NET Core เพื่อสตรีมรายงานโดยตรงไปยังเบราว์เซอร์ +- การทำ **c# excel automation** อัตโนมัติที่ดึงข้อมูลจาก API หรือฐานข้อมูล + +ลองทำ ปรับเทมเพลต แล้วคุณจะเห็นว่าการแปลงข้อมูลดิบให้เป็นรายงาน Excel ที่สวยงามทำได้เร็วแค่ไหน มีคำถามหรือกรณีการใช้งานที่น่าสนใจ? แสดงความคิดเห็นด้านล่าง — Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/thai/net/tables-and-lists/_index.md b/cells/thai/net/tables-and-lists/_index.md index dc6280b8f6..4f4d17b42f 100644 --- a/cells/thai/net/tables-and-lists/_index.md +++ b/cells/thai/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ ปลดล็อกพลังของ Aspose.Cells สำหรับ .NET เรียนรู้การอ่านและเขียนตารางด้วยแหล่งข้อมูลแบบสอบถามในคู่มือทีละขั้นตอนโดยละเอียดนี้ ### [ตั้งค่าความคิดเห็นของตารางหรือรายการใน Excel](./setting-comment-of-table-or-list/) เรียนรู้วิธีการตั้งค่าความคิดเห็นสำหรับตารางใน Excel โดยใช้ Aspose.Cells สำหรับ .NET ด้วยคู่มือทีละขั้นตอนง่ายๆ ของเรา +### [สร้างตาราง Excel ใน C# – คู่มือแบบทีละขั้นตอน](./create-excel-table-in-c-step-by-step-guide/) +เรียนรู้วิธีสร้างตาราง Excel ด้วย C# อย่างละเอียด ด้วยโค้ดตัวอย่างและคำอธิบายทีละขั้นตอน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/thai/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/thai/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..62d597eb34 --- /dev/null +++ b/cells/thai/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-22 +description: สร้างตาราง Excel ใน C# อย่างรวดเร็ว เรียนรู้วิธีเพิ่มตาราง กำหนดช่วงตาราง + ซ่อนส่วนหัวของตาราง และปิดการกรองตาราง พร้อมตัวอย่างโค้ดเต็ม +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: th +og_description: สร้างตาราง Excel ใน C# ด้วยตัวอย่างที่ชัดเจน เรียนรู้วิธีเพิ่มตาราง + กำหนดช่วงตาราง ซ่อนหัวตาราง และปิดการกรอง เพียงไม่กี่บรรทัด +og_title: สร้างตาราง Excel ใน C# – คู่มือการเขียนโปรแกรมแบบครบถ้วน +tags: +- Aspose.Cells +- C# +- Excel Automation +title: สร้างตาราง Excel ใน C# – คู่มือแบบขั้นตอนต่อขั้นตอน +url: /th/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้างตาราง Excel ใน C# – คู่มือทีละขั้นตอน + +เคยต้องการ **create Excel table** อย่างโปรแกรมโดยใช้ C# หรือไม่? การสร้างตาราง Excel สามารถทำได้ง่ายเมื่อคุณรู้ขั้นตอนที่ถูกต้อง ในบทแนะนำนี้เราจะเดินผ่านตัวอย่างที่ทำงานได้เต็มรูปแบบซึ่งแสดง **how to add table**, **define table range**, **hide table header**, และแม้กระทั่ง **disable table filter** – ทั้งหมดโดยไม่ต้องออกจาก IDE ของคุณ + +หากคุณเคยประสบปัญหา AutoFilter UI ปรากฏขึ้นเมื่อคุณไม่ต้องการ คุณอยู่ในสถานที่ที่ถูกต้อง ในตอนท้ายของคู่มือนี้คุณจะมีโค้ดสั้นที่พร้อมรันซึ่งสร้างเวิร์กบุ๊กที่สะอาดชื่อ *TableNoFilter.xlsx* และคุณจะเข้าใจว่าทำไมแต่ละบรรทัดจึงสำคัญ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธี **create Excel table** ตั้งแต่เริ่มต้นด้วย Aspose.Cells. +- ไวยากรณ์ที่แม่นยำสำหรับ **define table range** (A1:D5 ในกรณีของเรา). +- วิธีเปิดใช้งานแถวหัวเรื่องเพื่อให้ UI ตัวกรองในตัวปรากฏ. +- เทคนิคการ **hide table header** และ **disable table filter** เมื่อคุณไม่ต้องการใช้แล้ว. +- โปรแกรม C# ที่สมบูรณ์พร้อมคัดลอก‑วางที่คุณสามารถรันได้วันนี้. + +### ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ทำงานกับ .NET Framework 4.7+ ด้วย). +- Aspose.Cells for .NET ที่ติดตั้งผ่าน NuGet (`Install-Package Aspose.Cells`). +- ความคุ้นเคยพื้นฐานกับ C# และ Visual Studio (หรือ IDE ใด ๆ ที่คุณชอบ). + +--- + +## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์และนำเข้า Namespaces + +ก่อนที่คุณจะ **create Excel table** คุณต้องมีโปรเจกต์คอนโซลที่อ้างอิง Aspose.Cells เปิดเทอร์มินัลและรัน: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +จากนั้นเปิดไฟล์ *Program.cs* และเพิ่ม `using` statements ที่จำเป็น: + +```csharp +using System; +using Aspose.Cells; +``` + +การนำเข้าดังกล่าวทำให้คุณเข้าถึงคลาส `Workbook`, `Worksheet`, `CellArea`, และ `ListObject` ที่เป็นหัวใจของบทแนะนำส่วนที่เหลือ. + +## ขั้นตอนที่ 2: สร้าง Workbook ใหม่และดึง Worksheet แรก + +การสร้าง workbook ใหม่เป็นขั้นตอนแรกที่มีเหตุผล คิดว่า workbook คือคอนเทนเนอร์ไฟล์ Excel ส่วน worksheet คือแผ่นงานที่เราจะวางตารางของเรา. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **ทำไมสิ่งนี้สำคัญ:** `Workbook` ใหม่เริ่มต้นด้วยแผ่นงานว่างหนึ่งแผ่น การดึง `Worksheets[0]` ทำให้เราทำงานบนแผ่นงานเริ่มต้นโดยไม่ต้องสร้างแผ่นใหม่ด้วยตนเอง. + +## ขั้นตอนที่ 3: กำหนดช่วงตาราง (A1:D5) + +ในศัพท์ของ Excel, *table* อยู่ภายในบล็อกสี่เหลี่ยมของเซลล์ `CellArea` struct ช่วยให้เราระบุบล็อกนั้นได้ ที่นี่เราจะอธิบาย **define table range** สำหรับเซลล์ A1 ถึง D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **เคล็ดลับ:** หากคุณต้องการช่วงแบบไดนามิก คุณสามารถคำนวณ `endRow` และ `endColumn` ตามความยาวของข้อมูล การจัดทำดัชนีเริ่มจากศูนย์เป็นแหล่งที่มาของบั๊ก off‑by‑one บ่อยครั้ง ดังนั้นตรวจสอบตัวเลขของคุณสองครั้ง. + +## ขั้นตอนที่ 4: เพิ่มตารางและเปิดใช้งานแถวหัวเรื่อง + +ตอนนี้มาถึงหัวใจของบทแนะนำ: **how to add table** ไปยัง worksheet คอลเลกชัน `ListObjects` จัดการตาราง และการตั้งค่า `ShowHeaders = true` จะใส่ AutoFilter UI โดยอัตโนมัติ. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **คำอธิบาย:** +> - `Add(tableRange, true)` สร้าง `ListObject` ใหม่ (คือ ตาราง Excel) ภายในช่วงที่ระบุ +> - ธง `true` บอก Aspose.Cells ว่าแถวแรกของช่วงควรถือเป็นหัวเรื่อง +> - การตั้งค่า `ShowHeaders` เป็น `true` ทำให้หัวเรื่องแสดงและเปิดใช้งาน UI ตัวกรองในตัว + +ในขั้นตอนนี้ หากคุณเปิด workbook ที่สร้างขึ้น คุณจะเห็นตารางที่จัดรูปแบบสวยงามพร้อมลูกศรตัวกรองบนหัวคอลัมน์แต่ละอัน. + +## ขั้นตอนที่ 5: ซ่อนแถวหัวเรื่องและปิดการทำงานของ AutoFilter + +บางครั้งคุณต้องการข้อมูลโดยไม่มี UI ที่รกอาจเป็นการส่งออกรายงานที่สะอาดโดยไม่ต้องการตัวกรอง นี่คือเทคนิค **hide table header** และ **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **ทำไมคุณถึงทำเช่นนี้:** +> - `ShowHeaders = false` ลบแถวหัวเรื่องที่มองเห็นได้ ทำให้ตารางกลายเป็นบล็อกข้อมูลธรรมดา +> - การตั้งค่า `AutoFilter = null` ลบอ็อบเจ็กต์ตัวกรองที่ซ่อนอยู่ ทำให้ไม่มีตรรกะตัวกรองเหลืออยู่ นี่คือสิ่งที่เราหมายถึง **disable table filter**. + +## ขั้นตอนที่ 6: บันทึก Workbook ลงดิสก์ + +สุดท้าย เราจะเขียนไฟล์ไปยังตำแหน่งที่คุณเลือก แทนที่ `"YOUR_DIRECTORY"` ด้วยพาธจริงบนเครื่องของคุณ. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +เมื่อคุณรันโปรแกรม คุณควรเห็น: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +การเปิดไฟล์จะแสดงแผ่นงานที่มีบล็อกข้อมูล (ไม่มีหัวเรื่อง, ไม่มีลูกศรตัวกรอง) นั่นคือวงจรครบถ้วน—from **create Excel table** ถึง **disable table filter**. + +--- + +## ตัวอย่างทำงานเต็ม (พร้อมคัดลอก‑วาง) + +ด้านล่างเป็นโปรแกรมทั้งหมดพร้อมคอมไพล์ เพียงแทนที่ไดเรกทอรี placeholder ด้วยพาธที่ใช้งานได้. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** ไฟล์ชื่อ *TableNoFilter.xlsx* ที่มีช่วงข้อมูลธรรมดา A1:D5 โดยไม่มีแถวหัวเรื่องที่มองเห็นและไม่มีเมนูดรอปดาวน์ของตัวกรอง. + +--- + +## คำถามที่พบบ่อยและกรณีขอบ + +### ถ้าฉันต้องการหลายตารางใน worksheet เดียว? + +เพียงทำซ้ำ **Step 3** ด้วย `CellArea` ใหม่และ `ListObject` ใหม่ แต่ละตารางจะรักษาการตั้งค่าหัวเรื่องและตัวกรองของตนเอง ดังนั้นคุณสามารถซ่อนตารางหนึ่งและให้ตารางอื่นแสดงได้. + +### ฉันสามารถจัดรูปแบบตาราง (แถวสลับสี, สี) ก่อนซ่อนหัวเรื่องได้หรือไม่? + +แน่นอน `ListObject` มี property `TableStyleType` ตัวอย่างเช่น: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +คุณสามารถใช้สไตล์ **before** ที่ซ่อนหัวเรื่อง; การจัดรูปแบบภาพจะคงอยู่. + +### ถ้าฉันต้องการเก็บหัวเรื่องไว้แต่แค่ซ่อนลูกศรตัวกรอง? + +ตั้งค่า `ShowHeaders = true` (เก็บแถว) แล้วล้างตัวกรอง: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +นั่นตอบสนองความต้องการ **disable table filter** โดยไม่สูญเสียป้ายคอลัมน์. + +### ทำงานได้เฉพาะไฟล์ .xlsx เท่านั้นหรือ? + +Aspose.Cells จะตรวจจับรูปแบบโดยอัตโนมัติตามนามสกุลไฟล์ที่คุณส่งให้ `Save`. คุณสามารถส่งออกเป็น `.xls`, `.csv`, หรือแม้แต่ `.pdf` ด้วยนามสกุลที่ต่างกัน. + +--- + +## สรุป + +เราได้ครอบคลุมทุกอย่างที่คุณต้องการเพื่อ **create Excel table** ใน C# ด้วย Aspose.Cells ตั้งแต่ **define table range** ถึง **hide table header** และ **disable table filter** โค้ดสั้น ชัดเจน และพร้อมใช้ในผลิตภัณฑ์ + +ต่อไปคุณอาจสำรวจ **how to add table** ด้วยข้อมูลไดนามิก, ใช้สไตล์กำหนดเอง, หรือส่งออก workbook เดียวกันเป็น PDF แต่ละหัวข้อสร้างบนพื้นฐานที่คุณเพิ่งเรียนรู้ ดังนั้นอย่ากลัวทดลองและปรับโค้ดให้เข้ากับโปรเจกต์ของคุณ + +มีไอเดียหรือวิธีการใหม่ที่อยากแชร์? แสดงความคิดเห็นด้านล่าง แล้วขอให้เขียนโค้ดอย่างสนุก! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/converting-excel-files-to-other-formats/_index.md b/cells/turkish/net/converting-excel-files-to-other-formats/_index.md index 984bc30d8d..a7b30ff64f 100644 --- a/cells/turkish/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/turkish/net/converting-excel-files-to-other-formats/_index.md @@ -56,6 +56,8 @@ Aspose.Cells for .NET kullanarak Excel dosyalarını arşivleme amaçlı PDF/A-1 Aspose.Cells kullanarak .NET'te JSON'u CSV'ye programatik olarak nasıl dönüştüreceğinizi öğrenin. Sorunsuz veri dönüşümünü sağlamak için adım adım kılavuzumuzu izleyin. ### [Excel Dosyasını .NET'te Programatik Olarak PPTX'e Dönüştürme](./converting-excel-file-to-pptx/) Bu adım adım kılavuzla Aspose.Cells for .NET kullanarak Excel dosyasını PowerPoint sunumuna (PPTX) nasıl programatik olarak dönüştürebileceğinizi öğrenin. +### [Excel'i PowerPoint'e Dışa Aktarma – Tam C# Kılavuzu](./export-excel-to-powerpoint-complete-c-guide/) +Aspose.Cells for .NET kullanarak Excel dosyalarını PowerPoint sunumlarına nasıl dışa aktaracağınızı adım adım öğrenin. ### [.NET'te Çıktı HTML'de HTML CrossType'ı Programatik Olarak Belirleme](./specifying-html-crosstype-in-output-html/) Aspose.Cells for .NET'te HTML CrossType'ı nasıl belirleyeceğinizi öğrenin. Excel dosyalarını hassas bir şekilde HTML'ye dönüştürmek için adım adım öğreticimizi izleyin. ### [.NET'te Sayısal Tabloları Programatik Olarak Okuma](./reading-numbers-spreadsheet/) @@ -63,9 +65,11 @@ Bu detaylı eğitimde Aspose.Cells for .NET kullanarak Numbers elektronik tablol ### [.NET'te Çalışma Kitabını Kesin Açık XML Elektronik Tablo Biçimine Kaydetme](./saving-workbook-to-strict-open-xml-spreadsheet-format/) Bu ayrıntılı eğitimde Aspose.Cells for .NET kullanarak bir çalışma kitabını Strict Open XML Elektronik Tablosu biçiminde nasıl kaydedeceğinizi öğrenin. ### [.NET'te Belge Dönüştürme İlerlemesini Programatik Olarak İzleme](./tracking-document-conversion-progress/) -açıklama: Bu ayrıntılı eğitimde, Aspose.Cells for .NET kullanarak belge dönüştürme ilerlemesini programatik olarak nasıl takip edeceğinizi öğrenin. +açıklama: Bu ayrıntlı eğitimde, Aspose.Cells for .NET kullanarak belge dönüştürme ilerlemesini programatik olarak nasıl takip edeceğinizi öğrenin. ### [.NET'te TIFF için Belge Dönüştürme İlerlemesinin Programatik Olarak İzlenmesi](./tracking-document-conversion-progress-for-tiff/) Aspose.Cells for .NET'i kullanarak adım adım kılavuzumuzla TIFF dönüştürme ilerlemesini programatik olarak izlemeyi öğrenin. Belge yönetimi becerilerinizi geliştirin. +### [Excel'de Yazdırma Alanını Ayarlama ve PowerPoint'e Dışa Aktarma – Adım Adım Kılavuz](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) +Aspose.Cells for .NET kullanarak Excel'de yazdırma alanını belirleyip, dosyayı PowerPoint sunumuna nasıl dönüştüreceğinizi öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/turkish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..f4d791af8c --- /dev/null +++ b/cells/turkish/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Excel'i PowerPoint'e nasıl aktaracağınızı, Excel'de baskı alanını nasıl + ayarlayacağınızı ve düzenlenebilir grafikler ve OLE nesneleri içeren bir PPTX dosyası + olarak Excel'i nasıl kaydedeceğinizi sadece birkaç adımda öğrenin. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: tr +og_description: Excel'i hızlıca PowerPoint'e aktarın. Bu öğreticide, Excel'de baskı + alanının nasıl ayarlanacağını ve düzenlenebilir grafikler ile OLE nesneleri içeren + PPTX olarak nasıl kaydedileceğini gösteriyoruz. +og_title: Excel'i PowerPoint'e Aktarma – Tam C# Rehberi +tags: +- Aspose.Cells +- C# +- Office Automation +title: Excel'i PowerPoint'e Aktar – Tam C# Rehberi +url: /tr/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel'i PowerPoint'e Aktar – Tam C# Kılavuzu + +Excel'i **PowerPoint'e aktarmak** mı istiyorsunuz? Doğru yerdesiniz. Haftalık satış sunumları hazırlıyor ya da raporlama hattını otomatikleştiriyor olun, bir Excel çalışma sayfasını PowerPoint slayt destesine dönüştürmek, saatler süren kopyala‑yapıştır işini ortadan kaldırabilir. + +Bu öğreticide, sadece **excel to powerpoint export** yapmakla kalmayıp, aynı zamanda **set print area Excel** ve **save excel as pptx** nasıl yapılır gösteren, grafik ve OLE nesnelerinin tamamen düzenlenebilir kalmasını sağlayan bir örnek üzerinden adım adım ilerleyeceğiz. Sonunda, manuel müdahale gerektirmeyen, profesyonel görünümlü bir `.pptx` dosyası üreten çalışır bir C# programına sahip olacaksınız. + +## Gereksinimler + +- **.NET 6+** (herhangi bir güncel .NET çalışma zamanı yeterlidir; kod C# 10 sözdizimini kullanır) +- **Aspose.Cells for .NET** – aktarımı sağlayan kütüphane. NuGet üzerinden temin edebilirsiniz (`Install-Package Aspose.Cells`). +- En az bir grafik ve/veya OLE nesnesi içeren bir Excel çalışma kitabı (örnek dosya `ChartAndOle.xlsx` kodda kullanılmıştır). +- Sevdiğiniz bir IDE (Visual Studio, Rider ya da VS Code – tercihiniz ne olursa olsun). + +Hepsi bu. COM interop, Office kurulumu gibi ek bir şey gerekmez. + +> **Neden bir kütüphane kullanmalı?** +> Yerleşik Office Interop kırılgandır, sunucuda Office yüklü olmasını gerektirir ve çoğu zaman vektör‑tabanlı, düzenlenebilir şekiller yerine raster görüntüler üretir. Aspose.Cells ağır işi üstlenir ve her şeyi PowerPoint'te düzenlenebilir tutar. + +--- + +## Adım 1: Excel Çalışma Kitabını Yükle + +İlk olarak kaynak dosyayı belleğe alıyoruz. `Workbook` sınıfı, tüm Excel dosyasını soyutlayarak çalışma sayfalarına, grafiklere ve OLE nesnelerine erişim sağlar. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Neden önemli:** Çalışma kitabını yüklemek temel adımdır. Yol hatalıysa ya da dosya bozuksa, sonraki adımlar hiç çalışmaz. `try…catch` bloğu, çökme yerine dostça bir hata mesajı verir. + +--- + +## Adım 2: Excel'de Yazdırma Alanını Belirle + +Aktarmadan önce çıktıyı belirli bir aralığa sınırlamak istersiniz. İşte **set print area excel** burada devreye girer. Yazdırma alanı tanımlayarak Aspose.Cells'e hangi hücrelerin (ve ilişkili nesnelerin) slaytta görüneceğini söylersiniz. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **İpucu:** Birden fazla çalışma sayfanız varsa, dışa aktarmak istediğiniz her biri için `PrintArea` atamasını tekrarlayın. Yazdırma alanı ayarlanmamışsa tüm sayfa dışa aktarılır ve PowerPoint dosyası şişebilir. + +--- + +## Adım 3: Dışa Aktarım Seçeneklerini Yapılandır – Grafik ve OLE Nesnelerini Düzenlenebilir Tut + +Aspose.Cells zengin bir `ImageOrPrintOptions` nesnesi sunar. `ExportChartObjects` ve `ExportOleObjects` seçeneklerini açarak grafiklerin vektör yapısını ve OLE nesnelerinin canlı düzenlenebilirliğini koruruz. + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Arka planda ne oluyor?** +`ExportChartObjects` **true** olduğunda Aspose, grafiği yerel bir PowerPoint grafik şekline dönüştürür; seriler, eksenler ve biçimlendirme korunur. `ExportOleObjects` etkinleştirildiğinde gömülü nesneler OLE çerçeveleri olarak eklenir; PowerPoint'te çift‑tıklama orijinal uygulamayı (Word, Excel vb.) açar ve düzenleme yapılabilir. + +--- + +## Adım 4: Çalışma Sayfasını Düzenlenebilir PowerPoint Dosyası Olarak Kaydet + +Şimdi her şeyi birleştiriyoruz. `Save` metodu, yapılandırdığımız seçenekleri kullanarak `.pptx` dosyasını yazar. Sonuç, her çalışma sayfasının bir slayt (veya yazdırma alanı birden çok sayfaya yayılmışsa bir dizi slayt) olduğu bir sunum olur. + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Beklenen Sonuç + +- **Dosya konumu:** `C:\MyProjects\EditableChartOle.pptx` +- **İçerik:** + - `A1:H30` aralığını Excel'de göründüğü gibi gösteren bir slayt. + - Tüm grafikler PowerPoint grafik nesneleri – bir çubuğa tıklayıp veriyi düzenleyebilirsiniz. + - OLE nesneleri (ör. gömülü bir Word belgesi) slayttan doğrudan açılıp düzenlenebilir. + +PowerPoint'te PPTX dosyasını açtığınızda, raster görüntüler yerine tamamen düzenlenebilir bileşenlere sahip temiz bir slayt görmelisiniz. + +--- + +## Kenar Durumları ve Varyasyonlar + +### Birden Çok Çalışma Sayfası → Birden Çok Slayt +Her çalışma sayfasının kendi slaytı olmasını istiyorsanız, `workbook.Worksheets` üzerinde döngü kurup, belirli bir sayfa indeksine yönelik `SheetToImageOptions` ile `Save` çağrısı yapın. Aspose, her yineleme için otomatik olarak yeni bir slayt oluşturur. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Büyük Aralıklar ve Performans +Kapsamlı bir yazdırma alanı (ör. `A1:Z1000`) bellek tüketimini artırabilir. Bunu azaltmak için: +- Aralığı daha küçük parçalara bölüp ayrı slaytlar olarak dışa aktarın. +- `WorkbookSettings` içinde `MemorySetting` değerini artırarak `OutOfMemoryException` durumunu önleyin. + +### Uyumluluk Sorunları +Oluşturulan PPTX, PowerPoint 2016 ve sonrası sürümlerle uyumludur. Daha eski sürümler dosyayı açabilir ancak bazı gelişmiş grafik özelliklerini kaybedebilir. Sunumu geniş bir kitleye dağıtacaksanız hedef Office sürümünde mutlaka test edin. + +--- + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **İpucu:** Sabit yol değerlerini yapılandırma ayarları ya da komut satırı argümanlarıyla değiştirerek daha esnek bir araç elde edebilirsiniz. + +--- + +## Sık Sorulan Sorular + +**S: Sadece bir grafiği, çevresindeki hücreler olmadan dışa aktarabilir miyim?** +C: Evet. Tek başına `ExportChartObjects` kullanın ve yazdırma alanını grafiğin sınır aralığına ayarlayın. Grafik slaytta ortalanmış olarak görünecektir. + +**S: Çalışma kitabım makrolar içeriyorsa ne olur?** +C: Aspose.Cells dışa aktarım sırasında VBA makrolarını yoksayar. PowerPoint'te makro işlevselliği gerekiyorsa, PowerPoint VBA ya da eklentilerle yeniden oluşturmanız gerekir. + +**S: Bu kod Linux/macOS'ta çalışır mı?** +C: Kesinlikle. Aspose.Cells saf bir .NET kütüphanesidir; .NET çalışma zamanı yüklü olduğu sürece kod platformlar arası çalışır. + +--- + +## Sonuç + +**Excel'i PowerPoint'e aktarmayı**, **set print area excel** ve **save excel as pptx** adımlarını tam olarak nasıl yapacağınızı öğrendiniz; grafikler ve OLE nesneleri tamamen düzenlenebilir. Temel adımlar: çalışma kitabını yüklemek, yazdırma alanını tanımlamak, `ImageOrPrintOptions` yapılandırmak ve sonunda PPTX'i kaydetmek. + +Bundan sonra şunları keşfedebilirsiniz: +- Birden çok çalışma sayfasını tek bir deste içinde dışa aktarmak. +- Programatik olarak özel slayt başlıkları veya notlar eklemek. +- PPTX'i dağıtım için PDF'ye dönüştürmek (`SaveFormat.Pdf`). + +Kodu çalıştırın, yazdırma alanını ayarlayın ve Excel verilerinizin PowerPoint'te sihirli bir şekilde belirdiğini izleyin – manuel kopyala‑yapıştıra gerek kalmadan. Sorun yaşarsanız Aspose.Cells belgelerine bakın ya da aşağıya yorum bırakın. İyi kodlamalar! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/turkish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..5d5ff77ec3 --- /dev/null +++ b/cells/turkish/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-22 +description: Excel'de yazdırma alanını ayarlayın ve düzenlenebilir şekillerle Excel'i + PowerPoint'e dönüştürün. Başlık satırını nasıl tekrarlayacağınızı, Excel'den PowerPoint + oluşturmayı ve Excel'i pptx olarak dışa aktarmayı öğrenin. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: tr +og_description: Excel'de yazdırma alanını ayarlayın ve düzenlenebilir şekiller içeren + bir PowerPoint slaytına dönüştürün. Başlık satırını tekrarlamak ve Excel'i pptx + olarak dışa aktarmak için bu kapsamlı rehberi izleyin. +og_title: Excel'de Yazdırma Alanını Ayarlama – PowerPoint'e Aktarma Öğreticisi +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Excel'de Yazdırma Alanını Ayarlayın ve PowerPoint'e Aktarın – Adım Adım Rehber +url: /tr/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel'de Yazdırma Alanını Ayarlama ve PowerPoint'e Aktarma – Tam Programlama Öğreticisi + +Hiç Excel çalışma sayfasında **set print area** ihtiyacı duydunuz ve ardından bu bölümü bir PowerPoint slaytına dönüştürmek istediniz mi? Tek başınıza değilsiniz. Birçok raporlama sürecinde güzel bir şekilde yazdırılan aynı verilerin bir sunumda da görünmesi gerekir; genellikle ilk satır başlık olarak tekrarlanır. İyi haber? Birkaç C# satırıyla **convert excel to powerpoint** yapabilir, tüm metin kutularını düzenlenebilir tutabilir ve hatta **repeat title row** otomatik olarak gerçekleştirebilirsiniz. + +Bu rehberde, bilmeniz gereken her şeyi adım adım ele alacağız: yazdırma alanını yapılandırmaktan PowerPoint içinde doğrudan düzenleyebileceğiniz bir PPTX dosyası oluşturmaya kadar. Sonunda **create powerpoint from excel** yapabilecek, sonucu **export excel to pptx** olarak dışa aktarabilecek ve aynı kodu herhangi bir .NET projesinde yeniden kullanabileceksiniz. Sihir yok, sadece net adımlar ve tam, çalıştırılabilir bir örnek. + +## Gereksinimler + +- **.NET 6.0** veya daha yenisi (API, .NET Framework ile de çalışır) +- **Aspose.Cells for .NET** (`Workbook`, `ImageOrPrintOptions` vb. sağlayan kütüphane) +- Temel bir C# IDE (Visual Studio, Rider veya C# uzantılı VS Code) +- Dışa aktarmak istediğiniz verileri içeren bir Excel dosyası (`input.xlsx`) + +Hepsi bu—Aspose.Cells dışında ekstra NuGet paketi yok. Kütüphaneyi henüz eklemediyseniz, şu komutu çalıştırın: + +```bash +dotnet add package Aspose.Cells +``` + +Şimdi başlayabiliriz. + +## Adım 1: Çalışma Kitabını Yükleme – Dışa Aktarmanın Başlangıç Noktası + +İlk yapmanız gereken, slayta dönüştürmek istediğiniz sayfayı içeren çalışma kitabını yüklemektir. Çalışma kitabını kaynak belge olarak düşünün; onsuz başka bir şey önemsizdir. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Neden önemli:** Çalışma kitabını yüklemek, çalışma sayfası koleksiyonuna, sayfa‑ayarları seçeneklerine ve dışa aktarma motoruna erişim sağlar. Bu adımı atlayarsanız **print area** ayarlayamaz veya satırları tekrarlayamazsınız. + +> **Pro ipucu:** Test ederken mutlak bir yol kullanın, ardından üretim için göreli bir yol ya da yapılandırma‑tabanlı bir yol ile değiştirin. + +## Adım 2: Dışa Aktarma Seçeneklerini Yapılandırma – Metin Kutularını ve Şekilleri Düzenlenebilir Tutma + +PowerPoint'e dışa aktarırken muhtemelen ortaya çıkan slaytın düzenlenebilir olmasını istersiniz. Aspose.Cells, bunu `ImageOrPrintOptions` ile kontrol etmenizi sağlar. `ExportTextBoxes` ve `ExportShapeObjects` değerlerini `true` olarak ayarlamak, kütüphaneye bu nesneleri bir görüntüye dönüştürmek yerine yerel PowerPoint öğeleri olarak korumasını söyler. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Neden önemli:** Eğer bir zaman **convert excel to powerpoint** yapıp ardından slaytı manuel olarak ayarlamanız gerekirse, bu ayar metin kutularını baştan oluşturmanızı engeller. Ayrıca oklar veya grafikler gibi şekillerin yeniden boyutlandırabileceğiniz vektör nesneleri olarak kalmasını sağlar. + +## Adım 3: Yazdırma Alanını Ayarlama ve Başlık Satırını Tekrarlama + +Şimdi öğreticinin özüne geliyoruz: **set print area** ve ilk satırın her sayfada (veya bizim durumumuzda dışa aktarılan slaytta) tekrarlanmasını sağlamak. Yazdırma alanı, Excel'e hangi hücrelerin yazdırılacağını—ya da bizim senaryomuzda dışa aktarılacağını—söyler. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Neden önemli:** Dışa aktarmayı `A1:G20` ile sınırlayarak büyük boş aralıkların çekilmesini önlersiniz; bu dönüşümü hızlandırır ve slaytı düzenli tutar. `PrintTitleRows` satırı, ilk satırı bir başlık gibi davranır—sunumda **repeat title row** istediğinizde tam olarak ihtiyacınız olan şey. + +> **Köşe durum:** Verileriniz 2. satırda başlıyorsa, aralığı buna göre ayarlayın (ör. `PrintTitleRows = "$2:$2"`). + +## Adım 4: Çalışma Sayfasını PowerPoint Dosyası Olarak Kaydetme + +Son olarak, slaytı diske yazıyoruz. `Save` yöntemi hedef dosya adını ve daha önce yapılandırdığımız seçenekleri alır. Sonuç, düzenlenebilir metin kutuları ve şekiller içeren, PowerPoint'te açılmaya hazır bir PPTX dosyasıdır. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Gördükleriniz:** PowerPoint'te `SheetWithEditableShapes.pptx` dosyasını açın. İlk satır bir başlık olarak görünür, `A1:G20` aralığındaki tüm hücreler işlenir ve Excel'de eklediğiniz şekiller hâlâ hareket ettirilebilir ve düzenlenebilir. Rasterleştirilmiş görüntüler yok—sadece yerel PowerPoint nesneleri. + +## Tam Çalışan Örnek – Tüm Adımlar Birleştirildi + +Aşağıda, tamamen kopyala‑yapıştır hazır program bulunmaktadır. Bir konsol uygulaması olarak çalıştırabilir veya daha büyük bir çözüme gömebilirsiniz. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Beklenen çıktı:** Programı çalıştırdıktan sonra, konsol başarı mesajını yazdırır ve PPTX dosyası belirtilen konumda ortaya çıkar. Dosyayı açtığınızda seçilen aralıkla tek bir slayt, düzenlenebilir metin kutuları ve orijinal şekiller gösterilir. + +## Yaygın Sorular & Dikkat Edilmesi Gerekenler + +| Soru | Cevap | +|------|-------| +| **Bu birden fazla çalışma sayfası ile çalışır mı?** | Evet. `workbook.Worksheets` üzerinden döngü yapın ve her sayfa için aynı adımları tekrarlayın, her seferinde çıktı dosya adını değiştirin. | +| **Birden fazla slayt dışa aktarmam gerekirse ne yapmalıyım?** | `workbook.Save` metodunu farklı `ImageOrPrintOptions` nesneleriyle birden çok kez çağırın; gerektiğinde her biri farklı bir `PageSetup` ile yapılandırılmış olur. | +| **Slayt boyutunu değiştirebilir miyim?** | DPI ayarlamak için `exportOptions.ImageFormat` kullanın veya kaydetmeden önce `sheet.PageSetup.PaperSize` değerini değiştirin. | +| **Aspose.Cells ücretsiz mi?** | Su işaretli ücretsiz bir değerlendirme sunar. Üretim için lisans gereklidir. | +| **Excel formülleri ne olacak?** | Dışa aktarılan değerler, dışa aktarma anındaki **hesaplanmış sonuçlardır**. PowerPoint'te canlı formüllere ihtiyacınız varsa, farklı bir yaklaşım gerekecektir. | + +## Sorunsuz Bir İş Akışı İçin İpuçları + +- **Pro ipucu:** Dışa aktarmadan önce tüm formüllerin güncel olmasını sağlamak için `Workbook.Settings.CalcMode = CalculationModeType.Automatic` ayarlayın. +- **Dikkat:** Çok büyük aralıklar bellek baskısına neden olabilir. Yazdırma alanını en küçük gerekli aralığa indirgeyin. +- **Performans ipucu:** Birçok sayfa dışa aktarıyorsanız tek bir `ImageOrPrintOptions` örneğini yeniden kullanın; her seferinde yeni bir tane oluşturmak ek yük getirir. +- **Sürüm notu:** Yukarıdaki kod, Aspose.Cells 23.10 (Kasım 2023'te yayınlandı) sürümünü hedeflemektedir. Daha sonraki sürümler aynı API'yi korur, ancak kırılma değişiklikleri için her zaman sürüm notlarını kontrol edin. + +## Sonuç + +Excel çalışma sayfasında **set print area** nasıl yapılır, ilk satırın başlık olarak nasıl tekrarlanır ve ardından **export excel to pptx** nasıl yapılır, düzenlenebilir metin kutuları ve şekiller korunarak ele alındı. Kısacası, sadece birkaç C# satırıyla **convert excel to powerpoint**, **repeat title row** ve **create powerpoint from excel** yapmanın güvenilir bir yolunu artık biliyorsunuz. + +Bir sonraki adıma hazır mısınız? Onlarca raporu toplu olarak dönüştürmeyi otomatikleştirmeyi deneyin ya da dışa aktarmadan sonra PowerPoint SDK'sını kullanarak özel slayt düzenleri ekleyin. Sınır yok—deneyin, hatalar yapın ve programatik belge oluşturmanın gücünün tadını çıkarın. + +Bu öğreticiyi faydalı bulduysanız, paylaşın, kendi düzenlemelerinizle bir yorum bırakın veya **export excel to pptx** ve ilgili otomasyon konularındaki diğer rehberlerimize göz atın. İyi kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/csv-file-handling/_index.md b/cells/turkish/net/csv-file-handling/_index.md index 6e5a6685a9..fbe3679616 100644 --- a/cells/turkish/net/csv-file-handling/_index.md +++ b/cells/turkish/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Daha fazla bilgi edinmek için ayrıntılı eğitimlerimize göz atmaktan çekin Kapsamlı, adım adım kılavuzumuzla .NET için Aspose.Cells'i kullanarak CSV dosyalarını nasıl açacağınızı öğrenin. Veri manipülasyonunda ustalaşın. ### [CSV Dosyalarını Tercih Edilen Ayrıştırıcı ile Açma](./csv-file-opening-csv-files-with-preferred-parser/) Aspose.Cells for .NET'te özel ayrıştırıcılarla CSV dosyalarını nasıl açıp ayrıştıracağınızı öğrenin. Metin ve tarihleri zahmetsizce işleyin. Geliştiriciler için mükemmel. +### [C#'ta Çalışma Kitabını CSV Olarak Kaydet – Excel'i CSV'ye Dışa Aktarma](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Aspose.Cells for .NET kullanarak bir çalışma kitabını CSV formatına nasıl kaydedeceğinizi öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/turkish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..7bee75c415 --- /dev/null +++ b/cells/turkish/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: C#'ta çalışma kitabını hızlıca CSV olarak kaydedin. Excel'i CSV'ye nasıl + dışa aktaracağınızı, hassasiyeti nasıl ayarlayacağınızı ve Aspose.Cells ile xlsx'i + sadece birkaç satırda CSV'ye nasıl dönüştüreceğinizi öğrenin. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: tr +og_description: C#'ta çalışma kitabını hızlıca CSV olarak kaydedin. Bu rehber, Excel'i + CSV'ye nasıl dışa aktaracağınızı, hassasiyeti nasıl ayarlayacağınızı ve Aspose.Cells + kullanarak xlsx dosyasını CSV'ye nasıl dönüştüreceğinizi gösterir. +og_title: Çalışma kitabını C#'ta CSV olarak kaydet – Excel'i CSV'ye dışa aktar +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: C#'de çalışma kitabını CSV olarak kaydet – Excel'i CSV'ye aktar +url: /tr/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Çalışma kitabını CSV olarak kaydet – Excel’i CSV’ye Dışa Aktarma + +Hiç **çalışma kitabını CSV olarak kaydetmek** gerektiğinde sayıları düzgün tutmanın nasıl yapılacağını merak ettiniz mi? Tek başınıza değilsiniz. Birçok veri‑akışı senaryosunda **Excel’i CSV’ye dışa aktarmamız** gerekir ve belirli bir anlamlı basamak sayısını korumamız gerekir; Aspose.Cells kütüphanesi bu işi çocuk oyuncağı haline getiriyor. + +Bu öğreticide **çalışma kitabını CSV olarak kaydeden**, *kesinliği nasıl ayarlayacağınızı* gösteren ve gerçek dünya projeleri için *xlsx’yi CSV’ye nasıl dönüştüreceğinizi* açıklayan eksiksiz, çalıştırmaya hazır bir örnek göreceksiniz. Belirsiz referanslar yok—kopyalayıp yapıştırıp bugün çalıştırabileceğiniz kod. + +## Öğrenecekleriniz + +- **çalışma kitabını CSV olarak kaydet**mek için özel bir kesinlik ayarıyla tam adımlar. +- `CsvSaveOptions` kullanarak **Excel’i CSV’ye dışa aktarma** ve `SignificantDigits` özelliğinin neden önemli olduğu. +- Farklı kesinlik ihtiyaçları için varyasyonlar ve büyük sayılarla çalışırken sıkça karşılaşılan tuzaklar. +- Veri bütünlüğünü kaybetmeden bir `.xlsx` dosyasını `.csv`ye dönüştürmeye hızlı bir bakış. + +### Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.6+ üzerinde de çalışır). +- **Aspose.Cells for .NET** NuGet paketi (`Install-Package Aspose.Cells`). +- C# ve dosya I/O konusunda temel bilgi. + +Eğer bunlara sahipseniz, başlayalım. + +![çalışma kitabını csv olarak kaydet örneği](image.png "çalışma kitabını csv olarak kaydet örneği") + +## Çalışma kitabını CSV olarak kaydet – Adım‑Adım Kılavuz + +Aşağıda tam program yer alıyor. Her satır yorumlanmış, böylece *ne* yaptığını değil, *neden* orada olduğunu görebilirsiniz. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Neden `CsvSaveOptions.SignificantDigits` Kullanılır? + +Bir CSV dışa aktarımı için **kesinliği nasıl ayarlayacağınızı** düşündüğünüzde, aslında kayan nokta sayısının kaç basamağının dönüşüm sırasında korunacağını belirlemiş olursunuz. Excel sayıları 15 basamağa kadar saklar, ancak çoğu aşağı akış sistemi (veritabanları, analiz boru hatları) sadece birkaçına ihtiyaç duyar. `SignificantDigits = 4` ayarlandığında kütüphane `123.456789` sayısını `123.5` olarak yuvarlar, dosyayı kompakt ve insan‑okunur tutar. + +> **İpucu:** *Tam* değerler (ör. finansal veriler) gerekiyorsa, `SignificantDigits` değerini daha yüksek bir sayıya ayarlayın ya da tamamen kaldırın. Varsayılan 15’tir ve Excel’in dahili kesinliğini yansıtır. + +## Excel’i CSV’ye Dışa Aktarma – Yaygın Varyasyonlar + +### Ayırıcıyı Değiştirme + +Bazı sistemler virgül (`,`) yerine noktalı virgül (`;`) bekler. Bunu şu şekilde ayarlayabilirsiniz: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Belirli Bir Çalışma Sayfasını Dışa Aktarma + +Sadece ikinci sayfayı dışa aktarmak istiyorsanız, isteğe bağlı bloğu şu şekilde değiştirin: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Ardından `workbook.Save`i daha önceki gibi çağırın. Bu teknik, **xlsx’yi csv’ye dönüştürürken** yalnızca belirli bir sekmeye ihtiyaç duyduğunuzda kullanışlıdır. + +### Büyük Veri Setleriyle Çalışma + +Milyonlarca satırla uğraşırken, tüm çalışma kitabını belleğe yüklemek yerine CSV’yi akış olarak yazmayı düşünün. Aspose.Cells, stil bilgilerini atlayan ve bellek tüketimini azaltan bir `CsvSaveOptions` özelliği olan `ExportDataOnly` sunar: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## CSV’yi Dışa Aktarma – Sonucu Doğrulama + +Programı çalıştırdıktan sonra `Numbers_4sd.csv` dosyasını bir düz‑metin editöründe açın. Şuna benzer bir şey görmelisiniz: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Sayısalların dört anlamlı basamağa sınırlı olduğunu, tam olarak istediğimiz gibi olduğunu fark edeceksiniz. Dosyayı Excel’de açarsanız, değerler aynı görünecek; çünkü Excel dışa aktarım sırasında uygulanan yuvarlamayı korur. + +## Kenar Durumları & Sorun Giderme + +| Durum | Kontrol Edilecek | Çözüm | +|-----------|---------------|-----| +| **Dosya bulunamadı** | `sourcePath` gerçek bir `.xlsx` dosyasına işaret ediyor mu? | `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")` kullanın. | +| **Yanlış yuvarlama** | `Save` çağrılmadan önce `SignificantDigits` ayarlandığından emin olun. | `CsvSaveOptions` atamasını daha erken yapın veya değeri iki kez kontrol edin. | +| **Özel karakterler � olarak görünüyor** | CSV kodlaması varsayılan olarak BOM’suz UTF‑8’dir. | `csvOptions.Encoding = System.Text.Encoding.UTF8` ya da `Encoding.Unicode` ayarlayın. | +| **Fazladan boş sütunlar** | Bazı çalışma sayfaları kullanılan aralığın ötesinde biçimlendirme içerir. | Dışa aktarmadan önce `worksheet.Cells.MaxDisplayRange` ile kullanılmayan sütunları kırpın. | + +## Kesinliği Dinamik Olarak Ayarlama + +Bazen gereken kesinlik derleme zamanında bilinmez. Bunu bir yapılandırma dosyasından ya da komut satırı argümanından okuyabilirsiniz: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +Şimdi şu şekilde çalıştırabilirsiniz: + +``` +dotnet run -- 6 +``` + +ve altı anlamlı basamaklı bir CSV elde edersiniz. Bu küçük ayar, **csv nasıl dışa aktarılır** sorusuna çeşitli ortamlar için esnek bir çözüm sunar. + +## Tam Çalışan Örnek Özeti + +Her şeyi bir araya getirdiğimizde, tam program (isteğe bağlı ince ayarlarla) şöyle görünür: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Programı çalıştırın, oluşturulan CSV’yi açın ve istediğiniz kesinliği gördüğünüzde **çalışma kitabını CSV olarak kaydettiğinizi** başarıyla doğrulamış olursunuz. + +## Sonuç + +Artık C#’ta **çalışma kitabını CSV olarak kaydetmek** için sağlam, üretim‑hazır bir tarifiniz var. Kılavuz, *Excel’i CSV’ye nasıl dışa aktarılır* konusunu, `CsvSaveOptions.SignificantDigits` ile *kesinliğin nasıl ayarlanacağını* ve **xlsx’yi csv’ye dönüştürme** senaryoları için çeşitli varyasyonları kapsadı. Tam kod parçacığı sayesinde bu kodu herhangi bir .NET projesine ekleyebilir ve verileri anında dışa aktarabilirsiniz. + +**Sırada ne var?** + +- Farklı ayırıcılarla (`;`, `\t`) TSV dışa aktarmaları deneyin. +- Bir dosya‑izleyiciyle birleştirerek bir Excel dosyası değiştiğinde CSV üretimini otomatikleştirin. +- CSV’yi tekrar bir çalışma kitabına okumak isterseniz Aspose.Cells’ün `CsvLoadOptions` özelliğini keşfedin. + +Kesinliği istediğiniz gibi ayarlamaktan, özel başlıklar eklemekten veya dışa aktarıcıyı bağlamaktan çekinmeyin. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/document-properties/_index.md b/cells/turkish/net/document-properties/_index.md index 85aaad894c..0f2f315dd5 100644 --- a/cells/turkish/net/document-properties/_index.md +++ b/cells/turkish/net/document-properties/_index.md @@ -35,6 +35,8 @@ Aspose.Cells for .NET kullanarak Excel'de belge özelliklerine nasıl erişeceğ Aspose.Cells for .NET'i kullanarak Excel'de belge özelliklerine nasıl erişeceğinizi adım adım kılavuzumuzla öğrenin. Elektronik tablolarınızı verimli bir şekilde yönetin. ### [.NET'te Belge Özellikleri Ekleme](./adding-document-properties/) Bu ayrıntılı adım adım kılavuzla Aspose.Cells for .NET kullanarak Excel'de belge özelliklerinin nasıl ekleneceğini öğrenin. +### [Excel Çalışma Kitabı Oluştur – Özel Özellikler Ekle ve XLSB Olarak Kaydet](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Aspose.Cells for .NET kullanarak bir Excel çalışma kitabı oluşturun, özel özellikler ekleyin ve XLSB formatında kaydedin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/turkish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..ed763ccd28 --- /dev/null +++ b/cells/turkish/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-22 +description: Excel çalışma kitabı oluştur, özel özellikler ekle, çalışma sayfası adını + ayarla ve C# kullanarak XLSB ikili dosya olarak kaydet. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: tr +og_description: Excel çalışma kitabı oluşturun, özel özellikler ekleyin, çalışma sayfası + adını ayarlayın ve C# kullanarak XLSB ikili dosya olarak kaydedin. +og_title: Excel Çalışma Kitabı Oluştur – Özel Özellikler Ekle ve XLSB Olarak Kaydet +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excel Çalışma Kitabı Oluştur – Özel Özellikler Ekle ve XLSB Olarak Kaydet +url: /tr/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel Çalışma Kitabı Oluştur – Özel Özellikler Ekle ve XLSB Olarak Kaydet + +Programmatically **Excel çalışma kitabı oluşturma** ihtiyacınız oldu mu ama aynı zamanda bazı meta verileri ekli tutmak istediniz? Belki her dosyayı bir rapor kimliği, yazar adı veya sürüm numarasıyla etiketleyen bir raporlama motoru geliştiriyorsunuzdur. Bu durumda, **özel özellikler ekleme**, **çalışma sayfası adını ayarlama** ve sonunda **XLSB olarak kaydetme** öğrenmek, size çok fazla manuel son‑işlemden tasarruf sağlayacaktır. + +Bu öğreticide, C# kullanarak **binary Excel dosyası yazma** işlemini tam olarak gösteren çalıştırılabilir bir örnek üzerinden ilerleyeceğiz. XLSB formatının özel özellikleri taşımak için neden doğru seçim olduğunu, en yaygın tuzaklardan nasıl kaçınılacağını ve eski Excel sürümlerini desteklemeniz gerektiğinde ne yapmanız gerektiğini göreceksiniz. + +--- + +## Gereksinimler + +- **.NET 6+** (veya .NET Framework 4.6+). Kod, herhangi bir yeni çalışma zamanında çalışır. +- **Aspose.Cells for .NET** (ücretsiz deneme veya lisanslı). Aşağıda kullanılan `Workbook`, `Worksheet` ve `CustomProperties` sınıflarını sağlar. +- Kullanımına alışkın olduğunuz bir IDE – Visual Studio, Rider veya hatta VS Code yeterli. +- Oluşturulan dosyanın kaydedileceği klasöre yazma izni. + +Başka üçüncü‑taraf kütüphane gerekmez. + +--- + +## Adım 1: Aspose.Cells'i Yükleyin + +Başlamak için projenize Aspose.Cells NuGet paketini ekleyin: + +```bash +dotnet add package Aspose.Cells +``` + +> **Pro ipucu:** CI sunucusunda çalışıyorsanız, lisans anahtarını bir ortam değişkeninde saklayıp çalışma zamanında yükleyin – bu, “evaluation” filigranının çıktınıza sızmasını önler. + +--- + +## Adım 2: Excel Çalışma Kitabı Oluştur – Genel Bakış + +İlk gerçek işlem **Excel çalışma kitabı oluşturma**dır. Bu nesne, tüm dosyayı bellekte temsil eder ve çalışma sayfalarına, stillere ve özel özelliklere erişim sağlar. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Neden bir şablon yüklemek yerine yeni bir `Workbook` örneği oluşturuyorsunuz? Boş bir çalışma kitabı, gizli stiller veya kalıntı özel özellikler olmadığını garanti eder; bu, temiz bir başlangıç bekleyen **binary excel file** yazmanız gerektiğinde özellikle önemlidir. + +--- + +## Adım 3: Çalışma Sayfası Adını Ayarlama (Ve Neden Önemli) + +Excel sayfaları varsayılan olarak “Sheet1”, “Sheet2” vb. adlandırılır. Bir sayfaya anlamlı bir ad vermek, Power Query veya VBA makroları gibi sonraki işlemlerin çok daha okunabilir olmasını sağlar. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Aynı adı birden fazla kez atamaya çalışırsanız, Aspose.Cells bir `ArgumentException` fırlatır. Güvenli olmak için yeniden adlandırmadan önce `Worksheets.Exists("Data")` kontrol edebilirsiniz. + +--- + +## Adım 4: Özel Özellikler Ekleme + +Özel özellikler, çalışma kitabının iç XML'inde saklanır ve format ne olursa olsun dosyayla birlikte taşınır. `ReportId` veya `GeneratedBy` gibi bilgileri gömmek için mükemmeldir. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Özel özellikler neden kullanılmalı?** +> • Excel’in “File → Info → Properties” panelinden erişilebilirler. +> • Çalışma kitabını tüketen kod, hücre içeriğini taramadan bu değerleri okuyabilir. +> • Format dönüşümlerine (XLSX ↔ XLSB) dayanırlar çünkü dosyanın meta verisinin bir parçasıdırlar. + +Tarih, boolean veya hatta ikili veri (binary blob) de saklayabilirsiniz, ancak yükü küçük tutun – Excel bir veritabanı değildir. + +--- + +## Adım 5: XLSB Olarak Kaydetme (Binary Excel Dosyası Yazma) + +XLSB formatı verileri ikili bir yapıda depolar; bu da dosyanın daha küçük ve daha hızlı açılmasını sağlar. Bu öğretici için daha da önemlisi, **özel özelliklerin ikili akışa gömülü olması**, dosyayla birlikte taşınmalarını garantiler. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Beklenen Sonuç + +Programı çalıştırdıktan sonra masaüstünüzde `WithCustomProps.xlsb` dosyasını bulacaksınız. Excel’de açın, **File → Info → Properties** bölümüne gidin ve `ReportId` ile `GeneratedBy` değerlerinin *Custom* altında listelendiğini göreceksiniz. + +--- + +## Adım 6: Kenar Durumları ve Yaygın Sorular + +### Hedef klasör yalnızca‑okunur ise ne olur? + +`Save` çağrısını bir `try/catch` bloğuna sarın ve `%TEMP%` gibi kullanıcı‑yazılabilir bir konuma geri dönün. Bu, izin hatalarında uygulamanın çökmesini önler. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### **XLSX** olarak kaydedip yine de özel özellikleri koruyabilir miyim? + +Evet—sadece `SaveFormat.Xlsb` yerine `SaveFormat.Xlsx` kullanın. Özellikler aynı XML bölümünde saklanır, bu yüzden format değişikliğine dayanırlar. Ancak XLSX dosyaları, sıkıştırılmış XML oldukları için daha büyüktür; XLSB büyük veri setleri için daha iyi performans sunar. + +### Özel özellikleri daha sonra nasıl okuyabilirim? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Bu kod parçacığı tüm özel özellikleri yazdırır, böylece sonraki hizmetlerin dosyanın kaynağını doğrulaması çok basit olur. + +--- + +## Tam Çalışan Örnek + +Aşağıda yeni bir konsol projesine kopyalayıp‑yapıştırabileceğiniz eksiksiz program yer alıyor. `using` ifadelerinden son `Console.WriteLine` satırına kadar hiçbir parça eksik değil. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Programı çalıştırın, oluşan dosyayı açın ve özel özellikleri doğrulayın. İşte **excel workbook oluşturma**, **özel özellikler ekleme**, **çalışma sayfası adını ayarlama** ve **xlsb olarak kaydetme** işlemlerinin tek bir akışta nasıl yapılacağı. + +--- + +## Sonuç + +Artık **Excel çalışma kitabı oluşturma**, sayfasına net bir **çalışma sayfası adı ayarlama**, faydalı meta verileri **özel özellikler ekleme** ve sonunda **XLSB olarak kaydetme** yoluyla sıkıştırılmış bir binary Excel dosyası üretme konusunda tam bilgiye sahipsiniz. Bu iş akışı güvenilirdir, .NET sürümleri arasında çalışır ve bir rapor ya da binlerce rapor üretirken sorunsuz ölçeklenir. + +Sırada ne var? “Data” sayfasına bir veri tablosu ekleyin, farklı özellik tipleri (tarihler, boolean) ile deney yapın veya büyük veri setleri için çıktıyı **xlsb olarak kaydetmeye** geçin. Ayrıca çalışma kitabını bir şifreyle korumayı da keşfedebilirsiniz—Aspose.Cells bunu tek satırda yapmanıza olanak tanır. + +Herhangi bir sorunla karşılaşırsanız yorum bırakmaktan çekinmeyin ya da bu deseni kendi projelerinizde nasıl genişlettiğinizi paylaşın. Kodlamanın tadını çıkarın! + +--- + +![Create Excel workbook screenshot](image.png){alt="Create Excel workbook with custom properties"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/excel-advanced-named-ranges/_index.md b/cells/turkish/net/excel-advanced-named-ranges/_index.md index dd6b73a88a..1272fc2aca 100644 --- a/cells/turkish/net/excel-advanced-named-ranges/_index.md +++ b/cells/turkish/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Bu işlevselliğin güzelliği kullanım kolaylığında yatar. Hücreleri progr Bu kapsamlı adım adım eğitimle Aspose.Cells for .NET'i kullanarak Excel'de adlandırılmış aralıktaki hücreleri zahmetsizce tanımlayın. ### [Excel'de Adlandırılmış Aralıktaki Hücreleri Birleştirme](./merge-cells-in-named-range/) Bu adım adım eğitimde Aspose.Cells for .NET kullanarak adlandırılmış aralıktaki hücreleri nasıl birleştireceğinizi öğrenin. Excel raporlarını nasıl biçimlendireceğinizi, biçimlendireceğinizi ve otomatikleştireceğinizi keşfedin. +### [Excel Çalışma Kitabı Oluşturma – Tablo Ekleme ve Adlandırma Kuralları İçin Adım‑Adım Kılavuz](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Bu adım adım kılavuzda Aspose.Cells for .NET ile Excel çalışma kitabı oluşturmayı, tablo eklemeyi ve adlandırma kurallarını öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/turkish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..73b18515cd --- /dev/null +++ b/cells/turkish/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Bir tablo içeren Excel çalışma kitabı oluştur, Excel tablo adlandırma + kurallarını öğren, adlandırılmış aralık hatasından kaçın ve C#'ta Excel tablo adını + doğru şekilde ayarla. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: tr +og_description: C#'ta Excel çalışma kitabı oluşturun ve Excel tablo adlandırma kurallarını + öğrenin. Bir tablo çalışma sayfası eklemeyi, Excel tablo adını ayarlamayı ve adlandırılmış + aralık hatalarını düzeltmeyi öğrenin. +og_title: Excel Çalışma Kitabı Oluştur – Tam C# Tablo ve İsimlendirme Rehberi +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Excel Çalışma Kitabı Oluştur – Tablo Ekleme ve Adlandırma Kuralları İçin Adım + Adım Kılavuz +url: /tr/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel Çalışma Kitabı Oluşturma – Tablolar ve Adlandırma İçin Tam C# Rehberi + +Programlı olarak **excel çalışma kitabı oluşturma** ihtiyacı duydunuz ve tablo adınızın bir anda adlandırılmış aralıkla çakıştığını gördünüz mü? Yalnız değilsiniz. Birçok otomasyon projesinde tabloya dostça bir tanımlayıcı vermeye çalıştığınızda, Excel tüm süreci durduran bir *adlandırılmış aralık hatası* fırlatır. + +Bu öğreticide, **Excel çalışma kitabı oluşturma**, **çalışma sayfasına tablo ekleme** ve sizi kendinize takılmaktan koruyan **excel tablo adlandırma kurallarını** açıklayan tamamen çalıştırılabilir bir örnek üzerinden ilerleyeceğiz. Sonunda **tablo çalışma sayfası ekleme**, **excel tablo adını ayarlama** ve zaman zaman ortaya çıkan ad çakışmalarını zarif bir şekilde ele almayı tam olarak öğreneceksiniz. + +> **Pro tip:** Çoğu karışıklık, Excel'in tablo adlarını ve çalışma kitabı‑seviyesindeki adlandırılmış aralıkları tek bir ad alanı olarak ele almasından kaynaklanır. Bu kuralı erken anlamak, saatler süren hata ayıklamayı önler. + +## Gereksinimler + +- **Aspose.Cells for .NET** (veya `Workbook`, `Worksheet`, `ListObject` sınıflarını sunan herhangi bir kütüphane). +- .NET 6+ veya .NET Framework 4.8 – kod her iki ortamda da çalışır. +- C# sözdizimi temelleri – ileri düzey hilelere gerek yok. + +Bu gereksinimlere sahipseniz, başlayalım. + +![Yeni oluşturulmuş bir Excel çalışma kitabının, SalesData adlı tabloyla ekran görüntüsü](create_excel_workbook_example.png "excel çalışma kitabı oluşturma örneği") + +## Adım 1: Excel Çalışma Kitabı Oluşturma ve İlk Çalışma Sayfasına Erişim + +**excel çalışma kitabı oluşturma** işleminin ilk adımı, `Workbook` sınıfını örneklemek ve üzerinde çalışacağınız sayfaya bir referans almaktır. Aspose.Cells'te çalışma kitabı, “Sheet1” adlı varsayılan bir sayfa ile başlar. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Bu adım neden kritik? Bir çalışma kitabı nesnesi olmadan tabloyu ilişkilendirecek bir şeyiniz olmaz ve `Worksheet` referansı, **tablo çalışma sayfası ekleme** işleminin gerçekleşeceği bir tuval sağlar. + +## Adım 2: Belirli Bir Aralığı Kapsayan Tablo (ListObject) Ekleme + +Şimdi **tablo çalışma sayfası‑seviyesi** veriyi ekliyoruz. `ListObjects.Add` metodu bir aralık dizesi ve ilk satırın başlık içerip içermediğini belirten bir Boolean alır. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +`salesTable.Name = "SalesData"` satırına dikkat edin. İşte **excel tablo adlandırma kuralları** burada devreye girer: ad, yalnızca sayfada değil, tüm çalışma kitabı boyunca benzersiz olmalıdır. Boşluk veya özel karakter içeremez ve bir harf ya da alt çizgi ile başlamalıdır. + +## Adım 3: Aynı Tanımlayıcıyla Çalışma Kitabı‑Seviyesindeki Adlandırılmış Aralığı Oluşturma Denemesi + +Şimdi **adlandırılmış aralık hatasını** kasten tetikleyerek bir ad çakışması olduğunda ne olacağını görelim. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Satırı yorumdan çıkarırsanız, Aspose.Cells `ArgumentException` fırlatarak adın zaten var olduğunu bildirir. Hata mesajı şu şekildedir: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Bu mesaj, daha önce bahsettiğimiz **adlandırılmış aralık hatası**dır. **excel tablo adlandırma kuralları**'nın tablo adları ve adlandırılmış aralıkları tek bir ad alanı olarak gördüğünü size gösterir. + +## Adım 4: Ad Çakışmasını Zarifçe Ele Alma + +Gerçek dünyada bu istisnayı yakalamak ve ya tabloyu yeniden adlandırmak ya da farklı bir aralık adı seçmek istersiniz. İşte temiz bir çözüm: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Çağrıyı bir `try/catch` bloğuna sararak sert bir çöküşten kaçınır ve kullanıcıya (veya çağıran koda) net bir açıklama sunarsınız—tam da gelecekteki hataları önleyen **excel tablo adlandırma kuralları** içgörüsü. + +## Adım 5: Çalışma Kitabını Kaydetme ve Sonucu Doğrulama + +Son olarak dosyayı diske kaydedin ve Excel'de açarak tablonun ve olası adlandırılmış aralıkların mevcut olduğunu doğrulayın. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +*SalesReport.xlsx* dosyasını açtığınızda şunları göreceksiniz: + +- **A1:C5** aralığını kapsayan **SalesData** adlı bir tablo. +- Alternatif aralığı tutmuşsanız, **D1**'e işaret eden çalışma kitabı‑seviyesindeki **SalesData_Range** adlandırılmış aralık. + +Çalışma zamanı çöküşü yok, ad çakışması çözülmüş. + +## Excel Tablo Adlandırma Kurallarını Derinlemesine Anlamak + +Kuralların neden var olduğunu inceleyelim: + +| Kural | Anlamı | Örnek | +|------|--------|-------| +| **Çalışma kitabı genelinde benzersiz** | İki tablo ya da adlandırılmış aralık aynı tanımlayıcıyı paylaşamaz. | `Table1` vs `Table1` → çakışma | +| **Harfif ya da alt çizgi ile başlamalı** | İsimler sayı ile başlayamaz. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Boşluk veya özel karakter içermez** | CamelCase ya da alt çizgi kullanın. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Uzunluk ≤ 255 karakter** | Pratikte her zaman sağlanır. | N/A | + +Bu kuralları **excel tablo adını ayarlama** sırasında aklınızda tutmak, korkutucu *adlandırılmış aralık hatası*nı önler. + +## Yaygın Varyasyonlar ve Kenar Durumları + +1. **Birden fazla tablo ekleme** – Her tablo kendi benzersiz adına sahip olmalıdır. +2. **Mevcut bir tabloyu yeniden adlandırma** – Çakışan adlandırılmış aralıklar oluşturmadan önce `salesTable.Name = "NewName"` kullanın. +3. **Dinamik aralıklar kullanma** – Statik adres yerine `=SalesData[Amount]` gibi yapılandırılmış bir referans kullanın. +4. **Sayfa‑arası adlandırılmış aralıklar** – Aynı ad alanının parçasıdır, bu yüzden Sheet1'deki bir tablo, Sheet2'de aynı ada sahip bir aralığı engeller. + +## Sorunsuz Excel Otomasyonu İçin Pro İpuçları + +- **Eklemeye çalışmadan önce varlığı kontrol edin**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Güvenli adlar programatik olarak üretin**: Emin olmadığınızda bir GUID ya da artan sayaç ekleyin (`SalesData_{Guid.NewGuid()}`). +- **`ListObject.ShowHeaders = true`** kullanarak tablolarınızı kendini belgeleyen hâle getirin. +- **Kaydetmeden sonra doğrulayın**: Hafif bir kütüphane (ör. EPPlus) ile dosyayı açıp tablonun doğru oluşturulduğunu kontrol edin. + +## Özet: Neler Öğrendik + +- Aspose.Cells ile sıfırdan **excel çalışma kitabı oluşturma**. +- Tablo ve adlandırılmış aralık tanımlayıcılarını yöneten kesin **excel tablo adlandırma kuralları**. +- Aynı adı yeniden kullandığınızda **adlandırılmış aralık hatası**nın ortaya çıkması. +- Çakışma olmadan **tablo çalışma sayfası ekleme** ve **excel tablo adını ayarlama**ın doğru yolu. +- Ad çakışmalarını zarifçe ele almak için sağlam bir desen. + +## Sıradaki Adım Ne? + +Temelleri kavradığınıza göre aşağıdakileri keşfetmeyi düşünün: + +- `ListObject.Resize` kullanarak **dinamik tablo büyümesi**. +- Tabloya stil uygulama (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- Tablo yapısını koruyarak **CSV'ye dışa aktarma**. +- Çalışma kitabı iç yapıları üzerinde daha sıkı kontrol için **Office Open XML** entegrasyonu. + +Denemeler yapın—aralığı değiştirin, daha fazla tablo ekleyin ya da farklı adlandırma şemalarıyla oynayın. Ne kadar çok denerseniz, **excel tablo adlandırma kuralları** konusundaki anlayışınız o kadar derinleşir. + +--- + +*İyi kodlamalar, ve çalışma kitaplarınız bir daha çakışmasın!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/excel-custom-number-date-formatting/_index.md b/cells/turkish/net/excel-custom-number-date-formatting/_index.md index 8bca470e49..5aa10010f5 100644 --- a/cells/turkish/net/excel-custom-number-date-formatting/_index.md +++ b/cells/turkish/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Bu eğitim, formül alanlarının bütünlüğünü koruyarak veri kümelerinizi Bu adım adım eğitimle Aspose.Cells for .NET'i kullanarak Excel hücre değerlerinin özel sayı biçimlerine göre nasıl kontrol edileceğini öğrenin. ### [Excel Sayfasına Veri Aktarırken Formül Alanlarını Belirleyin](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Bu detaylı eğitimde, Aspose.Cells for .NET kullanarak belirtilen formül alanlarına sahip Excel sayfalarına veri aktarmayı öğrenin. +### [C# ile Excel Özel Sayı Biçimi – Tam Kılavuz](./custom-number-format-excel-in-c-complete-guide/) +Bu kapsamlı rehberde Aspose.Cells for .NET kullanarak C# ile Excel'de özel sayı biçimlerini nasıl oluşturup uygulayacağınızı öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/turkish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..fa90e0db13 --- /dev/null +++ b/cells/turkish/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-22 +description: Özel sayı formatı Excel öğreticisi, veri tablosunu Excel'e nasıl içe + aktarılacağını, sütun arka plan rengini nasıl ayarlayacağını, sütunu para birimi + olarak nasıl biçimlendireceğini ve çalışma kitabını xlsx olarak nasıl kaydedeceğini + gösterir. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: tr +og_description: Özel sayı formatı Excel öğreticisi, bir DataTable'ı içe aktarmayı, + sütun arka plan rengini ayarlamayı, bir sütunu para birimi olarak biçimlendirmeyi + ve çalışma kitabını xlsx olarak kaydetmeyi adım adım gösterir. +og_title: C# ile Excel Özel Sayı Formatı – Adım Adım Rehber +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: C#'ta Excel Özel Sayı Formatı – Tam Kılavuz +url: /tr/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Özel Sayı Biçimi Excel – Full‑Stack C# Öğreticisi + +C#'tan doğrudan **custom number format excel** stilini uygulamayı hiç merak ettiniz mi? Belki bir DataTable'ı bir elektronik tabloya döküp sadece düz sayılar, renksiz hücreler ve para birimi biçimlendirmesi görmüşsünüzdür. Bu, özellikle paydaşlar için şık bir rapor gerektiğinde yaygın bir sıkıntıdır. + +Bu rehberde bu sorunu birlikte çözeceğiz: **import datatable to excel**, **set column background color**, **format column as currency** ve sonunda **save workbook as xlsx** işlemlerini özel bir sayı biçimiyle yaparak rakamlarınızı öne çıkaracaksınız. Belirsiz referanslar yok, sadece projenize kopyalayıp yapıştırabileceğiniz tam, çalıştırılabilir bir çözüm. + +--- + +## Ne Oluşturacaksınız + +Bu öğreticinin sonunda, kendine yeten bir C# konsol uygulamanız olacak: + +1. `DataTable` alır (stub'ı kendi sorgunuzla değiştirebilirsiniz). +2. Aspose.Cells (veya uyumlu bir kütüphane) kullanarak yeni bir Excel çalışma kitabı oluşturur. +3. İlk sütuna mavi, kalın bir yazı tipi, ikinci sütuna açık sarı bir arka plan ve üçüncü sütuna para birimi biçimi (`$#,##0.00`) uygular. +4. Dosyayı seçtiğiniz bir klasörde `DataTableWithStyleArray.xlsx` olarak kaydeder. + +Her satırın nihai Excel dosyasına nasıl katkıda bulunduğunu tam olarak göreceksiniz ve bu seçimlerin bakım ve performans açısından neden önemli olduğunu tartışacağız. + +## Önkoşullar + +- .NET 6.0 veya daha yenisi (kod .NET Framework 4.7+ ile de çalışır). +- Aspose.Cells for .NET (ücretsiz deneme veya lisanslı sürüm). NuGet üzerinden kurun: + +```bash +dotnet add package Aspose.Cells +``` + +- `DataTable` ve C# konsol uygulamaları hakkında temel bilgi. + +## Adım 1: Kaynak Veriyi DataTable Olarak Alın + +İlk olarak, dışa aktaracak bazı verilere ihtiyacımız var. Gerçek bir senaryoda muhtemelen bir repository'yi çağırır veya bir SQL sorgusu çalıştırırsınız. Örnekleme amacıyla bellekte basit bir tablo oluşturacağız. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Neden önemli:** `DataTable` kullanmak, Excel satır ve sütunlarına temiz bir şekilde eşlenen, tablo‑tabanlı, şema‑bilinçli bir kaynak sağlar. Ayrıca aynı dışa aktarma mantığını herhangi bir veri kümesi için kodu yeniden yazmadan yeniden kullanmanıza olanak tanır. + +## Adım 2: Yeni Bir Çalışma Kitabı Oluşturun ve İlk Çalışma Sayfasını Alın + +Şimdi bir Excel çalışma kitabı oluşturuyoruz. `Workbook` sınıfı tüm dosyayı temsil eder; `Worksheets[0]` ise verilerimizi bırakacağımız varsayılan sayfadır. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Pro ipucu:** Birden fazla sayfaya ihtiyacınız varsa, sadece `workbook.Worksheets.Add("SheetName")` çağırın ve stil adımlarını her biri için tekrarlayın. + +## Adım 3: Sütun Stillerini Tanımlayın – Yazı Tipi, Arka Plan ve Sayı Biçimi + +Aspose.Cells'ta stil oluşturma `Style` nesneleriyle yapılır. DataTable'daki her sütuna karşılık gelen bir dizi oluşturacağız. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Neden bir stil dizisi?** `ImportDataTable`'a bir dizi geçmek, tek bir çağrıda her sütuna ayrı bir stil uygulamanızı sağlar; bu hem özlü hem de performanslıdır. Ayrıca biçimlendirmenin veri sırası ile senkron kalmasını garanti eder. + +## Adım 4: Stilleri Uygularken DataTable'ı İçe Aktarın + +İşlemin kalbi burada: `DataTable`'ı çalışma sayfasına besliyoruz, Aspose'a başlık satırını dahil etmesini söylüyoruz ve `columnStyles` dizimizi iletiyoruz. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Arka planda ne oluyor?** Aspose her sütunu iterasyonla dolaşır, başlığı yazar, ardından her satır değerini yazar. Bunu yaparken diziden ilgili `Style`'ı uygular, böylece “Product” için mavi bir başlık, “Quantity” için sarı tonlu bir arka plan ve “Revenue” sütunu güzel bir biçimlendirme elde edersiniz. + +## Adım 5: Çalışma Kitabını XLSX Dosyası Olarak Kaydedin + +Son olarak, çalışma kitabını diske kaydediyoruz. `Save` yöntemi dosya uzantısına göre otomatik olarak XLSX formatını seçer. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **İpucu:** Dosyayı akış olarak göndermeniz gerekiyorsa (ör. bir web API için), dosya yolu yerine `workbook.Save(stream, SaveFormat.Xlsx)` kullanın. + +## Tam Çalışan Örnek + +Aşağıda yeni bir konsol projesine yapıştırabileceğiniz tam program bulunmaktadır. Derlenir ve olduğu gibi çalışır, stil uygulanmış bir Excel dosyası üretir. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Beklenen Sonuç + +`DataTableWithStyleArray.xlsx` dosyasını açtığınızda şunları göreceksiniz: + +| **Ürün** (mavi, kalın) | **Miktar** (açık‑sarı) | **Gelir** (para birimi) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +Belirttiğiniz **custom number format excel** (`$#,##0.00`), her gelir hücresinin dolar işareti, binlik ayırıcı ve iki ondalık basamakla gösterilmesini sağlar—tam da finans ekiplerinin beklediği gibi. + +## Sıkça Sorulan Sorular & Kenar Durumları + +### Farklı bir Excel kütüphanesiyle kullanabilir miyim? + +Kesinlikle. Her sütun için bir stil oluşturup içe aktarım sırasında uygulama konsepti EPPlus, ClosedXML veya NPOI'ye de uygulanabilir. API çağrıları farklıdır, ancak desen aynı kalır. + +### DataTable'ım stil sayısından daha fazla sütun içeriyorsa ne olur? + +Aspose, `columnStyles` dizisinde eşleşen bir giriş olmayan sütunlara varsayılan stili uygular. Sürprizleri önlemek için, diziyi `dataTable.Columns.Count` kadar boyutlandırın veya bir döngüde dinamik olarak stiller oluşturun. + +### Tarihler için özel bir sayı biçimi nasıl ayarlanır? + +`style.Custom = "dd‑mm‑yyyy"` (veya geçerli bir Excel biçim dizesi) olarak ayarlayın. Aynı dizi‑bazlı yaklaşım tarih, yüzde veya bilimsel gösterimler için de çalışır. + +### İçe aktarma sonrası sütunları otomatik boyutlandırmanın bir yolu var mı? + +Evet—içe aktarmadan sonra `worksheet.AutoFitColumns();` çağırın. Hücre içeriğine göre hızlı bir genişlik hesabı yapar. + +### Büyük veri setleri (100k+ satır) hakkında ne söyleyebilirsiniz? + +`ImportDataTable` toplu işlemler için optimize edilmiştir, ancak bellek sınırlarına ulaşabilirsiniz. Bu durumda, satırları manuel olarak `Cells[i, j].PutValue(...)` ile akışa almayı ve aşırı yükü azaltmak için tek bir `Style` nesnesini yeniden kullanmayı düşünün. + +## Pro İpuçları & Yaygın Tuzaklar + +- **Üretim kodunda yolları sabit kodlamaktan kaçının**; `Environment.GetFolderPath` veya yapılandırma ayarlarını kullanın. +- **Çalışma kitabını serbest bırakın**; uzun süren bir hizmette iseniz, yerel kaynakları serbest bırakmak için `using` bloğu içinde sarın. +- **Kültüre özgü ayırıcılara dikkat edin**. Özel format `$#,##0.00` işletim sistemi yerel ayarına bakılmaksızın ondalık ayırıcı olarak nokta zorlar; bu genellikle finansal raporlar için istenen durumdur. +- **System.Drawing'e (veya .NET Core'da `System.Drawing.Common`'a) referans vermeyi unutmayın**; stil oluştururken kullanılan renk yapıları için gereklidir. +- **Çıktıyı farklı Excel sürümlerinde test edin**; eski sürümler bazı özel formatları biraz farklı yorumlayabilir. + +## Sonuç + +C#'tan **custom number format excel** dosyaları oluşturmak için ihtiyacınız olan her şeyi ele aldık: bir `DataTable`'dan veri çekmek, **import datatable to excel**, **set column background color** uygulamak, **format column as currency** kullanmak ve sonunda **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/excel-workbook/_index.md b/cells/turkish/net/excel-workbook/_index.md index 43ecdb4b52..71d7640aca 100644 --- a/cells/turkish/net/excel-workbook/_index.md +++ b/cells/turkish/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Excel sayfalarınızdaki tanımlı adlar, verilerinizi yönetmenin kullanışlı | [Çalışma Kitabı Baskı Önizleme](./workbook-print-preview/) | Aspose.Cells for .NET kullanarak Excel dosyaları için baskı önizlemelerinin nasıl oluşturulacağını öğrenin. Ayrıntılı, takip edilmesi kolay bir eğitimde kodlama adımlarını öğrenin. | | [İçerik Türü Özellikleriyle Çalışma](./working-with-content-type-properties/) | Gelişmiş Excel meta veri yönetimi için içerik türü özellikleriyle çalışmak üzere Aspose.Cells for .NET'i nasıl kullanacağınızı öğrenin. Bu basit adım adım kılavuzu izleyin. | | [Xades İmza Desteği](./xades-signature-support/) | Bu adım adım kılavuzla Aspose.Cells for .NET kullanarak Excel dosyalarına Xades imzalarının nasıl ekleneceğini öğrenin. Belgelerinizi güvenceye alın. | +| [C# ile Yeni Çalışma Kitabı Oluştur – Yayılmış Formüllerle Adım‑Adım Kılavuz](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Aspose.Cells for .NET kullanarak C# ile yeni bir çalışma kitabı oluşturmayı ve yayılmış formülleri eklemeyi adım adım öğrenin. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/turkish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..417b36b8ed --- /dev/null +++ b/cells/turkish/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells kullanarak C# ile yeni bir çalışma kitabı hızlıca oluşturun. + SEQUENCE dökülen formülünü nasıl ekleyeceğinizi, otomatik yeniden hesaplamayı ve + bağımlı hücreleri nasıl yöneteceğinizi öğrenin. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: tr +og_description: Aspose.Cells ile C#’ta yeni bir çalışma kitabı oluşturun. Bu öğreticide + SEQUENCE dökülen formülünü ekleme, çalışma kitabını yeniden hesaplama ve bağımlı + hücreleri yönetme gösterilmektedir. +og_title: Yeni bir çalışma kitabı oluşturma C# – Tam Kılavuz +tags: +- C# +- Excel automation +- Aspose.Cells +title: Yeni çalışma kitabı oluşturma C# – Yayılmış Formüllerle Adım Adım Kılavuz +url: /tr/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Yeni bir çalışma kitabı oluşturma C# – Tam Programlama Rehberi + +COM interop ile uğraşmadan **create new workbook C#** nasıl yapılır hiç merak ettiniz mi? Yalnız değilsiniz. Birçok projede anlık bir Excel dosyası oluşturmanız, dinamik bir dizi formülü eklemeniz ve her şeyin otomatik olarak yenilenmesini sağlamanız gerekir. + +Bu rehberde tam olarak bunu göstereceğiz—modern **Aspose.Cells** kütüphanesini kullanarak, bir `SEQUENCE` dökülen formülü ekleyerek, bağımlı bir hücreyi ayarlayarak ve sonuçların güncel kalması için yeniden hesaplamayı zorlayarak. Sonunda, herhangi bir .NET uygulamasına kopyalayıp yapıştırabileceğiniz, bağımsız ve çalıştırılabilir bir örnek elde edeceksiniz. + +## Öğrenecekleriniz + +- **create new workbook C#** programmatically nasıl yapılır. +- **spilled array formula**'nun mekanikleri ve neden kullanışlı olduğu. +- C# kodundan **Excel SEQUENCE function**'un kullanımı. +- **C# workbook calculation**'ı tetikleyerek bağımlı hücrelerin anında güncellenmesi. +- Yaygın tuzaklar (ör. `Calculate` çağrısını unutmak) ve hızlı çözümler. + +Harici belgelere gerek yok—gereken her şey burada. + +## Önkoşullar + +- .NET 6+ (veya .NET Framework 4.7.2+) yüklü. +- Visual Studio 2022 veya tercih ettiğiniz herhangi bir IDE. +- **Aspose.Cells** NuGet paketi (`Install-Package Aspose.Cells`). +- C# sözdizimi hakkında temel bilgi (yeniyseniz, kod kapsamlı yorumlarla açıklanmıştır). + +--- + +## Adım 1: C#'ta yeni bir çalışma kitabı oluşturma + +Bu H2 başlığı, SEO kontrol listesinin istediği yerde **primary keyword**'i tam olarak içerir. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Neden önemli:** +> `Workbook` nesnesini örneklemek, bir Excel dosyasının bellek içi temsilini sağlar. COM, interop yok, sadece güvenle manipüle edebileceğiniz saf .NET nesneleri. + +--- + +## Adım 2: Dökülen SEQUENCE formülü ekleme + +**spilled array formula** otomatik olarak komşu hücrelere yayılır, bu da dinamik listeler oluşturmak için mükemmeldir. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Nasıl çalışır:** +> `SEQUENCE` işlevi (Excel 365'te tanıtıldı) dikey bir sayı dizisi oluşturur. *spilling* formül kullandığımız için, Excel (ve Aspose.Cells) `A1` altındaki aralığı döngü yazmadan otomatik olarak doldurur. + +--- + +## Adım 3: Bağımlı bir hücreyi değiştirerek otomatik yenilemeyi görmek + +`B1` hücresini değiştirelim, böylece çalışma kitabının dökülen diziyi nasıl yeniden hesapladığını gözlemleyebiliriz. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **İpucu:** +> Daha sonra dökülen aralığı diğer formüllerde referans alırsanız, dökülen içindeki herhangi bir hücreyi değiştirmeniz, `Calculate` çağırdıktan sonra bu formüllerin güncellenmesine neden olur. + +--- + +## Adım 4: C# çalışma kitabı hesaplamasını zorlamak + +Açık bir çağrı olmadan, Aspose.Cells formülleri otomatik olarak yeniden hesaplamaz. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` ne yapar:** +> Her formül hücresini dolaşır, değerlendirir ve sonuçları sayfaya yazar. Bu, **C# workbook calculation**'ın özüdür ve dökülen dizinizin tüm bağımlı verilerle senkron kalmasını sağlar. + +### Beklenen Çıktı + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +`SpilledSequenceDemo.xlsx` dosyasını açın ve `A1:A5` aralığını 1‑5 sayıları doldururken, `B1` hücresinin `10` değerini tuttuğunu göreceksiniz. Dökülen alandaki herhangi bir hücreyi değiştirin, `Calculate`'ı tekrar çalıştırın ve yeni değerlerin anında göründüğünü fark edin. + +--- + +## C#'ta Excel SEQUENCE işlevini anlama + +`SEQUENCE`'in manuel bir döngüye göre neden tercih edildiğini merak ediyorsanız, şu noktalara bakın: + +1. **Performance** – Motor, tüm diziyi tek bir geçişte değerlendirir. +2. **Readability** – Tek bir kod satırı, onlarca `PutValue` çağrısının yerini alır. +3. **Dynamic sizing** – Statik `5` değerini başka bir hücreye referansla değiştirebilir, böylece uzunluk çalışma zamanında ayarlanabilir. + +Bu, veri üretim görevlerini basitleştiren klasik bir **spilled array formula** örneğidir. + +--- + +## Yaygın Tuzaklar ve Pro İpuçları + +| Tuzak | Çözüm | +|---------|-----| +| `workbook.Calculate()`'ı unutmak | Formülleri değiştirdikten sonra her zaman çağırın; aksi takdirde sayfa eski önbellek değerlerini gösterir. | +| Eski bir Aspose.Cells sürümü kullanmak | `SEQUENCE` gibi dinamik dizi işlevlerini desteklemek için en son NuGet paketine yükseltin. | +| Hesaplamadan önce kaydetmek | `Calculate`'dan **sonra** kaydedin, böylece dosya en son sonuçları içerir. | +| Dökülmenin mevcut verileri üzerine yazacağını varsaymak | Aspose.Cells, dökülme aralığının dışındaki mevcut verilere saygı gösterir; temiz bir alan ihtiyacınız varsa önce bölgeyi temizleyin. | + +**Pro ipucu:** Dizinin uzunluğunu yapılandırılabilir hale getirmeniz gerekiyorsa, sayıyı bir hücrede (ör. `C1`) saklayın ve `=SEQUENCE(C1)` kullanın—hesaplama motoru çalışma zamanında değeri okuyacaktır. + +--- + +## Örneği Genişletme + +Artık **create new workbook C#**'ı nasıl yapacağınızı bildiğinize göre, şunları yapabilirsiniz: + +- Dökülen aralığı referans alan daha karmaşık formüller ekleyin (`=SUM(A1#)` burada `#` dökülmeyi gösterir). +- `workbook.Save("output.pdf", SaveFormat.Pdf)` ile PDF olarak dışa aktarın. +- Dinamik dizi boyutuna otomatik olarak uyum sağlayan grafikler ekleyin. + +Bunların tümü, az önce ele aldığımız aynı **C# workbook calculation** temeli üzerine inşa edilmiştir. + +--- + +## Sonuç + +**create new workbook C#**'ın tüm sürecini adım adım inceledik; `Workbook` nesnesini örneklemekten dökülen bir `SEQUENCE` formülü eklemeye, bağımlı bir hücreyi ayarlamaya ve sonunda her şeyin güncel kalması için yeniden hesaplamayı zorlamaya kadar. Yukarıdaki tam kod parçacığı çalıştırılmaya hazır—sadece bir konsol uygulamasına yapıştırın, Aspose.Cells NuGet paketini ekleyin ve birkaç saniye içinde işlevsel bir Excel dosyanız olacak. + +Bir sonraki adıma hazır mısınız? Statik `5` değerini bir hücre referansı ile değiştirin, `FILTER` veya `UNIQUE` gibi diğer dinamik dizi işlevleriyle deneyler yapın ve **Aspose.Cells C#**'ın tam ölçekli raporlama motorlarını nasıl güçlendirebileceğini keşfedin. Kodlamanın tadını çıkarın! + +--- + +*Image placeholder:* + +![Dökülen SEQUENCE formülüyle yeni oluşturulmuş bir çalışma kitabını gösteren ekran görüntüsü – create new workbook C# örneği](/images/create-new-workbook-csharp.png) + +--- + +*Bu öğreticiyi faydalı bulduysanız, depoyu yıldızlamayı, ekip arkadaşlarınızla paylaşmayı veya aşağıya bir yorum bırakmayı düşünün. Geri bildiriminiz gelecekteki rehberleri besler!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/formulas-functions/_index.md b/cells/turkish/net/formulas-functions/_index.md index 1ed19ee143..343d79ae2b 100644 --- a/cells/turkish/net/formulas-functions/_index.md +++ b/cells/turkish/net/formulas-functions/_index.md @@ -100,7 +100,8 @@ Aspose.Cells for .NET kullanarak dizi formüllerinde ustalaşmayı öğrenin. Bu Aspose.Cells .NET kullanarak Excel dosyalarınızın dilini nasıl belirleyeceğinizi öğrenin. Formül ayarlarını uluslararasılaştırmaya yönelik bu adım adım kılavuzla belge erişilebilirliğini ve uyumluluğunu geliştirin. ### [Excel Power Query Formüllerini Aspose.Cells .NET ile Güncelleyin](./update-power-query-formulas-aspose-cells-net) -Aspose.Cells for .NET kullanarak Excel çalışma kitaplarındaki Power Query formüllerini programlı olarak nasıl güncelleyeceğinizi öğrenin. Dinamik raporlama için ana veri kaynağı yönetimi. + +### [C#'ta Lambda Kullanarak Excel Formülleri – Tam Kılavuz](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) ## Excel Formül Türlerini Anlama diff --git a/cells/turkish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/turkish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..220e4898cc --- /dev/null +++ b/cells/turkish/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: C#'de lambda kullanarak Excel formülleriyle nasıl çalışılır. Formülü + hücreye yazmayı, aralığı diziye dönüştürmeyi, diziyi konsolda görüntülemeyi ve Excel'de + kotanjantı hesaplamayı öğrenin. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: tr +og_description: C#'de lambda kullanarak Excel formüllerini manipüle etme, aralığı + diziye dönüştürme, hücreye formül yazma, diziyi konsolda gösterme ve Excel'de kotanjant + hesaplama. +og_title: C#'ta Lambda'yı Excel Formülleriyle Nasıl Kullanılır – Adım Adım +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: C#'ta Lambda Kullanımı ve Excel Formülleri – Tam Rehber +url: /tr/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Use Lambda in C# with Excel Formulas – Complete Guide + +Ever wondered **how to use lambda** when you’re automating Excel from C#? You’re not alone. Many developers hit a wall when they need to combine the power of Excel’s new dynamic array functions with C#’s `LAMBDA` capability. The good news? It’s actually pretty straightforward once you see the pieces fit together. + +In this tutorial we’ll walk through **writing a formula to a cell**, **converting a range to an array**, **displaying that array in the console**, and even **calculating cotangent in Excel**—all while showing you **how to use lambda** inside a `REDUCE` call. By the end you’ll have a runnable snippet that you can drop into any .NET project that references Aspose.Cells (or a similar library). + +--- + +## What You’ll Learn + +- How to **write formula to cell** using C#. +- How to **convert range to array** with the `EXPAND` function. +- How to **display array in console** after calculation. +- How to **calculate cotangent in Excel** using `COT` and `COTH`. +- The exact syntax for **how to use lambda** inside Excel’s `REDUCE` function from C#. + +> **Prerequisite:** You need a recent version of .NET (Core 6+ or .NET Framework 4.7+) and the Aspose.Cells for .NET library installed via NuGet. + +--- + +## Step 1: Set Up the Workbook and Write Formula to Cell + +The first thing we do is spin up a fresh workbook and grab the first worksheet. Then we **write a formula to a cell** – in this case `A1` will hold the result of an `EXPAND` call. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Why this matters:** Writing the formula directly from code means you can generate complex spreadsheets on the fly without ever opening Excel. It also sets the stage for the next step where we **convert range to array**. + +--- + +## Step 2: Convert Range to Array with EXPAND + +`EXPAND` is Excel’s way of turning a small range into a larger matrix. By placing the formula in `A1`, Excel will spill a 4 × 5 block starting at that cell. From C#, we don’t have to manually copy values – the library will do the heavy lifting when we call `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**How to use lambda:** Not yet, but stay tuned. First we need the data in the sheet, then we’ll reduce it with a lambda. + +--- + +## Step 3: Use LAMBDA Inside REDUCE – The Core of “How to Use Lambda” + +Excel 365 introduced `REDUCE`, which accepts an **initial value**, a **range**, and a **LAMBDA** that tells it how to combine each element. From C# we simply assign the formula string; the lambda lives inside the Excel formula, not in C# code. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Explanation:** +- `0` is the starting accumulator (`acc`). +- `A1:D4` is the range we want to process (the first four columns of the spill). +- `LAMBDA(acc, x, acc + x)` tells Excel to add each cell (`x`) to the accumulator. + +That’s the essence of **how to use lambda** for aggregation in a spreadsheet context. + +--- + +## Step 4: Calculate Cotangent in Excel – From Degrees to Hyperbolic + +If you need trigonometric results, Excel’s `COT` and `COTH` functions are a breeze. We’ll place them in `G1` and `G2` respectively. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Why this is handy:** Knowing **calculate cotangent in Excel** can save you from writing custom math code, especially when the workbook will be shared with non‑developers. + +--- + +## Step 5: Force Calculation and Retrieve the Expanded Array + +Now we tell the workbook to evaluate every formula, then pull the spilled array out of `A1`. This is where we **display array in console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**What you’ll see:** +- A nicely formatted 4 × 5 matrix printed line‑by‑line. +- The sum computed by the `REDUCE` lambda. +- The two cotangent values. + +That completes the flow from **write formula to cell** all the way to **display array in console**. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Below is the entire program you can drop into a console app. Remember to add the `Aspose.Cells` NuGet package first (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Expected console output (values will vary based on the default contents of B1:C2, which are 0 by default):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Feel free to populate `B1:C2` with your own numbers before running – the matrix will reflect those values. + +--- + +## Pro Tips & Common Pitfalls + +- **Pro tip:** If you need the spilled range to start elsewhere, just change the target cell (`A1`). The `EXPAND` function respects the anchor. +- **Watch out for:** Empty cells in the source range become `0` in the spilled array, which can affect your `REDUCE` sum. +- **Edge case:** When the workbook contains formulas that depend on volatile functions (e.g., `NOW()`), call `workbook.Calculate()` after setting all formulas to ensure everything is up‑to‑date. +- **Performance note:** For huge spills, consider limiting the size in the `EXPAND` call; otherwise you might allocate more memory than needed. +- **Compatibility:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/number-and-display-formats-in-excel/_index.md b/cells/turkish/net/number-and-display-formats-in-excel/_index.md index 60a83f550f..c5a3fe9433 100644 --- a/cells/turkish/net/number-and-display-formats-in-excel/_index.md +++ b/cells/turkish/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Excel sayfalarınıza kişisel bir dokunuş katmak istiyorsanız, görüntüleme Aspose.Cells for .NET kullanarak Excel'de sayı biçimlendirmesini otomatikleştirin. Tarih, yüzde ve para birimi biçimlerini programlı olarak nasıl uygulayacağınızı öğrenin. ### [Kullanıcı Tarafından Tanımlanan Sayılarla Görüntüleme Biçimlerini Özelleştirme](./customizing-display-formats-with-user-defined-numbers/) Aspose.Cells for .NET ile görüntüleme biçimlerini nasıl özelleştireceğinizi öğrenin. Bu adım adım kılavuzu kullanarak tarihleri, yüzdeleri ve para birimini biçimlendirin. +### [Biçimlendirmeyi Korumak İçin Excel'i Dışa Aktarma – Sayı Biçimini Koru](./how-to-export-excel-with-formatting-preserve-number-format/) +Aspose.Cells for .NET kullanarak Excel dosyalarını biçimlendirmeyi koruyarak dışa aktarın ve sayı biçimlerinin korunmasını sağlayın. +### [C#'ta Tarih ve Saati ISO'ya Dönüştürme – Tam Kılavuz](./format-datetime-to-iso-in-c-complete-guide/) +C# ve Aspose.Cells for .NET kullanarak tarih ve saat değerlerini ISO 8601 formatına dönüştürmeyi öğrenin. Bu adım adım rehberle doğru biçimlendirmeyi sağlayın. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/turkish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..925c41f943 --- /dev/null +++ b/cells/turkish/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-22 +description: Excel'den tarih çıkarırken datetime'ı ISO formatına nasıl dönüştüreceğinizi + ve Aspose.Cells kullanarak C#'ta ISO tarihini nasıl görüntüleyeceğinizi öğrenin. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: tr +og_description: datetime'ı ISO formatına dönüştürmek kolaylaştı. Bu rehber, Excel'den + tarihi nasıl çıkaracağınızı ve Aspose.Cells ile ISO tarihini nasıl görüntüleyeceğinizi + gösterir. +og_title: C#'ta datetime'ı ISO formatına dönüştür – Adım Adım Öğretici +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: C#'ta datetime'ı ISO formatına dönüştürme – Tam Kılavuz +url: /tr/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# format datetime to iso in C# – Complete Guide + +Hiç **format datetime to iso** yapmanız gerekti, ancak kaynak bir Excel çalışma kitabının içinde mi? Belki hücrede “令和3年5月1日” gibi bir Japon dönemi var ve bunu temiz bir `2021‑05‑01` dizesine nasıl dönüştüreceğinizi merak ediyorsunuz. Yalnız değilsiniz. Bu öğreticide **extract date from excel** yapmayı, Japon dönemini ayrıştırmayı ve ardından **display iso date**'i konsolda göstermeyi birkaç satır C# ve Aspose.Cells ile göstereceğiz. + +İhtiyacınız olan her şeyi adım adım inceleyeceğiz: gerekli NuGet paketi, doğrudan kopyalayıp yapıştırabileceğiniz tam kod, her satırın neden önemli olduğu ve birkaç kenar‑durum ipucu. Sonunda, orijinal Excel değeri ne kadar garip olursa olsun datetime to iso formatlayan yeniden kullanılabilir bir snippet elde edeceksiniz. + +## What You’ll Need + +- .NET 6.0 veya daha yeni (kod .NET Framework 4.6+ üzerinde de derlenebilir) +- Visual Studio 2022 (veya tercih ettiğiniz herhangi bir editör) +- **Aspose.Cells for .NET** NuGet paketi – `Install-Package Aspose.Cells` +- Japon dönemi formatında tarih tutan bir Excel dosyası (veya yeni bir çalışma kitabı) + +Hepsi bu. Başka kütüphane, COM interop yok, sadece tek, iyi belgelenmiş bir yöntem. + +## Step 1: Create a Workbook and Write a Japanese Era Date + +İlk olarak üzerinde çalışacağımız bir çalışma kitabına ihtiyacımız var. Zaten bir Excel dosyanız varsa `new Workbook("path")` ile yükleyebilirsiniz. Bu örnek için bellekte yeni bir çalışma kitabı oluşturup **A1** hücresine bir Japon dönemi dizesi yerleştireceğiz. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Why we do this:** Aspose.Cells hücre değerlerini varsayılan olarak string olarak ele alır. Ham dönem metnini ekleyerek, bir Japon müşterisinin tarihleri yerel takviminde girdiği gerçek bir senaryoyu taklit ediyoruz. + +## Step 2: Enable Japanese Era Parsing and Extract the Date + +Aspose.Cells, Japon dönemi dizelerini .NET `DateTime` nesnelerine otomatik olarak çevirebilir—tek yapmanız gereken bunu etkinleştirmektir. `DateTimeParseOptions.EnableJapaneseEra` bayrağı bu işi yapar. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Pro tip:** `EnableJapaneseEra` seçeneğini unutursanız, kütüphane orijinal stringi döndürür ve sonraki dönüşümünüz başarısız olur. Karışık içeriklerle çalışıyorsanız her zaman `parsed.Type` kontrol edin. + +## Step 3: Convert the Parsed DateTime to ISO 8601 + +Artık geçerli bir `DateTime`'ımız olduğuna göre, onu ISO‑formatlı bir stringe dönüştürmek çok kolay. `"yyyy-MM-dd"` deseni ISO 8601 tarih kısmına uygundur ve çoğu API bu formatı bekler. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Programı çalıştırdığınızda şu çıktı gelir: + +``` +ISO date: 2021-05-01 +``` + +İşte aradığınız **display iso date**. + +## Full, Runnable Example + +Aşağıda doğrudan bir console projesine yapıştırabileceğiniz tam kod bloğu yer alıyor. Gizli bağımlılık yok, ekstra yapılandırma yok. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Expected output:** `ISO date: 2021-05-01` + +## Step‑by‑Step Breakdown (Why Each Piece Matters) + +| Adım | Ne Olur | Neden Önemli | +|------|---------|--------------| +| **Create workbook** | Bellekte bir Excel konteyneri başlatır. | Dosya sistemine dokunmadan test edebileceğiniz bir sandbox sağlar. | +| **PutValue** | Ham Japon dönemi stringini **A1** hücresine yazar. | Gerçek veri girişini taklit eder; ayrıştırıcının tam metni görmesini sağlar. | +| **GetValue with `EnableJapaneseEra`** | Dönem stringini .NET `DateTime`'a çevirir. | Takvim dönüşümünü otomatik yapar—manuel lookup tablolarına gerek kalmaz. | +| **`ToString("yyyy-MM-dd")`** | `DateTime`'ı ISO 8601 formatına getirir. | REST API'leri, veritabanları vb. tarafından kabul edilen kültür‑bağımsız, sıralanabilir bir tarih stringi garantiler. | +| **Console.WriteLine** | Son ISO tarihi gösterir. | Bütün pipeline'ın uçtan uca çalıştığını doğrular. | + +## Handling Common Variations + +### 1. Different Cell Locations + +Tarihiniz **B2** veya bir adlandırılmış aralıkta ise, sadece `"A1"` yerine uygun adresi koyun: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Multiple Dates in a Column + +Birçok satır için **extract date from excel** yapmanız gerektiğinde, kullanılan aralıkta döngü oluşturun: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Fallback for Non‑Era Dates + +Bir hücre zaten standart bir tarih stringi içeriyorsa, ayrıştırıcı yine çalışır, ancak bir güvenlik önlemi eklemek isteyebilirsiniz: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +`TryParse` bayrağı istisnaları önler ve dönüşüm başarısız olursa orijinal değeri döndürür. + +### 4. Time Component + +Zaman kısmına da ihtiyacınız varsa, `"yyyy-MM-ddTHH:mm:ss"` kullanın: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Bu, tam bir ISO 8601 zaman damgası üretir (`2021-05-01T00:00:00`). + +## Visual Aid + +![format datetime to iso example](image.png "C#'ta datetime'ı iso formatına örnek bir gösterim") + +*Alt metin:* *format datetime to iso örneği, konsol çıktısını gösteriyor* + +## Frequently Asked Questions + +- **Can I use this with .xls files?** + Evet. Aspose.Cells, `.xls`, `.xlsx`, `.csv` ve birçok diğer formatı kutudan çıkar çıkmaz destekler. + +- **What if the workbook is password‑protected?** + `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })` ile yükleyin. + +- **Is the ISO format locale‑dependent?** + Hayır. `"yyyy-MM-dd"` deseni kültür‑bağımsızdır ve herhangi bir makinede aynı stringi üretir. + +- **Does this work on .NET Core?** + Kesinlikle—Aspose.Cells .NET Standard 2.0 uyumludur. + +## Wrap‑Up + +**format datetime to iso** yapmayı, **extract date from excel** ile Japon dönemi stringlerini ayrıştırarak ve sonunda **display iso date**'i konsolda göstermeyi ele aldık. Temel adımlar—çalışma kitabı oluşturma, dönem metnini yazma veya yükleme, Japon dönemi ayrıştırmayı etkinleştirme ve `ToString("yyyy-MM-dd")` ile formatlama—çoğu senaryo için yeterlidir. + +Sonraki adımlarınız şunlar olabilir: + +- ISO tarihlerini başka bir sütuna yazarak sonraki işlemlere hazırlama. +- Dönüştürülmüş çalışma kitabını toplu içe aktarma için CSV'ye dışa aktarma. +- Excel yüklemelerini kabul eden ve JSON‑kodlu ISO tarihleri dönen bir web API ile bu mantığı birleştirme. + +Farklı tarih formatları, saat dilimleri veya hatta özel takvimlerle denemeler yapmaktan çekinmeyin. Aspose.Cells'in esnekliği sayesinde nadiren bir duvara çarparsınız. + +İyi kodlamalar, ve tüm tarihlerinizi mükemmel ISO‑uyumlu olsun! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/turkish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..6ba8cae14a --- /dev/null +++ b/cells/turkish/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Biçimlendirme ile Excel'i dışa aktarma ve sayı formatını koruma. Excel + aralığını dönüştürmeyi, formül sonucunu almayı ve Aspose.Cells kullanarak biçimlendirme + ile Excel'i dışa aktarmayı öğrenin. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: tr +og_description: Excel'i biçimlendirme ile dışa aktarma ve sayı formatını koruma. Excel + aralığını dönüştürme, formül sonucunu alma ve C#'ta biçimlendirme ile Excel'i dışa + aktarma adım adım rehberi. +og_title: Excel'i Biçimlendirme ile Nasıl Dışa Aktarılır – Sayı Formatını Koru +tags: +- C# +- Aspose.Cells +- Excel automation +title: Excel'i Biçimlendirme ile Dışa Aktarma – Sayı Formatını Koru +url: /tr/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Excel'i Biçimlendirme ile Dışa Aktarma – Sayı Biçimini Korumak + +Hiç **Excel'i nasıl dışa aktaracağınızı** merak ettiniz mi ve her hücrenin görünümünün çalışma kitabında gördüğünüz gibi kalmasını istediniz mi? Belki bir raporu müşteriye göndermeniz, bir grid kontrolüne beslemeniz ya da sadece değerleri bir veritabanına kaydetmeniz gerekiyor. En büyük sorun genellikle sayı biçimlerinin kaybolması ya da formüllerin ham stringlere dönüşmesidir. + +Bu öğreticide, **sayı biçimini koruyan**, **Excel aralığını** bir `DataTable`'a **dönüştüren**, **formül sonucunu** alan ve sonunda **Aspose.Cells** kullanarak **biçimlendirilmiş Excel dışa aktaran** eksiksiz, çalıştırmaya hazır bir C# örneği üzerinden ilerleyeceğiz. Sonunda, herhangi bir projeye ekleyebileceğiniz ve bir çalışma sayfası referansı ile çağırabileceğiniz tek bir metoda sahip olacaksınız. + +> **Hızlı ön izleme:** kod bir çalışma kitabı oluşturur, bir değer ve bir formül yazar, Aspose.Cells'e hücreleri biçimlendirilmiş stringler olarak dışa aktarmasını söyler ve `123.456 | 246.912` çıktısını verir – tam da Excel'de görmeyi beklediğiniz gibi. + +--- + +## Gereksinimler + +- **Aspose.Cells for .NET** (ücretsiz deneme sürümü öğrenme için yeterli) +- .NET 6.0 veya üzeri (API .NET Framework'ta da aynı) +- Temel bir C# geliştirme ortamı (Visual Studio, VS Code, Rider… seçiminize göre) + +Aspose.Cells dışındaki ekstra NuGet paketlerine ihtiyaç yoktur. Henüz kurmadıysanız, şu komutu çalıştırın: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Adım 1 – Çalışma Kitabı Oluşturma ve Değer Yazma (formül dahil) + +İlk olarak yeni bir çalışma kitabı oluşturup **A1** hücresine sayısal bir değer yerleştiriyoruz. Ardından **B1** hücresine ilk hücreyi ikiyle çarpan basit bir formül ekliyoruz. Bu, daha sonra **formül sonucunu alma** gösterimi için sahneyi hazırlar. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Neden önemli:** +- `PutValue` ham sayıyı, `PutFormula` ise hesabı saklar. +- Aspose.Cells formülü **canlı** tutar, böylece hücrenin değerini istediğimizde gerçekte `246.912` elde ederiz, `"=A1*2"` stringi değil. + +--- + +## Adım 2 – Aspose.Cells'e Değerleri Biçimlendirilmiş Stringler Olarak Dışa Aktarmasını Söyleyin + +`ExportDataTable`i varsayılan ayarlarla çağırırsanız, sayısal hücreler temel `double` değerleri olarak döner. Bu, binlik ayırıcıları, para birimi simgelerini veya özel ondalık basamakları kaldırır. `ExportTableOptions` sınıfı sayesinde **sayı biçimini koruyabilir** ve **string olarak dışa aktarabilir**iz. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Ana nokta:** `ExportNumberFormat = true` bayrağı, **sayı biçimini koruma** işlevini etkinleştirir. Bu olmadan `"123.456"` ve `"246.912"` gibi ham sayılar görürsünüz; kod içinde düzgün görünebilir ama Excel ile aynı biçimlendirmeyi bekleyen bir UI'ye yapıştırdığınızda farklı görünür. + +--- + +## Adım 3 – Dışa Aktarılan Veriyi Yazdırma (Doğrulama) + +Şimdi `DataTable`ımız biçimlendirilmiş stringlerle dolu, içeriği konsola dökelim. Bu aynı zamanda **formül sonucunu alma** işlemini, formülü kendimiz değerlendirmeden başarıyla yaptığımızı gösterir. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Programı çalıştırdığınızda şu çıktı görülür: + +``` +123.456 | 246.912 +``` + +İkinci sütunun **formül sonucunu** gösterdiğine, formül metnini değil, dikkat edin. Bu, **biçimlendirilmiş Excel dışa aktarma** işlemi sırasında aşağı akışta işlemek istediğiniz tam şeydir. + +--- + +## Adım 4 – Daha Büyük Excel Aralıklarını Dönüştürme (Opsiyonel) + +Yukarıdaki örnek küçük bir `A1:B1` dilimini ele alıyor, ancak gerçek dünyada genellikle tüm tabloları dışa aktarmak gerekir. Aynı yöntem herhangi bir dikdörtgen blok için çalışır – sadece `firstRow`, `firstColumn`, `totalRows` ve `totalColumns` parametrelerini ayarlamanız yeterlidir. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**İpucu:** Sayfanızda zaten bir başlık satırı varsa, `includeColumnNames` değerini `true` yapın. Aspose.Cells aralığın ilk satırını sütun adı olarak kullanır; bu, `DataTable`ı bir UI gridine bağladığınızda çok işe yarar. + +--- + +## Adım 5 – Yaygın Tuzaklar ve Çözüm Önerileri + +| Sorun | Neden Oluşur | Çözüm | +|-------|--------------|------| +| **Sayılar virgül veya para birimi simgesi kaybeder** | `ExportAsString` `false` veya `ExportNumberFormat` atlanmış | Hem `ExportAsString = true` hem de `ExportNumberFormat = true` ayarlayın. | +| **Formül hücreleri formül metnini döner** | Dışa aktarmadan önce `CalculateFormula` çağırmadınız (çalışma kitabı otomatik hesaplamaya ayarlı değilse gerekir) | Otomatik hesaplamayı etkinleştirin (`workbook.CalculateFormula()`) veya `ExportAsString` kullanın; bu, değerlendirmeyi zorlar. | +| **Başlıklar veri satırı olarak görünür** | `includeColumnNames` `false` iken aralığınızda bir başlık satırı var | `includeColumnNames = true` yaparak ilk satırı sütun adı olarak kabul edin. | +| **Büyük aralıklar bellek baskısı oluşturur** | Tüm sayfayı bir kerede dışa aktarmak tüm veriyi belleğe yükler | Veriyi parçalara (ör. 500 satır) bölerek dışa aktarın ve gerekirse `DataTable`ları birleştirin. | + +--- + +## Adım 6 – Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda `using` ifadelerinden `Main` metoduna kadar tüm program yer alıyor. Bir console uygulamasına yapıştırın ve **F5** tuşuna basın – biçimlendirilmiş çıktıyı anında göreceksiniz. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Beklenen çıktı** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +İşte **Excel'i nasıl dışa aktaracağınız** iş akışı, biçimlendirme korunmuş, formül sonuçları değerlendirilmiş ve herhangi bir .NET tüketicisi için temiz bir `DataTable` hazır. + +--- + +## Sonuç + +**Excel verilerini dışa aktarırken sayı biçimini koruma**, **Excel aralığını `DataTable`a dönüştürme** ve **formül sonuçlarını ekstra ayrıştırma olmadan alma** konularında ihtiyacınız olan her şeyi ele aldık. Anahtar, `ExportTableOptions` yapılandırmasıdır – `ExportAsString` ve `ExportNumberFormat` değerlerini `true` yaptığınızda, Aspose.Cells geri kalanını sizin yerinize halleder. + +Bundan sonra şunları yapabilirsiniz: + +- `DataTable`ı bir WPF `DataGrid`ine veya ASP.NET MVC görünümüne bağlamak. +- Tabloyu tam görsel temsili koruyarak bir CSV dosyasına yazmak. +- Yaklaşımı birden çok sayfaya veya dinamik aralıklara genişletmek. + +Farklı biçimler (para birimi, yüzde) ve daha büyük veri bloklarıyla denemeler yapın. Herhangi bir tuhaflıkla karşılaşırsanız, **yaygın tuzaklar** tablosuna geri dönün – **biçimlendirilmiş Excel dışa aktarma** sırasında en sık karşılaşılan sorunları kapsar. + +İyi kodlamalar, ve dışa aktardığınız elektronik tablolar her zaman orijinali kadar şık olsun! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/turkish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..d9cf779797 --- /dev/null +++ b/cells/turkish/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,189 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells kullanarak C#’ta pivot tabloyu nasıl çoğaltacağınızı öğrenin. + Bu rehber ayrıca satırları nasıl kopyalayacağınızı ve sorunsuz Excel otomasyonu + için C#’ta Excel çalışma kitabını nasıl yükleyeceğinizi gösterir. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: tr +og_description: C#'ta pivot nasıl çoğaltılır? Excel çalışma kitabını C# ile yükleme, + satırları kopyalama ve Excel otomasyonunda satırları kopyalamayı ustalaşma konusunda + bu özlü öğreticiyi izleyin. +og_title: C#'de Pivot Nasıl Kopyalanır – Tam Kılavuz +tags: +- C# +- Excel Automation +- Aspose.Cells +title: C#'ta Pivot Nasıl Kopyalanır – Tam Adım Adım Rehber +url: /tr/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Pivot'i C#'ta Nasıl Çoğaltılır – Tam Adım‑Adım Kılavuz + +Excel'de pivot tablolarını manuel olarak sürüklemeden programlı olarak **how to duplicate pivot** tablolarını bir kez daha oluşturmayı hiç merak ettiniz mi? Tek başınıza değilsiniz. Birçok raporlama sürecinde aynı pivot düzeni yeni bir satır kümesi üzerinde gerekir ve bunu elle yapmak zaman kaybıdır. + +İyi haber? Birkaç C# satırıyla bir Excel çalışma kitabını yükleyebilir, pivotun bulunduğu alanı tanımlayabilir ve **how to copy rows** sayesinde pivotun yeni bir konumda görünmesini sağlayabilirsiniz — hepsi tek bir otomatik çalıştırmada. Bu öğreticide ayrıca **load excel workbook c#** temellerini ele alacak ve **excel automation copy rows** görevleri için sağlam bir temel sunacağız. + +> **Ne kazanacaksınız** +> • Pivot tablosunu çoğaltan tam, çalıştırılabilir bir örnek. +> • Her satırın neden önemli olduğuna dair bir açıklama. +> • Gizli çalışma sayfaları veya birden çok pivot gibi köşe durumları ele almak için ipuçları. + +--- + +## Önkoşullar + +- **.NET 6.0** (veya herhangi bir yeni .NET sürümü) yüklü. +- **Aspose.Cells for .NET** – Excel dosyalarını manipüle etmek için kullanacağımız kütüphane. NuGet üzerinden edinebilirsiniz: + +```bash +dotnet add package Aspose.Cells +``` + +- Pivot tablosunu zaten içeren bir kaynak çalışma kitabı (`Source.xlsx`) **A1:J20** aralığında (çoğaltacağımız aralık). +- C# sözdizimine temel aşinalık – karmaşık bir şey yok, sadece tipik `using` ifadeleri ve `Main` metodu. + +Eğer bunlardan herhangi biri size yabancı geliyorsa, bir an durup paketi kurun; rehberin geri kalan kısmı kütüphanenin hazır olduğunu varsayar. + +![Aspose.Cells kullanarak C#'ta pivot'i nasıl çoğaltacağının illüstrasyonu](https://example.com/duplicate-pivot.png "C#'ta pivot'i nasıl çoğaltırız illüstrasyonu") + +*Görsel alt metni: "C#'ta pivot'i nasıl çoğaltırız örneği, kaynak ve çoğaltılmış pivot satırlarını gösteriyor".* + +## Adım 1: Excel Çalışma Kitabını C# ile Yükleme – Dosyayı Açma + +**load excel workbook c#** yapmak istediğinizde ilk yapmanız gereken, dosyanıza işaret eden bir `Workbook` örneği oluşturmaktır. Bu nesne, dosya içindeki her çalışma sayfasına, hücreye ve pivot'a erişim sağlar. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Neden önemli:** +`Workbook`, tüm Excel dosyasını bellek içi bir modele dönüştürür. Önce yüklemezseniz pivotun konumunu inceleyemez veya satırları kopyalayamazsınız. Ayrıca, yapıcı (constructor) dosya formatını (XLS, XLSX, CSV vb.) otomatik olarak algılar, bu yüzden format algılaması için ekstra koda ihtiyaç duymazsınız. + +## Adım 2: How to Copy Rows – Pivot Alanını Tanımlama + +Şimdi çalışma kitabı bellekte olduğuna göre, Aspose.Cells'e pivotun hangi satırları içerdiğini söylememiz gerekiyor. Örneğimizde pivot **A1:J20** aralığında bulunuyor, bu da **0‑19** satırlarına (sıfır‑tabanlı indeksleme) denk geliyor. Bunu bir `CellArea` yapısı içinde saracağız. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Neden `CellArea` kullanıyoruz:** +Dikdörtgen bir bloğu tanımlamanın hafif bir yoludur. Daha sonra `CopyRows` metodunu çağırdığınızda, bu nesne hangi satırların çoğaltılacağını tam olarak bilir. Aralığı (örneğin pivot K sütununa genişlerse) ayarlamanız gerektiğinde sadece `endColumn` değerini değiştirmeniz yeterlidir. + +## Adım 3: Hedef Çalışma Sayfasına Erişim + +Çoğu çalışma kitabı tek bir sayfaya sahiptir, ancak API birden çok sayfa için aynı şekilde çalışır. İlk çalışma sayfasını (indeks 0) alın – orijinal pivot burada bulunur. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Pro ipucu:** +Adlandırılmış sayfalarınız varsa, onları isimle de alabilirsiniz: `workbook.Worksheets["Sheet1"]`. Bu, çalışma kitabı yapısı değiştiğinde indeksleri sabit kodlamaktan kaçınmanıza yardımcı olur. + +## Adım 4: How to Copy Rows – Pivot Tablosunu Çoğaltma + +İşte **how to duplicate pivot**'in kalbi: pivotu içeren satırları yeni bir konuma kopyalıyoruz. Bizim örneğimizde satır 31'den (sıfır‑tabanlı indeks 30) başlıyoruz. `CopyRows` metodu *hem* veriyi hem de altındaki pivot önbelleğini kopyalar, böylece yeni satırlar orijinali gibi davranır. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Arka planda ne oluyor?** +`CopyRows` her satırı klonlar, formülleri, stilleri ve pivot tanımlarını korur. Pivotun önbelleği çalışma kitabı seviyesinde bulunduğu için, çoğaltılan pivot otomatik olarak aynı veri kaynağını kullanır – ekstra bir yapılandırma gerekmez. + +**Köşe durum – gizli satırlar:** +Kaynak aralıktaki satırlar gizli ise, kopyalandıktan sonra da gizli kalırlar. Gizli satırları açmak isterseniz, kopyalama sonrası `worksheet.Rows[destRow].IsHidden = false` kodunu çalıştırın. + +## Adım 5: Çalışma Kitabını Kaydet – Kopyayı Doğrulama + +Son olarak değişiklikleri diske yazın. Orijinal dosyanın üzerine yazabilir ya da daha güvenli olması açısından yeni bir adla kaydedebilirsiniz; böylece önceki/sonraki halleri karşılaştırabilirsiniz. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Görmeniz gereken sonuç:** +`CopyWithPivot.xlsx` dosyasını açın. Orijinal pivot **A1:J20** aralığında ve aynı kopyası **A31:J50** aralığında bulunacak. Her iki pivot da bağımsız olarak yenilenebilir ve orijinale eklenmiş dilimleyiciler (slicers) kopya için de çalışmaya devam eder çünkü aynı önbelleği paylaşırlar. + +## Yaygın Sorular & Varyasyonlar + +### Birden fazla pivot'i aynı anda çoğaltabilir miyim? + +Kesinlikle. `worksheet.PivotTables` koleksiyonunu döngüye alıp her bir pivotun aralığını farklı bir hedefe kopyalayabilirsiniz. Tek yapmanız gereken hedef aralıkların çakışmadığından emin olmak. + +### Kaynak çalışma kitabı şifre korumalıysa ne olur? + +Aspose.Cells, şifreli bir dosyayı `Workbook` yapıcısına şifreyi geçirerek açmanıza izin verir: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Formülleri etkilemeden satırları nasıl kopyalarım? + +Sadece *değerleri* (formüller olmadan) istiyorsanız, `CopyRows` metodunu `CopyOptions` bayrağı ile kullanın: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Satırları *farklı* bir çalışma kitabına kopyalamanın bir yolu var mı? + +Evet. Kaynak sayfada satırları kopyaladıktan sonra, `targetWorkbook.Worksheets.AddCopy(worksheet)` ile çalışma sayfasını başka bir `Workbook` örneğine klonlayabilirsiniz. + +## Güvenilir Excel Otomasyonu Satır Kopyalama İçin Pro İpuçları + +- **Kopyalamadan önce aralığı doğrulayın**. Hızlı bir `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` kontrolü, aralık dışı hataları önler. +- **Kopyalama sırasında hesaplamayı kapatın**: `workbook.Settings.CalcMode = CalcMode.Manual;` – bu işlem süresini büyük ölçüde hızlandırır. +- **Nesneleri serbest bırakın** (`workbook.Dispose()`) eğer bir döngüde çok sayıda dosya işliyorsanız yerel kaynakları serbest bırakmak için. +- **İşlemi kaydedin** – özellikle üretim hatlarında – böylece hangi dosyaların işlendiğini izleyebilir ve hataları erken yakalayabilirsiniz. + +## Sonuç + +Artık **how to duplicate pivot** tablolarını C# kullanarak Aspose.Cells ile nasıl yapacağınızı biliyorsunuz ve **load excel workbook c#**'dan **excel automation copy rows**'a kadar tam bir iş akışı gördünüz. Örnek bağımsız, kutudan çıkar çıkmaz çalışır ve birden çok pivot, korumalı dosyalar veya çalışma kitabı arası kopyalama gibi senaryolar için genişletilebilir. + +Sonraki adımlar? Scripti şu şekillerde uyarlamayı deneyin: + +- Kopyalanan pivotu programlı olarak yenileyin (`pivotTable.RefreshData();`). +- Kopyalanan alanı sonraki işleme yönelik bir CSV'ye dışa aktarın. +- Kodu bir ASP.NET Core API'ye entegre edin, böylece kullanıcılar bir dosya yükleyebilir ve anında kopyalanmış pivot sürümünü alabilir. + +İyi kodlamalar, ve Excel otomasyonunuz her daim sorunsuz olsun! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/row-and-column-management/_index.md b/cells/turkish/net/row-and-column-management/_index.md index 8b95db5d73..bec2f89dd8 100644 --- a/cells/turkish/net/row-and-column-management/_index.md +++ b/cells/turkish/net/row-and-column-management/_index.md @@ -68,6 +68,8 @@ Aspose.Cells for .NET kullanarak bir Excel dosyasındaki bir sütunu nasıl sile Aspose.Cells for .NET ile Excel'de bir satırı nasıl sileceğinizi öğrenin. Bu adım adım kılavuz, ön koşulları, kod içe aktarımını ve sorunsuz veri işleme için ayrıntılı bir incelemeyi kapsar. ### [Aspose.Cells .NET'te Birden Fazla Satırı Sil](./delete-multiple-rows-aspose-cells/) Aspose.Cells for .NET kullanarak Excel'de birden fazla satırı silmeyi öğrenin. Bu ayrıntılı, adım adım kılavuz, geliştiriciler için ön koşulları, kodlama örneklerini ve SSS'leri kapsar. +### [Aspose.Cells ile Satırları Sil – Excel'de Başlık Satırını Korumak](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Aspose.Cells for .NET kullanarak Excel'de başlık satırını koruyarak satırları nasıl sileceğinizi adım adım öğrenin. ### [Aspose.Cells .NET'te Bir Sütun Ekleme](./insert-column-aspose-cells/) Aspose.Cells for .NET kullanarak Excel'e bir sütun eklemeyi öğrenin. Yeni bir sütunu sorunsuz bir şekilde eklemek için basit, adım adım kılavuzumuzu izleyin. .NET geliştiricileri için mükemmel. ### [Aspose.Cells .NET'te Bir Satır Ekleme](./insert-row-aspose-cells/) diff --git a/cells/turkish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/turkish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..90a65e6993 --- /dev/null +++ b/cells/turkish/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells ile başlık satırını koruyarak satırları silme. İlk tabloyu + nasıl alacağınızı ve C#'ta Excel tablo satırlarını güvenli bir şekilde nasıl sileceğinizi + öğrenin. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: tr +og_description: Aspose Cells başlık satırını koruyarak satırları siler. İlk tabloyu + nasıl alacağınızı ve C#'ta Excel tablo satırlarını güvenli bir şekilde nasıl sileceğinizi + öğrenin. +og_title: Aspose Cells Satırları Sil – Excel'de Başlık Satırını Koru +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Satırları Sil – Excel'de Başlık Satırını Koru +url: /tr/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Excel'de Başlık Satırını Korumak + +Hiç bir tablodan **aspose cells delete rows** yapmayı denediniz ve başlığın kaybolduğunu fark ettiniz mi? Bu, Excel sayfalarını programlı olarak manipüle ederken yaygın bir tuzaktır. Bu rehberde, **başlık satırını koruyan**, **ilk tabloyu almayı** gösteren ve yapıyı bozmadan **Excel tablo satırlarını silen** tam, çalıştırılabilir bir çözümü adım adım inceleyeceğiz. + +Çalışma kitabını yüklemekten başlık satırını yalnızca silmeye çalıştığınızda Aspose'un attığı istisnayı ele almaya kadar her şeyi kapsayacağız. Sonunda, Aspose.Cells kullanan herhangi bir .NET projesine ekleyebileceğiniz sağlam bir desen elde edeceksiniz. + +--- + +## What You’ll Need + +- **Aspose.Cells for .NET** (v23.12 veya daha yeni) – Office yüklü olmadan Excel dosyalarıyla çalışmanızı sağlayan kütüphane. +- Temel bir C# geliştirme ortamı (Visual Studio, Rider veya `dotnet` CLI). +- En az bir **ListObject** (Excel tablosu) ve ilk satırda bir başlık satırı bulunan bir Excel dosyası (`TableWithHeader.xlsx`). + +Aspose.Cells dışındaki ek NuGet paketlerine ihtiyaç yoktur. + +--- + +## Step 1: Load the Workbook and Retrieve the First Table + +İlk olarak çalışma kitabını açmalı ve değiştirmek istediğiniz tabloyu yakalamalısınız. İşte burada ikincil anahtar kelime **retrieve first table** devreye girer. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Why this matters:** +- `Workbook` dosyayı Excel yüklü olmadan okur. +- `worksheet.ListObjects[0]` **ilk tabloyu almanın** en basit yoludur; birden fazla tablonuz varsa yineleyebilir veya tablo adını kullanabilirsiniz. + +> **Pro tip:** Bir çalışma sayfasının gerçekten bir tablo içerip içermediğinden emin değilseniz, `IndexOutOfRangeException` almamak için önce `worksheet.ListObjects.Count` değerini kontrol edin. + +--- + +## Step 2: Protect Header Row While Deleting Rows + +Şimdi asıl konu: **aspose cells delete rows** yaparken başlığı silmemek. Aspose'un `DeleteRows` yöntemi sıfır‑tabanlı bir başlangıç indeksi ve bir adet sayısı alır. Başlığı (satır 0) silmeye çalışmak bir istisna oluşturur; bu da kaçınmak istediğimiz durumdur. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Explanation of the logic:** + +| Step | Reason | +|------|--------| +| `table.DeleteRows(1, 2);` | İndeks 1 **ikinci** satırı (ilk veri satırı) gösterir. İki satır silindiğinde Excel’de satır 2‑3 kaldırılır ve başlık (satır 1) dokunulmaz kalır. | +| `catch (Exception ex)` | Aspose, başlığı yalnız bırakacak bir işlem yapıldığında **yalnız** bir istisna fırlatır. Bunu yakalamak, uygulamanın çökmesini önleyip dostça bir mesaj kaydetmenizi sağlar. | +| `Save` | Değişiklikleri kalıcı hâle getirmek, `Result.xlsx` dosyasını açıp başlığın hâlâ mevcut olduğunu görmenizi sağlar. | + +> **What if you really need to delete the header?** +> Silmeden önce `table.ShowHeaders = false;` kullanın veya tüm tabloyu silip yeniden oluşturun. Ancak çoğu iş senaryosunda **başlık satırını korumak** isteyeceksiniz. + +--- + +## Step 3: Verify the Result – Expected Output + +Programı çalıştırdıktan sonra `Result.xlsx` dosyasını açın. Şunları görmelisiniz: + +- İlk satır hâlâ orijinal sütun başlıklarını içeriyor. +- Hedeflediğimiz 2‑3 satır (satır 2‑3) gitmiş ve kalan veriler yukarı kaymış. + +Konsol şu çıktıyı verir: + +``` +Rows deleted successfully. +``` + +Eğer yanlışlıkla başlığı silmeye çalıştıysanız (ör. `table.DeleteRows(0, 1);`), çıktı şöyle olur: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Bu mesaj, Aspose'un yerleşik koruma mekanizmasının çalıştığını doğrular. + +--- + +## Step 4: Alternative Ways to **Delete Excel Table Rows** + +Bazen daha fazla kontrol gerekir—örneğin bir koşula göre satır silmek ya da bitişik olmayan satırları kaldırmak. İşte başlığı güvende tutan iki hızlı desen. + +### 4.1 Delete Rows by Data Filter + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Bulk Delete Using a Range + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Her iki snippet de **başlık satırını koruma** kuralına uyar çünkü başlangıç indeksi asla 1’in altına düşmez. + +--- + +## Step 5: Common Pitfalls & How to Avoid Them + +| Pitfall | Why it Happens | Fix | +|---------|----------------|-----| +| Accidentally deleting the header | Using `0` as the start index | Always start at `1` for data rows, or check `table.ShowHeaders` first. | +| `IndexOutOfRangeException` when the sheet has no tables | Assuming a table exists | Verify `worksheet.ListObjects.Count > 0` before accessing `[0]`. | +| Changes not saved | Forgetting to call `Save` | Call `workbook.Save` after modifications. | +| Deleting rows in the middle shifts indices, causing skips | Forward iteration while deleting | Iterate **backwards** or collect rows to delete first. | + +--- + +## Step 6: Put It All Together – Full Working Example + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Bu programı çalıştırın, `Result.xlsx` dosyasını açın ve başlığın dokunulmaz, seçilen satırların ise silinmiş olduğunu görün. İşte **aspose cells delete rows** işlemini başlığı kaybetmeden yapmanız için **tam, bağımsız bir çözüm**. + +--- + +## Conclusion + +**aspose cells delete rows** yaparken **başlık satırını koruma**, **ilk tabloyu alma** ve **excel tablo satırlarını** güvenli bir şekilde silme yollarını gösterdik. Temel çıkarımlar: + +- Başlık satırını canlı tutmak için silmelere her zaman indeks 1’den başlayın. +- Aspose'un yerleşik koruma istisnasını yakalamak için `try/catch` kullanın. +- İşleme başlamadan önce tablonun varlığını doğrulayın ve koşullu silme yaparken geriye doğru yineleyin. + +Hazır mısınız? Bu yaklaşımı **Aspose Cells** stil API'leriyle birleştirerek silinen satırları vurgulayabilir, birden çok çalışma sayfasında otomatikleştirebilirsiniz. Olasılıklar sınırsız ve artık üzerine inşa edebileceğiniz güvenilir bir deseniniz var. + +Bu öğreticiyi faydalı bulduysanız beğenin, ekip arkadaşlarınızla paylaşın ya da kendi uç durum çözümlerinizi yorum olarak bırakın. Mutlu kodlamalar! + +--- + +![Aspose Cells Delete Rows Örneği – Başlık Satırı Korunmuş](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/turkish/net/saving-and-exporting-excel-files-with-options/_index.md index a290804221..6dc5a8dbdb 100644 --- a/cells/turkish/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/turkish/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Aspose.Cells kullanarak Excel dosyalarını .NET'te yüklerken uyarılarla nası Aspose.Cells for .NET'i adım adım talimatlarla kullanarak Excel dosyasında sürüm, yazar ve başlık gibi belge özelliklerinin programlı olarak nasıl belirleneceğini öğrenin. ### [Dışa Aktarma Sırasında Önde Gelen Boş Satır ve Sütunları Kesme](./trimming-leading-blank-rows-and-columns/) Aspose.Cells for .NET ile öndeki boş satırları ve sütunları kırparak CSV dışa aktarımlarınızı kolaylaştırın. Temiz veriler sadece birkaç adım ötede. +### [C#'ta Çalışma Kitabını Kaydetme – Tam Excel Otomasyon Rehberi](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Aspose.Cells for .NET ile C# içinde çalışma kitabını kaydetmeyi adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/turkish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..ef9c779a0b --- /dev/null +++ b/cells/turkish/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-22 +description: Aspose.Cells kullanarak C#'te çalışma kitabını nasıl kaydederiz—Excel'i + nasıl yükleyeceğinizi, sayfa oluşturmayı, sayfayı yeniden kullanmayı ve rapor oluşturmayı + kapsayan adım adım rehber. +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: tr +og_description: Aspose.Cells ile C#’ta çalışma kitabını nasıl kaydedilir. Tek bir + öğreticide Excel’i nasıl yükleyeceğinizi, sayfa oluşturmayı, sayfayı yeniden kullanmayı + ve rapor oluşturmayı öğrenin. +og_title: C#'de Çalışma Kitabını Kaydetme – Tam Excel Otomasyon Rehberi +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: C#'ta Çalışma Kitabını Kaydetme – Tam Excel Otomasyon Rehberi +url: /tr/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#'ta Çalışma Kitabını Kaydetme – Tam Excel Otomasyon Rehberi + +Veri işledikten sonra C#'ta **çalışma kitabını nasıl kaydedeceğinizi** hiç merak ettiniz mi? Yalnız değilsiniz. Çoğu geliştirici, rapor ekranda mükemmel göründüğünde ama diske yazmayı reddettiğinde bir duvara çarpar. Bu öğreticide, sadece **çalışma kitabını nasıl kaydedeceğinizi** göstermekle kalmayan, aynı zamanda **Excel'i nasıl yükleyeceğinizi**, **sayfa nasıl oluşturulur**, **sayfa nasıl yeniden kullanılır** ve **rapor nasıl oluşturulur** konularını da kapsayan tam özellikli bir örnek üzerinden ilerleyeceğiz—hepsi Aspose.Cells ile. + +Bunu, bir kahve molası sohbeti gibi düşünün; dizüstü bilgisayarımdan kodları çıkarıp her satırı açıklıyorum. Sonunda, bir şablonu yükleyen, SmartMarker aracılığıyla veri enjekte eden, mevcut bir detay sayfası adını yeniden kullanan ve sonunda dosyayı klasörünüze yazan çalıştırılabilir bir programınız olacak. Hiçbir gizem yok, sadece kopyalayıp‑yapıştırabileceğiniz net adımlar. + +## Gerekenler + +- **Aspose.Cells for .NET** (2026 itibarıyla en son sürüm). NuGet üzerinden `Install-Package Aspose.Cells` komutuyla edinebilirsiniz. +- Bir .NET geliştirme ortamı (Visual Studio, Rider veya C# uzantılı VS Code yeterli). +- `MasterTemplate.xlsx` adlı temel bir Excel şablon dosyası, kontrol ettiğiniz bir klasörde bulunmalı. +- Minimal C# bilgisi—daha önce bir `Console.WriteLine` yazdıysanız, hazırsınız. + +> **Pro tip:** Şablonunuzu ayrı bir *Resources* klasöründe tutun ve “Copy if newer” olarak işaretleyin; böylece yol derlemeler arasında tutarlı kalır. + +Şimdi, koda dalalım. + +## Adım 1: Excel'i Nasıl Yükleyeceksiniz – Şablon Çalışma Kitabını Açın + +İlk yapmanız gereken şey, çalışma kitabını belleğe almak. Aspose.Cells bunu tek satırda yapar, ancak nedenini anlamak, daha sonra sorun giderirken yardımcı olur. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Neden önemli:** Çalışma kitabını yüklemek, şablondaki her çalışma sayfasına, stile ve adlandırılmış aralığa erişim sağlar. Dosya bulunamazsa, Aspose bir `FileNotFoundException` fırlatır; bu yüzden yolu iki kez kontrol edin. +- **Köşe durumu:** Şablon şifre korumalıysa, şifreyi `Workbook` yapıcısına şu şekilde geçirin: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Adım 2: Sayfayı Yeniden Kullanma – SmartMarker Seçeneklerini Yapılandırma + +SmartMarker otomatik olarak yeni bir detay sayfası oluşturabilir, ancak zaten **Detail** adlı bir sayfanız olabilir. Çakışmayı önlemek için işlemciye bu adı yeniden kullanmasını söylüyoruz. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Neden önemli:** Bu seçenek olmadan Aspose sayfa adına sayısal bir ek (ör. “Detail1”) ekler; bu da sabit bir sayfa adı bekleyen makroları veya formülleri bozabilir. +- **Sayfa yoksa ne olur?** Aspose sizin için oluşturur—yani aynı kod, sayfa mevcut olsun ya da olmasın çalışır. + +## Adım 3: Sayfa Oluşturma – Veri Kaynağını Hazırlama + +Burada manuel olarak bir sayfa eklemiyoruz, ancak SmartMarker’a beslediğiniz veri, yeni bir sayfanın oluşturulup oluşturulmayacağını belirler. Basit bir anonim nesne oluşturalım; bu nesne bir sipariş listesini taklit edecek. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Neden önemli:** SmartMarker şablonda `&=Header` ve `&=Items.Id` gibi işaretçileri tarar. `orderData` yapısı bu işaretçilerle tam olarak eşleşmelidir, aksi takdirde işlemci onları sessizce atlar. +- **Varyasyon:** Veriyi bir veritabanından alıyorsanız, anonim tipi DTO listesi veya `DataTable` ile değiştirin. İşlemci her ikisini de destekler. + +## Adım 4: Rapor Oluşturma – SmartMarker İşleme + +Şimdi veriyi şablona bağlıyoruz. İşlemci ilk çalışma sayfasını dolaşır, işaretçileri değiştirir ve detay sayfasını oluşturur. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Neden önemli:** Bu tek satır, başlığı doldurur, `Items` üzerinden döner ve daha önce ayarladığımız `DetailSheetNewName` değerine saygı gösterir. +- **Sık sorulan soru:** *Birden fazla işaretçi içeren çalışma sayfam varsa ne yapmalıyım?* Her çalışma sayfasını döngüye alıp `SmartMarkerProcessor.Process` metodunu ayrı ayrı çağırın. + +## Adım 5: Çalışma Kitabını Kaydetme – Sonuç Dosyasını Kalıcı Hale Getirme + +Son olarak, değiştirilmiş çalışma kitabını diske yazıyoruz. İşte **çalışma kitabını nasıl kaydedeceğiniz** somut hâle geliyor. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Neden önemli:** `Save` metodu birçok formatı destekler (`.xlsx`, `.xls`, `.csv`, `.pdf` vb.). Varsayılan olarak bir Excel dosyası yazar, ancak bir `SaveOptions` nesnesi geçirerek çıktıyı değiştirebilirsiniz. +- **Köşe durumu:** Hedef dosya Excel’de açık ise, `Save` bir `IOException` fırlatır. Tüm Excel oturumlarını kapatın veya her çalıştırmada benzersiz bir dosya adı kullanın. + +![C#'ta Çalışma Kitabını Kaydetme örneği](/images/how-to-save-workbook-csharp.png "C#'ta Çalışma Kitabını Kaydetme – sürecin görsel özeti") + +### Tam Çalışan Örnek + +Her şeyi bir araya getirerek, derleyip çalıştırabileceğiniz bağımsız bir konsol uygulaması aşağıdadır: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Beklenen çıktı:** Çalıştırdıktan sonra `SmartMarkerWithDupDetail.xlsx` dosyasını `YOUR_DIRECTORY` içinde bulacaksınız. Açın ve şunları görmelisiniz: + +- Orijinal başlık “Orders” ile doldurulmuş. +- **Detail** adlı yeni (veya yeniden kullanılan) bir sayfa, iki satır içeriyor: `Id=1, Qty=5` ve `Id=2, Qty=3`. + +Eğer **Detail** sayfası zaten mevcutsa, içeriği yeni verilerle üzerine yazılır—dosyanızda ekstra sayfalar oluşmaz. + +## Sıkça Sorulan Sorular (SSS) + +| Soru | Cevap | +|------|-------| +| *PDF yerine XLSX olarak kaydedebilir miyim?* | Evet. `workbook.Save("file.xlsx")` ifadesini `workbook.Save("file.pdf", SaveFormat.Pdf);` ile değiştirin. | +| *Şablonumda birden fazla SmartMarker bölümü varsa ne yapmalıyım?* | İşaretçileri içeren her çalışma sayfasında `SmartMarkerProcessor.Process` metodunu çağırın veya her bölüme karşılık gelen veri nesnelerinin bir koleksiyonunu geçirin. | +| *Detail sayfasını üzerine yazmak yerine veriyi eklemek mümkün mü?* | `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` kullanın (daha yeni Aspose sürümlerinde mevcuttur). | +| *Workbook nesnesini dispose etmem gerekiyor mu?* | `Workbook` sınıfı `IDisposable` uygular. Temiz kaynak yönetimi için bir `using` bloğu içinde kullanın. | + +## Sonuç + +Başlangıçtan sona kadar **çalışma kitabını nasıl kaydedeceğinizi** C#’ta ele aldık, tüm süreci gösterdik: **Excel'i nasıl yükleyeceğinizi**, **sayfa nasıl oluşturulur** (SmartMarker aracılığıyla dolaylı olarak), **sayfa nasıl yeniden kullanılır** ve **rapor nasıl oluşturulur**. Kod, herhangi bir .NET projesine eklenmeye hazır ve açıklamalar, çok sayfalı raporlar, koşullu biçimlendirme veya PDF’ye dışa aktarma gibi daha karmaşık senaryolara uyarlamanız için yeterli bağlamı sağlıyor. + +Bir sonraki meydan okumaya hazır mısınız? Sipariş miktarlarını görselleştiren bir grafik ekleyin ya da çıktıyı CSV’ye dönüştürerek sonraki işlem adımlarına hazırlayın. Yükleme, işleme ve kaydetme prensipleri aynı kalır; bu kalıbı birçok raporlama görevinde tekrar kullanacağınızı göreceksiniz. + +Herhangi bir sorunla karşılaşırsanız veya geliştirme fikirleriniz varsa, yorum bırakmaktan çekinmeyin. İyi kodlamalar ve **çalışma kitabını kaydetme** deneyiminin sonunda sorunsuz bir şekilde istediğiniz gibi kaydedebilmenin keyfini çıkarın! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/smart-markers-dynamic-data/_index.md b/cells/turkish/net/smart-markers-dynamic-data/_index.md index cee288a9d1..f991874ef8 100644 --- a/cells/turkish/net/smart-markers-dynamic-data/_index.md +++ b/cells/turkish/net/smart-markers-dynamic-data/_index.md @@ -26,7 +26,7 @@ Bir rapordaki her hücre için benzersiz bir etiket istediğinizi düşünün. A Birden fazla sayfaya yayılmış büyük miktarda veri işliyorsanız, bu özellik oyunun kurallarını değiştirir. Aspose.Cells, birden fazla çalışma sayfasına verileri verimli bir şekilde otomatik olarak doldurmanızı sağlayarak veri yönetimini daha akıcı ve hızlı hale getirir. Verileri otomatik olarak doğru hücrelere aktararak iş akışlarını kolaylaştırabilirsiniz. [Devamını oku](./auto-populate-data-smart-markers/) ## Resim İşaretleyicileri ile Resim Ekleme -Görseller raporlara hayat katar! Aspose.Cells ile, Resim İşaretleyicileri kullanarak Excel dosyalarınıza resimler ekleyebilirsiniz. Görselleri doğrudan Excel hücrelerinizin içine nasıl entegre edeceğinizi öğrenin, izleyicilerinizi etkileyen daha bilgilendirici, görsel olarak çekici bir rapor oluşturun. [Devamını oku](./insert-images-smart-markers/) +Görseller raporlar ## Akıllı İşaretleyicilerde Dinamik Formülleri Kullanın Formüller hesaplamaları otomatikleştirebilir ve veri işlemeyi zahmetsiz hale getirebilir. Aspose.Cells ile Akıllı İşaretleyicilerde dinamik formüller kullanabilir ve yeni veriler eklendikçe hesaplamaların otomatik olarak güncellenmesini sağlayabilirsiniz. Bu özellik, değişen verilere sorunsuz bir şekilde uyum sağlayan raporlar oluşturmaya yardımcı olur, zamandan tasarruf sağlar ve doğruluğu artırır. [Devamını oku](./dynamic-formulas-smart-markers/) @@ -73,7 +73,7 @@ Aspose.Cells for .NET'te resim işaretleyicilerini kullanarak resim eklemeyi ad ### [Akıllı İşaretleyicilerle Anonim Türleri Kullanın Aspose.Cells](./use-anonymous-types-smart-markers/) .NET'te dinamik Excel rapor üretimi için Aspose.Cells'de akıllı işaretçilerle anonim türlerin nasıl kullanılacağını öğrenin. Kolay kılavuzumuzu takip edin. ### [Aspose.Cells Akıllı İşaretleyicilerinde Kopyalama Stili Özniteliğini Uygula](./copy-style-attribute-smart-markers/) -Aspose.Cells for .NET'in gücünü keşfedin ve Excel Smart Markers'da kopyalama stili özniteliklerini zahmetsizce nasıl uygulayacağınızı öğrenin. Bu kapsamlı eğitim adım adım talimatları kapsar. +Aspose.Cells for .NET'in gücünü keşfedin ve Excel Smart Markers'da kopyalama stil özniteliklerini zahmetsizce nasıl uygulayacağınızı öğrenin. Bu kapsamlı eğitim adım adım talimatları kapsar. ### [Akıllı İşaretleyici Alanında Formül Parametresini Kullanın Aspose.Cells](./formula-parameter-smart-marker/) Aspose.Cells for .NET ile akıllı işaretçilerde formül parametrelerini kullanmayı öğrenin. Kolayca dinamik elektronik tablolar oluşturun. ### [Akıllı İşaretleyicilerde Genel Listeyi Kullanın Aspose.Cells](./generic-list-smart-markers/) @@ -84,6 +84,8 @@ Dinamik Excel raporlarını zahmetsizce oluşturmak için Genel Listeler ve Akı Akıllı İşaretleyicileri adım adım bir kılavuzda kullanarak iç içe geçmiş nesneleri zahmetsizce işleyerek Aspose.Cells ile Excel raporlamasının potansiyelini ortaya çıkarın. ### [Akıllı İşaretleyiciler Aspose.Cells ile Değişken Dizisini Uygulayın](./variable-array-smart-markers/) Aspose.Cells'in gücünü açığa çıkarın. Kusursuz Excel rapor üretimi için Akıllı İşaretleyiciler ile değişken dizilerini adım adım nasıl uygulayacağınızı öğrenin. +### [C# ile Excel Raporu Oluşturma – SmartMarker Kullanarak Tam Kılavuz](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) +SmartMarker ile C# kullanarak dinamik Excel raporları oluşturmayı adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/turkish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..25836fccaa --- /dev/null +++ b/cells/turkish/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: C# ile master‑detail şablonu kullanarak Excel raporu nasıl oluşturulur. + SmartMarker'ı tekrar eden sayfalar için kullanarak Excel şablonunu C# ile hızlı + bir şekilde doldurmayı öğrenin. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: tr +og_description: C#'ta yeniden kullanılabilir bir şablon kullanarak Excel raporu nasıl + oluşturulur. Bu adım adım kılavuz, Excel şablonunu C# ile master‑detail verileriyle + nasıl dolduracağınızı gösterir. +og_title: C# ile Excel Raporu Oluşturma – Tam SmartMarker Eğitimi +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: C# ile Excel Raporu Nasıl Oluşturulur – SmartMarker Kullanarak Tam Kılavuz +url: /tr/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile Excel Raporu Nasıl Oluşturulur – SmartMarker Kullanarak Tam Kılavuz + +Hiç **C# ile Excel raporu oluşturmanın** hücre‑hücre kod yazmadan nasıl yapılacağını merak ettiniz mi? Tek başınıza değilsiniz. Çoğu geliştirici, siparişler ve satır öğeleri gibi master‑detail ilişkilerini yansıtan şık, çok‑sayfalı bir rapora ihtiyaç duyduğunda bir duvara çarpar—ama her seferinde tekerleği yeniden icat etmek istemezler. + +İyi haber? Hazır bir Excel şablonu ve Aspose.Cells'in **SmartMarker** motoru sayesinde, sadece birkaç satır kodla **populate Excel template C#** yapabilirsiniz. Bu öğreticide gerçek bir senaryoyu adım adım inceleyecek, her adımın neden önemli olduğunu açıklayacak ve bugün kopyalayıp‑yapıştırabileceğiniz tam, çalıştırılabilir bir örnek sunacağız. + +> **Elde edeceğiniz şey:** Her siparişin kendi çalışma sayfasını oluşturduğu, tamamen düz C# nesneleriyle yönlendirilen bir master‑detail Excel raporu. Hücreler üzerinde manuel döngü yok, kırılgan formüller yok—sadece temiz, sürdürülebilir kod. + +--- + +## Ön Koşullar + +Başlamadan önce şunların yüklü olduğundan emin olun: + +- **.NET 6.0** (veya daha yenisi) – kod .NET 6 hedefli ancak .NET Framework 4.7+ üzerinde de çalışır. +- **Aspose.Cells for .NET** NuGet paketi (`Install-Package Aspose.Cells`) – `Workbook`, `SmartMarkerProcessor` ve ilgili sınıfları sağlar. +- `YOUR_DIRECTORY` içinde **MasterDetailTemplate.xlsx** adlı bir Excel dosyası. İlk sayfada `{{Orders.OrderId}}` gibi bir SmartMarker bloğu ve satır öğeleri için iç içe `{{Orders.Items.Prod}}` bloğu bulunmalı. +- C# anonim tipleri hakkında temel bir anlayış – sipariş ve öğeleri modellemek için bunları kullanacağız. + +Eğer bunlardan biri size yabancı geliyorsa endişelenmeyin. Daha sonra (ör. EPPlus kullanımı) alternatiflerden bahsedeceğiz, ancak temel kavram aynı kalır. + +--- + +## Adım 1: SmartMarker Bloklarını İçeren Excel Şablonunu Yükleyin + +İlk yaptığımız şey şablon dosyasını açmak. Şablonu bir iskelet olarak düşünün; SmartMarker daha sonra gerçek verilerle bu iskeleti dolduracak. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Neden önemli:** Düzeni (şablon) veriden (C# nesneleri) ayırarak tasarımcıları ve geliştiricileri mutlu tutarsınız. Tasarımcılar kod dokunmadan yazı tiplerini, renkleri veya formülleri değiştirebilir. + +--- + +## Adım 2: Master‑Detail Veri Kaynağını Oluşturun + +Şimdi şablonu dolduracak veriyi yaratıyoruz. Tipik bir sipariş raporu için, her biri kendi öğe koleksiyonuna sahip bir sipariş koleksiyonunuz olur. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **İpucu:** Birden fazla rapor arasında yeniden kullanım gerekiyorsa anonim tipler yerine güçlü tipli sınıflar kullanın. Anonim yaklaşım örneği kısa tutar. + +**Neden önemli:** SmartMarker, şablondaki yer tutucularla (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) aynı ada sahip özellikleri eşleştirerek çalışır. Hiyerarşi tam olarak eşleşmezse motor bu bölümleri atlayacaktır. + +--- + +## Adım 3: SmartMarker'a Her Master Kaydı İçin Yeni Bir Sayfa Oluşturmasını Söyleyin + +Varsayılan olarak SmartMarker tüm satırları tek bir sayfaya yazar. Biz her siparişi kendi çalışma sayfasına istiyoruz; bu, daha sonra sipariş bazlı PDF'ler oluşturmak veya e‑posta ile göndermek için mükemmeldir. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Neden önemli:** `EnableRepeatingSheet` manuel sayfa kopyalama ihtiyacını ortadan kaldırır. Motor orijinal sayfayı kopyalar, sipariş verisini enjekte eder ve sayfayı otomatik olarak yeniden adlandırır (genellikle ilk sütun değerini kullanarak). + +--- + +## Adım 4: Şablonu Verinizle İşleyin + +Şimdi her şeyi bir araya getiriyoruz. `SmartMarkerProcessor`, çalışma kitabını dolaşır, etiketleri değiştirir ve talimat verildiği gibi yeni sayfalar oluşturur. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Neden önemli:** Bu tek satır, şablonu ayrıştırma, koleksiyonlar üzerinde yineleme ve iç içe tabloları işleme gibi ağır işleri yapar. **populate Excel template C#** işleminin kalbidir; manuel döngülere gerek kalmaz. + +--- + +## Adım 5: Oluşturulan Raporu Kaydedin + +Son olarak, doldurulmuş çalışma kitabını diske yazın. Web uygulamaları için doğrudan bir HTTP yanıtına da akıtabilirsiniz. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Neden önemli:** Dosyaya kaydetmek, Excel'de açabileceğiniz, paydaşlarla paylaşabileceğiniz veya PDF dönüşümü gibi sonraki süreçlere besleyebileceğiniz somut bir artefakt sağlar. + +--- + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda `using` yönergeleri ve bir `Main` metodu dahil olmak üzere tam program yer alıyor. Bir konsol uygulamasına yapıştırın, dosya yollarını ayarlayın ve çalıştırın. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Beklenen Çıktı + +`MasterDetailResult.xlsx` dosyasını açtığınızda şunları göreceksiniz: + +- **“Order_1” Sayfası** – Sipariş 1 başlığı ve ürün A ve B için iki satır içerir. +- **“Order_2” Sayfası** – Sipariş 2 başlığı ve ürün C için tek bir satır içerir. +- Orijinal şablondan gelen tüm formüller, biçimlendirmeler ve grafikler korunur. + +![Excel raporu, her sipariş için ayrı sayfalar – doldurulmuş çalışma kitabı örneği](/images/excel-report-example.png "Oluşturulan Excel raporu, master‑detail verileriyle") + +*Görsel alt metni: ayrı sayfalara sahip oluşturulmuş Excel raporu, C# ve SmartMarker kullanarak Excel raporu nasıl oluşturulur gösteriyor.* + +--- + +## Yaygın Sorular & Kenar Durumları + +### Statik bir sayfa (ör. özet) ihtiyacım olursa, yineleyen sayfalarla birlikte nasıl ekleyebilirim? + +`EnableRepeatingSheet = true` **yalnızca** master bloğu içeren çalışma sayfasında ayarlayın. Diğer sayfalar dokunulmadan kalır; böylece şablondaki özet sayfasını koruyabilirsiniz. + +### Anonim nesneler yerine bir DataTable kullanabilir miyim? + +Kesinlikle. SmartMarker, `IEnumerable` uygulayan herhangi bir nesneyle çalışır. Anonim tipi bir `DataTable` ile değiştirin ve sütun adlarının etiketlerle eşleştiğinden emin olun. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### Oluşturulan sayfaların adlandırma biçimini nasıl değiştiririm? + +Özel bir `ISmartMarkerSheetNaming` arayüzü uygulayın (veya işleme sonrasında `workbook.Worksheets` koleksiyonunu manipüle edin). Çoğu geliştirici, bir hücre değerine göre sayfaları yeniden adlandırır: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### Şablonum farklı bir yer tutucu sözdizimi kullanıyorsa ne yapmalıyım? + +SmartMarker, `SmartMarkerOptions` aracılığıyla özel ayırıcılar tanımlamaya izin verir. Örneğin, `{{ }}` yerine `<< >>` kullanmak için: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Bu Yaklaşımı Ölçeklendirmek İçin İpuçları + +- **Şablonu bellekte önbellekle**; her istek için birden çok rapor üretmeniz gerekiyorsa, diske her seferinde erişim gecikme ekler. +- **PDF dönüşümüyle birleştir** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) e‑posta dostu çıktılar için. +- **Dosya yollarını parametreleştir**; konfigürasyon dosyaları veya ortam değişkenleri kullanarak çözümü geliştirme, test ve üretim ortamları arasında taşınabilir kıl. +- **Veri katmanını ayrı birim testine tabi tut**; SmartMarker deterministiktir, bu yüzden sadece beslediğiniz verinin beklenen şemaya uyduğunu doğrulamanız yeterlidir. + +--- + +## Sonuç + +C# içinde **Excel raporu oluşturmanın** baştan sona tüm adımlarını, SmartMarker‑destekli bir şablonu yüklemekten çok sayfalı bir çalışma kitabı kaydetmeye kadar ele aldık. Sadece birkaç satır kodla **populate Excel template C#** yaparak kırılgan hücre‑hücre mantığından kaçınıyor ve tasarımcılara nihai görünümü şekillendirme özgürlüğü tanıyoruz. + +Sonraki adımlarda şunları keşfedebilirsiniz: + +- **populate Excel template C#** ile otomatik güncellenen grafikler. +- **excel smartmarker c#** kullanarak ASP.NET Core ile raporları doğrudan tarayıcılara akıtma. +- **c# excel automation** süreçlerini API'lerden veya veri tabanlarından veri çekerek otomatikleştirme. + +Deneyin, şablonu özelleştirin ve ham veriyi şık bir Excel raporuna nasıl hızlıca dönüştürebileceğinizi görün. Sorularınız veya ilginç bir kullanım senaryonuz varsa aşağıya yorum bırakın—mutlu kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/turkish/net/tables-and-lists/_index.md b/cells/turkish/net/tables-and-lists/_index.md index 47b1974ae7..dfd3ee4ed4 100644 --- a/cells/turkish/net/tables-and-lists/_index.md +++ b/cells/turkish/net/tables-and-lists/_index.md @@ -51,6 +51,8 @@ Aspose.Cells for .NET'i kullanarak Excel'de tabloları aralıklara kolayca dön .NET için Aspose.Cells'in gücünü açığa çıkarın. Bu ayrıntılı adım adım kılavuzda sorgu veri kaynaklarıyla tabloları okumayı ve yazmayı öğrenin. ### [Excel'de Tablo veya Listenin Yorumunu Ayarlama](./setting-comment-of-table-or-list/) Kolay adım adım kılavuzumuzla Aspose.Cells for .NET kullanarak Excel'de tablolara yorum eklemeyi öğrenin. +### [C# ile Excel Tablosu Oluşturma – Adım Adım Kılavuz](./create-excel-table-in-c-step-by-step-guide/) +Aspose.Cells for .NET kullanarak C# ile Excel'de tablo oluşturmayı adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/turkish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/turkish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..161372ac07 --- /dev/null +++ b/cells/turkish/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-22 +description: C#'ta Excel tablosunu hızlıca oluşturun. Tam bir kod örneğiyle tablo + eklemeyi, tablo aralığını tanımlamayı, tablo başlığını gizlemeyi ve tablo filtresini + devre dışı bırakmayı öğrenin. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: tr +og_description: C# ile net bir örnek üzerinden Excel tablosu oluşturun. Sadece birkaç + satırda tablo eklemeyi, tablo aralığını tanımlamayı, tablo başlığını gizlemeyi ve + filtreyi devre dışı bırakmayı öğrenin. +og_title: C#'de Excel Tablosu Oluşturma – Tam Programlama Rehberi +tags: +- Aspose.Cells +- C# +- Excel Automation +title: C#'de Excel Tablosu Oluşturma – Adım Adım Rehber +url: /tr/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile Excel Tablosu Oluşturma – Adım Adım Rehber + +C# kullanarak programlı bir şekilde **Excel tablosu oluşturma** ihtiyacınız oldu mu? Doğru adımları bildiğinizde bir Excel tablosu oluşturmak çok kolaydır. Bu öğreticide, **tablo ekleme**, **tablo aralığını tanımlama**, **tablo başlığını gizleme** ve hatta **tablo filtresini devre dışı bırakma** gibi işlemleri gösteren tam, çalıştırılabilir bir örnek üzerinden ilerleyeceğiz – tüm bunları IDE'nizden çıkmadan yapacaksınız. + +AutoFilter UI'sinin istemediğiniz zaman ortaya çıkmasıyla mücadele ettiyseniz, doğru yerdesiniz. Bu rehberin sonunda, *TableNoFilter.xlsx* adlı temiz bir çalışma kitabı üreten hazır‑çalıştır snippet'ine sahip olacaksınız ve her satırın neden önemli olduğunu anlayacaksınız. + +## Öğrenecekleriniz + +- Aspose.Cells ile sıfırdan **Excel tablosu oluşturma**. +- **Tablo aralığını tanımlama** (bizim örneğimizde A1:D5) için tam sözdizimi. +- Başlık satırını etkinleştirerek yerleşik filtre UI'sinin görünmesini sağlama. +- Artık ihtiyacınız kalmadığında **tablo başlığını gizleme** ve **tablo filtresini devre dışı bırakma** yöntemi. +- Bugün çalıştırabileceğiniz eksiksiz, kopyala‑yapıştır hazır C# programı. + +### Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.7+ ile de çalışır). +- NuGet üzerinden Aspose.Cells for .NET kurulumu (`Install-Package Aspose.Cells`). +- C# ve Visual Studio (veya tercih ettiğiniz herhangi bir IDE) konusunda temel bilgi. + +--- + +## Adım 1: Projeyi Oluşturun ve Namespace'leri İçe Aktarın + +**Excel tablosu oluşturma** işlemini yapabilmek için Aspose.Cells'i referans alan bir console projesine ihtiyacınız var. Terminali açın ve şu komutu çalıştırın: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Şimdi *Program.cs* dosyasını açın ve gerekli `using` ifadelerini ekleyin: + +```csharp +using System; +using Aspose.Cells; +``` + +Bu içe aktarmalar, öğreticideki geri kalan kısmın gücünü sağlayan `Workbook`, `Worksheet`, `CellArea` ve `ListObject` sınıflarına erişim sağlar. + +## Adım 2: Yeni Bir Workbook Başlatın ve İlk Worksheet'i Alın + +Yeni bir workbook oluşturmak mantıksal ilk adımdır. Workbook, Excel dosyasının konteyneri, worksheet ise tablomuzu yerleştireceğimiz bireysel sayfadır. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Neden önemli:** Yeni bir `Workbook` tek boş sayfa ile başlar. `Worksheets[0]`'ı çekerek, manuel olarak bir sayfa oluşturmak zorunda kalmadan varsayılan sayfada çalıştığımızı garantileriz. + +## Adım 3: Tablo Aralığını Tanımlayın (A1:D5) + +Excel terminolojisinde, bir *tablo* hücrelerin dikdörtgen bir bloğu içinde yer alır. `CellArea` yapısı bu bloğu belirlememizi sağlar. Burada **tablo aralığını tanımlama** işlemini A1’den D5’e kadar olan hücreler için yapacağız. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **İpucu:** Dinamik bir aralığa ihtiyacınız olursa, `endRow` ve `endColumn` değerlerini veri uzunluğuna göre hesaplayabilirsiniz. Sıfır‑tabanlı indeksleme, sıkça karşılaşılan bir off‑by‑one hatası kaynağıdır; sayılarınızı iki kez kontrol edin. + +## Adım 4: Tabloyu Ekleyin ve Başlık Satırını Etkinleştirin + +Şimdi öğreticinin kalbi: **worksheet'e tablo ekleme**. `ListObjects` koleksiyonu tabloları yönetir ve `ShowHeaders = true` ayarı otomatik olarak AutoFilter UI'sini ekler. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Açıklama:** +> - `Add(tableRange, true)` belirtilen aralık içinde yeni bir `ListObject` (yani bir Excel tablosu) oluşturur. +> - `true` bayrağı, Aspose.Cells'e aralığın ilk satırının başlık olarak ele alınması gerektiğini söyler. +> - `ShowHeaders` değerini `true` yapmak, başlığı görünür kılar ve yerleşik filtre UI'sini tetikler. + +Bu noktada, oluşturulan çalışma kitabını açtığınızda her sütun başlığında filtre okları bulunan güzel biçimlendirilmiş bir tablo göreceksiniz. + +## Adım 5: Başlık Satırını Gizleyin ve AutoFilter'ı Devre Dışı Bırakın + +Bazen veriyi UI kalabalığı olmadan istiyorsunuz. Belki de filtrelerin gereksiz olduğu temiz bir rapor dışa aktarıyorsunuz. İşte **tablo başlığını gizleme** ve **tablo filtresini devre dışı bırakma** tekniği: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Neden bunu yaparsınız:** +> - `ShowHeaders = false` görsel başlık satırını kaldırır, tabloyu düz bir veri bloğuna dönüştürür. +> - `AutoFilter = null` gizli filtre nesnesini temizler, kalan hiçbir filtre mantığı kalmaz. Bu, **tablo filtresini devre dışı bırakma** anlamına gelir. + +## Adım 6: Workbook'u Disk'e Kaydedin + +Son olarak, dosyayı istediğiniz bir konuma yazdırıyoruz. `"YOUR_DIRECTORY"` ifadesini makinenizdeki gerçek bir yol ile değiştirin. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Programı çalıştırdığınızda şu çıktıyı görmelisiniz: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Dosyayı açtığınızda başlık satırı ve filtre okları olmayan bir veri bloğu (A1:D5) göreceksiniz. İşte **Excel tablosu oluşturma**dan **tablo filtresini devre dışı bırakma**'ya kadar tam döngü tamamlandı. + +--- + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda, derlenmeye hazır tüm program yer alıyor. Yer tutucu dizini geçerli bir yol ile değiştirmeniz yeterli. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Beklenen sonuç:** *TableNoFilter.xlsx* adlı bir dosya, görünür başlık satırı ve filtre açılır menüsü olmadan A1:D5 aralığını içeren düz bir veri bloğu içerir. + +--- + +## Sık Sorulan Sorular & Kenar Durumları + +### Aynı worksheet içinde birden fazla tabloya ihtiyacım olursa ne yapmalıyım? + +Sadece **Adım 3**'ü yeni bir `CellArea` ve yeni bir `ListObject` ile tekrarlayın. Her tablo kendi başlık ve filtre ayarlarını tutar; birini gizleyebilir, diğerini görünür bırakabilirsiniz. + +### Başlığı gizlemeden önce tabloyu (şeritli satırlar, renkler) stillendirebilir miyim? + +Tabii ki. `ListObject` bir `TableStyleType` özelliği sunar. Örneğin: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +Stili **başlığı gizlemeden önce** uygulayabilirsiniz; görsel biçimlendirme yerinde kalır. + +### Başlığı tutup sadece filtre oklarını gizlemek istersem ne yapmalıyım? + +`ShowHeaders = true` (satırı tut) ve ardından filtreyi temizle: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +Bu, **tablo filtresini devre dışı bırakma** gereksinimini, sütun etiketlerini kaybetmeden karşılar. + +### Bu sadece .xlsx dosyaları için mi çalışıyor? + +Aspose.Cells, `Save` metoduna verdiğiniz dosya uzantısına göre formatı otomatik algılar. `.xls`, `.csv` ya da farklı bir uzantı ile `.pdf` gibi formatlara da çıktı alabilirsiniz. + +--- + +## Sonuç + +C# ve Aspose.Cells kullanarak **Excel tablosu oluşturma**, **tablo aralığını tanımlama**, **tablo başlığını gizleme** ve **tablo filtresini devre dışı bırakma** konularında ihtiyacınız olan her şeyi kapsadık. Kod kısa, anlaşılır ve üretim ortamında kullanılmaya hazır. + +Sonraki adımda, **dinamik veri ile tablo ekleme**, özel stiller uygulama ya da aynı workbook'u PDF olarak dışa aktarma gibi konuları keşfedebilirsiniz. Bu temeller üzerine deneyler yapmaktan ve snippet'i kendi projelerinize uyarlamaktan çekinmeyin. + +Paylaşmak istediğiniz bir farklılık var mı? Aşağıya yorum bırakın, mutlu kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/converting-excel-files-to-other-formats/_index.md b/cells/vietnamese/net/converting-excel-files-to-other-formats/_index.md index 4a064cfa75..5f6a898f83 100644 --- a/cells/vietnamese/net/converting-excel-files-to-other-formats/_index.md +++ b/cells/vietnamese/net/converting-excel-files-to-other-formats/_index.md @@ -44,29 +44,45 @@ Aspose.Cells for .NET đơn giản hóa việc chuyển đổi tài liệu, cho ## Hướng dẫn chuyển đổi tệp Excel sang các định dạng khác ### [Chuyển đổi CSV sang JSON theo chương trình trong .NET](./converting-csv-to-json/) Tìm hiểu cách chuyển đổi CSV sang JSON trong .NET bằng Aspose.Cells. Hướng dẫn từng bước để chuyển đổi dữ liệu với các ví dụ mã dễ làm theo. + ### [Chuyển đổi tệp Excel sang DOCX theo chương trình trong .NET](./converting-excel-file-to-docx/) Tìm hiểu cách chuyển đổi tệp Excel sang DOCX theo chương trình bằng Aspose.Cells cho .NET trong hướng dẫn từng bước này. Hoàn hảo để tạo báo cáo và chia sẻ dữ liệu. + ### [Chuyển đổi tệp Excel sang HTML bằng Tooltip trong .NET](./converting-excel-file-to-html-with-tooltip/) Chuyển đổi Excel sang HTML với chú giải công cụ bằng Aspose.Cells cho .NET trong vài bước đơn giản. Nâng cao ứng dụng web của bạn với dữ liệu Excel tương tác một cách dễ dàng. + ### [Chuyển đổi tệp Excel sang Markdown theo chương trình trong .NET](./converting-excel-file-to-markdown/) Tìm hiểu cách chuyển đổi tệp Excel sang định dạng Markdown bằng Aspose.Cells cho .NET trong hướng dẫn chi tiết từng bước này. Tăng năng suất với chuyển đổi tệp dễ dàng. + ### [Chuyển đổi tệp Excel sang PDF (A-1a) theo chương trình trong .NET](./converting-excel-file-to-pdf-a-1a/) Tìm hiểu cách chuyển đổi tệp Excel sang PDF/A-1a cho mục đích lưu trữ bằng Aspose.Cells cho .NET. Hướng dẫn từng bước có kèm ví dụ về mã. + ### [Chuyển đổi JSON sang CSV theo chương trình trong .NET](./converting-json-to-csv/) Tìm hiểu cách chuyển đổi JSON sang CSV theo chương trình trong .NET bằng Aspose.Cells. Làm theo hướng dẫn từng bước của chúng tôi để đảm bảo chuyển đổi dữ liệu liền mạch. + ### [Chuyển đổi tệp Excel sang PPTX theo chương trình trong .NET](./converting-excel-file-to-pptx/) Tìm hiểu cách chuyển đổi tệp Excel sang bản trình bày PowerPoint (PPTX) theo chương trình bằng Aspose.Cells cho .NET với hướng dẫn từng bước này. + ### [Chỉ định HTML CrossType trong chương trình HTML đầu ra trong .NET](./specifying-html-crosstype-in-output-html/) Tìm hiểu cách chỉ định HTML CrossType trong Aspose.Cells cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để chuyển đổi tệp Excel sang HTML một cách chính xác. + ### [Đọc bảng tính số theo chương trình trong .NET](./reading-numbers-spreadsheet/) Tìm hiểu cách đọc bảng tính Numbers và chuyển đổi chúng sang PDF bằng Aspose.Cells cho .NET trong hướng dẫn chi tiết này. + ### [Lưu sổ làm việc theo định dạng bảng tính Open XML nghiêm ngặt trong .NET](./saving-workbook-to-strict-open-xml-spreadsheet-format/) Tìm hiểu cách lưu bảng tính theo định dạng Strict Open XML Spreadsheet bằng Aspose.Cells cho .NET trong hướng dẫn chi tiết này. + ### [Theo dõi tiến trình chuyển đổi tài liệu theo chương trình trong .NET](./tracking-document-conversion-progress/) mô tả: Tìm hiểu cách theo dõi tiến trình chuyển đổi tài liệu theo chương trình bằng Aspose.Cells cho .NET trong hướng dẫn chi tiết này. + ### [Theo dõi tiến trình chuyển đổi tài liệu cho TIFF theo chương trình trong .NET](./tracking-document-conversion-progress-for-tiff/) Học cách theo dõi tiến trình chuyển đổi TIFF theo chương trình bằng Aspose.Cells cho .NET với hướng dẫn từng bước của chúng tôi. Nâng cao kỹ năng quản lý tài liệu của bạn. +### [Đặt khu vực in trong Excel và xuất sang PowerPoint – Hướng dẫn từng bước](./set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/) + +### [Xuất Excel sang PowerPoint – Hướng dẫn C# đầy đủ](./export-excel-to-powerpoint-complete-c-guide/) +Tìm hiểu cách xuất chương trình Excel sang bản trình chiếu PowerPoint bằng Aspose.Cells cho .NET với C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/cells/vietnamese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md b/cells/vietnamese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md new file mode 100644 index 0000000000..be02fd4597 --- /dev/null +++ b/cells/vietnamese/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-22 +description: Tìm hiểu cách xuất Excel sang PowerPoint, thiết lập vùng in trong Excel + và lưu Excel dưới dạng PPTX với biểu đồ có thể chỉnh sửa và các đối tượng OLE chỉ + trong vài bước. +draft: false +keywords: +- export excel to powerpoint +- set print area excel +- save excel as pptx +- editable charts PowerPoint +- OLE objects export +language: vi +og_description: Xuất Excel sang PowerPoint nhanh chóng. Hướng dẫn này chỉ cách thiết + lập vùng in trong Excel và lưu Excel dưới dạng PPTX với biểu đồ có thể chỉnh sửa + và các đối tượng OLE. +og_title: Xuất Excel sang PowerPoint – Hướng dẫn C# đầy đủ +tags: +- Aspose.Cells +- C# +- Office Automation +title: Xuất Excel sang PowerPoint – Hướng dẫn C# đầy đủ +url: /vi/net/converting-excel-files-to-other-formats/export-excel-to-powerpoint-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Xuất Excel sang PowerPoint – Hướng dẫn C# đầy đủ + +Cần **xuất Excel sang PowerPoint**? Bạn đã đến đúng nơi. Dù bạn đang tạo một bộ slide bán hàng hàng tuần hay tự động hoá quy trình báo cáo, việc chuyển một worksheet Excel thành một bộ slide PowerPoint có thể tiết kiệm hàng giờ công việc sao chép‑dán. + +Trong tutorial này chúng ta sẽ thực hành một ví dụ thực tế không chỉ **export excel to powerpoint**, mà còn chỉ cho bạn cách **set print area Excel** và **save excel as pptx** để các slide tạo ra giữ nguyên biểu đồ và đối tượng OLE có thể chỉnh sửa được. Khi hoàn thành, bạn sẽ có một chương trình C# sẵn sàng chạy, tạo ra file `.pptx` chuyên nghiệp mà không cần can thiệp thủ công. + +## Những gì bạn cần + +- **.NET 6+** (bất kỳ runtime .NET nào mới đều được; mã sử dụng cú pháp C# 10) +- **Aspose.Cells for .NET** – thư viện thực hiện việc xuất. Bạn có thể tải từ NuGet (`Install-Package Aspose.Cells`). +- Một workbook Excel chứa ít nhất một biểu đồ và/hoặc một đối tượng OLE (file mẫu `ChartAndOle.xlsx` được dùng trong mã). +- Một IDE yêu thích (Visual Studio, Rider, hoặc VS Code – tùy bạn). + +Đó là tất cả. Không cần COM interop, không cần cài đặt Office. + +> **Tại sao phải dùng thư viện?** +> Office Interop tích hợp sẵn rất dễ gãy, yêu cầu cài Office trên server, và thường tạo ra hình ảnh raster khi bạn thực sự muốn các hình dạng vector có thể chỉnh sửa. Aspose.Cells thực hiện công việc nặng và giữ mọi thứ có thể chỉnh sửa trong PowerPoint. + +--- + +## Bước 1: Tải Workbook Excel + +Đầu tiên chúng ta đưa file nguồn vào bộ nhớ. Lớp `Workbook` trừu tượng hoá toàn bộ file Excel, cho phép truy cập tới worksheets, charts và OLE objects. + +```csharp +using Aspose.Cells; + +try +{ + // Load the Excel file that contains the chart and OLE object. + // Adjust the path to point to your own workbook. + Workbook workbook = new Workbook(@"C:\MyProjects\ChartAndOle.xlsx"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load workbook: {ex.Message}"); + return; +} +``` + +**Tại sao điều này quan trọng:** Việc tải workbook là nền tảng. Nếu đường dẫn sai hoặc file bị hỏng, toàn bộ pipeline sẽ không chạy. Khối `try…catch` cung cấp thông báo lỗi thân thiện thay vì crash. + +--- + +## Bước 2: Đặt Print Area trong Excel + +Trước khi xuất, bạn thường muốn giới hạn đầu ra ở một vùng cụ thể. Đây là lúc **set print area excel** phát huy tác dụng. Bằng cách định nghĩa một print area, bạn nói với Aspose.Cells chính xác những ô (và các đối tượng liên quan) sẽ xuất hiện trên slide. + +```csharp +// Assuming we want to export only the range A1:H30 on the first worksheet. +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:H30"; +``` + +> **Mẹo chuyên nghiệp:** Nếu có nhiều worksheet, lặp lại việc gán `PrintArea` cho mỗi worksheet bạn định xuất. Nếu không đặt print area, toàn bộ sheet sẽ được xuất, làm tăng kích thước file PowerPoint. + +--- + +## Bước 3: Cấu hình tùy chọn xuất – Giữ biểu đồ & OLE có thể chỉnh sửa + +Aspose.Cells cung cấp đối tượng `ImageOrPrintOptions` phong phú. Bằng cách bật `ExportChartObjects` và `ExportOleObjects` chúng ta bảo tồn tính vector của biểu đồ và khả năng chỉnh sửa trực tiếp của các đối tượng OLE (như tài liệu Word hoặc PDF nhúng). + +```csharp +ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // We want a PPTX, not a PNG or PDF. + ExportChartObjects = true, // Charts stay editable in PowerPoint. + ExportOleObjects = true // OLE objects remain live (you can double‑click to edit). +}; +``` + +**Điều gì xảy ra phía sau?** +Khi `ExportChartObjects` là `true`, Aspose chuyển biểu đồ thành một shape biểu đồ PowerPoint gốc, giữ lại series, trục và định dạng. Khi `ExportOleObjects` được bật, các đối tượng nhúng được chèn dưới dạng khung OLE, vì vậy double‑click trong PowerPoint sẽ mở ứng dụng gốc (Word, Excel, …) để chỉnh sửa. + +--- + +## Bước 4: Lưu Worksheet thành file PowerPoint có thể chỉnh sửa + +Bây giờ chúng ta gộp mọi thứ lại. Phương thức `Save` ghi file `.pptx` sử dụng các tùy chọn đã cấu hình. Kết quả là một bộ slide trong đó mỗi worksheet trở thành một slide (hoặc một loạt slide nếu print area trải qua nhiều trang). + +```csharp +// Save the first worksheet as an editable PowerPoint presentation. +workbook.Save(@"C:\MyProjects\EditableChartOle.pptx", pptExportOptions); +Console.WriteLine("Export completed! Check EditableChartOle.pptx."); +``` + +### Kết quả mong đợi + +- **Vị trí file:** `C:\MyProjects\EditableChartOle.pptx` +- **Nội dung:** + - Một slide hiển thị vùng `A1:H30` chính xác như trong Excel. + - Tất cả biểu đồ là đối tượng biểu đồ PowerPoint — click vào cột và chỉnh sửa dữ liệu. + - Các đối tượng OLE (ví dụ: tài liệu Word nhúng) có thể mở và chỉnh sửa trực tiếp từ slide. + +Nếu bạn mở PPTX trong PowerPoint, sẽ thấy một slide sạch sẽ với các thành phần hoàn toàn có thể chỉnh sửa — không có ảnh raster. + +--- + +## Các trường hợp đặc biệt & Biến thể + +### Nhiều Worksheet → Nhiều Slide +Nếu bạn muốn mỗi worksheet trở thành một slide riêng, chỉ cần lặp qua `workbook.Worksheets` và gọi `Save` với `SheetToImageOptions` chỉ định chỉ số sheet cụ thể. Aspose sẽ tự động tạo một slide mới cho mỗi lần lặp. + +```csharp +for (int i = 0; i < workbook.Worksheets.Count; i++) +{ + ImageOrPrintOptions opts = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true, + OnePagePerSheet = true // Ensures each sheet starts on a new slide. + }; + workbook.Save($"Sheet{i + 1}.pptx", opts); +} +``` + +### Vùng lớn & Hiệu năng +Xuất một print area khổng lồ (ví dụ: `A1:Z1000`) có thể tăng mức sử dụng bộ nhớ. Để giảm thiểu, cân nhắc: +- Chia nhỏ vùng thành các đoạn nhỏ hơn và xuất chúng thành các slide riêng. +- Sử dụng `WorkbookSettings` để tăng `MemorySetting` nếu gặp `OutOfMemoryException`. + +### Vấn đề tương thích +PPTX được tạo hoạt động tốt với PowerPoint 2016 trở lên. Các phiên bản cũ hơn vẫn có thể mở file nhưng có thể mất một số tính năng biểu đồ nâng cao. Luôn kiểm tra trên phiên bản Office mục tiêu nếu bạn phân phối deck rộng rãi. + +--- + +## Ví dụ hoàn chỉnh (Sẵn sàng copy‑paste) + +```csharp +// --------------------------------------------------------------- +// Export Excel to PowerPoint – Complete C# Example +// --------------------------------------------------------------- + +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the workbook. + string excelPath = @"C:\MyProjects\ChartAndOle.xlsx"; + Workbook workbook; + try + { + workbook = new Workbook(excelPath); + } + catch (Exception ex) + { + Console.WriteLine($"Error loading Excel file: {ex.Message}"); + return; + } + + // 2️⃣ Set the print area (set print area excel). + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:H30"; + + // 3️⃣ Configure export options – keep charts & OLE objects editable. + ImageOrPrintOptions pptExportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportChartObjects = true, + ExportOleObjects = true + }; + + // 4️⃣ Save as PPTX (save excel as pptx). + string pptxPath = @"C:\MyProjects\EditableChartOle.pptx"; + try + { + workbook.Save(pptxPath, pptExportOptions); + Console.WriteLine($"Success! PPTX created at: {pptxPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save PPTX: {ex.Message}"); + } + } + } +} +``` + +> **Mẹo:** Thay các đường dẫn cứng bằng giá trị cấu hình hoặc đối số dòng lệnh để công cụ linh hoạt hơn. + +--- + +## Câu hỏi thường gặp + +**Hỏi:** Tôi có thể xuất chỉ một biểu đồ mà không cần các ô xung quanh không? +**Đáp:** Có. Chỉ bật `ExportChartObjects` và đặt print area cho phạm vi bao quanh biểu đồ. Biểu đồ sẽ xuất hiện ở giữa slide. + +**Hỏi:** Nếu workbook của tôi chứa macro thì sao? +**Đáp:** Aspose.Cells bỏ qua macro VBA khi xuất. Nếu bạn cần chức năng macro trong PowerPoint, sẽ phải tái tạo bằng VBA PowerPoint hoặc add‑in. + +**Hỏi:** Điều này có hoạt động trên Linux/macOS không? +**Đáp:** Hoàn toàn có. Aspose.Cells là thư viện .NET thuần; miễn là có runtime .NET, mã chạy đa nền tảng. + +--- + +## Kết luận + +Bạn vừa học cách **export Excel to PowerPoint** đồng thời **set print area excel** và **save excel as pptx** với các biểu đồ và đối tượng OLE có thể chỉnh sửa hoàn toàn. Các bước chính là tải workbook, định nghĩa print area, cấu hình `ImageOrPrintOptions`, và cuối cùng lưu PPTX. + +Từ đây bạn có thể khám phá: +- Xuất nhiều worksheet vào một deck duy nhất. +- Thêm tiêu đề slide hoặc ghi chú tùy chỉnh bằng code. +- Chuyển PPTX sang PDF để phân phối (dùng `SaveFormat.Pdf`). + +Hãy chạy thử code, điều chỉnh print area, và xem dữ liệu Excel của bạn hiện ra trong PowerPoint một cách tự động — không cần sao chép‑dán thủ công. Nếu gặp khó khăn, hãy tham khảo tài liệu Aspose.Cells hoặc để lại bình luận bên dưới. Chúc lập trình vui! + +![Diagram showing export excel to powerpoint workflow](/images/export-excel-to-powerpoint.png "export excel to powerpoint workflow") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md b/cells/vietnamese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md new file mode 100644 index 0000000000..c35963d73c --- /dev/null +++ b/cells/vietnamese/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-22 +description: Đặt vùng in trong Excel và chuyển đổi Excel sang PowerPoint với các hình + dạng có thể chỉnh sửa. Tìm hiểu cách lặp lại hàng tiêu đề, tạo PowerPoint từ Excel + và xuất Excel sang file pptx. +draft: false +keywords: +- set print area +- convert excel to powerpoint +- repeat title row +- create powerpoint from excel +- export excel to pptx +language: vi +og_description: Đặt vùng in trong Excel và chuyển nó thành một slide PowerPoint với + các hình dạng có thể chỉnh sửa. Hãy làm theo hướng dẫn đầy đủ này để lặp lại hàng + tiêu đề và xuất Excel sang PPTX. +og_title: Đặt khu vực in trong Excel – Hướng dẫn xuất sang PowerPoint +tags: +- Aspose.Cells +- C# +- Excel automation +- PowerPoint generation +title: Đặt vùng in trong Excel và xuất sang PowerPoint – Hướng dẫn từng bước +url: /vi/net/converting-excel-files-to-other-formats/set-print-area-in-excel-and-export-to-powerpoint-step-by-ste/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Đặt Vùng In trong Excel và Xuất ra PowerPoint – Hướng Dẫn Lập Trình Đầy Đủ + +Bạn đã bao giờ cần **đặt vùng in** trong một bảng tính Excel rồi chuyển phần đó thành một slide PowerPoint chưa? Bạn không phải là người duy nhất. Trong nhiều quy trình báo cáo, cùng một dữ liệu được in đẹp mắt cũng cần xuất hiện trong bản trình bày, thường với hàng đầu tiên được lặp lại làm tiêu đề. Tin tốt? Chỉ với vài dòng C# bạn có thể **convert excel to powerpoint**, giữ mọi textbox có thể chỉnh sửa, và thậm chí **repeat title row** một cách tự động. + +Trong hướng dẫn này, chúng ta sẽ đi qua mọi thứ bạn cần biết: từ cấu hình vùng in đến tạo file PPTX mà bạn có thể chỉnh sửa ngay trong PowerPoint. Khi hoàn thành, bạn sẽ có thể **create powerpoint from excel**, xuất kết quả dưới dạng **export excel to pptx**, và tái sử dụng cùng một đoạn mã trong bất kỳ dự án .NET nào. Không có phép màu, chỉ có các bước rõ ràng và một ví dụ đầy đủ, có thể chạy được. + +## Những Điều Bạn Cần Chuẩn Bị + +Trước khi bắt đầu, hãy chắc chắn rằng bạn có: + +- **.NET 6.0** hoặc mới hơn (API cũng hoạt động với .NET Framework) +- **Aspose.Cells for .NET** (thư viện cung cấp `Workbook`, `ImageOrPrintOptions`, v.v.) +- Một IDE C# cơ bản (Visual Studio, Rider, hoặc VS Code với extension C#) +- Một file Excel (`input.xlsx`) chứa dữ liệu bạn muốn xuất + +Đó là tất cả—không cần thêm bất kỳ gói NuGet nào ngoài Aspose.Cells. Nếu bạn chưa thêm thư viện, chạy: + +```bash +dotnet add package Aspose.Cells +``` + +Bây giờ chúng ta đã sẵn sàng. + +## Bước 1: Tải Workbook – Điểm Khởi Đầu cho Việc Xuất + +Điều đầu tiên bạn phải làm là tải workbook chứa sheet mà bạn muốn biến thành slide. Hãy nghĩ workbook như tài liệu nguồn; nếu không có nó, mọi thứ khác đều vô nghĩa. + +```csharp +using Aspose.Cells; + +// Load the workbook that contains the shapes and data +Workbook workbook = new Workbook(@"C:\MyProjects\ExcelToPpt\input.xlsx"); +``` + +**Tại sao lại quan trọng:** Việc tải workbook cho phép bạn truy cập vào bộ sưu tập worksheet, các tùy chọn page‑setup, và engine xuất. Nếu bỏ qua bước này, bạn sẽ không thể đặt **print area** hay lặp lại bất kỳ hàng nào. + +> **Pro tip:** Dùng đường dẫn tuyệt đối khi thử nghiệm, sau đó chuyển sang đường dẫn tương đối hoặc dựa trên cấu hình cho môi trường production. + +## Bước 2: Cấu Hình Các Tùy Chọn Xuất – Giữ Text Boxes và Shapes Có Thể Chỉnh Sửa + +Khi xuất sang PowerPoint, bạn có thể muốn slide kết quả vẫn có thể chỉnh sửa. Aspose.Cells cho phép bạn kiểm soát điều này bằng `ImageOrPrintOptions`. Đặt `ExportTextBoxes` và `ExportShapeObjects` thành `true` sẽ khiến thư viện giữ các đối tượng này dưới dạng phần tử PowerPoint gốc thay vì chuyển chúng thành hình ảnh. + +```csharp +// Configure export options for a PPTX slide +ImageOrPrintOptions exportOptions = new ImageOrPrintOptions +{ + SaveFormat = SaveFormat.Pptx, // The target format – crucial for PowerPoint + ExportTextBoxes = true, // Keep text boxes editable + ExportShapeObjects = true // Keep shape objects editable +}; +``` + +**Tại sao lại quan trọng:** Nếu bạn từng cần **convert excel to powerpoint** rồi chỉnh sửa slide thủ công, cài đặt này sẽ giúp bạn tránh việc phải tạo lại các textbox từ đầu. Nó cũng đảm bảo mọi shape (như mũi tên hay biểu đồ) vẫn ở dạng vector có thể thay đổi kích thước. + +## Bước 3: Đặt Vùng In và Lặp Lại Hàng Tiêu Đề + +Bây giờ chúng ta đến phần cốt lõi của tutorial: **set print area** và làm cho hàng đầu tiên lặp lại trên mỗi trang in (hoặc trong trường hợp của chúng ta, trên slide đã xuất). Vùng in cho Excel biết những ô nào sẽ được in—hoặc trong kịch bản này, sẽ được xuất. + +```csharp +// Define the area of the sheet to export (A1:G20) +Worksheet sheet = workbook.Worksheets[0]; +sheet.PageSetup.PrintArea = "A1:G20"; + +// Repeat the first row as a title on each printed page +sheet.PageSetup.PrintTitleRows = "$1:$1"; +``` + +**Tại sao lại quan trọng:** Bằng cách giới hạn xuất trong `A1:G20` bạn tránh việc kéo toàn bộ các vùng trống lớn, giúp quá trình chuyển đổi nhanh hơn và slide gọn gàng hơn. Dòng `PrintTitleRows` khiến hàng đầu tiên hoạt động như tiêu đề—đúng như bạn muốn khi **repeat title row** trong bản trình bày. + +> **Edge case:** Nếu dữ liệu của bạn bắt đầu từ hàng 2, hãy điều chỉnh phạm vi cho phù hợp (ví dụ, `PrintTitleRows = "$2:$2"`). + +## Bước 4: Lưu Worksheet dưới Dạng File PowerPoint + +Cuối cùng, chúng ta ghi slide ra đĩa. Phương thức `Save` nhận tên file đích và các tùy chọn đã cấu hình ở trên. Kết quả là một file PPTX với các textbox và shape có thể chỉnh sửa, sẵn sàng mở trong PowerPoint. + +```csharp +// Save the selected sheet as a PPTX file using the configured options +string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; +workbook.Save(outputPath, exportOptions); +``` + +**Bạn sẽ thấy gì:** Mở `SheetWithEditableShapes.pptx` trong PowerPoint. Hàng đầu tiên xuất hiện như tiêu đề, tất cả các ô từ `A1:G20` được render, và bất kỳ shape nào bạn đã thêm trong Excel vẫn có thể di chuyển và chỉnh sửa. Không có hình ảnh raster—chỉ các đối tượng PowerPoint gốc. + +## Ví Dụ Hoàn Chỉnh – Tất Cả Các Bước Kết Hợp + +Dưới đây là chương trình đầy đủ, sẵn sàng copy‑paste. Chạy nó như một console app hoặc nhúng vào bất kỳ giải pháp nào lớn hơn. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelToPowerPointDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Load the workbook + string inputPath = @"C:\MyProjects\ExcelToPpt\input.xlsx"; + Workbook workbook = new Workbook(inputPath); + + // Step 2: Set export options for editable PPTX + ImageOrPrintOptions exportOptions = new ImageOrPrintOptions + { + SaveFormat = SaveFormat.Pptx, + ExportTextBoxes = true, + ExportShapeObjects = true + }; + + // Step 3: Define print area and repeat title row + Worksheet sheet = workbook.Worksheets[0]; + sheet.PageSetup.PrintArea = "A1:G20"; + sheet.PageSetup.PrintTitleRows = "$1:$1"; + + // Step 4: Save as PowerPoint + string outputPath = @"C:\MyProjects\ExcelToPpt\SheetWithEditableShapes.pptx"; + workbook.Save(outputPath, exportOptions); + + Console.WriteLine($"Successfully exported to {outputPath}"); + } + } +} +``` + +**Kết quả mong đợi:** Sau khi chạy chương trình, console sẽ in thông báo thành công, và file PPTX sẽ xuất hiện ở vị trí đã chỉ định. Mở file sẽ thấy một slide duy nhất với phạm vi đã chọn, các textbox có thể chỉnh sửa, và mọi shape gốc. + +## Câu Hỏi Thường Gặp & Những Cạm Bẫy + +| Question | Answer | +|----------|--------| +| **Does this work with multiple worksheets?** | Yes. Loop through `workbook.Worksheets` and repeat the same steps for each sheet, changing the output filename each time. | +| **What if I need to export more than one slide?** | Call `workbook.Save` multiple times with different `ImageOrPrintOptions` objects, each configured with a different `PageSetup` if needed. | +| **Can I change the slide size?** | Use `exportOptions.ImageFormat` to set DPI, or adjust `sheet.PageSetup.PaperSize` before saving. | +| **Is Aspose.Cells free?** | It offers a free evaluation with watermarks. For production, a license is required. | +| **What about Excel formulas?** | The exported values are the **calculated results** at the time of export. If you need live formulas in PowerPoint, you’ll need a different approach. | + +## Mẹo Để Quy Trình Trơn Tru + +- **Pro tip:** Set `Workbook.Settings.CalcMode = CalculationModeType.Automatic` before export to guarantee all formulas are up‑to‑date. +- **Watch out for:** Very large ranges can cause memory pressure. Trim the print area to the smallest necessary range. +- **Performance tip:** Reuse a single `ImageOrPrintOptions` instance if you’re exporting many sheets; creating a new one each time adds overhead. +- **Version note:** The code above targets Aspose.Cells 23.10 (released November 2023). Later versions keep the same API, but always double‑check the release notes for breaking changes. + +## Kết Luận + +Chúng ta đã tìm hiểu cách **set print area** trong một worksheet Excel, lặp lại hàng đầu tiên làm tiêu đề, và sau đó **export excel to pptx** trong khi giữ các textbox và shape có thể chỉnh sửa. Nói tóm lại, bạn đã biết một cách đáng tin cậy để **convert excel to powerpoint**, **repeat title row**, và **create powerpoint from excel** chỉ với vài dòng C#. + +Sẵn sàng cho bước tiếp theo? Hãy thử tự động hoá việc chuyển đổi hàng loạt cho hàng chục báo cáo, hoặc thêm layout slide tùy chỉnh bằng PowerPoint SDK sau khi xuất. Không giới hạn—hãy thử nghiệm, phá vỡ, và tận hưởng sức mạnh của việc tạo tài liệu lập trình. + +Nếu bạn thấy tutorial này hữu ích, hãy chia sẻ, để lại bình luận với những tùy chỉnh của bạn, hoặc khám phá các hướng dẫn khác của chúng tôi về **export excel to pptx** và các chủ đề tự động hoá liên quan. Chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/csv-file-handling/_index.md b/cells/vietnamese/net/csv-file-handling/_index.md index 673cbdee32..a799dbe172 100644 --- a/cells/vietnamese/net/csv-file-handling/_index.md +++ b/cells/vietnamese/net/csv-file-handling/_index.md @@ -35,6 +35,8 @@ Hãy nghĩ về việc tổ chức một bữa tiệc—bạn cần biết có b Tìm hiểu cách mở tệp CSV bằng Aspose.Cells cho .NET với hướng dẫn từng bước toàn diện của chúng tôi. Làm chủ thao tác dữ liệu. ### [Mở tệp CSV bằng Preferred Parser](./csv-file-opening-csv-files-with-preferred-parser/) Tìm hiểu cách mở và phân tích cú pháp tệp CSV bằng trình phân tích cú pháp tùy chỉnh trong Aspose.Cells cho .NET. Xử lý văn bản và ngày tháng một cách dễ dàng. Hoàn hảo cho các nhà phát triển. +### [Lưu workbook dưới dạng CSV trong C# – Xuất Excel sang CSV](./save-workbook-as-csv-in-c-export-excel-to-csv/) +Hướng dẫn lưu workbook dưới dạng CSV trong C# bằng Aspose.Cells, chuyển đổi Excel sang tệp CSV một cách nhanh chóng. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md b/cells/vietnamese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md new file mode 100644 index 0000000000..8c8aedfe24 --- /dev/null +++ b/cells/vietnamese/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Lưu workbook dưới dạng CSV trong C# nhanh chóng. Tìm hiểu cách xuất Excel + sang CSV, thiết lập độ chính xác và chuyển đổi xlsx sang CSV với Aspose.Cells chỉ + trong vài dòng. +draft: false +keywords: +- save workbook as csv +- export excel to csv +- how to export csv +- how to set precision +- convert xlsx to csv +language: vi +og_description: Lưu workbook dưới dạng CSV trong C# nhanh chóng. Hướng dẫn này chỉ + cách xuất Excel sang CSV, thiết lập độ chính xác và chuyển đổi xlsx sang CSV bằng + Aspose.Cells. +og_title: Lưu sổ làm việc dưới dạng CSV trong C# – Xuất Excel sang CSV +tags: +- C# +- Aspose.Cells +- Excel +- CSV +title: Lưu sổ làm việc dưới dạng CSV trong C# – Xuất Excel sang CSV +url: /vi/net/csv-file-handling/save-workbook-as-csv-in-c-export-excel-to-csv/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu workbook dưới dạng CSV trong C# – Xuất Excel sang CSV + +Bạn đã bao giờ cần **save workbook as CSV** nhưng không chắc làm sao để giữ cho các số gọn gàng? Bạn không phải là người duy nhất. Trong nhiều kịch bản dữ liệu‑pipeline, chúng ta phải **export Excel to CSV** trong khi bảo toàn một số lượng chữ số có nghĩa nhất định, và thư viện Aspose.Cells làm cho việc này trở nên dễ dàng. + +Trong hướng dẫn này, bạn sẽ thấy một ví dụ hoàn chỉnh, sẵn sàng chạy mà **saves a workbook as CSV**, cho thấy *how to set precision*, và thậm chí giải thích *how to convert xlsx to CSV* cho các dự án thực tế. Không có những tham chiếu mơ hồ—chỉ có mã bạn có thể sao chép, dán và chạy ngay hôm nay. + +## Những gì bạn sẽ học + +- Các bước chính xác để **save workbook as CSV** với cài đặt độ chính xác tùy chỉnh. +- Cách **export Excel to CSV** bằng cách sử dụng `CsvSaveOptions` và lý do tại sao thuộc tính `SignificantDigits` quan trọng. +- Các biến thể cho nhu cầu độ chính xác khác nhau và các lỗi thường gặp khi xử lý số lớn. +- Một cái nhìn nhanh về việc chuyển đổi tệp `.xlsx` sang `.csv` mà không mất tính toàn vẹn dữ liệu. + +### Yêu cầu trước + +- .NET 6.0 hoặc mới hơn (mã này cũng hoạt động trên .NET Framework 4.6+). +- Gói NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`). +- Kiến thức cơ bản về C# và I/O tệp. + +Nếu bạn đã có những thứ này, hãy bắt đầu. + +![save workbook as csv example](image.png "save workbook as csv example") + +## Lưu workbook dưới dạng CSV – Hướng dẫn từng bước + +Dưới đây là chương trình đầy đủ. Mỗi dòng đều có chú thích để bạn có thể thấy *tại sao* mỗi phần tồn tại, không chỉ *cái gì* nó làm. + +```csharp +// ------------------------------------------------------------ +// 1️⃣ Load the workbook from an existing .xlsx file +// ------------------------------------------------------------ +using Aspose.Cells; // Aspose.Cells provides Workbook, Worksheet, CsvSaveOptions, etc. +using System; // For basic .NET types +using System.IO; // For path handling (optional but handy) + +class Program +{ + static void Main() + { + // Adjust these paths to match your environment + string sourcePath = @"YOUR_DIRECTORY\Numbers.xlsx"; + string targetPath = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // Load the Excel file into a Workbook object. + // This step automatically parses all worksheets, styles, and formulas. + Workbook workbook = new Workbook(sourcePath); + + // ------------------------------------------------------------ + // 2️⃣ (Optional) Grab the first worksheet if you need to manipulate it + // ------------------------------------------------------------ + Worksheet firstSheet = workbook.Worksheets[0]; + + // Example: you could change a cell value here before exporting. + // firstSheet.Cells["A1"].PutValue("Header"); // Uncomment if needed + + // ------------------------------------------------------------ + // 3️⃣ Configure CSV save options – here we set 4 significant digits + // ------------------------------------------------------------ + CsvSaveOptions csvOptions = new CsvSaveOptions + { + // SignificantDigits tells Aspose.Cells how many meaningful digits + // to keep for floating‑point numbers. Values beyond this are rounded. + SignificantDigits = 4, + + // Optional: you can also control delimiter, encoding, etc. + // Delimiter = ',', // default is comma + // Encoding = Encoding.UTF8 + }; + + // ------------------------------------------------------------ + // 4️⃣ Save the workbook as CSV using the configured options + // ------------------------------------------------------------ + workbook.Save(targetPath, csvOptions); + + Console.WriteLine($"✅ Workbook successfully saved as CSV at: {targetPath}"); + } +} +``` + +### Tại sao sử dụng `CsvSaveOptions.SignificantDigits`? + +Khi bạn **how to set precision** cho việc xuất CSV, bạn thực sự đang quyết định bao nhiêu chữ số của một số dấu phẩy động sẽ được giữ lại sau khi chuyển đổi. Excel lưu trữ số với độ chính xác lên tới 15 chữ số, nhưng hầu hết các hệ thống hạ nguồn (cơ sở dữ liệu, pipeline phân tích) chỉ cần một vài. Bằng cách đặt `SignificantDigits = 4`, thư viện sẽ làm tròn `123.456789` thành `123.5`, giữ cho tệp gọn gàng và dễ đọc. + +> **Mẹo chuyên nghiệp:** Nếu bạn cần giá trị *exact* (ví dụ, cho dữ liệu tài chính), hãy đặt `SignificantDigits` thành số lớn hơn hoặc bỏ qua hoàn toàn. Mặc định là 15, phản ánh độ chính xác nội bộ của Excel. + +## Xuất Excel sang CSV – Các biến thể phổ biến + +### Thay đổi ký tự phân cách + +Một số hệ thống mong đợi dấu chấm phẩy (`;`) thay vì dấu phẩy. Bạn có thể điều chỉnh như sau: + +```csharp +csvOptions.Delimiter = ';'; +``` + +### Xuất một Worksheet cụ thể + +Nếu bạn chỉ muốn xuất sheet thứ hai, thay thế khối tùy chọn bằng: + +```csharp +Worksheet sheetToExport = workbook.Worksheets[1]; +workbook.Worksheets.Clear(); // Remove all sheets +workbook.Worksheets.AddCopy(sheetToExport); // Add only the chosen sheet +``` + +Sau đó gọi `workbook.Save` như trước. Kỹ thuật này hữu ích khi bạn **convert xlsx to csv** nhưng chỉ quan tâm đến một tab cụ thể. + +### Xử lý bộ dữ liệu lớn + +Khi làm việc với hàng triệu dòng, hãy cân nhắc truyền trực tiếp CSV thay vì tải toàn bộ workbook vào bộ nhớ. Aspose.Cells cung cấp thuộc tính `CsvSaveOptions` `ExportDataOnly` giúp bỏ qua thông tin kiểu dáng, giảm tải bộ nhớ: + +```csharp +csvOptions.ExportDataOnly = true; +``` + +## Cách xuất CSV – Xác minh kết quả + +Sau khi chạy chương trình, mở `Numbers_4sd.csv` trong trình soạn thảo văn bản thuần. Bạn sẽ thấy một thứ gì đó như sau: + +``` +ID,Value,Description +1,123.5,Sample A +2,0.9876,Sample B +3,45.67,Sample C +``` + +Chú ý cách các số được giới hạn ở bốn chữ số có nghĩa, chính xác như chúng ta yêu cầu. Nếu bạn mở tệp trong Excel, các giá trị sẽ hiển thị giống hệt vì Excel tôn trọng việc làm tròn đã được áp dụng trong quá trình xuất. + +## Các trường hợp đặc biệt & Khắc phục sự cố + +| Situation | What to Check | Fix | +|-----------|---------------|-----| +| **File not found** | Xác minh `sourcePath` trỏ tới một tệp `.xlsx` thực sự. | Sử dụng `Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Numbers.xlsx")`. | +| **Incorrect rounding** | Đảm bảo `SignificantDigits` được đặt trước khi gọi `Save`. | Di chuyển việc gán `CsvSaveOptions` lên trước hoặc kiểm tra lại giá trị. | +| **Special characters appear as �** | Mã hoá CSV mặc định là UTF‑8 không có BOM. | Đặt `csvOptions.Encoding = System.Text.Encoding.UTF8` hoặc `Encoding.Unicode`. | +| **Extra empty columns** | Một số worksheet có định dạng dư thừa ngoài phạm vi đã sử dụng. | Gọi `worksheet.Cells.MaxDisplayRange` để cắt bỏ các cột không dùng trước khi xuất. | + +## Cách đặt độ chính xác một cách động + +Đôi khi độ chính xác cần thiết không được biết tại thời gian biên dịch. Bạn có thể đọc nó từ tệp cấu hình hoặc đối số dòng lệnh: + +```csharp +int precision = int.Parse(args.Length > 0 ? args[0] : "4"); +csvOptions.SignificantDigits = precision; +``` + +bây giờ bạn có thể chạy: + +``` +dotnet run -- 6 +``` + +và nhận được một CSV với sáu chữ số có nghĩa. Thay đổi nhỏ này làm cho giải pháp linh hoạt cho **how to export csv** trong các môi trường khác nhau. + +## Tóm tắt ví dụ làm việc đầy đủ + +Kết hợp tất cả lại, chương trình hoàn chỉnh (bao gồm các tùy chỉnh tùy chọn) trông như sau: + +```csharp +using Aspose.Cells; +using System; +using System.IO; +using System.Text; + +class CsvExporter +{ + static void Main(string[] args) + { + // ----------------------------------------------------------------- + // Configuration – change these paths as needed + // ----------------------------------------------------------------- + string source = @"YOUR_DIRECTORY\Numbers.xlsx"; + string dest = @"YOUR_DIRECTORY\Numbers_4sd.csv"; + + // ----------------------------------------------------------------- + // Load workbook + // ----------------------------------------------------------------- + Workbook wb = new Workbook(source); + + // ----------------------------------------------------------------- + // Optional: work with a specific worksheet + // ----------------------------------------------------------------- + Worksheet ws = wb.Worksheets[0]; // first sheet + // ws.Cells["B2"].PutValue(42); // example modification + + // ----------------------------------------------------------------- + // Prepare CSV options – precision can be passed via args + // ----------------------------------------------------------------- + int precision = args.Length > 0 ? int.Parse(args[0]) : 4; + + CsvSaveOptions opts = new CsvSaveOptions + { + SignificantDigits = precision, + Delimiter = ',', // change if you need ';' + Encoding = Encoding.UTF8, + ExportDataOnly = true // speeds up large exports + }; + + // ----------------------------------------------------------------- + // Save as CSV + // ----------------------------------------------------------------- + wb.Save(dest, opts); + + Console.WriteLine($"✅ Saved workbook as CSV ({precision} digits) to {dest}"); + } +} +``` + +Chạy chương trình, mở CSV đã tạo, và bạn sẽ thấy độ chính xác bạn yêu cầu, xác nhận rằng bạn đã thành công **saved workbook as CSV**. + +## Kết luận + +Bây giờ bạn đã có một công thức vững chắc, sẵn sàng cho sản xuất để **saving a workbook as CSV** trong C#. Hướng dẫn đã bao gồm *how to export Excel to CSV*, trình bày *how to set precision* qua `CsvSaveOptions.SignificantDigits`, và cho thấy một số biến thể cho các kịch bản **convert xlsx to csv**. Với đoạn mã đầy đủ, bạn có thể chèn nó vào bất kỳ dự án .NET nào và bắt đầu xuất dữ liệu ngay lập tức. + +**What’s next?** + +- Thử nghiệm với các ký tự phân cách khác nhau (`;`, `\t`) cho việc xuất TSV. +- Kết hợp cách tiếp cận này với một file‑watcher để tự động tạo CSV mỗi khi tệp Excel thay đổi. +- Khám phá `CsvLoadOptions` của Aspose.Cells nếu bạn cần đọc lại CSV vào workbook. + +Hãy tự do điều chỉnh độ chính xác, thêm tiêu đề tùy chỉnh, hoặc kết nối bộ xuất + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/document-properties/_index.md b/cells/vietnamese/net/document-properties/_index.md index 5116804311..846a5b065a 100644 --- a/cells/vietnamese/net/document-properties/_index.md +++ b/cells/vietnamese/net/document-properties/_index.md @@ -20,7 +20,7 @@ Thuộc tính tài liệu trong Excel hoạt động giống như siêu dữ liệu về tệp của bạn. Hãy hình dung thế này: mỗi tệp Excel có thẻ nhận dạng riêng chứa thông tin quan trọng như tiêu đề, tác giả và từ khóa. Khi sử dụng Aspose.Cells cho .NET, việc truy cập và quản lý các thuộc tính này trở nên dễ dàng. Hãy nhớ rằng, các thuộc tính này không chỉ giúp bạn sắp xếp các tệp của mình mà còn có thể tăng cường khả năng tìm kiếm tài liệu của bạn. Bạn có tò mò không? Hãy cùng tìm hiểu hướng dẫn nhé! ## Truy cập Thuộc tính Tài liệu -Đầu tiên, chúng ta hãy nói về việc truy cập các thuộc tính tài liệu trong .NET. Đây là điểm khởi đầu của bạn. Hãy tưởng tượng bạn muốn biết ai là tác giả của một bảng tính cụ thể—sử dụng Aspose.Cells, bạn có thể lấy thông tin này một cách nhanh chóng. [Truy cập Thuộc tính Tài liệu trong .NET](./accessing-document-properties/) tutorial là hướng dẫn dành cho bạn, cung cấp hướng dẫn thân thiện với người dùng để tìm những viên ngọc ẩn này trong các tệp của bạn. Bạn sẽ học cách lấy các thuộc tính như ngày tạo và ngày sửa đổi cuối cùng, và tin tôi đi, nó đơn giản hơn cả sáng Chủ Nhật! +Đầu tiên, chúng ta hãy nói về việc truy cập các thuộc tính tài liệu trong .NET. Đây là điểm khởi đầu của bạn. Hãy tưởng tượng bạn muốn biết ai là tác giả của một bảng tính cụ thể—sử dụng Aspose.Cells, bạn có thể lấy thông tin này một cách nhanh chóng. [Truy cập Thuộc Tính Tài liệu trong .NET](./accessing-document-properties/) tutorial là hướng dẫn dành cho bạn, cung cấp hướng dẫn thân thiện với người dùng để tìm những viên ngọc ẩn này trong các tệp của bạn. Bạn sẽ học cách lấy các thuộc tính như ngày tạo và ngày sửa đổi cuối cùng, và tin tôi đi, nó đơn giản hơn cả sáng Chủ Nhật! ## Thêm Thuộc tính Tài liệu Bây giờ bạn có thể truy cập vào các thuộc tính hiện có, vậy nếu bạn muốn thêm thuộc tính của riêng mình thì sao? Đây chính là lúc sự sáng tạo xuất hiện! Bạn có thể muốn gắn thẻ các tệp Excel của mình bằng tên dự án hoặc các chi tiết có liên quan khác. Bằng cách làm theo [Thêm Thuộc tính Tài liệu trong .NET](./adding-document-properties/) hướng dẫn, bạn sẽ khám phá cách làm phong phú tài liệu của mình bằng các thuộc tính tùy chỉnh. Giống như việc mang đến cho các tệp của bạn một nét cá nhân! Hãy nghĩ về việc trang trí nhà của bạn; bạn càng thêm nhiều nét độc đáo, nó càng phản ánh rõ cá tính của bạn. @@ -29,12 +29,14 @@ Bây giờ bạn có thể truy cập vào các thuộc tính hiện có, vậy Bạn đã bao giờ cần thông tin cụ thể từ một tệp Excel và cảm thấy lạc lõng giữa vô số trang tính chưa? [Truy cập giá trị của thuộc tính tài liệu trong .NET](./accessing-value-of-document-properties/) hướng dẫn giải quyết vấn đề này bằng cách hướng dẫn bạn cách trích xuất hiệu quả những thông tin giá trị này. Bạn sẽ được hướng dẫn qua các phương pháp truy xuất các giá trị thuộc tính cụ thể để bạn không phải đào bới dữ liệu theo cách thủ công. Hướng dẫn này hoàn hảo cho những lúc bạn đang vội hoặc phải xử lý nhiều tệp—hãy nghĩ đến việc có một trợ lý cá nhân biết chính xác vị trí tìm dữ liệu trong tài liệu của bạn. ## Hướng dẫn Thuộc tính Tài liệu -### [Truy cập Thuộc tính Tài liệu trong .NET](./accessing-document-properties/) +### [Truy cập Thuộc Tài liệu trong .NET](./accessing-document-properties/) Tìm hiểu cách truy cập các thuộc tính tài liệu trong Excel bằng Aspose.Cells cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để thao tác Excel hiệu quả. ### [Truy cập giá trị của thuộc tính tài liệu trong .NET](./accessing-value-of-document-properties/) Tìm hiểu cách truy cập thuộc tính tài liệu trong Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước của chúng tôi. Quản lý bảng tính của bạn một cách hiệu quả. -### [Thêm Thuộc tính Tài liệu trong .NET](./adding-document-properties/) +### [Thêm Thuộc Tài liệu trong .NET](./adding-document-properties/) Tìm hiểu cách thêm thuộc tính tài liệu vào Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước chi tiết này. +### [Tạo Workbook Excel – Thêm Thuộc tính Tùy chỉnh và Lưu dưới dạng XLSB](./create-excel-workbook-add-custom-properties-and-save-as-xlsb/) +Hướng dẫn tạo workbook Excel, thêm các thuộc tính tùy chỉnh và lưu dưới định dạng XLSB bằng Aspose.Cells cho .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md b/cells/vietnamese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md new file mode 100644 index 0000000000..713bb0a9e2 --- /dev/null +++ b/cells/vietnamese/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Tạo sổ làm việc Excel, thêm thuộc tính tùy chỉnh, đặt tên bảng tính và + lưu dưới dạng tệp nhị phân XLSB bằng C#. +draft: false +keywords: +- create excel workbook +- add custom properties +- save as xlsb +- set worksheet name +- write binary excel file +language: vi +og_description: Tạo workbook Excel, thêm thuộc tính tùy chỉnh, đặt tên worksheet và + lưu dưới dạng tệp nhị phân XLSB bằng C#. +og_title: Tạo sổ làm việc Excel – Thêm thuộc tính tùy chỉnh và lưu dưới dạng XLSB +tags: +- C# +- Aspose.Cells +- Excel automation +title: Tạo Sổ làm việc Excel – Thêm Thuộc tính tùy chỉnh và Lưu dưới dạng XLSB +url: /vi/net/document-properties/create-excel-workbook-add-custom-properties-and-save-as-xlsb/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo Workbook Excel – Thêm Thuộc Tính Tùy Chỉnh và Lưu dưới dạng XLSB + +Bạn đã bao giờ cần **tạo workbook Excel** một cách lập trình nhưng cũng muốn giữ một số siêu dữ liệu gắn liền? Có thể bạn đang xây dựng một engine báo cáo gắn thẻ mỗi tệp với ID báo cáo, tên tác giả, hoặc số phiên bản. Trong trường hợp đó, việc học cách **thêm thuộc tính tùy chỉnh** trong khi **đặt tên worksheet** và cuối cùng **lưu dưới dạng XLSB** sẽ giúp bạn tiết kiệm rất nhiều công việc xử lý thủ công. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ hoàn chỉnh, có thể chạy được, cho thấy cách **ghi tệp Excel nhị phân** bằng C#. Bạn sẽ thấy tại sao định dạng XLSB là lựa chọn phù hợp để truyền tải các thuộc tính tùy chỉnh, cách tránh những lỗi thường gặp nhất, và cách xử lý nếu cần hỗ trợ các phiên bản Excel cũ hơn. + +--- + +## Những gì bạn cần + +- **.NET 6+** (hoặc .NET Framework 4.6+). Mã nguồn hoạt động trên bất kỳ runtime hiện đại nào. +- **Aspose.Cells for .NET** (bản dùng thử miễn phí hoặc có giấy phép). Nó cung cấp các lớp `Workbook`, `Worksheet` và `CustomProperties` được sử dụng bên dưới. +- Một IDE mà bạn cảm thấy thoải mái – Visual Studio, Rider, hoặc thậm chí VS Code cũng được. +- Quyền ghi vào thư mục nơi tệp được tạo sẽ được lưu. + +Không cần bất kỳ thư viện bên thứ ba nào khác. + +## Bước 1: Cài đặt Aspose.Cells + +Đầu tiên, thêm gói NuGet Aspose.Cells vào dự án của bạn: + +```bash +dotnet add package Aspose.Cells +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn đang chạy trên máy chủ CI, lưu khóa giấy phép trong biến môi trường và tải nó tại thời gian chạy – điều này ngăn chặn watermark “evaluation” xuất hiện trong kết quả của bạn. + +## Bước 2: Tạo Workbook Excel – Tổng quan + +Hành động thực tế đầu tiên là **tạo workbook Excel**. Đối tượng này đại diện cho toàn bộ tệp trong bộ nhớ và cho phép bạn truy cập vào các worksheet, style và thuộc tính tùy chỉnh. + +```csharp +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // Step 2.1: Instantiate a new workbook (empty by default) + Workbook workbook = new Workbook(); + + // The rest of the steps follow... +``` + +Tại sao lại tạo một `Workbook` mới thay vì tải một mẫu? Một workbook trống đảm bảo không có style ẩn hoặc thuộc tính tùy chỉnh còn lại, điều này đặc biệt quan trọng khi bạn muốn **ghi tệp Excel nhị phân** cho các hệ thống downstream mong đợi một khởi đầu sạch sẽ. + +## Bước 3: Đặt Tên Worksheet (và Tại sao Điều này Quan trọng) + +Các sheet trong Excel mặc định là “Sheet1”, “Sheet2”, v.v. Đặt tên có ý nghĩa cho một sheet giúp việc xử lý downstream—như Power Query hoặc macro VBA—dễ đọc hơn rất nhiều. + +```csharp + // Step 3.1: Grab the first worksheet (index 0) and rename it + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; // clear, concise, and self‑describing +``` + +Nếu bạn cố gắng gán một tên trùng lặp, Aspose.Cells sẽ ném ra `ArgumentException`. Để an toàn, bạn có thể kiểm tra `Worksheets.Exists("Data")` trước khi đổi tên. + +## Bước 4: Thêm Thuộc Tính Tùy Chỉnh + +Các thuộc tính tùy chỉnh được lưu trong XML nội bộ của workbook và đi kèm với tệp bất kể định dạng nào. Chúng hoàn hảo để nhúng các thông tin như `ReportId` hoặc `GeneratedBy`. + +```csharp + // Step 4.1: Add a numeric property + workbook.CustomProperties.Add("ReportId", 12345); + + // Step 4.2: Add a string property + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); +``` + +> **Tại sao sử dụng thuộc tính tùy chỉnh?** +> • Chúng có thể truy cập qua bảng điều khiển “File → Info → Properties” của Excel. +> • Mã tiêu thụ workbook có thể đọc chúng mà không cần quét nội dung ô. +> • Chúng tồn tại qua các chuyển đổi định dạng (XLSX ↔ XLSB) vì là một phần của siêu dữ liệu tệp. + +Bạn cũng có thể lưu ngày, boolean, hoặc thậm chí các blob nhị phân, nhưng nên giữ dung lượng nhỏ—Excel không phải là cơ sở dữ liệu. + +## Bước 5: Lưu dưới dạng XLSB (Ghi tệp Excel Nhị phân) + +Định dạng XLSB lưu dữ liệu trong cấu trúc nhị phân, giúp tệp nhỏ hơn và mở nhanh hơn. Quan trọng hơn đối với hướng dẫn này, **các thuộc tính tùy chỉnh được nhúng vào luồng nhị phân**, đảm bảo chúng đi cùng tệp. + +```csharp + // Step 5.1: Define the output path + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // Step 5.2: Save the workbook as a binary XLSB file + workbook.Save(outputPath, SaveFormat.Xlsb); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +### Kết quả mong đợi + +Sau khi chạy chương trình, bạn sẽ thấy `WithCustomProps.xlsb` trên desktop. Mở nó trong Excel, vào **File → Info → Properties**, và bạn sẽ thấy `ReportId` và `GeneratedBy` được liệt kê dưới mục *Custom*. + +## Bước 6: Các Trường Hợp Cạnh & Câu Hỏi Thường Gặp + +### Nếu thư mục đích là chỉ đọc thì sao? + +Bao quanh lệnh gọi `Save` bằng một khối `try/catch` và chuyển sang vị trí người dùng có thể ghi, chẳng hạn `%TEMP%`. Điều này ngăn ứng dụng bị sập do lỗi quyền. + +```csharp +try +{ + workbook.Save(outputPath, SaveFormat.Xlsb); +} +catch (UnauthorizedAccessException) +{ + string fallback = Path.GetTempFileName().Replace(".tmp", ".xlsb"); + workbook.Save(fallback, SaveFormat.Xlsb); + Console.WriteLine($"Saved to fallback location: {fallback}"); +} +``` + +### Tôi có thể **lưu dưới dạng XLSX** và vẫn giữ được các thuộc tính tùy chỉnh không? + +Có—chỉ cần đổi `SaveFormat.Xlsb` thành `SaveFormat.Xlsx`. Các thuộc tính được lưu trong cùng một phần XML, vì vậy chúng tồn tại qua việc chuyển đổi định dạng. Tuy nhiên, tệp XLSX lớn hơn vì chúng là XML nén, trong khi XLSB cung cấp hiệu năng tốt hơn cho các bộ dữ liệu lớn. + +### Làm sao để đọc các thuộc tính tùy chỉnh sau này? + +```csharp +Workbook loaded = new Workbook(outputPath); +foreach (CustomProperty prop in loaded.CustomProperties) +{ + Console.WriteLine($"{prop.Name} = {prop.Value}"); +} +``` + +Đoạn mã này in ra mọi thuộc tính tùy chỉnh, giúp các dịch vụ downstream dễ dàng xác minh nguồn gốc của tệp. + +## Ví dụ Hoàn chỉnh + +Dưới đây là chương trình đầy đủ mà bạn có thể sao chép‑dán vào một dự án console mới. Không có phần nào bị thiếu—từ các câu lệnh `using` đến `Console.WriteLine` cuối cùng đều được bao gồm. + +```csharp +using System; +using System.IO; +using Aspose.Cells; + +namespace ExcelDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Create a new workbook instance + Workbook workbook = new Workbook(); + + // 2️⃣ Access the first worksheet and give it a meaningful name + Worksheet worksheet = workbook.Worksheets[0]; + worksheet.Name = "Data"; + + // 3️⃣ Add custom properties (they travel with the file) + workbook.CustomProperties.Add("ReportId", 12345); + workbook.CustomProperties.Add("GeneratedBy", "MyApp"); + + // 4️⃣ Define where to save the binary XLSB file + string outputPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.Desktop), + "WithCustomProps.xlsb"); + + // 5️⃣ Save the workbook as a binary XLSB file + try + { + workbook.Save(outputPath, SaveFormat.Xlsb); + Console.WriteLine($"✅ Workbook saved to {outputPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Failed to save workbook: {ex.Message}"); + } + } + } +} +``` + +Chạy chương trình, mở tệp kết quả, và kiểm tra các thuộc tính tùy chỉnh. Đó là toàn bộ quy trình **tạo workbook excel**, **thêm thuộc tính tùy chỉnh**, **đặt tên worksheet**, và **lưu dưới dạng xlsb** trong một luồng gọn gàng. + +## Kết luận + +Bây giờ bạn đã biết chính xác cách **tạo workbook Excel**, đặt tên sheet một cách rõ ràng **set worksheet name**, nhúng siêu dữ liệu hữu ích bằng **add custom properties**, và cuối cùng **lưu dưới dạng XLSB** để tạo ra một tệp Excel nhị phân, gọn nhẹ. Quy trình này đáng tin cậy, hoạt động trên mọi phiên bản .NET, và mở rộng tốt dù bạn tạo một báo cáo hay hàng ngàn báo cáo. + +Tiếp theo? Hãy thử thêm một bảng dữ liệu vào sheet “Data”, thử nghiệm với các loại thuộc tính khác nhau (ngày, boolean), hoặc chuyển đầu ra sang **save as xlsb** cho các bộ dữ liệu khổng lồ. Bạn cũng có thể khám phá việc bảo vệ workbook bằng mật khẩu—Aspose.Cells cho phép thực hiện điều này chỉ với một dòng lệnh. + +Bạn cứ thoải mái để lại bình luận nếu gặp bất kỳ khó khăn nào, hoặc chia sẻ cách bạn đã mở rộng mẫu này trong các dự án của mình. Chúc lập trình vui vẻ! + +--- + +![Create Excel workbook screenshot](image.png){alt="Tạo workbook Excel với các thuộc tính tùy chỉnh"} + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/excel-advanced-named-ranges/_index.md b/cells/vietnamese/net/excel-advanced-named-ranges/_index.md index 2fda6a540d..4ea1d28027 100644 --- a/cells/vietnamese/net/excel-advanced-named-ranges/_index.md +++ b/cells/vietnamese/net/excel-advanced-named-ranges/_index.md @@ -36,6 +36,8 @@ Vẻ đẹp của chức năng này nằm ở tính dễ sử dụng. Bạn có Dễ dàng xác định các ô trong phạm vi được đặt tên trong Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước toàn diện này. ### [Gộp các ô trong phạm vi được đặt tên trong Excel](./merge-cells-in-named-range/) Tìm hiểu cách hợp nhất các ô trong một phạm vi được đặt tên bằng Aspose.Cells cho .NET trong hướng dẫn từng bước này. Khám phá cách định dạng, tạo kiểu và tự động hóa các báo cáo Excel. +### [Tạo Workbook Excel – Hướng Dẫn Từng Bước Thêm Bảng và Quy Tắc Đặt Tên](./create-excel-workbook-step-by-step-guide-to-adding-tables-an/) +Hướng dẫn chi tiết cách tạo workbook Excel, thêm bảng và áp dụng quy tắc đặt tên bằng Aspose.Cells cho .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md b/cells/vietnamese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md new file mode 100644 index 0000000000..54b48133ec --- /dev/null +++ b/cells/vietnamese/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-03-22 +description: Tạo workbook Excel có bảng, tìm hiểu quy tắc đặt tên bảng Excel, tránh + lỗi phạm vi được đặt tên, và đặt tên bảng Excel đúng cách trong C#. +draft: false +keywords: +- create excel workbook +- excel table naming rules +- named range error +- add table worksheet +- set excel table name +language: vi +og_description: Tạo workbook Excel trong C# và nắm vững quy tắc đặt tên bảng Excel. + Tìm hiểu cách thêm worksheet bảng, đặt tên bảng Excel và sửa lỗi phạm vi có tên. +og_title: Tạo Workbook Excel – Hướng dẫn toàn diện về Bảng và Đặt tên C# +tags: +- C# +- Aspose.Cells +- Excel Automation +- Programming Tutorial +title: Tạo sổ làm việc Excel – Hướng dẫn từng bước để thêm bảng và quy tắc đặt tên +url: /vi/net/excel-advanced-named-ranges/create-excel-workbook-step-by-step-guide-to-adding-tables-an/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo Sổ Làm Việc Excel – Hướng Dẫn C# Đầy Đủ Về Bảng và Đặt Tên + +Bạn đã bao giờ **tạo sổ làm việc excel** một cách lập trình và thắc mắc tại sao tên bảng của bạn lại xung đột với một phạm vi đã đặt tên? Bạn không phải là người duy nhất. Trong nhiều dự án tự động hoá, ngay khi bạn cố gắng đặt một định danh thân thiện cho bảng, Excel sẽ ném ra *lỗi phạm vi đã đặt tên* khiến toàn bộ quá trình bị dừng lại. + +Trong tutorial này, chúng ta sẽ đi qua một ví dụ có thể chạy được đầy đủ, **tạo một sổ làm việc Excel**, **thêm một bảng vào worksheet**, và giải thích **các quy tắc đặt tên bảng excel** giúp bạn tránh tự gây rắc rối cho mình. Khi kết thúc, bạn sẽ biết chính xác cách **thêm bảng vào worksheet**, **đặt tên bảng excel**, và xử lý một cách khéo léo những trường hợp xung đột tên. + +> **Mẹo chuyên nghiệp:** Hầu hết sự nhầm lẫn xuất phát từ việc Excel coi tên bảng và các phạm vi đã đặt tên ở mức workbook như một không gian tên duy nhất. Hiểu quy tắc này từ sớm sẽ tiết kiệm cho bạn hàng giờ gỡ lỗi. + +## Những Gì Bạn Cần Chuẩn Bị + +- **Aspose.Cells for .NET** (hoặc bất kỳ thư viện nào cung cấp các lớp `Workbook`, `Worksheet`, `ListObject`). +- .NET 6+ hoặc .NET Framework 4.8 – mã nguồn hoạt động trên cả hai. +- Kiến thức cơ bản về cú pháp C# – không cần các thủ thuật phức tạp. + +Nếu bạn đã có những thứ trên, hãy bắt đầu. + +![Ảnh chụp màn hình của một sổ làm việc Excel mới tạo với bảng có tên SalesData](create_excel_workbook_example.png "ví dụ tạo sổ làm việc excel") + +## Bước 1: Tạo Sổ Làm Việc Excel và Truy Cập Worksheet Đầu Tiên + +Điều đầu tiên bạn làm khi **tạo sổ làm việc excel** là khởi tạo lớp `Workbook` và lấy tham chiếu tới sheet mà bạn sẽ làm việc. Trong Aspose.Cells, workbook khởi tạo với một sheet mặc định có tên “Sheet1”. + +```csharp +using Aspose.Cells; + +public class ExcelTableDemo +{ + public static void Main() + { + // Step 1 – create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); // creates an empty .xlsx in memory + Worksheet worksheet = workbook.Worksheets[0]; // Sheet1 is at index 0 + + // The rest of the steps follow… +``` + +Tại sao bước này lại quan trọng? Nếu không có đối tượng workbook, bạn sẽ không có gì để gắn bảng vào, và tham chiếu `Worksheet` cung cấp một canvas nơi thao tác **thêm bảng vào worksheet** sẽ diễn ra. + +## Bước 2: Thêm Bảng (ListObject) Bao Phủ Một Phạm Vi Cụ Thể + +Tiếp theo chúng ta **thêm bảng vào worksheet**‑level. Phương thức `ListObjects.Add` yêu cầu một chuỗi phạm vi và một boolean chỉ ra liệu hàng đầu tiên có chứa tiêu đề hay không. + +```csharp + // Step 2 – add a table that spans A1:C5 and tells Excel the first row is a header + int tableIndex = worksheet.ListObjects.Add("A1:C5", true); + ListObject salesTable = worksheet.ListObjects[tableIndex]; + salesTable.Name = "SalesData"; // set excel table name +``` + +Chú ý dòng `salesTable.Name = "SalesData"`. Đây là nơi **các quy tắc đặt tên bảng excel** bắt đầu có tác dụng: tên phải là duy nhất trên toàn bộ workbook, không chỉ trên sheet. Nó cũng không được chứa dấu cách hay ký tự đặc biệt, và phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới. + +## Bước 3: Cố Gắng Tạo Một Phạm Vi Đã Đặt Tên Ở Mức Workbook Với Cùng Định Danh + +Bây giờ chúng ta cố tình gây ra **lỗi phạm vi đã đặt tên** để xem điều gì xảy ra khi có xung đột tên. + +```csharp + // Step 3 – try to add a workbook‑level named range called "SalesData" + // This will throw an exception because the table already uses that identifier. + // Uncomment the line below to see the error in action. + // workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); +``` + +Nếu bạn bỏ comment dòng này, Aspose.Cells sẽ ném ra một `ArgumentException` thông báo rằng tên đã tồn tại. Thông báo lỗi trông như sau: + +``` +System.ArgumentException: A name with the identifier "SalesData" already exists. +``` + +Thông điệp đó chính là **lỗi phạm vi đã đặt tên** mà chúng tôi đã cảnh báo ở trên. Nó cho bạn biết rằng **các quy tắc đặt tên bảng excel** coi tên bảng và phạm vi đã đặt tên như một không gian tên duy nhất. + +## Bước 4: Xử Lý Xung Đột Tên Một Cách Khéo Léo + +Trong mã thực tế, bạn sẽ muốn bắt ngoại lệ này và hoặc đổi tên bảng hoặc chọn một tên phạm vi khác. Dưới đây là một cách gọn gàng để thực hiện: + +```csharp + try + { + workbook.Worksheets.Names.Add("SalesData", "=Sheet1!$D$1"); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Naming conflict detected: {ex.Message}"); + // Choose an alternative name for the range + string safeRangeName = "SalesData_Range"; + workbook.Worksheets.Names.Add(safeRangeName, "=Sheet1!$D$1"); + Console.WriteLine($"Created range with alternative name: {safeRangeName}"); + } +``` + +Bằng cách bao bọc lời gọi trong `try/catch`, bạn tránh được việc ứng dụng bị sập và cung cấp cho người dùng (hoặc mã gọi) một giải thích rõ ràng—đúng là loại hiểu biết **các quy tắc đặt tên bảng excel** giúp ngăn ngừa lỗi trong tương lai. + +## Bước 5: Lưu Workbook và Kiểm Tra Kết Quả + +Cuối cùng, ghi file ra đĩa và mở nó trong Excel để xác nhận bảng và bất kỳ phạm vi đã đặt tên nào đều tồn tại. + +```csharp + // Step 5 – save the workbook + workbook.Save("SalesReport.xlsx", SaveFormat.Xlsx); + Console.WriteLine("Workbook saved as SalesReport.xlsx"); + } +} +``` + +Khi bạn mở *SalesReport.xlsx* sẽ thấy: + +- Một bảng trải dài **A1:C5** có tên **SalesData**. +- Nếu bạn giữ lại phạm vi thay thế, sẽ có một phạm vi đã đặt tên ở mức workbook **SalesData_Range** trỏ tới **D1**. + +Không có lỗi runtime, và xung đột tên đã được giải quyết. + +## Hiểu Sâu Các Quy Tắc Đặt Tên Bảng Excel + +Hãy cùng phân tích vì sao các quy tắc này tồn tại: + +| Quy Tắc | Ý Nghĩa | Ví Dụ | +|------|----------------|---------| +| **Duy nhất trên toàn workbook** | Không có hai bảng hoặc phạm vi đã đặt tên nào có thể chia sẻ cùng một định danh. | `Table1` vs `Table1` → xung đột | +| **Bắt đầu bằng chữ cái hoặc dấu gạch dưới** | Tên không được bắt đầu bằng số. | `_Q1Sales` ✅, `1QSales` ❌ | +| **Không có dấu cách hoặc ký tự đặc biệt** | Sử dụng CamelCase hoặc dấu gạch dưới. | `QuarterSales` ✅, `Quarter Sales` ❌ | +| **Độ dài ≤ 255 ký tự** | Thực tế hầu hết luôn đáp ứng. | N/A | + +Giữ các quy tắc này trong tâm trí khi bạn **đặt tên bảng excel** sẽ loại bỏ lỗi *phạm vi đã đặt tên* đáng sợ. + +## Các Biến Thể Thông Thường và Trường Hợp Cạnh + +1. **Thêm nhiều bảng** – Mỗi bảng phải có tên duy nhất riêng. +2. **Đổi tên bảng hiện có** – Dùng `salesTable.Name = "NewName"` trước khi tạo bất kỳ phạm vi đã đặt tên nào gây xung đột. +3. **Sử dụng phạm vi động** – Nếu bạn cần một phạm vi mở rộng, hãy dùng tham chiếu có cấu trúc như `=SalesData[Amount]` thay vì địa chỉ tĩnh. +4. **Phạm vi đã đặt tên xuyên sheet** – Chúng vẫn thuộc cùng một không gian tên, vì vậy một bảng trên Sheet1 sẽ chặn một phạm vi cùng tên trên Sheet2. + +## Mẹo Chuyên Nghiệp Để Tự Động Hóa Excel Mượt Mà + +- **Kiểm tra tồn tại trước khi thêm**: `if (!workbook.Worksheets.Names.Exists("MyName")) { … }` +- **Tạo tên an toàn một cách lập trình**: Thêm GUID hoặc bộ đếm tăng dần (`SalesData_{Guid.NewGuid()}`) khi bạn không chắc. +- **Sử dụng `ListObject.ShowHeaders = true`** để bảng tự mô tả. +- **Xác thực sau khi lưu**: Mở file bằng một thư viện nhẹ (ví dụ, EPPlus) để chắc chắn bảng đã được tạo đúng. + +## Tóm Tắt: Những Điều Chúng Ta Đã Học + +- Cách **tạo sổ làm việc excel** từ đầu bằng Aspose.Cells. +- Các **quy tắc đặt tên bảng excel** chính xác điều khiển định danh bảng và phạm vi đã đặt tên. +- Tại sao **lỗi phạm vi đã đặt tên** xuất hiện khi bạn tái sử dụng một tên. +- Cách đúng để **thêm bảng vào worksheet** và **đặt tên bảng excel** mà không gây xung đột. +- Mẫu mã mạnh mẽ để xử lý xung đột tên một cách khéo léo. + +## Bước Tiếp Theo? + +Bây giờ bạn đã nắm vững các kiến thức cơ bản, hãy khám phá thêm: + +- **Mở rộng bảng động** bằng `ListObject.Resize`. +- **Áp dụng kiểu dáng** cho bảng (`salesTable.TableStyleType = TableStyleType.TableStyleMedium9`). +- **Xuất ra CSV** trong khi vẫn giữ cấu trúc bảng. +- **Tích hợp với Office Open XML** để kiểm soát sâu hơn các thành phần bên trong workbook. + +Hãy thoải mái thử nghiệm—thay đổi phạm vi, thêm nhiều bảng, hoặc chơi với các cách đặt tên khác nhau. Bạn càng thử nghiệm, hiểu biết của bạn về **các quy tắc đặt tên bảng excel** sẽ càng sâu sắc. + +--- + +*Chúc bạn lập trình vui vẻ, và mong sổ làm việc của bạn không bao giờ bị xung đột nữa!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/excel-custom-number-date-formatting/_index.md b/cells/vietnamese/net/excel-custom-number-date-formatting/_index.md index cedb7cc248..64ab2216cb 100644 --- a/cells/vietnamese/net/excel-custom-number-date-formatting/_index.md +++ b/cells/vietnamese/net/excel-custom-number-date-formatting/_index.md @@ -36,6 +36,8 @@ Hướng dẫn này sẽ trang bị cho bạn các kỹ năng để nhập tập Tìm hiểu cách kiểm tra giá trị ô Excel theo định dạng số tùy chỉnh bằng Aspose.Cells cho .NET với hướng dẫn từng bước này. ### [Chỉ định các trường công thức khi nhập dữ liệu vào bảng tính Excel](./specify-formula-fields-while-importing-data-to-worksheet-in-excel/) Tìm hiểu cách nhập dữ liệu vào các trang tính Excel có trường công thức được chỉ định bằng Aspose.Cells cho .NET trong hướng dẫn chi tiết này. +### [Định dạng số tùy chỉnh Excel trong C# – Hướng dẫn toàn diện](./custom-number-format-excel-in-c-complete-guide/) +Tìm hiểu cách áp dụng định dạng số tùy chỉnh trong Excel bằng C# với Aspose.Cells cho .NET trong hướng dẫn chi tiết này. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md b/cells/vietnamese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..0f7c2a7eb9 --- /dev/null +++ b/cells/vietnamese/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-03-22 +description: Hướng dẫn định dạng số tùy chỉnh trong Excel, trình bày cách nhập datatable + vào Excel, đặt màu nền cho cột, định dạng cột dưới dạng tiền tệ và lưu sổ làm việc + dưới dạng xlsx. +draft: false +keywords: +- custom number format excel +- import datatable to excel +- set column background color +- format column as currency +- save workbook as xlsx +language: vi +og_description: Hướng dẫn định dạng số tùy chỉnh trong Excel, chỉ dẫn bạn cách nhập + DataTable, đặt màu nền cho cột, định dạng cột dưới dạng tiền tệ và lưu sổ làm việc + dưới dạng xlsx. +og_title: Định dạng số tùy chỉnh trong Excel bằng C# – Hướng dẫn từng bước +tags: +- C# +- Excel automation +- Aspose.Cells +- Data export +title: Định dạng số tùy chỉnh trong Excel bằng C# – Hướng dẫn đầy đủ +url: /vi/net/excel-custom-number-date-formatting/custom-number-format-excel-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Định dạng số tùy chỉnh trong Excel – Hướng dẫn Full‑Stack C# + +Bạn đã bao giờ tự hỏi làm thế nào để áp dụng **custom number format excel** trực tiếp từ C# chưa? Có thể bạn đã thử xuất một DataTable ra bảng tính nhưng chỉ thấy các số thuần, không có màu sắc và không có định dạng tiền tệ. Đó là một vấn đề phổ biến—đặc biệt khi bạn cần một báo cáo chuyên nghiệp cho các bên liên quan. + +Trong hướng dẫn này, chúng ta sẽ giải quyết vấn đề đó cùng nhau: bạn sẽ học cách **import datatable to excel**, **set column background color**, **format column as currency**, và cuối cùng **save workbook as xlsx** với một định dạng số tùy chỉnh làm cho các con số của bạn nổi bật. Không có những tham chiếu mơ hồ, chỉ có một giải pháp hoàn chỉnh, có thể chạy ngay mà bạn có thể sao chép‑dán vào dự án của mình. + +--- + +## Những gì bạn sẽ xây dựng + +Khi kết thúc tutorial, bạn sẽ có một ứng dụng console C# tự chứa mà: + +1. Lấy một `DataTable` (bạn có thể thay thế đoạn mẫu bằng truy vấn của riêng mình). +2. Tạo một workbook Excel mới bằng Aspose.Cells (hoặc bất kỳ thư viện tương thích nào). +3. Áp dụng phông chữ xanh, đậm cho cột đầu tiên, nền màu vàng nhạt cho cột thứ hai, và định dạng tiền tệ (`$#,##0.00`) cho cột thứ ba. +4. Lưu file dưới tên `DataTableWithStyleArray.xlsx` vào thư mục bạn chọn. + +Bạn sẽ thấy chính xác mỗi dòng mã đóng góp như thế nào vào file Excel cuối cùng, và chúng ta sẽ thảo luận vì sao những lựa chọn đó quan trọng đối với khả năng bảo trì và hiệu suất. + +--- + +## Yêu cầu trước + +- .NET 6.0 hoặc mới hơn (mã cũng hoạt động với .NET Framework 4.7+). +- Aspose.Cells for .NET (bản dùng thử miễn phí hoặc bản có giấy phép). Cài đặt qua NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Kiến thức cơ bản về `DataTable` và các ứng dụng console C#. + +--- + +## Bước 1: Lấy dữ liệu nguồn dưới dạng DataTable + +Đầu tiên, chúng ta cần một số dữ liệu để xuất. Trong thực tế, bạn có thể gọi một repository hoặc chạy một truy vấn SQL. Để minh họa, chúng ta sẽ tạo một bảng đơn giản trong bộ nhớ. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +static DataTable GetSampleData() +{ + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; +} +``` + +> **Tại sao điều này quan trọng:** Sử dụng `DataTable` cung cấp cho bạn một nguồn dữ liệu dạng bảng, có schema, ánh xạ sạch sẽ vào các hàng và cột của Excel. Nó cũng cho phép bạn tái sử dụng cùng một logic xuất cho bất kỳ tập dữ liệu nào mà không cần viết lại mã. + +--- + +## Bước 2: Tạo Workbook mới và lấy Worksheet đầu tiên + +Bây giờ chúng ta khởi tạo một workbook Excel. Lớp `Workbook` đại diện cho toàn bộ file; `Worksheets[0]` là sheet mặc định nơi chúng ta sẽ đưa dữ liệu vào. + +```csharp +// Initialize a fresh workbook +Workbook workbook = new Workbook(); + +// Grab the first (and only) worksheet +Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn cần nhiều sheet, chỉ cần gọi `workbook.Worksheets.Add("SheetName")` và lặp lại các bước định dạng cho mỗi sheet. + +--- + +## Bước 3: Định nghĩa Style cho các cột – Font, Background và Number Format + +Việc định dạng trong Aspose.Cells được thực hiện qua các đối tượng `Style`. Chúng ta sẽ xây dựng một mảng, mỗi phần tử tương ứng với một cột trong DataTable. + +```csharp +// Prepare an array to hold three distinct styles +Style[] columnStyles = new Style[3]; + +// 1️⃣ First column – blue, bold font +columnStyles[0] = workbook.CreateStyle(); +columnStyles[0].Font.Color = System.Drawing.Color.Blue; +columnStyles[0].Font.IsBold = true; + +// 2️⃣ Second column – light‑yellow background +columnStyles[1] = workbook.CreateStyle(); +columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; +columnStyles[1].Pattern = BackgroundType.Solid; + +// 3️⃣ Third column – custom currency format (custom number format excel) +columnStyles[2] = workbook.CreateStyle(); +columnStyles[2].Custom = "$#,##0.00"; +``` + +> **Tại sao lại dùng mảng style?** Việc truyền một mảng vào `ImportDataTable` cho phép bạn áp dụng một style riêng cho mỗi cột trong một lần gọi, vừa ngắn gọn vừa hiệu quả. Nó cũng đảm bảo định dạng luôn đồng bộ với thứ tự dữ liệu. + +--- + +## Bước 4: Import DataTable đồng thời áp dụng các Style + +Đây là phần cốt lõi của thao tác: chúng ta đưa `DataTable` vào worksheet, yêu cầu Aspose bao gồm hàng tiêu đề, và truyền mảng `columnStyles` của chúng ta. + +```csharp +// Import data starting at cell A1 (row 0, column 0) +worksheet.Cells.ImportDataTable( + GetSampleData(), // source DataTable + true, // include column names as header + 0, 0, // start row, start column + columnStyles); // apply the style array +``` + +> **Điều gì xảy ra phía sau?** Aspose duyệt qua từng cột, ghi tiêu đề, sau đó ghi giá trị từng hàng. Trong quá trình này nó áp dụng `Style` tương ứng từ mảng, vì vậy bạn sẽ có tiêu đề màu xanh cho “Product”, cột “Quantity” nền vàng nhạt, và cột “Revenue” được định dạng tiền tệ đẹp mắt. + +--- + +## Bước 5: Lưu Workbook dưới dạng file XLSX + +Cuối cùng, chúng ta ghi workbook ra đĩa. Phương thức `Save` tự động chọn định dạng XLSX dựa trên phần mở rộng file. + +```csharp +// Choose a folder that exists on your machine +string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + +// Ensure the directory exists (optional safety check) +System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + +// Save the workbook +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +> **Mẹo:** Nếu bạn cần stream file (ví dụ cho một API web), dùng `workbook.Save(stream, SaveFormat.Xlsx)` thay vì đường dẫn file. + +--- + +## Ví dụ hoàn chỉnh + +Dưới đây là chương trình đầy đủ mà bạn có thể dán vào một dự án console mới. Nó biên dịch và chạy ngay, tạo ra một file Excel có định dạng. + +```csharp +using System; +using System.Data; +using Aspose.Cells; + +namespace ExcelExportDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1 – Get data + DataTable dataTable = GetSampleData(); + + // Step 2 – Create workbook & worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 3 – Prepare column styles + Style[] columnStyles = new Style[3]; + + // Font style for first column (blue, bold) + columnStyles[0] = workbook.CreateStyle(); + columnStyles[0].Font.Color = System.Drawing.Color.Blue; + columnStyles[0].Font.IsBold = true; + + // Background style for second column (light yellow) + columnStyles[1] = workbook.CreateStyle(); + columnStyles[1].ForegroundColor = System.Drawing.Color.LightYellow; + columnStyles[1].Pattern = BackgroundType.Solid; + + // Currency format for third column (custom number format excel) + columnStyles[2] = workbook.CreateStyle(); + columnStyles[2].Custom = "$#,##0.00"; + + // Step 4 – Import data with styles + worksheet.Cells.ImportDataTable(dataTable, true, 0, 0, columnStyles); + + // Step 5 – Save as XLSX + string outputPath = @"C:\Temp\DataTableWithStyleArray.xlsx"; + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath)!); + workbook.Save(outputPath); + + Console.WriteLine($"Workbook saved to {outputPath}"); + } + + // Helper method to build a demo DataTable + static DataTable GetSampleData() + { + var table = new DataTable("Sales"); + table.Columns.Add("Product", typeof(string)); + table.Columns.Add("Quantity", typeof(int)); + table.Columns.Add("Revenue", typeof(decimal)); + + table.Rows.Add("Widget A", 120, 3450.75m); + table.Rows.Add("Widget B", 85, 2190.00m); + table.Rows.Add("Widget C", 60, 1580.40m); + + return table; + } + } +} +``` + +### Kết quả mong đợi + +Khi mở `DataTableWithStyleArray.xlsx` bạn sẽ thấy: + +| **Product** (blue, bold) | **Quantity** (light‑yellow) | **Revenue** (currency) | +|--------------------------|-----------------------------|------------------------| +| Widget A | 120 | $3,450.75 | +| Widget B | 85 | $2,190.00 | +| Widget C | 60 | $1,580.40 | + +**custom number format excel** mà bạn đã chỉ định (`$#,##0.00`) sẽ đảm bảo mỗi ô doanh thu hiển thị dấu đô la, dấu phân cách hàng nghìn và hai chữ số thập phân—đúng như những gì các bộ phận tài chính mong đợi. + +--- + +## Câu hỏi thường gặp & Các trường hợp đặc biệt + +### Tôi có thể dùng thư viện Excel khác không? + +Chắc chắn rồi. Ý tưởng—tạo một style cho mỗi cột và áp dụng trong quá trình import—có thể chuyển sang EPPlus, ClosedXML, hoặc NPOI. Các lệnh API sẽ khác, nhưng mẫu vẫn giữ nguyên. + +### Nếu DataTable của tôi có nhiều cột hơn số style đã định nghĩa thì sao? + +Aspose sẽ áp dụng style mặc định cho bất kỳ cột nào không có mục tương ứng trong mảng `columnStyles`. Để tránh bất ngờ, hãy đặt kích thước mảng bằng `dataTable.Columns.Count` hoặc tạo style động trong một vòng lặp. + +### Làm sao để đặt custom number format cho ngày tháng? + +Chỉ cần đặt `style.Custom = "dd‑mm‑yyyy"` (hoặc bất kỳ chuỗi định dạng Excel hợp lệ nào). Cách tiếp cận dựa trên mảng cũng hoạt động cho ngày, phần trăm, hoặc ký hiệu khoa học. + +### Có cách tự động điều chỉnh độ rộng cột sau khi import không? + +Có—gọi `worksheet.AutoFitColumns();` sau khi import. Nó sẽ tính nhanh độ rộng dựa trên nội dung ô. + +### Còn các tập dữ liệu lớn (hơn 100k dòng) thì sao? + +`ImportDataTable` được tối ưu cho các thao tác bulk, nhưng bạn có thể gặp giới hạn bộ nhớ. Trong trường hợp đó, hãy cân nhắc stream từng hàng bằng `Cells[i, j].PutValue(...)` và tái sử dụng một đối tượng `Style` duy nhất để giảm tải. + +--- + +## Mẹo chuyên nghiệp & Những lỗi thường gặp + +- **Tránh hard‑code đường dẫn** trong mã production; sử dụng `Environment.GetFolderPath` hoặc cấu hình. +- **Giải phóng workbook** nếu bạn chạy trong một service lâu dài—đặt trong khối `using` để giải phóng tài nguyên gốc. +- **Cẩn thận với dấu phân cách phụ thuộc vào culture**. Định dạng `$#,##0.00` buộc dấu thập phân là dấu chấm bất kể locale OS, thường là điều bạn muốn cho báo cáo tài chính. +- **Nhớ tham chiếu System.Drawing** (hoặc `System.Drawing.Common` trên .NET Core) để sử dụng các struct màu trong việc định dạng. +- **Kiểm tra đầu ra trên các phiên bản Excel khác nhau**; các phiên bản cũ có thể diễn giải một số định dạng tùy chỉnh hơi khác nhau. + +--- + +## Kết luận + +Chúng ta đã bao quát mọi thứ bạn cần để **custom number format excel** từ C#: lấy dữ liệu từ `DataTable`, **import datatable to excel**, áp dụng **set column background color**, sử dụng **format column as currency**, và cuối cùng **save workbook as x + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/excel-workbook/_index.md b/cells/vietnamese/net/excel-workbook/_index.md index 47dec1a4b3..3e182fd757 100644 --- a/cells/vietnamese/net/excel-workbook/_index.md +++ b/cells/vietnamese/net/excel-workbook/_index.md @@ -86,6 +86,7 @@ Vậy tại sao không nắm bắt cơ hội này để nâng cao kỹ năng Exc | [Bản xem trước khi in của sổ làm việc](./workbook-print-preview/) | Tìm hiểu cách tạo bản xem trước khi in cho các tệp Excel bằng Aspose.Cells cho .NET. Tìm hiểu các bước lập trình trong hướng dẫn chi tiết, dễ làm theo. | | [Làm việc với Thuộc tính Kiểu Nội dung](./working-with-content-type-properties/) | Tìm hiểu cách sử dụng Aspose.Cells cho .NET để làm việc với các thuộc tính kiểu nội dung nhằm nâng cao khả năng quản lý siêu dữ liệu Excel. Thực hiện theo hướng dẫn từng bước đơn giản này. | | [Hỗ trợ chữ ký Xades](./xades-signature-support/) | Tìm hiểu cách thêm chữ ký Xades vào tệp Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước này. Bảo mật tài liệu của bạn. | +| [Tạo sổ làm việc mới C# – Hướng dẫn từng bước với công thức tràn](./create-new-workbook-c-step-by-step-guide-with-spilled-formul/) | Tìm hiểu cách tạo sổ làm việc mới trong C# với công thức tràn bằng Aspose.Cells cho .NET qua hướng dẫn chi tiết. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md b/cells/vietnamese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md new file mode 100644 index 0000000000..f3908a7012 --- /dev/null +++ b/cells/vietnamese/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: Tạo nhanh workbook mới bằng C# sử dụng Aspose.Cells. Tìm hiểu cách thêm + công thức SEQUENCE dạng spill, tự động tính lại và xử lý các ô phụ thuộc. +draft: false +keywords: +- create new workbook c# +- Aspose.Cells C# +- spilled array formula +- Excel SEQUENCE function +- C# workbook calculation +language: vi +og_description: Tạo workbook mới bằng C# với Aspose.Cells. Hướng dẫn này cho thấy + cách thêm công thức SEQUENCE dạng spill, tính lại workbook và quản lý các ô phụ + thuộc. +og_title: Tạo sổ làm việc mới C# – Hướng dẫn chi tiết +tags: +- C# +- Excel automation +- Aspose.Cells +title: Tạo workbook mới C# – Hướng dẫn chi tiết từng bước với công thức tràn +url: /vi/net/excel-workbook/create-new-workbook-c-step-by-step-guide-with-spilled-formul/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo workbook mới C# – Hướng dẫn lập trình toàn diện + +Bạn đã bao giờ tự hỏi làm thế nào để **tạo workbook mới C#** mà không phải vật lộn với COM interop chưa? Bạn không phải là người duy nhất. Trong nhiều dự án, bạn cần tạo một tệp Excel ngay lập tức, chèn một công thức mảng động, và để mọi thứ tự động làm mới. + +Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thực hiện—sử dụng thư viện hiện đại **Aspose.Cells**, thêm công thức `SEQUENCE` dạng spill, chỉnh sửa một ô phụ thuộc, và buộc tính toán lại để kết quả luôn cập nhật. Khi hoàn thành, bạn sẽ có một ví dụ tự chứa, có thể chạy ngay và sao chép‑dán vào bất kỳ ứng dụng .NET nào. + +## Những gì bạn sẽ học + +- Cách **tạo workbook mới C#** một cách lập trình. +- Cơ chế của **công thức mảng spill** và lý do nó hữu ích. +- Sử dụng **hàm Excel SEQUENCE** từ mã C#. +- Kích hoạt **tính toán workbook C#** để các ô phụ thuộc cập nhật ngay lập tức. +- Các lỗi thường gặp (ví dụ: quên gọi `Calculate`) và cách khắc phục nhanh. + +Không cần tài liệu bên ngoài—mọi thứ bạn cần đều có ở đây. + +## Yêu cầu trước + +- .NET 6+ (hoặc .NET Framework 4.7.2+) đã được cài đặt. +- Visual Studio 2022 hoặc bất kỳ IDE nào bạn thích. +- Gói NuGet **Aspose.Cells** (`Install-Package Aspose.Cells`). +- Kiến thức cơ bản về cú pháp C# (nếu bạn mới bắt đầu, mã đã được chú thích chi tiết). + +--- + +## Bước 1: Tạo workbook mới trong C# + +Tiêu đề H2 này chứa **từ khóa chính** đúng vị trí mà danh sách kiểm tra SEO yêu cầu. + +```csharp +using Aspose.Cells; + +namespace WorkbookDemo +{ + class Program + { + static void Main() + { + // Step 1: Instantiate a fresh Workbook object – this is how we create new workbook C# style. + Workbook workbook = new Workbook(); + + // Grab the first worksheet for simplicity. + Worksheet worksheet = workbook.Worksheets[0]; +``` + +> **Tại sao điều này quan trọng:** +> Khởi tạo `Workbook` cung cấp cho bạn một đại diện trong bộ nhớ của tệp Excel. Không có COM, không có interop, chỉ có các đối tượng .NET thuần túy mà bạn có thể thao tác một cách an toàn. + +--- + +## Bước 2: Thêm công thức SEQUENCE dạng spill + +Một **công thức mảng spill** tự động mở rộng vào các ô liền kề, rất phù hợp để tạo danh sách động. + +```csharp + // Step 2: Put a SEQUENCE formula into A1 – it spills down five rows (A1:A5). + worksheet.Cells["A1"].Formula = "=SEQUENCE(5)"; // results: 1,2,3,4,5 +``` + +> **Cách hoạt động:** +> Hàm `SEQUENCE` (được giới thiệu trong Excel 365) tạo một mảng dọc các số. Vì chúng ta đang sử dụng công thức *spill*, Excel (và Aspose.Cells) sẽ tự động lấp đầy phạm vi dưới `A1` mà không cần viết vòng lặp. + +--- + +## Bước 3: Thay đổi ô phụ thuộc để xem tự‑làm mới + +Hãy sửa `B1` để quan sát cách workbook tính lại mảng spill. + +```csharp + // Step 3: Write a static value into B1 – this cell isn’t part of the spill but shows that other cells stay intact. + worksheet.Cells["B1"].PutValue(10); +``` + +> **Mẹo:** +> Nếu sau này bạn tham chiếu tới phạm vi spill trong các công thức khác, việc thay đổi bất kỳ ô nào trong spill sẽ khiến các công thức đó cập nhật sau khi bạn gọi `Calculate`. + +--- + +## Bước 4: Buộc tính toán workbook C# + +Nếu không gọi rõ ràng, Aspose.Cells sẽ không tự động tính lại công thức. + +```csharp + // Step 4: Recalculate the entire workbook so the SEQUENCE reflects any changes. + workbook.Calculate(); + + // Optional: Save to disk so you can open the file in Excel and verify. + workbook.Save("SpilledSequenceDemo.xlsx"); + } + } +} +``` + +> **`Calculate` làm gì:** +> Nó duyệt qua mọi ô có công thức, đánh giá chúng và ghi lại kết quả vào sheet. Đây là cốt lõi của **tính toán workbook C#** và đảm bảo mảng spill luôn đồng bộ với dữ liệu phụ thuộc. + +### Kết quả mong đợi + +| A | B | +|---|---| +| 1 | 10 | +| 2 | | +| 3 | | +| 4 | | +| 5 | | + +Mở `SpilledSequenceDemo.xlsx` và bạn sẽ thấy các số 1‑5 được điền vào `A1:A5`, trong khi `B1` chứa giá trị `10`. Thay đổi bất kỳ ô nào trong spill, chạy lại `Calculate`, và các giá trị mới sẽ xuất hiện ngay lập tức. + +--- + +## Hiểu hàm Excel SEQUENCE trong C# + +Nếu bạn thắc mắc tại sao `SEQUENCE` được ưu tiên hơn vòng lặp thủ công, hãy xem các điểm sau: + +1. **Hiệu năng** – Engine đánh giá toàn bộ mảng trong một lượt. +2. **Độ đọc hiểu** – Một dòng mã thay thế hàng chục lời gọi `PutValue`. +3. **Kích thước động** – Bạn có thể thay `5` tĩnh bằng tham chiếu tới ô khác, cho phép độ dài thay đổi tại thời gian chạy. + +Đây là một ví dụ điển hình của **công thức mảng spill** giúp đơn giản hoá các tác vụ tạo dữ liệu. + +--- + +## Những lỗi thường gặp & Mẹo chuyên nghiệp + +| Lỗi | Cách khắc phục | +|-----|----------------| +| Quên gọi `workbook.Calculate()` | Luôn gọi nó sau khi sửa công thức; nếu không sheet sẽ hiển thị giá trị đã lưu trong cache. | +| Dùng phiên bản Aspose.Cells cũ | Nâng cấp lên gói NuGet mới nhất để hỗ trợ các hàm mảng động như `SEQUENCE`. | +| Lưu trước khi tính toán | Lưu **sau** `Calculate` để tệp chứa kết quả mới nhất. | +| Giả định spill sẽ ghi đè dữ liệu hiện có | Aspose.Cells bảo tồn dữ liệu ngoài phạm vi spill; hãy xóa vùng đó trước nếu cần một bảng sạch. | + +**Mẹo pro:** Nếu bạn muốn độ dài của dãy có thể cấu hình, lưu số lượng vào một ô (ví dụ, `C1`) và dùng `=SEQUENCE(C1)`—engine sẽ đọc giá trị tại thời gian chạy. + +--- + +## Mở rộng ví dụ + +Bây giờ bạn đã biết cách **tạo workbook mới C#**, bạn có thể: + +- Thêm các công thức phức tạp hơn tham chiếu tới phạm vi spill (`=SUM(A1#)` trong đó `#` chỉ spill). +- Xuất ra PDF bằng `workbook.Save("output.pdf", SaveFormat.Pdf)`. +- Chèn biểu đồ tự động điều chỉnh kích thước theo mảng động. + +Tất cả những điều này dựa trên nền tảng **tính toán workbook C#** mà chúng ta vừa khám phá. + +--- + +## Kết luận + +Chúng ta đã đi qua toàn bộ quy trình **tạo workbook mới C#**, từ khởi tạo đối tượng `Workbook` đến chèn công thức `SEQUENCE` dạng spill, chỉnh sửa ô phụ thuộc, và cuối cùng buộc tính toán lại để mọi thứ luôn cập nhật. Đoạn mã hoàn chỉnh ở trên đã sẵn sàng chạy—chỉ cần dán vào một ứng dụng console, thêm gói NuGet Aspose.Cells, và bạn sẽ có một tệp Excel hoạt động trong tích tắc. + +Sẵn sàng cho bước tiếp theo? Hãy thử thay `5` tĩnh bằng tham chiếu ô, khám phá các hàm mảng động khác như `FILTER` hoặc `UNIQUE`, và tìm hiểu cách **Aspose.Cells C#** có thể hỗ trợ các engine báo cáo mạnh mẽ. Chúc bạn lập trình vui vẻ! + +--- + +*Giá trị hình ảnh:* + +![Ảnh chụp màn hình cho thấy một workbook mới được tạo với công thức SEQUENCE dạng spill – ví dụ tạo workbook mới C#](/images/create-new-workbook-csharp.png) + +--- + +*Nếu bạn thấy hướng dẫn này hữu ích, hãy cân nhắc star repository, chia sẻ với đồng nghiệp, hoặc để lại bình luận bên dưới. Phản hồi của bạn sẽ là nguồn động lực cho các hướng dẫn tương lai!* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/formulas-functions/_index.md b/cells/vietnamese/net/formulas-functions/_index.md index 97c3f52dbd..eff8f5490b 100644 --- a/cells/vietnamese/net/formulas-functions/_index.md +++ b/cells/vietnamese/net/formulas-functions/_index.md @@ -102,6 +102,8 @@ Tìm hiểu cách chỉ định ngôn ngữ cho tệp Excel của bạn bằng A ### [Cập nhật công thức Excel Power Query bằng Aspose.Cells .NET](./update-power-query-formulas-aspose-cells-net) Tìm hiểu cách cập nhật công thức Power Query theo chương trình trong sổ làm việc Excel bằng Aspose.Cells cho .NET. Quản lý nguồn dữ liệu chính để báo cáo động. +### [Cách sử dụng Lambda trong C# với công thức Excel – Hướng dẫn toàn diện](./how-to-use-lambda-in-c-with-excel-formulas-complete-guide/) + ## Hiểu về các loại công thức Excel Công thức Excel có nhiều dạng khác nhau, mỗi dạng có những đặc điểm riêng mà Aspose.Cells có thể quản lý: diff --git a/cells/vietnamese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md b/cells/vietnamese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md new file mode 100644 index 0000000000..d4a82fb45e --- /dev/null +++ b/cells/vietnamese/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-03-22 +description: Cách sử dụng lambda trong C# để làm việc với công thức Excel. Học cách + viết công thức vào ô, chuyển phạm vi thành mảng, hiển thị mảng trong console và + tính cotang trong Excel. +draft: false +keywords: +- how to use lambda +- display array in console +- convert range to array +- write formula to cell +- calculate cotangent in excel +language: vi +og_description: Cách sử dụng lambda trong C# để thao tác công thức Excel, chuyển phạm + vi thành mảng, ghi công thức vào ô, hiển thị mảng trong console và tính cotang trong + Excel. +og_title: Cách sử dụng Lambda trong C# với công thức Excel – Từng bước +tags: +- C# +- Aspose.Cells +- Excel Automation +- Lambda Expressions +title: Cách sử dụng Lambda trong C# với công thức Excel – Hướng dẫn toàn diện +url: /vi/net/formulas-functions/how-to-use-lambda-in-c-with-excel-formulas-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Sử Dụng Lambda trong C# với Công Thức Excel – Hướng Dẫn Toàn Diện + +Bạn đã bao giờ tự hỏi **cách sử dụng lambda** khi tự động hóa Excel từ C# chưa? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn khi cần kết hợp sức mạnh của các hàm mảng động mới của Excel với khả năng `LAMBDA` của C#. Tin tốt là gì? Thực tế nó khá đơn giản một khi bạn thấy các thành phần khớp nhau. + +Trong tutorial này, chúng ta sẽ đi qua **việc ghi công thức vào ô**, **chuyển dải ô thành mảng**, **hiển thị mảng trong console**, và thậm chí **tính cotang trong Excel** — đồng thời chỉ cho bạn **cách sử dụng lambda** bên trong một lời gọi `REDUCE`. Khi kết thúc, bạn sẽ có một đoạn mã có thể chạy được và có thể chèn vào bất kỳ dự án .NET nào có tham chiếu tới Aspose.Cells (hoặc thư viện tương tự). + +--- + +## Những Điều Bạn Sẽ Học + +- Cách **ghi công thức vào ô** bằng C#. +- Cách **chuyển dải ô thành mảng** bằng hàm `EXPAND`. +- Cách **hiển thị mảng trong console** sau khi tính toán. +- Cách **tính cotang trong Excel** bằng `COT` và `COTH`. +- Cú pháp chính xác để **cách sử dụng lambda** trong hàm `REDUCE` của Excel từ C#. + +> **Yêu cầu trước:** Bạn cần một phiên bản .NET mới (Core 6+ hoặc .NET Framework 4.7+) và thư viện Aspose.Cells for .NET được cài đặt qua NuGet. + +--- + +## Bước 1: Thiết Lập Workbook và Ghi Công Thức Vào Ô + +Điều đầu tiên chúng ta làm là tạo một workbook mới và lấy worksheet đầu tiên. Sau đó chúng ta **ghi một công thức vào ô** – trong trường hợp này ô `A1` sẽ chứa kết quả của một lời gọi `EXPAND`. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write formula to A1 – we’ll expand B1:C2 into a 4‑by‑5 array later + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; +``` + +**Tại sao điều này quan trọng:** Ghi công thức trực tiếp từ mã cho phép bạn tạo ra các bảng tính phức tạp một cách tự động mà không cần mở Excel. Nó cũng chuẩn bị nền tảng cho bước tiếp theo, nơi chúng ta **chuyển dải ô thành mảng**. + +--- + +## Bước 2: Chuyển Dải Ô Thành Mảng với EXPAND + +`EXPAND` là cách của Excel để biến một dải ô nhỏ thành một ma trận lớn hơn. Khi đặt công thức ở `A1`, Excel sẽ “spill” ra một khối 4 × 5 bắt đầu từ ô đó. Từ C#, chúng ta không cần sao chép giá trị thủ công – thư viện sẽ thực hiện việc này khi chúng ta gọi `Calculate`. + +```csharp + // The EXPAND formula will spill into A1:E4 (4 rows × 5 columns) + // No extra code needed – the workbook will handle the spill. +``` + +**Cách sử dụng lambda:** Chưa tới lúc này, nhưng hãy chờ nhé. Đầu tiên chúng ta cần dữ liệu trong sheet, sau đó sẽ giảm chúng bằng một lambda. + +--- + +## Bước 3: Sử Dụng LAMBDA Bên Trong REDUCE – Trọng Tâm của “Cách Sử Dụng Lambda” + +Excel 365 đã giới thiệu `REDUCE`, nhận vào **giá trị khởi tạo**, **dải ô**, và một **LAMBDA** chỉ định cách kết hợp mỗi phần tử. Từ C# chúng ta chỉ cần gán chuỗi công thức; lambda tồn tại bên trong công thức Excel, không phải trong mã C#. + +```csharp + // Reduce the spilled array by summing all its values. + // This demonstrates how to use lambda inside REDUCE. + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; +``` + +**Giải thích:** +- `0` là giá trị khởi tạo của bộ tích lũy (`acc`). +- `A1:D4` là dải ô chúng ta muốn xử lý (bốn cột đầu tiên của spill). +- `LAMBDA(acc, x, acc + x)` chỉ cho Excel cộng mỗi ô (`x`) vào bộ tích lũy. + +Đó là bản chất của **cách sử dụng lambda** để tổng hợp trong ngữ cảnh bảng tính. + +--- + +## Bước 4: Tính Cotang trong Excel – Từ Độ Đo Sang Hyperbolic + +Nếu bạn cần kết quả lượng giác, các hàm `COT` và `COTH` của Excel rất tiện lợi. Chúng ta sẽ đặt chúng ở `G1` và `G2` tương ứng. + +```csharp + // Demonstrate trigonometric functions – cotangent and hyperbolic cotangent + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected result: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; // Hyperbolic cotangent of 1 +``` + +**Tại sao hữu ích:** Biết **cách tính cotang trong Excel** có thể giúp bạn tránh việc viết mã toán học tùy chỉnh, đặc biệt khi workbook sẽ được chia sẻ với những người không phải lập trình viên. + +--- + +## Bước 5: Buộc Tính Toán và Lấy Mảng Đã Mở Rộng + +Bây giờ chúng ta yêu cầu workbook tính toán mọi công thức, sau đó lấy mảng đã spill ra từ `A1`. Đây là nơi chúng ta **hiển thị mảng trong console**. + +```csharp + // Force calculation of all formulas + workbook.Calculate(); + + // Retrieve the spilled array from A1 as a 2‑D object + var expanded = worksheet.Cells["A1"].Value; + + // Pretty‑print the 2‑D array to the console + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show the result of the REDUCE lambda + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Bạn sẽ thấy:** +- Một ma trận 4 × 5 được định dạng đẹp, in ra từng dòng. +- Tổng được tính bởi lambda `REDUCE`. +- Hai giá trị cotang. + +Điều này hoàn thiện quy trình từ **ghi công thức vào ô** cho tới **hiển thị mảng trong console**. + +--- + +## Ví Dụ Hoàn Chỉnh (Sẵn Sàng Sao Chép‑Dán) + +Dưới đây là toàn bộ chương trình bạn có thể đưa vào một ứng dụng console. Nhớ thêm package `Aspose.Cells` qua NuGet trước (`dotnet add package Aspose.Cells`). + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Step 1: Initialize workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Write EXPAND formula (convert range to array) + worksheet.Cells["A1"].Formula = "=EXPAND(B1:C2, 4, 5)"; + + // Step 3: Use REDUCE with LAMBDA (how to use lambda) + worksheet.Cells["E1"].Formula = "=REDUCE(0, A1:D4, LAMBDA(acc, x, acc + x))"; + + // Step 4: Calculate cotangent values (calculate cotangent in excel) + worksheet.Cells["G1"].Formula = "=COT(PI()/4)"; // Expected: 1 + worksheet.Cells["G2"].Formula = "=COTH(1)"; + + // Step 5: Force calculation + workbook.Calculate(); + + // Step 6: Retrieve and display the expanded array (display array in console) + var expanded = worksheet.Cells["A1"].Value; + Console.WriteLine("Expanded array from A1 (4×5):"); + if (expanded is object[,] matrix) + { + for (int r = 0; r < matrix.GetLength(0); r++) + { + for (int c = 0; c < matrix.GetLength(1); c++) + { + Console.Write($"{matrix[r, c]}\t"); + } + Console.WriteLine(); + } + } + else + { + Console.WriteLine("Unexpected data type."); + } + + // Show REDUCE result + Console.WriteLine($"\nSum of A1:D4 (via REDUCE lambda): {worksheet.Cells["E1"].Value}"); + + // Show cotangent results + Console.WriteLine($"Cotangent of π/4: {worksheet.Cells["G1"].Value}"); + Console.WriteLine($"Hyperbolic cotangent of 1: {worksheet.Cells["G2"].Value}"); + } +} +``` + +**Kết quả console dự kiến (giá trị sẽ thay đổi tùy vào nội dung mặc định của B1:C2, mặc định là 0):** + +``` +Expanded array from A1 (4×5): +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 + +Sum of A1:D4 (via REDUCE lambda): 0 +Cotangent of π/4: 1 +Hyperbolic cotangent of 1: 1.31303528549933 +``` + +Bạn có thể tự do điền `B1:C2` với các số của mình trước khi chạy – ma trận sẽ phản ánh các giá trị đó. + +--- + +## Mẹo Chuyên Gia & Những Cạm Bẫy Thường Gặp + +- **Mẹo:** Nếu bạn muốn dải spill bắt đầu ở vị trí khác, chỉ cần thay đổi ô đích (`A1`). Hàm `EXPAND` sẽ tuân theo anchor mới. +- **Cẩn thận:** Các ô trống trong dải nguồn sẽ trở thành `0` trong mảng spill, có thể ảnh hưởng tới tổng `REDUCE` của bạn. +- **Trường hợp đặc biệt:** Khi workbook chứa các công thức phụ thuộc vào hàm volatile (ví dụ `NOW()`), hãy gọi `workbook.Calculate()` sau khi đặt tất cả công thức để đảm bảo mọi thứ được cập nhật. +- **Lưu ý hiệu năng:** Đối với các spill lớn, cân nhắc giới hạn kích thước trong lời gọi `EXPAND`; nếu không, bạn có thể cấp phát quá nhiều bộ nhớ. +- **Tương thích:** The ` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/number-and-display-formats-in-excel/_index.md b/cells/vietnamese/net/number-and-display-formats-in-excel/_index.md index fcf1f6ea3c..5af78c7dd1 100644 --- a/cells/vietnamese/net/number-and-display-formats-in-excel/_index.md +++ b/cells/vietnamese/net/number-and-display-formats-in-excel/_index.md @@ -32,6 +32,10 @@ Nếu bạn muốn thêm nét cá nhân vào bảng tính Excel của mình, tù Tự động định dạng số trong Excel bằng Aspose.Cells cho .NET. Tìm hiểu cách áp dụng định dạng ngày, phần trăm và tiền tệ theo chương trình. ### [Tùy chỉnh định dạng hiển thị với số do người dùng xác định](./customizing-display-formats-with-user-defined-numbers/) Tìm hiểu cách tùy chỉnh định dạng hiển thị bằng Aspose.Cells cho .NET. Định dạng ngày tháng, phần trăm và tiền tệ bằng hướng dẫn từng bước này. +### [Cách xuất Excel với định dạng – Bảo tồn định dạng số](./how-to-export-excel-with-formatting-preserve-number-format/) +Xuất tệp Excel bằng Aspose.Cells cho .NET đồng thời giữ nguyên định dạng số, ngày và tiền tệ. +### [Định dạng ngày giờ sang ISO trong C# – Hướng dẫn toàn diện](./format-datetime-to-iso-in-c-complete-guide/) +Hướng dẫn chi tiết cách chuyển đổi ngày giờ sang định dạng ISO trong C# bằng Aspose.Cells cho .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md b/cells/vietnamese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md new file mode 100644 index 0000000000..a934e1e6ca --- /dev/null +++ b/cells/vietnamese/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-22 +description: Tìm hiểu cách định dạng datetime sang ISO khi trích xuất ngày từ Excel + và hiển thị ngày ISO bằng Aspose.Cells trong C#. +draft: false +keywords: +- format datetime to iso +- extract date from excel +- display iso date +- Aspose.Cells date parsing +- Japanese era dates +language: vi +og_description: Định dạng ngày giờ sang ISO trở nên dễ dàng. Hướng dẫn này chỉ cách + trích xuất ngày từ Excel và hiển thị ngày ở định dạng ISO bằng Aspose.Cells. +og_title: Định dạng datetime sang ISO trong C# – Hướng dẫn từng bước +tags: +- C# +- Aspose.Cells +- DateTime +- Excel +- ISO 8601 +title: Định dạng datetime sang ISO trong C# – Hướng dẫn đầy đủ +url: /vi/net/number-and-display-formats-in-excel/format-datetime-to-iso-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Định dạng datetime sang iso trong C# – Hướng dẫn đầy đủ + +Bạn đã bao giờ cần **định dạng datetime sang iso** nhưng nguồn dữ liệu lại nằm trong một workbook Excel? Có thể ô chứa một niên đại Nhật Bản như “令和3年5月1日” và bạn đang bối rối không biết làm sao chuyển nó thành chuỗi sạch `2021‑05‑01`. Bạn không phải là người duy nhất. Trong hướng dẫn này, chúng tôi sẽ **trích xuất ngày từ excel**, phân tích niên đại Nhật Bản, và sau đó **hiển thị ngày iso** trên console—tất cả chỉ với vài dòng C# và Aspose.Cells. + +Chúng tôi sẽ hướng dẫn từng bước những gì bạn cần: gói NuGet bắt buộc, đoạn mã chính xác bạn có thể sao chép‑dán, lý do mỗi dòng quan trọng, và một vài mẹo cho các trường hợp đặc biệt. Khi kết thúc, bạn sẽ có một đoạn mã có thể tái sử dụng để định dạng datetime sang iso bất kể giá trị Excel gốc có kỳ quặc thế nào. + +## Những gì bạn cần + +- .NET 6.0 trở lên (mã cũng biên dịch được trên .NET Framework 4.6+) +- Visual Studio 2022 (hoặc bất kỳ trình soạn thảo nào bạn thích) +- **Aspose.Cells for .NET** gói NuGet – `Install-Package Aspose.Cells` +- Một tệp Excel (hoặc một workbook mới) chứa ngày ở định dạng niên đại Nhật Bản + +Chỉ vậy thôi. Không cần thư viện bổ sung, không COM interop, chỉ một phương thức duy nhất, được tài liệu hoá đầy đủ. + +## Bước 1: Tạo Workbook và Ghi ngày theo Niên đại Nhật Bản + +Đầu tiên, chúng ta cần một workbook để làm việc. Nếu bạn đã có tệp Excel, bạn có thể tải nó bằng `new Workbook("path")`. Trong ví dụ này, chúng ta sẽ tạo một workbook mới trong bộ nhớ và đưa chuỗi niên đại Nhật Bản vào ô **A1**. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // 1️⃣ Create a fresh workbook + Workbook workbook = new Workbook(); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Write a Japanese era date (Reiwa 3 = 2021) into A1 + sheet.Cells["A1"].PutValue("令和3年5月1日"); +``` + +> **Lý do chúng ta làm như vậy:** Aspose.Cells xử lý giá trị ô dưới dạng chuỗi theo mặc định. Bằng cách chèn văn bản niên đại thô, chúng ta mô phỏng một kịch bản thực tế nơi khách hàng Nhật Bản nhập ngày theo lịch bản địa của họ. + +## Bước 2: Bật phân tích Niên đại Nhật Bản và Trích xuất Ngày + +Aspose.Cells có thể tự động chuyển đổi chuỗi niên đại Nhật Bản thành đối tượng .NET `DateTime`—miễn là bạn bật tính năng này. Cờ `DateTimeParseOptions.EnableJapaneseEra` thực hiện công việc nặng. + +```csharp + // 3️⃣ Retrieve the cell value while enabling Japanese era parsing + CellValue parsed = sheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn quên tùy chọn `EnableJapaneseEra`, thư viện sẽ trả về chuỗi gốc và việc chuyển đổi tiếp theo sẽ thất bại. Luôn kiểm tra `parsed.Type` nếu bạn đang xử lý nội dung hỗn hợp. + +## Bước 3: Chuyển DateTime đã phân tích sang ISO 8601 + +Bây giờ chúng ta đã có một `DateTime` hợp lệ, việc chuyển nó thành chuỗi định dạng ISO rất đơn giản. Mẫu `"yyyy-MM-dd"` tuân theo phần ngày của ISO 8601, đó là định dạng hầu hết các API mong đợi. + +```csharp + // 4️⃣ Convert to ISO 8601 (yyyy‑MM‑dd) and display it + string isoDate = parsed.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +Chạy chương trình sẽ in ra: + +``` +ISO date: 2021-05-01 +``` + +Đó là **ngày iso hiển thị** mà bạn đang muốn. + +## Ví dụ đầy đủ, có thể chạy + +Dưới đây là khối mã hoàn chỉnh bạn có thể sao chép trực tiếp vào dự án console. Không có phụ thuộc ẩn, không cần cấu hình thêm. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a Japanese era date into cell A1 + worksheet.Cells["A1"].PutValue("令和3年5月1日"); + + // Retrieve the cell value with Japanese era parsing enabled + CellValue parsedValue = worksheet.Cells["A1"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + + // Convert the DateTime to ISO 8601 format and output it + string isoDate = parsedValue.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"ISO date: {isoDate}"); + } +} +``` + +> **Kết quả mong đợi:** `ISO date: 2021-05-01` + +## Phân tích từng bước (Tại sao mỗi phần quan trọng) + +| Bước | Điều gì xảy ra | Tại sao quan trọng | +|------|----------------|--------------------| +| **Create workbook** | Khởi tạo một container Excel trong bộ nhớ. | Cung cấp môi trường sandbox để thử nghiệm mà không cần chạm tới hệ thống tệp. | +| **PutValue** | Lưu chuỗi niên đại Nhật Bản thô vào **A1**. | Mô phỏng việc nhập dữ liệu thực tế; đảm bảo bộ phân tích thấy đúng văn bản. | +| **GetValue with `EnableJapaneseEra`** | Chuyển đổi chuỗi niên đại thành .NET `DateTime`. | Tự động xử lý chuyển đổi lịch—không cần bảng tra cứu thủ công. | +| **`ToString("yyyy-MM-dd")`** | Định dạng `DateTime` thành ISO 8601. | Đảm bảo chuỗi ngày không phụ thuộc vào ngôn ngữ, có thể sắp xếp và được chấp nhận bởi REST API, cơ sở dữ liệu, v.v. | +| **Console.WriteLine** | Hiển thị ngày ISO cuối cùng. | Xác nhận toàn bộ quy trình hoạt động từ đầu tới cuối. | + +## Xử lý các biến thể phổ biến + +### 1. Vị trí ô khác + +Nếu ngày của bạn nằm ở **B2** hoặc một phạm vi có tên, chỉ cần thay `"A1"` bằng địa chỉ phù hợp: + +```csharp +worksheet.Cells["B2"].PutValue("令和2年12月31日"); +var value = worksheet.Cells["B2"] + .GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); +``` + +### 2. Nhiều ngày trong một cột + +Khi bạn cần **trích xuất ngày từ excel** cho nhiều hàng, lặp qua phạm vi đã sử dụng: + +```csharp +int lastRow = worksheet.Cells.MaxDataRow; +for (int i = 0; i <= lastRow; i++) +{ + var cell = worksheet.Cells[i, 0]; // column A + var cv = cell.GetValue(CellValueType.DateTime, DateTimeParseOptions.EnableJapaneseEra); + string iso = cv.DateTimeValue.ToString("yyyy-MM-dd"); + Console.WriteLine($"Row {i + 1}: {iso}"); +} +``` + +### 3. Phương án dự phòng cho ngày không phải niên đại + +Nếu một ô đã chứa chuỗi ngày chuẩn, bộ phân tích vẫn hoạt động, nhưng bạn có thể muốn một biện pháp an toàn: + +```csharp +CellValue cv = cell.GetValue(CellValueType.DateTime, + DateTimeParseOptions.EnableJapaneseEra | DateTimeParseOptions.TryParse); +``` + +Cờ `TryParse` ngăn lỗi ngoại lệ và trả về giá trị gốc nếu chuyển đổi thất bại. + +### 4. Thành phần thời gian + +Nếu bạn cũng cần phần thời gian, sử dụng `"yyyy-MM-ddTHH:mm:ss"`: + +```csharp +string isoDateTime = parsedValue.DateTimeValue.ToString("yyyy-MM-ddTHH:mm:ss"); +``` + +Điều này tạo ra một dấu thời gian ISO 8601 đầy đủ (`2021-05-01T00:00:00`). + +## Hình ảnh minh họa + +![ví dụ định dạng datetime sang iso](image.png "Một ví dụ về định dạng datetime sang iso trong C#") + +*Văn bản thay thế:* *ví dụ định dạng datetime sang iso hiển thị đầu ra console* + +## Câu hỏi thường gặp + +- **Tôi có thể sử dụng điều này với tệp .xls không?** + Có. Aspose.Cells hỗ trợ `.xls`, `.xlsx`, `.csv`, và nhiều định dạng khác ngay từ đầu. + +- **Nếu workbook được bảo vệ bằng mật khẩu thì sao?** + Tải nó bằng `new Workbook("file.xlsx", new LoadOptions { Password = "secret" })`. + +- **Định dạng ISO có phụ thuộc vào ngôn ngữ không?** + Không. Mẫu `"yyyy-MM-dd"` không phụ thuộc vào ngôn ngữ, đảm bảo cùng một chuỗi trên mọi máy. + +- **Điều này có hoạt động trên .NET Core không?** + Hoàn toàn—Aspose.Cells tuân thủ .NET Standard 2.0. + +## Kết luận + +Chúng tôi đã trình bày cách **định dạng datetime sang iso** bằng cách **trích xuất ngày từ excel**, phân tích chuỗi niên đại Nhật Bản, và cuối cùng **hiển thị ngày iso** trên console. Các bước cốt lõi—tạo workbook, ghi hoặc tải văn bản niên đại, bật phân tích niên đại Nhật Bản, và định dạng với `ToString("yyyy-MM-dd")`—là tất cả những gì bạn cần cho hầu hết các trường hợp. + +Tiếp theo, bạn có thể muốn: + +- Ghi lại các ngày ISO vào một cột khác để xử lý tiếp theo. +- Xuất workbook đã chuyển đổi sang CSV để nhập hàng loạt. +- Kết hợp logic này với một web API nhận tải lên Excel và trả về ngày ISO được mã hoá JSON. + +Bạn có thể thoải mái thử nghiệm với các định dạng ngày khác nhau, múi giờ, hoặc thậm chí lịch tùy chỉnh. Tính linh hoạt của Aspose.Cells có nghĩa là bạn hiếm khi gặp phải rào cản. + +Chúc lập trình vui vẻ, và mong mọi ngày của bạn đều tuân thủ chuẩn ISO một cách hoàn hảo! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md b/cells/vietnamese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md new file mode 100644 index 0000000000..536dd9e639 --- /dev/null +++ b/cells/vietnamese/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-22 +description: Cách xuất Excel với định dạng và giữ nguyên định dạng số. Tìm hiểu cách + chuyển đổi phạm vi Excel, lấy kết quả công thức và xuất Excel với định dạng bằng + Aspose.Cells. +draft: false +keywords: +- how to export excel +- preserve number format +- convert excel range +- get formula result +- export excel with formatting +language: vi +og_description: Cách xuất Excel với định dạng và giữ nguyên định dạng số. Hướng dẫn + chi tiết từng bước để chuyển đổi vùng Excel, lấy kết quả công thức và xuất Excel + với định dạng trong C#. +og_title: Cách xuất Excel có định dạng – Bảo tồn định dạng số +tags: +- C# +- Aspose.Cells +- Excel automation +title: Cách xuất Excel có định dạng – Giữ nguyên định dạng số +url: /vi/net/number-and-display-formats-in-excel/how-to-export-excel-with-formatting-preserve-number-format/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách xuất Excel với định dạng – Bảo toàn định dạng số + +Bạn đã bao giờ tự hỏi **cách xuất Excel** dữ liệu trong khi giữ nguyên giao diện của từng ô như bạn thấy trong workbook chưa? Có thể bạn cần gửi báo cáo cho khách hàng, cung cấp dữ liệu cho một điều khiển lưới, hoặc chỉ đơn giản lưu các giá trị vào cơ sở dữ liệu. Vấn đề thường gặp là mất định dạng số hoặc công thức biến thành chuỗi thô. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ C# hoàn chỉnh, sẵn sàng chạy, **bảo toàn định dạng số**, **chuyển đổi một phạm vi Excel** thành `DataTable`, **lấy kết quả công thức**, và cuối cùng **xuất Excel với định dạng** bằng Aspose.Cells. Khi kết thúc, bạn sẽ có một phương thức duy nhất có thể chèn vào bất kỳ dự án nào và gọi với một tham chiếu worksheet. + +> **Xem nhanh:** mã tạo một workbook, ghi một giá trị và một công thức, yêu cầu Aspose.Cells xuất các ô dưới dạng chuỗi đã định dạng, và in ra `123.456 | 246.912` – chính xác những gì bạn mong đợi khi xem trong Excel. + +--- + +## Những gì bạn cần + +- **Aspose.Cells for .NET** (bản dùng thử miễn phí vẫn đủ cho việc học) +- .NET 6.0 trở lên (API giống nhau trên .NET Framework) +- Môi trường phát triển C# cơ bản (Visual Studio, VS Code, Rider… tùy bạn) + +Không cần bất kỳ gói NuGet nào khác ngoài Aspose.Cells. Nếu bạn chưa cài đặt, chạy: + +```bash +dotnet add package Aspose.Cells +``` + +--- + +## Bước 1 – Tạo Workbook và Ghi Giá trị (bao gồm công thức) + +Đầu tiên chúng ta tạo một workbook mới và đặt một giá trị số vào **A1**. Sau đó thêm một công thức đơn giản trong **B1** nhân ô đầu tiên với hai. Điều này tạo nền tảng để minh họa **lấy kết quả công thức** sau này. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Step 1: Create a new workbook and get its first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Write a numeric value and a formula that uses it + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Continue with export options... + ExportRangeAsDataTable(worksheet); + } +} +``` + +**Tại sao điều này quan trọng:** +- `PutValue` lưu số thô, trong khi `PutFormula` lưu công thức tính toán. +- Aspose.Cells giữ công thức **sống**, vì vậy khi chúng ta sau này yêu cầu giá trị của ô, chúng ta sẽ thực sự nhận được `246.912`, không phải chuỗi `"=A1*2"`. + +--- + +## Bước 2 – Yêu cầu Aspose.Cells xuất giá trị dưới dạng chuỗi đã định dạng + +Nếu bạn chỉ gọi `ExportDataTable` với cài đặt mặc định, các ô số sẽ được trả về dưới dạng giá trị `double` gốc của chúng. Điều này sẽ loại bỏ mọi dấu phân cách hàng nghìn, ký hiệu tiền tệ, hoặc số chữ số thập phân tùy chỉnh mà bạn đã thiết lập. Lớp `ExportTableOptions` cho phép chúng ta **bảo toàn định dạng số** và **xuất dưới dạng chuỗi**. + +```csharp +static void ExportRangeAsDataTable(Worksheet worksheet) +{ + // Step 2: Set export options to retrieve values as formatted strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, // Return values as strings + ExportNumberFormat = true // Preserve the cell's number format + }; + + // Step 3: Export the range A1:B1 to a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + PrintDataTable(dataTable); +} +``` + +**Điểm quan trọng:** `ExportNumberFormat = true` là cờ cho phép **bảo toàn định dạng số** hoạt động. Nếu không, bạn sẽ thấy `"123.456"` và `"246.912"` dưới dạng số thô, có thể trông ổn trong code nhưng không khi dán dữ liệu vào UI mong đợi cùng định dạng như Excel. + +--- + +## Bước 3 – In dữ liệu đã xuất (Xác minh) + +Bây giờ chúng ta có một `DataTable` đầy các chuỗi đã định dạng, hãy in nội dung ra console. Điều này cũng chứng minh rằng chúng ta đã **lấy kết quả công thức** thành công mà không cần tự mình tính toán công thức. + +```csharp +static void PrintDataTable(DataTable table) +{ + // Step 4: Print the exported values (already formatted) + foreach (DataRow row in table.Rows) + { + // The output will look like: 123.456 | 246.912 + Console.WriteLine($"{row[0]} | {row[1]}"); + } +} +``` + +Chạy chương trình sẽ in: + +``` +123.456 | 246.912 +``` + +Lưu ý cột thứ hai hiển thị **kết quả công thức**, không phải văn bản công thức. Đó chính là những gì bạn cần khi **xuất Excel với định dạng** cho quá trình xử lý tiếp theo. + +--- + +## Bước 4 – Chuyển đổi phạm vi Excel lớn hơn (Tùy chọn) + +Ví dụ trên chỉ xử lý một đoạn nhỏ `A1:B1`, nhưng trong thực tế thường cần xuất toàn bộ bảng. Phương thức này hoạt động cho bất kỳ khối hình chữ nhật nào – chỉ cần điều chỉnh các đối số `firstRow`, `firstColumn`, `totalRows`, và `totalColumns`. + +```csharp +// Example: Export a 10‑row by 5‑column block starting at C3 +DataTable bigTable = worksheet.Cells.ExportDataTable( + firstRow: 2, // Zero‑based index (C3 = row 2, column 2) + firstColumn: 2, + totalRows: 10, + totalColumns: 5, + includeColumnNames: true, + options: exportOptions); +``` + +**Mẹo chuyên nghiệp:** Nếu sheet của bạn đã có hàng tiêu đề, đặt `includeColumnNames` thành `true`. Aspose.Cells sẽ dùng hàng đầu tiên của phạm vi làm tên cột, rất hữu ích khi bạn sau này gắn `DataTable` vào lưới UI. + +--- + +## Bước 5 – Những lỗi thường gặp & Cách tránh + +| Vấn đề | Nguyên nhân | Cách khắc phục | +|-------|-------------|----------------| +| **Số mất dấu phẩy hoặc ký hiệu tiền tệ** | `ExportAsString` là `false` hoặc `ExportNumberFormat` bị bỏ qua | Đặt cả `ExportAsString = true` **và** `ExportNumberFormat = true`. | +| **Các ô công thức trả về văn bản công thức** | Bạn chưa gọi `CalculateFormula` trước khi xuất (chỉ cần nếu workbook không được đặt tự động tính toán) | Hoặc bật tự động tính toán (`workbook.CalculateFormula()`) hoặc dựa vào `ExportAsString` để buộc đánh giá. | +| **Tiêu đề xuất hiện như các dòng dữ liệu** | `includeColumnNames` được đặt là `false` trong khi phạm vi của bạn có hàng tiêu đề | Đặt `includeColumnNames = true` để coi hàng đầu tiên là tên cột. | +| **Phạm vi lớn gây áp lực bộ nhớ** | Xuất toàn bộ sheet một lần sẽ tải mọi thứ vào bộ nhớ | Xuất theo từng khối (ví dụ 500 dòng mỗi lần) và hợp nhất các `DataTable` nếu cần. | + +--- + +## Bước 6 – Ví dụ hoàn chỉnh (Sẵn sàng sao chép‑dán) + +Dưới đây là toàn bộ chương trình, từ các câu lệnh `using` đến `Main`. Dán vào một ứng dụng console và nhấn **F5** – bạn sẽ ngay lập tức thấy đầu ra đã định dạng. + +```csharp +using Aspose.Cells; +using System; +using System.Data; + +class ExportExcelDemo +{ + static void Main() + { + // Create workbook and worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Populate cells + worksheet.Cells["A1"].PutValue(123.456); + worksheet.Cells["B1"].PutFormula("=A1*2"); + + // Export options: keep formatting and return strings + ExportTableOptions exportOptions = new ExportTableOptions + { + ExportAsString = true, + ExportNumberFormat = true + }; + + // Export A1:B1 as a DataTable + DataTable dataTable = worksheet.Cells.ExportDataTable( + firstRow: 0, + firstColumn: 0, + totalRows: 1, + totalColumns: 2, + includeColumnNames: true, + options: exportOptions); + + // Print results + foreach (DataRow row in dataTable.Rows) + { + Console.WriteLine($"{row[0]} | {row[1]}"); // Expected: "123.456 | 246.912" + } + + // Keep console window open + Console.WriteLine("\nPress any key to exit..."); + Console.ReadKey(); + } +} +``` + +**Kết quả mong đợi** + +``` +123.456 | 246.912 + +Press any key to exit... +``` + +Đó là toàn bộ quy trình **cách xuất excel**, với định dạng được giữ nguyên, kết quả công thức đã được tính, và một `DataTable` sạch sàng, sẵn sàng cho bất kỳ người tiêu dùng .NET nào. + +--- + +## Kết luận + +Chúng tôi đã đề cập mọi thứ bạn cần biết về **cách xuất dữ liệu Excel** trong khi **bảo toàn định dạng số**, **chuyển đổi một phạm vi Excel** thành `DataTable`, và **lấy kết quả công thức** mà không cần phân tích thêm. Điều quan trọng là cấu hình `ExportTableOptions` – một khi bạn đặt `ExportAsString` và `ExportNumberFormat` thành `true`, Aspose.Cells sẽ thực hiện phần công việc nặng cho bạn. + +Từ đây bạn có thể: + +- Gắn `DataTable` vào `DataGrid` WPF hoặc view ASP.NET MVC. +- Ghi bảng ra file CSV trong khi giữ nguyên biểu diễn trực quan. +- Mở rộng cách tiếp cận cho nhiều sheet hoặc phạm vi động. + +Bạn có thể tự do thử nghiệm các định dạng khác nhau (tiền tệ, phần trăm) và các khối dữ liệu lớn hơn. Nếu gặp bất kỳ vấn đề nào, hãy quay lại bảng **những lỗi thường gặp** – nó bao gồm những trục trặc phổ biến nhất khi bạn **xuất excel với định dạng**. + +Chúc lập trình vui vẻ, và hy vọng các bảng tính đã xuất luôn trông hoàn hảo như bản gốc! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md b/cells/vietnamese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 0000000000..70dc523ae6 --- /dev/null +++ b/cells/vietnamese/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-03-22 +description: Tìm hiểu cách sao chép pivot trong C# bằng Aspose.Cells. Hướng dẫn này + cũng chỉ cách sao chép các hàng và tải workbook Excel bằng C# để thực hiện tự động + hoá Excel một cách liền mạch. +draft: false +keywords: +- how to duplicate pivot +- how to copy rows +- load excel workbook c# +- excel automation copy rows +language: vi +og_description: Cách sao chép pivot trong C#? Theo dõi hướng dẫn ngắn gọn này để tải + workbook Excel bằng C#, sao chép các hàng và làm chủ tự động hóa Excel sao chép + hàng. +og_title: Cách sao chép Pivot trong C# – Hướng dẫn đầy đủ +tags: +- C# +- Excel Automation +- Aspose.Cells +title: Cách sao chép Pivot trong C# – Hướng dẫn chi tiết từng bước +url: /vi/net/pivot-tables/how-to-duplicate-pivot-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách sao chép Pivot trong C# – Hướng dẫn chi tiết từng bước + +Bạn đã bao giờ tự hỏi **cách sao chép pivot** bảng một cách lập trình mà không cần kéo chúng thủ công trong Excel chưa? Bạn không phải là người duy nhất. Trong nhiều quy trình báo cáo, cùng một bố cục pivot cần được áp dụng trên một tập hàng mới, và việc thực hiện thủ công là lãng phí thời gian. + +Tin tốt? Chỉ với vài dòng C# bạn có thể tải một workbook Excel, xác định vùng chứa pivot, và **cách sao chép hàng** để pivot xuất hiện ở vị trí mới — tất cả trong một lần chạy tự động. Trong hướng dẫn này, chúng tôi cũng sẽ đề cập đến các kiến thức cơ bản về **load excel workbook c#** và cung cấp cho bạn nền tảng vững chắc cho các nhiệm vụ **excel automation copy rows**. + +> **Bạn sẽ nhận được** +> • Một ví dụ hoàn chỉnh, có thể chạy được để sao chép một bảng pivot. +> • Giải thích lý do mỗi dòng mã quan trọng. +> • Mẹo xử lý các trường hợp đặc biệt như worksheet ẩn hoặc nhiều pivot. + +--- + +## Yêu cầu trước + +Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có: + +- **.NET 6.0** (hoặc bất kỳ phiên bản .NET nào gần đây) đã được cài đặt. +- **Aspose.Cells for .NET** – thư viện chúng ta sẽ dùng để thao tác với file Excel. Bạn có thể lấy nó qua NuGet: + +```bash +dotnet add package Aspose.Cells +``` + +- Một workbook nguồn (`Source.xlsx`) đã chứa một bảng pivot trong phạm vi **A1:J20** (phạm vi chúng ta sẽ sao chép). +- Kiến thức cơ bản về cú pháp C# – không cần gì phức tạp, chỉ các câu lệnh `using` thông thường và phương thức `Main`. + +Nếu bất kỳ mục nào ở trên chưa quen, hãy tạm dừng một chút và cài đặt gói; phần còn lại của hướng dẫn giả định thư viện đã sẵn sàng để sử dụng. + +![Minh họa cách sao chép pivot trong C# bằng Aspose.Cells](https://example.com/duplicate-pivot.png "minh họa cách sao chép pivot trong C#") + +*Văn bản thay thế ảnh: "cách sao chép pivot trong C# ví dụ hiển thị các hàng pivot gốc và đã sao chép".* + +## Bước 1: Load Excel Workbook C# – Mở tệp + +Điều đầu tiên bạn cần làm khi muốn **load excel workbook c#** là tạo một thể hiện `Workbook` trỏ tới tệp của bạn. Đối tượng này cho phép bạn truy cập mọi worksheet, ô và pivot trong file. + +```csharp +using Aspose.Cells; +using System; + +class Program +{ + static void Main() + { + // Step 1: Load the source workbook + string sourcePath = @"C:\Data\Source.xlsx"; + Workbook workbook = new Workbook(sourcePath); + + // From here on we can work with worksheets, ranges, and pivots. +``` + +**Tại sao điều này quan trọng:** +`Workbook` trừu tượng toàn bộ file Excel thành một mô hình trong bộ nhớ. Nếu không tải trước, bạn không thể kiểm tra vị trí của pivot hoặc sao chép hàng. Ngoài ra, hàm khởi tạo tự động phát hiện định dạng file (XLS, XLSX, CSV, v.v.), vì vậy bạn không cần viết mã bổ sung để xác định định dạng. + +## Bước 2: Cách sao chép hàng – Xác định vùng Pivot + +Bây giờ workbook đã ở trong bộ nhớ, chúng ta cần chỉ định cho Aspose.Cells những hàng nào chứa pivot. Trong ví dụ của chúng ta, pivot nằm trong **A1:J20**, tương đương với các hàng **0‑19** (đánh số bắt đầu từ 0). Chúng ta sẽ gói phạm vi này trong một cấu trúc `CellArea`. + +```csharp + // Step 2: Define the cell area that contains the pivot table (A1:J20) + // Row indices are zero‑based, column indices are also zero‑based. + CellArea copyRange = new CellArea(startRow: 0, startColumn: 0, endRow: 19, endColumn: 9); +``` + +**Tại sao chúng ta dùng `CellArea`:** +Đây là cách nhẹ để mô tả một khối hình chữ nhật. Khi bạn gọi `CopyRows` sau này, phương thức sẽ đọc đối tượng này để biết chính xác những hàng nào cần sao chép. Nếu bạn cần điều chỉnh phạm vi (ví dụ pivot mở rộng tới cột K), chỉ cần thay đổi giá trị `endColumn`. + +## Bước 3: Truy cập Worksheet mục tiêu + +Hầu hết các workbook chỉ có một sheet, nhưng API hoạt động tương tự cho nhiều sheet. Lấy worksheet đầu tiên (chỉ số 0) – đó là nơi pivot gốc nằm. + +```csharp + // Step 3: Get the first worksheet from the workbook + Worksheet worksheet = workbook.Worksheets[0]; +``` + +**Mẹo chuyên nghiệp:** +Nếu bạn có các sheet được đặt tên, cũng có thể lấy chúng bằng tên: `workbook.Worksheets["Sheet1"]`. Điều này giúp tránh việc hard‑coding chỉ số khi cấu trúc workbook thay đổi. + +## Bước 4: Cách sao chép hàng – Sao chép bảng Pivot + +Đây là phần cốt lõi của **cách sao chép pivot**: chúng ta sao chép các hàng chứa pivot tới vị trí mới. Trong trường hợp này, chúng ta bắt đầu tại hàng 31 (chỉ số 0‑based 30). Phương thức `CopyRows` sao chép *cả* dữ liệu và cache pivot nền, vì vậy các hàng mới hoạt động giống hệt như bản gốc. + +```csharp + // Step 4: Copy the rows of the defined range to a new location (starting at row 31) + // The third argument is the destination start row (zero‑based). + worksheet.Cells.CopyRows(copyRange.StartRow, copyRange.EndRow, destinationRow: 30); +``` + +**Điều gì đang diễn ra phía sau?** +`CopyRows` sao chép từng hàng, giữ nguyên công thức, kiểu dáng và định nghĩa pivot. Vì cache của pivot tồn tại ở mức workbook, pivot sao chép sẽ tự động tham chiếu cùng một nguồn dữ liệu – không cần cấu hình thêm. + +**Trường hợp đặc biệt – hàng ẩn:** +Nếu bất kỳ hàng nào trong phạm vi nguồn bị ẩn, chúng sẽ vẫn bị ẩn sau khi sao chép. Nếu muốn hiển thị lại, gọi `worksheet.Rows[destRow].IsHidden = false` sau khi sao chép. + +## Bước 5: Lưu Workbook – Xác minh bản sao + +Cuối cùng, ghi các thay đổi trở lại đĩa. Bạn có thể ghi đè lên file gốc hoặc, an toàn hơn, lưu với tên mới để có thể so sánh trước/sau. + +```csharp + // Step 5: Save the workbook – the pivot table is now duplicated in the new rows + string outputPath = @"C:\Data\CopyWithPivot.xlsx"; + workbook.Save(outputPath); + + Console.WriteLine("Pivot duplicated successfully! Check " + outputPath); + } +} +``` + +**Kết quả bạn sẽ thấy:** +Mở `CopyWithPivot.xlsx`. Bạn sẽ thấy pivot gốc ở **A1:J20** và một bản sao giống hệt bắt đầu tại **A31:J50**. Cả hai pivot đều có thể làm mới độc lập, và bất kỳ slicer nào gắn vào pivot gốc vẫn hoạt động cho bản sao vì chúng chia sẻ cùng một cache. + +## Câu hỏi thường gặp & Các biến thể + +### Tôi có thể sao chép nhiều pivot cùng lúc không? + +Chắc chắn. Duyệt qua tất cả các bảng pivot (`worksheet.PivotTables`) và sao chép phạm vi của mỗi pivot tới một vị trí đích khác. Chỉ cần đảm bảo các phạm vi đích không chồng lấn nhau. + +### Nếu workbook nguồn được bảo vệ bằng mật khẩu thì sao? + +Aspose.Cells cho phép bạn mở file được bảo vệ bằng cách truyền mật khẩu vào hàm khởi tạo `Workbook`: + +```csharp +Workbook workbook = new Workbook(sourcePath, new LoadOptions { Password = "mySecret" }); +``` + +### Cách sao chép hàng mà không ảnh hưởng đến công thức? + +Nếu bạn chỉ cần *giá trị* (không có công thức), sử dụng `CopyRows` với cờ `CopyOptions`: + +```csharp +worksheet.Cells.CopyRows(sourceStart, sourceEnd, destStart, new CopyOptions { CopyValues = true }); +``` + +### Có cách nào để sao chép hàng vào một workbook *khác* không? + +Có. Sau khi sao chép hàng trong sheet nguồn, bạn có thể sao chép worksheet vào một thể hiện `Workbook` khác bằng `targetWorkbook.Worksheets.AddCopy(worksheet)`. + +## Mẹo chuyên nghiệp cho việc sao chép hàng Excel Automation đáng tin cậy + +- **Xác thực phạm vi** trước khi sao chép. Một câu lệnh nhanh `if (copyRange.EndRow >= worksheet.Cells.MaxDataRow)` ngăn lỗi vượt quá phạm vi. +- **Tắt tính toán** khi sao chép các phạm vi lớn: `workbook.Settings.CalcMode = CalcMode.Manual;` – điều này tăng tốc độ thực hiện đáng kể. +- **Giải phóng đối tượng** (`workbook.Dispose()`) nếu bạn xử lý nhiều file trong vòng lặp để giải phóng tài nguyên gốc. +- **Ghi log hoạt động** – đặc biệt trong các pipeline sản xuất – để bạn có thể truy vết file nào đã được xử lý và phát hiện lỗi sớm. + +## Kết luận + +Bây giờ bạn đã biết **cách sao chép pivot** trong C# bằng Aspose.Cells, và đã thấy quy trình đầy đủ từ **load excel workbook c#** tới **excel automation copy rows** và cuối cùng là lưu kết quả. Ví dụ này tự chứa, chạy ngay mà không cần cấu hình thêm, và có thể mở rộng để xử lý nhiều pivot, file được bảo vệ, hoặc sao chép qua các workbook. + +Bước tiếp theo? Hãy thử điều chỉnh script để: + +- Làm mới pivot đã sao chép một cách lập trình (`pivotTable.RefreshData();`). +- Xuất vùng đã sao chép ra file CSV để xử lý tiếp downstream. +- Tích hợp mã vào một API ASP.NET Core để người dùng có thể tải lên file và nhận ngay phiên bản pivot đã sao chép. + +Chúc lập trình vui vẻ, và chúc quá trình tự động hoá Excel của bạn luôn suôn sẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/row-and-column-management/_index.md b/cells/vietnamese/net/row-and-column-management/_index.md index 6984e03f22..0f9e10254d 100644 --- a/cells/vietnamese/net/row-and-column-management/_index.md +++ b/cells/vietnamese/net/row-and-column-management/_index.md @@ -76,6 +76,8 @@ Tìm hiểu cách chèn một hàng trong Excel bằng Aspose.Cells cho .NET v Học cách chèn một hàng có định dạng trong Excel bằng Aspose.Cells cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để triển khai dễ dàng. ### [Chèn nhiều hàng vào Aspose.Cells .NET](./insert-multiple-rows-aspose-cells/) Học cách chèn nhiều hàng trong Excel bằng Aspose.Cells cho .NET. Làm theo hướng dẫn chi tiết của chúng tôi để thao tác dữ liệu liền mạch. +### [Aspose Cells Xóa hàng – Bảo vệ hàng tiêu đề trong Excel](./aspose-cells-delete-rows-protect-header-row-in-excel/) +Hướng dẫn cách xóa các hàng trong Excel bằng Aspose.Cells trong khi bảo vệ hàng tiêu đề không bị xóa. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md b/cells/vietnamese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md new file mode 100644 index 0000000000..5fd9884f06 --- /dev/null +++ b/cells/vietnamese/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-03-22 +description: Aspose Cells xóa các hàng trong khi bảo vệ hàng tiêu đề. Tìm hiểu cách + lấy bảng đầu tiên và xóa an toàn các hàng của bảng Excel trong C#. +draft: false +keywords: +- aspose cells delete rows +- protect header row +- delete excel table rows +- retrieve first table +language: vi +og_description: Aspose Cells xóa các hàng đồng thời bảo vệ hàng tiêu đề. Tìm hiểu + cách truy xuất bảng đầu tiên và xóa an toàn các hàng của bảng Excel trong C#. +og_title: Aspose Cells Xóa Hàng – Bảo Vệ Hàng Tiêu Đề trong Excel +tags: +- Aspose.Cells +- C# +- Excel automation +title: Aspose Cells Xóa Hàng – Bảo Vệ Hàng Tiêu Đề trong Excel +url: /vi/net/row-and-column-management/aspose-cells-delete-rows-protect-header-row-in-excel/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose Cells Delete Rows – Bảo Vệ Hàng Tiêu Đề Trong Excel + +Bạn đã bao giờ cố gắng **aspose cells delete rows** từ một bảng chỉ để phát hiện rằng tiêu đề đã biến mất? Đó là một bẫy phổ biến khi thao tác các sheet Excel bằng chương trình. Trong hướng dẫn này, chúng tôi sẽ trình bày một giải pháp hoàn chỉnh, có thể chạy được, giúp **bảo vệ hàng tiêu đề**, cho bạn biết cách **retrieve first table**, và an toàn **delete Excel table rows** mà không làm hỏng cấu trúc. + +Chúng tôi sẽ bao phủ mọi thứ từ việc tải workbook đến xử lý ngoại lệ mà Aspose ném ra khi bạn cố gắng tách rời tiêu đề. Khi kết thúc, bạn sẽ có một mẫu vững chắc mà bạn có thể đưa vào bất kỳ dự án .NET nào sử dụng Aspose.Cells. + +--- + +## Những Gì Bạn Cần + +- **Aspose.Cells for .NET** (v23.12 hoặc mới hơn) – thư viện cho phép bạn làm việc với các tệp Excel mà không cần cài đặt Office. +- Môi trường phát triển C# cơ bản (Visual Studio, Rider, hoặc `dotnet` CLI). +- Một tệp Excel (`TableWithHeader.xlsx`) chứa ít nhất một **ListObject** (bảng Excel) với một hàng tiêu đề ở dòng đầu tiên. + +Không cần bất kỳ gói NuGet bổ sung nào ngoài Aspose.Cells. + +## Bước 1: Tải Workbook và Retrieve First Table + +Điều đầu tiên bạn cần làm là mở workbook và lấy bảng mà bạn muốn chỉnh sửa. Đây là nơi từ khóa phụ **retrieve first table** xuất hiện. + +```csharp +using System; +using Aspose.Cells; + +class Program +{ + static void Main() + { + // Load the workbook that contains a table with a header row + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + + // Access the first worksheet in the workbook + Worksheet worksheet = workbook.Worksheets[0]; + + // Retrieve the first table (ListObject) on the worksheet + ListObject table = worksheet.ListObjects[0]; + + // Continue with row deletion... + DeleteRowsSafely(table); + } +} +``` + +**Tại sao điều này quan trọng:** + +- `Workbook` đọc tệp mà không cần cài đặt Excel. +- `worksheet.ListObjects[0]` là cách đơn giản nhất để **retrieve first table**; nếu bạn có nhiều bảng, bạn có thể lặp lại hoặc sử dụng tên bảng. + +> **Mẹo chuyên nghiệp:** Nếu bạn không chắc một worksheet có thực sự chứa bảng hay không, hãy kiểm tra `worksheet.ListObjects.Count` trước để tránh `IndexOutOfRangeException`. + +## Bước 2: Bảo Vệ Hàng Tiêu Đề Khi Xóa Các Hàng + +Bây giờ là phần cốt lõi của vấn đề: **aspose cells delete rows** mà không xóa tiêu đề. Phương thức `DeleteRows` của Aspose nhận một chỉ số bắt đầu dựa trên zero và một số lượng. Cố gắng xóa tiêu đề (hàng 0) sẽ gây ra ngoại lệ, điều mà chúng ta muốn tránh. + +```csharp +static void DeleteRowsSafely(ListObject table) +{ + try + { + // Attempt to delete rows 2‑3 (the header is row 1 in Excel, index 0 in code) + // Here we start at index 1 (second row) and delete 2 rows. + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + // The API throws an exception because the header would be removed + Console.WriteLine("Operation blocked: " + ex.Message); + } + + // Save the workbook to verify the result + table.Worksheet.Workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); +} +``` + +**Giải thích logic:** + +| Bước | Lý do | +|------|--------| +| `table.DeleteRows(1, 2);` | Chỉ số 1 trỏ tới **hàng thứ hai** (hàng dữ liệu đầu tiên). Xóa hai hàng sẽ loại bỏ các hàng 2‑3 trong Excel, để lại tiêu đề (hàng 1) không bị chạm tới. | +| `catch (Exception ex)` | Aspose ném ngoại lệ **chỉ** khi thao tác sẽ tách rời tiêu đề. Bắt ngoại lệ cho phép bạn ghi log một thông báo thân thiện thay vì làm ứng dụng sập. | +| `Save` | Lưu các thay đổi cho phép bạn mở `Result.xlsx` và thấy tiêu đề vẫn còn. | + +> **Nếu bạn thực sự cần xóa tiêu đề thì sao?** +> Sử dụng `table.ShowHeaders = false;` trước khi xóa, hoặc xóa toàn bộ bảng và tạo lại. Nhưng trong hầu hết các kịch bản kinh doanh, bạn sẽ muốn **protect header row**. + +## Bước 3: Xác Minh Kết Quả – Đầu Ra Dự Kiến + +Sau khi chạy chương trình, mở `Result.xlsx`. Bạn sẽ thấy: + +- Dòng đầu tiên vẫn chứa các tiêu đề cột gốc. +- Các hàng 2‑3 (những hàng chúng ta nhắm tới) đã bị xóa, và dữ liệu còn lại đã dịch lên. + +Console sẽ hiển thị: + +``` +Rows deleted successfully. +``` + +Nếu bạn vô tình cố gắng xóa tiêu đề (ví dụ, `table.DeleteRows(0, 1);`), đầu ra sẽ là: + +``` +Operation blocked: Cannot delete header row of the table. +``` + +Thông báo đó xác nhận cơ chế bảo vệ tích hợp của Aspose đang hoạt động. + +## Bước 4: Các Cách Thay Thế Để **Delete Excel Table Rows** + +Đôi khi bạn cần kiểm soát nhiều hơn—như xóa các hàng dựa trên một điều kiện, hoặc loại bỏ các hàng không liên tiếp. Dưới đây là hai mẫu nhanh giúp giữ an toàn cho tiêu đề. + +### 4.1 Xóa Hàng Theo Bộ Lọc Dữ Liệu + +```csharp +static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) +{ + // Find the column index by name + int colIndex = table.ListColumns[columnName].Index; + + // Iterate backwards to avoid messing up row indices + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIndex]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + // Delete the row (add 1 because DataRange is zero‑based inside the table) + table.DeleteRows(i + 1, 1); + } + } +} +``` + +### 4.2 Xóa Hàng Hàng Loạt Bằng Phạm Vi + +```csharp +// Delete rows 5‑10 (still preserving the header) +table.DeleteRows(4, 6); // 4 = 5th row in Excel, 6 = number of rows to delete +``` + +Cả hai đoạn mã đều tuân thủ quy tắc **protect header row** vì chỉ số bắt đầu không bao giờ xuống dưới 1. + +## Bước 5: Những Sai Lầm Thường Gặp & Cách Tránh + +| Sai Lầm | Nguyên Nhân | Cách Khắc Phục | +|---------|--------------|----------------| +| Xóa nhầm tiêu đề | Sử dụng `0` làm chỉ số bắt đầu | Luôn bắt đầu từ `1` cho các hàng dữ liệu, hoặc kiểm tra `table.ShowHeaders` trước. | +| `IndexOutOfRangeException` khi sheet không có bảng | Giả định rằng có bảng tồn tại | Kiểm tra `worksheet.ListObjects.Count > 0` trước khi truy cập `[0]`. | +| Thay đổi không được lưu | Quên gọi `Save` | Gọi `workbook.Save` sau khi thực hiện các thay đổi. | +| Xóa hàng ở giữa làm thay đổi chỉ số, gây bỏ sót | Lặp tiến trong khi xóa | Lặp **ngược lại** hoặc thu thập các hàng cần xóa trước. | + +## Bước 6: Kết Hợp Tất Cả – Ví Dụ Hoàn Chỉnh Hoạt Động + +```csharp +using System; +using Aspose.Cells; + +class AsposeDeleteRowsDemo +{ + static void Main() + { + // 1️⃣ Load workbook + Workbook workbook = new Workbook(@"YOUR_DIRECTORY\TableWithHeader.xlsx"); + Worksheet sheet = workbook.Worksheets[0]; + + // 2️⃣ Ensure a table exists + if (sheet.ListObjects.Count == 0) + { + Console.WriteLine("No tables found on the first worksheet."); + return; + } + + // 3️⃣ Retrieve the first table (retrieve first table) + ListObject table = sheet.ListObjects[0]; + + // 4️⃣ Delete rows safely (aspose cells delete rows while protecting header row) + DeleteRowsSafely(table); + + // 5️⃣ (Optional) Delete rows by condition + // DeleteRowsByCondition(table, "Status", "Closed"); + + // 6️⃣ Save the result + workbook.Save(@"YOUR_DIRECTORY\Result.xlsx"); + Console.WriteLine("Workbook saved as Result.xlsx"); + } + + static void DeleteRowsSafely(ListObject table) + { + try + { + // Delete rows 2‑3 (header stays intact) + table.DeleteRows(1, 2); + Console.WriteLine("Rows deleted successfully."); + } + catch (Exception ex) + { + Console.WriteLine("Operation blocked: " + ex.Message); + } + } + + // Uncomment if you need conditional deletion + /* + static void DeleteRowsByCondition(ListObject table, string columnName, string valueToRemove) + { + int colIdx = table.ListColumns[columnName].Index; + for (int i = table.DataRange.RowCount - 1; i >= 0; i--) + { + var cell = table.DataRange[i, colIdx]; + if (cell.StringValue.Equals(valueToRemove, StringComparison.OrdinalIgnoreCase)) + { + table.DeleteRows(i + 1, 1); + } + } + } + */ +} +``` + +Chạy chương trình này, mở `Result.xlsx`, và bạn sẽ thấy tiêu đề không bị chạm tới trong khi các hàng đã chọn đã bị xóa. Đó là **giải pháp hoàn chỉnh, tự chứa** cho **aspose cells delete rows** mà không làm mất tiêu đề. + +## Kết Luận + +Chúng tôi vừa trình bày cách **aspose cells delete rows** trong khi **protecting the header row**, cách **retrieve first table**, và một số cách **delete excel table rows** một cách an toàn. Những điểm quan trọng cần nhớ là: + +- Luôn bắt đầu xóa từ chỉ số 1 để giữ tiêu đề còn lại. +- Sử dụng `try/catch` để xử lý ngoại lệ bảo vệ tích hợp của Aspose. +- Kiểm tra sự tồn tại của bảng trước khi thực hiện, và lặp ngược lại khi xóa các hàng theo điều kiện. + +Sẵn sàng nâng cấp? Hãy thử kết hợp cách tiếp cận này với API định dạng của **Aspose Cells** để làm nổi bật các hàng sẽ bị xóa trước khi xóa, hoặc tự động hoá quy trình trên nhiều worksheet. Các khả năng là vô hạn, và giờ bạn đã có một mẫu đáng tin cậy để xây dựng. + +Nếu bạn thấy hướng dẫn này hữu ích, hãy bấm thích, chia sẻ với đồng nghiệp, hoặc để lại bình luận với các giải pháp trường hợp đặc biệt của bạn. Chúc lập trình vui vẻ! + +![Aspose Cells Delete Rows Example – Header Row Protected](https://example.com/images/aspose-delete-rows.png "aspose cells delete rows") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/_index.md b/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/_index.md index 29615dee2d..df12e918a9 100644 --- a/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/_index.md +++ b/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/_index.md @@ -44,6 +44,8 @@ Tìm hiểu cách xử lý cảnh báo khi tải tệp Excel trong .NET bằng A Tìm hiểu cách chỉ định các thuộc tính tài liệu như phiên bản, tác giả và tiêu đề trong tệp Excel theo chương trình sử dụng Aspose.Cells cho .NET với hướng dẫn từng bước. ### [Cắt bớt các hàng và cột trống đầu tiên khi xuất](./trimming-leading-blank-rows-and-columns/) Tối ưu hóa việc xuất CSV của bạn bằng cách cắt bớt các hàng và cột trống đầu với Aspose.Cells cho .NET. Dữ liệu sạch chỉ cách bạn vài bước. +### [Cách Lưu Workbook trong C# – Hướng Dẫn Tự Động Hoá Excel Đầy Đủ](./how-to-save-workbook-in-c-complete-excel-automation-guide/) +Hướng dẫn chi tiết cách lưu workbook bằng C# sử dụng Aspose.Cells, bao gồm các tùy chọn lưu và tự động hoá quy trình Excel. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md b/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md new file mode 100644 index 0000000000..e9aff20bc6 --- /dev/null +++ b/cells/vietnamese/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-22 +description: 'Cách lưu workbook trong C# bằng Aspose.Cells—hướng dẫn chi tiết các + bước: tải Excel, tạo sheet, tái sử dụng sheet và tạo báo cáo.' +draft: false +keywords: +- how to save workbook +- how to load excel +- how to create sheet +- how to reuse sheet +- how to generate report +language: vi +og_description: Cách lưu workbook trong C# với Aspose.Cells. Tìm hiểu cách tải Excel, + tạo sheet, tái sử dụng sheet và tạo báo cáo trong một hướng dẫn duy nhất. +og_title: Cách lưu Workbook trong C# – Hướng dẫn toàn diện về tự động hoá Excel +tags: +- Aspose.Cells +- C# +- Excel +- Reporting +title: Cách Lưu Workbook trong C# – Hướng Dẫn Toàn Diện về Tự Động Hóa Excel +url: /vi/net/saving-and-exporting-excel-files-with-options/how-to-save-workbook-in-c-complete-excel-automation-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Lưu Workbook trong C# – Hướng Dẫn Tự Động Hoá Excel Toàn Diện + +Bạn đã bao giờ tự hỏi **cách lưu workbook** trong C# sau khi đã xử lý dữ liệu chưa? Bạn không phải là người duy nhất. Hầu hết các nhà phát triển gặp khó khăn khi báo cáo hiển thị hoàn hảo trên màn hình nhưng lại không thể ghi lại vào đĩa. Trong tutorial này, chúng ta sẽ đi qua một ví dụ đầy đủ tính năng, không chỉ cho bạn **cách lưu workbook**, mà còn bao gồm **cách tải Excel**, **cách tạo sheet**, **cách tái sử dụng sheet**, và **cách tạo báo cáo**—tất cả đều sử dụng Aspose.Cells. + +Hãy tưởng tượng đây là một buổi trò chuyện trong lúc nghỉ cà phê, tôi đang rút code ra từ laptop và giải thích từng dòng. Khi kết thúc, bạn sẽ có một chương trình có thể chạy được, tải một mẫu, chèn dữ liệu qua SmartMarker, tái sử dụng tên sheet chi tiết đã tồn tại, và cuối cùng ghi file vào thư mục của bạn. Không có bí ẩn, chỉ có các bước rõ ràng mà bạn có thể sao chép‑dán. + +## Những Gì Bạn Cần Chuẩn Bị + +- **Aspose.Cells for .NET** (phiên bản mới nhất tính đến năm 2026). Bạn có thể tải về từ NuGet bằng `Install-Package Aspose.Cells`. +- Môi trường phát triển .NET (Visual Studio, Rider, hoặc VS Code với extension C# đều ổn). +- Một file mẫu Excel cơ bản có tên `MasterTemplate.xlsx` được đặt trong một thư mục bạn kiểm soát. +- Kiến thức C# cơ bản—nếu bạn đã từng viết `Console.WriteLine` một lần, bạn đã sẵn sàng. + +> **Mẹo chuyên nghiệp:** Đặt mẫu của bạn trong một thư mục *Resources* riêng và đánh dấu “Copy if newer” để đường dẫn luôn nhất quán giữa các build. + +Bây giờ, chúng ta cùng đi vào phần code. + +## Bước 1: Cách Tải Excel – Mở Workbook Mẫu + +Điều đầu tiên bạn phải làm là đưa workbook vào bộ nhớ. Aspose.Cells làm điều này chỉ trong một dòng, nhưng hiểu vì sao lại quan trọng sẽ giúp bạn khắc phục lỗi sau này. + +```csharp +// Step 1: Load the workbook template +// The path can be absolute or relative; here we use a relative path for simplicity. +Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); +``` + +- **Tại sao điều này quan trọng:** Khi tải workbook, bạn có quyền truy cập vào mọi worksheet, style và named range trong mẫu. Nếu file không tồn tại, Aspose sẽ ném `FileNotFoundException`, vì vậy hãy kiểm tra lại đường dẫn. +- **Trường hợp đặc biệt:** Nếu mẫu được bảo vệ bằng mật khẩu, truyền mật khẩu vào constructor `Workbook`: `new Workbook(path, new LoadOptions { Password = "pwd" })`. + +## Bước 2: Cách Tái Sử Dụng Sheet – Cấu Hình SmartMarker Options + +SmartMarker có thể tự động tạo một sheet chi tiết mới, nhưng bạn có thể đã có một sheet tên **Detail**. Để tránh xung đột, chúng ta chỉ cho processor tái sử dụng tên đó. + +```csharp +// Step 2: Configure SmartMarker options to reuse an existing detail sheet name +SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions +{ + // This name will be used even if a sheet called "Detail" already exists. + DetailSheetNewName = "Detail" +}; +``` + +- **Tại sao điều này quan trọng:** Nếu không có tùy chọn này, Aspose sẽ thêm hậu tố số (ví dụ: “Detail1”) khiến các macro hoặc công thức phụ thuộc vào tên sheet cố định bị lỗi. +- **Nếu sheet không tồn tại thì sao?** Aspose sẽ tự tạo nó—do đó cùng một đoạn code hoạt động dù sheet có hay không. + +## Bước 3: Cách Tạo Sheet – Chuẩn Bị Nguồn Dữ Liệu + +Mặc dù chúng ta không tự tay thêm sheet ở đây, nhưng dữ liệu bạn truyền vào SmartMarker quyết định việc có tạo sheet mới hay không. Hãy xây dựng một đối tượng ẩn danh đơn giản mô phỏng danh sách đơn hàng. + +```csharp +// Step 3: Prepare the data source for the SmartMarker +var orderData = new +{ + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } +}; +``` + +- **Tại sao điều này quan trọng:** SmartMarker quét mẫu để tìm các marker như `&=Header` và `&=Items.Id`. Cấu trúc của `orderData` phải khớp chính xác với các marker này, nếu không processor sẽ bỏ qua chúng một cách im lặng. +- **Biến thể:** Nếu bạn lấy dữ liệu từ cơ sở dữ liệu, thay thế kiểu ẩn danh bằng một danh sách DTO hoặc một `DataTable`. Processor hỗ trợ cả hai. + +## Bước 4: Cách Tạo Báo Cáo – Xử Lý SmartMarker + +Bây giờ chúng ta gắn dữ liệu vào mẫu. Processor sẽ duyệt qua worksheet đầu tiên, thay thế các marker và xây dựng sheet chi tiết. + +```csharp +// Step 4: Process the SmartMarker on the first worksheet using the data and options +workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); +``` + +- **Tại sao điều này quan trọng:** Dòng lệnh duy nhất này thực hiện phần nặng—điền header, lặp qua `Items`, và tuân theo `DetailSheetNewName` mà chúng ta đã thiết lập trước đó. +- **Câu hỏi thường gặp:** *Nếu tôi có nhiều worksheet chứa marker thì sao?* Hãy lặp qua từng worksheet và gọi `SmartMarkerProcessor.Process` riêng biệt. + +## Bước 5: Cách Lưu Workbook – Ghi File Kết Quả + +Cuối cùng, chúng ta ghi workbook đã chỉnh sửa trở lại đĩa. Đây là khoảnh khắc **cách lưu workbook** trở nên cụ thể. + +```csharp +// Step 5: Save the workbook with the generated detail sheet +workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); +``` + +- **Tại sao điều này quan trọng:** Phương thức `Save` hỗ trợ nhiều định dạng (`.xlsx`, `.xls`, `.csv`, `.pdf`, …). Mặc định nó ghi file Excel, nhưng bạn có thể truyền một đối tượng `SaveOptions` để thay đổi đầu ra. +- **Trường hợp đặc biệt:** Nếu file đích đang mở trong Excel, `Save` sẽ ném `IOException`. Hãy đóng mọi phiên bản Excel hoặc sử dụng tên file duy nhất cho mỗi lần chạy. + +![How to Save Workbook in C# example](/images/how-to-save-workbook-csharp.png "How to Save Workbook in C# – visual overview of the process") + +### Ví Dụ Hoàn Chỉnh + +Kết hợp tất cả lại, đây là một ứng dụng console tự chứa mà bạn có thể biên dịch và chạy: + +```csharp +using System; +using Aspose.Cells; +using Aspose.Cells.Tables; // Required for SmartMarkerProcessor + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template workbook + Workbook workbook = new Workbook("YOUR_DIRECTORY/MasterTemplate.xlsx"); + + // 2️⃣ Set SmartMarker options – reuse the "Detail" sheet name + SmartMarkerOptions smartMarkerOptions = new SmartMarkerOptions + { + DetailSheetNewName = "Detail" + }; + + // 3️⃣ Build the data source (could be from DB, API, etc.) + var orderData = new + { + Header = "Orders", + Items = new[] + { + new { Id = 1, Qty = 5 }, + new { Id = 2, Qty = 3 } + } + }; + + // 4️⃣ Process SmartMarker on the first worksheet + workbook.Worksheets[0].SmartMarkerProcessor.Process(orderData, smartMarkerOptions); + + // 5️⃣ Save the resulting workbook + workbook.Save("YOUR_DIRECTORY/SmartMarkerWithDupDetail.xlsx"); + + Console.WriteLine("Report generated successfully!"); + } + } +} +``` + +**Kết quả mong đợi:** Sau khi chạy, bạn sẽ thấy file `SmartMarkerWithDupDetail.xlsx` trong `YOUR_DIRECTORY`. Mở nó lên và bạn sẽ thấy: + +- Header gốc đã được điền giá trị “Orders”. +- Một sheet (mới hoặc đã tái sử dụng) tên **Detail** chứa hai dòng: `Id=1, Qty=5` và `Id=2, Qty=3`. + +Nếu sheet **Detail** đã tồn tại, nội dung của nó sẽ bị ghi đè bằng dữ liệu mới—không có sheet thừa làm rối file của bạn. + +## Câu Hỏi Thường Gặp (FAQ) + +| Câu hỏi | Trả lời | +|----------|--------| +| *Tôi có thể lưu thành PDF thay vì XLSX không?* | Có. Thay `workbook.Save("file.xlsx")` bằng `workbook.Save("file.pdf", SaveFormat.Pdf);`. | +| *Nếu mẫu của tôi có nhiều phần SmartMarker thì sao?* | Gọi `SmartMarkerProcessor.Process` trên mỗi worksheet chứa marker, hoặc truyền một collection các đối tượng dữ liệu phù hợp với từng phần. | +| *Có cách nào để thêm dữ liệu thay vì ghi đè sheet Detail không?* | Sử dụng `smartMarkerOptions.DetailSheetCreateMode = DetailSheetCreateMode.Append;` (có trong các phiên bản Aspose mới hơn). | +| *Tôi có cần giải phóng Workbook không?* | Lớp `Workbook` triển khai `IDisposable`. Bao nó trong khối `using` để quản lý tài nguyên sạch sẽ. | + +## Kết Luận + +Chúng ta vừa đi qua **cách lưu workbook** trong C# từ đầu đến cuối, trình bày toàn bộ quy trình: **cách tải Excel**, **cách tạo sheet** (gián tiếp qua SmartMarker), **cách tái sử dụng sheet**, và **cách tạo báo cáo**. Đoạn code sẵn sàng được chèn vào bất kỳ dự án .NET nào, và các giải thích đã cung cấp đủ ngữ cảnh để bạn tùy biến cho các kịch bản phức tạp hơn—như báo cáo đa sheet, định dạng có điều kiện, hoặc xuất ra PDF. + +Sẵn sàng cho thử thách tiếp theo? Hãy thử thêm một biểu đồ hiển thị số lượng đơn hàng, hoặc chuyển định dạng đầu ra sang CSV để xử lý tiếp downstream. Các nguyên tắc—tải, xử lý, và lưu—vẫn áp dụng, vì vậy bạn sẽ thường xuyên tái sử dụng mẫu này trong nhiều nhiệm vụ báo cáo. + +Nếu gặp khó khăn hoặc có ý tưởng mở rộng, hãy để lại bình luận. Chúc bạn lập trình vui vẻ, và tận hưởng trải nghiệm mượt mà khi cuối cùng có thể **lưu workbook** đúng cách bạn cần! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/smart-markers-dynamic-data/_index.md b/cells/vietnamese/net/smart-markers-dynamic-data/_index.md index d818f39d9d..89b360add2 100644 --- a/cells/vietnamese/net/smart-markers-dynamic-data/_index.md +++ b/cells/vietnamese/net/smart-markers-dynamic-data/_index.md @@ -84,6 +84,7 @@ Mở khóa sức mạnh của Aspose.Cells với hướng dẫn từng bước v Mở khóa tiềm năng của báo cáo Excel với Aspose.Cells bằng cách xử lý các đối tượng lồng nhau một cách dễ dàng bằng Smart Markers theo hướng dẫn từng bước. ### [Triển khai Mảng Biến với Smart Markers Aspose.Cells](./variable-array-smart-markers/) Mở khóa sức mạnh của Aspose.Cells. Tìm hiểu cách triển khai mảng biến với Smart Markers từng bước để tạo báo cáo Excel liền mạch. +### [Cách tạo báo cáo Excel trong C# – Hướng dẫn đầy đủ sử dụng SmartMarker](./how-to-generate-excel-report-in-c-full-guide-using-smartmark/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/cells/vietnamese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md b/cells/vietnamese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md new file mode 100644 index 0000000000..7a14893442 --- /dev/null +++ b/cells/vietnamese/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-03-22 +description: Cách tạo báo cáo Excel trong C# với mẫu master‑detail. Học cách nhanh + chóng điền dữ liệu vào mẫu Excel bằng C#, sử dụng SmartMarker cho các sheet lặp + lại. +draft: false +keywords: +- how to generate excel report +- populate excel template c# +- excel smartmarker c# +- master detail excel c# +- c# excel automation +language: vi +og_description: Cách tạo báo cáo Excel trong C# bằng mẫu có thể tái sử dụng. Hướng + dẫn chi tiết này chỉ cho bạn cách điền dữ liệu master‑detail vào mẫu Excel trong + C#. +og_title: Cách tạo báo cáo Excel trong C# – Hướng dẫn chi tiết SmartMarker +tags: +- Excel +- C# +- SmartMarker +- Reporting +title: Cách tạo báo cáo Excel trong C# – Hướng dẫn đầy đủ sử dụng SmartMarker +url: /vi/net/smart-markers-dynamic-data/how-to-generate-excel-report-in-c-full-guide-using-smartmark/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Tạo Báo Cáo Excel trong C# – Hướng Dẫn Toàn Diện Sử Dụng SmartMarker + +Bạn đã bao giờ tự hỏi **cách tạo báo cáo Excel** trong C# mà không phải viết mã lặp lại từng ô? Bạn không phải là người duy nhất. Hầu hết các lập trình viên gặp khó khăn khi cần một báo cáo đa trang, đa sheet, phản ánh mối quan hệ master‑detail—ví dụ đơn hàng và các mục chi tiết—nhưng không muốn tự xây dựng lại từ đầu mỗi lần. + +Tin tốt? Với một mẫu Excel đã chuẩn bị sẵn và engine **SmartMarker** của Aspose.Cells, bạn có thể **populate Excel template C#** chỉ trong vài dòng mã. Trong tutorial này, chúng ta sẽ đi qua một kịch bản thực tế, giải thích lý do mỗi bước quan trọng, và cung cấp một ví dụ hoàn chỉnh, có thể chạy ngay mà bạn chỉ cần copy‑paste. + +> **Bạn sẽ nhận được:** một báo cáo Excel master‑detail, trong đó mỗi đơn hàng tạo ra một worksheet riêng, toàn bộ được điều khiển bằng các đối tượng C# đơn giản. Không cần vòng lặp thủ công qua các ô, không có công thức dễ vỡ—chỉ là mã sạch, dễ bảo trì. + +--- + +## Prerequisites + +Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có: + +- **.NET 6.0** (hoặc mới hơn) đã được cài đặt – mã nguồn nhắm tới .NET 6 nhưng cũng hoạt động trên .NET Framework 4.7+. +- Gói NuGet **Aspose.Cells for .NET** (`Install-Package Aspose.Cells`) – cung cấp các lớp `Workbook`, `SmartMarkerProcessor`, và các lớp liên quan. +- Một file Excel tên **MasterDetailTemplate.xlsx** đặt trong `YOUR_DIRECTORY`. File này cần chứa một khối SmartMarker như `{{Orders.OrderId}}` ở sheet đầu tiên và một khối lồng nhau `{{Orders.Items.Prod}}` cho các mục chi tiết. +- Kiến thức cơ bản về kiểu ẩn danh C# – chúng ta sẽ dùng chúng để mô hình hoá đơn hàng và các mục. + +Nếu bất kỳ mục nào trên còn lạ, đừng lo. Chúng tôi sẽ đề cập đến các lựa chọn thay thế (ví dụ: dùng EPPlus) ở phần sau, nhưng khái niệm cốt lõi vẫn giữ nguyên. + +--- + +## Step 1: Load the Excel Template that Holds SmartMarker Blocks + +Điều đầu tiên chúng ta làm là mở file mẫu. Hãy nghĩ mẫu như một khung xương; SmartMarker sẽ sau này lấp đầy nó bằng dữ liệu thực. + +```csharp +using Aspose.Cells; + +// Load the template containing SmartMarker tags +var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); +``` + +**Tại sao điều này quan trọng:** Bằng cách tách bố cục (mẫu) ra khỏi dữ liệu (các đối tượng C#), bạn làm hài lòng cả designer và developer. Designer có thể chỉnh sửa phông chữ, màu sắc, hoặc công thức mà không cần chạm vào mã. + +--- + +## Step 2: Build the Master‑Detail Data Source + +Tiếp theo, chúng ta tạo dữ liệu sẽ được đưa vào mẫu. Đối với một báo cáo đơn hàng tiêu chuẩn, bạn sẽ có một tập hợp các đơn hàng, mỗi đơn hàng lại chứa một tập hợp các mục. + +```csharp +// Master‑detail data: a list of orders, each with a list of items +var masterDetailData = new +{ + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } +}; +``` + +> **Pro tip:** Sử dụng các lớp strongly‑typed thay cho kiểu ẩn danh nếu bạn cần tái sử dụng chúng trong nhiều báo cáo. Cách dùng kiểu ẩn danh giúp ví dụ ngắn gọn hơn. + +**Tại sao điều này quan trọng:** SmartMarker hoạt động bằng cách khớp tên thuộc tính (`Orders`, `OrderId`, `Items`, `Prod`, `Qty`) với các placeholder trong mẫu. Cấu trúc phân cấp phải hoàn toàn khớp, nếu không engine sẽ bỏ qua các phần tương ứng. + +--- + +## Step 3: Tell SmartMarker to Create a New Sheet for Every Master Record + +Mặc định SmartMarker ghi tất cả các hàng vào một sheet duy nhất. Chúng ta muốn mỗi đơn hàng nằm trên một worksheet riêng, thuận tiện cho việc in hoặc gửi PDF từng đơn hàng sau này. + +```csharp +// Enable a separate sheet for each master (order) record +var smartMarkerOptions = new SmartMarkerOptions +{ + EnableRepeatingSheet = true // each Order gets its own sheet +}; +``` + +**Tại sao điều này quan trọng:** `EnableRepeatingSheet` loại bỏ nhu cầu sao chép sheet thủ công. Engine sẽ sao chép sheet gốc, chèn dữ liệu đơn hàng, và tự động đổi tên sheet (thường dựa trên giá trị của cột đầu tiên). + +--- + +## Step 4: Process the Template with Your Data + +Bây giờ chúng ta gắn mọi thứ lại với nhau. `SmartMarkerProcessor` sẽ duyệt qua workbook, thay thế các thẻ, và tạo các sheet mới theo chỉ dẫn. + +```csharp +// Apply the data to the workbook +workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); +``` + +**Tại sao điều này quan trọng:** Dòng lệnh duy nhất này thực hiện toàn bộ công việc nặng—phân tích mẫu, lặp qua các collection, và xử lý các bảng lồng nhau. Đây là trái tim của **populate Excel template C#** mà không cần vòng lặp thủ công. + +--- + +## Step 5: Save the Finished Report + +Cuối cùng, ghi workbook đã được điền dữ liệu ra đĩa. Bạn cũng có thể stream trực tiếp tới phản hồi HTTP cho các ứng dụng web. + +```csharp +// Save the generated report +workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); +``` + +**Tại sao điều này quan trọng:** Lưu thành file cho bạn một sản phẩm thực tế có thể mở trong Excel, chia sẻ với các bên liên quan, hoặc đưa vào các quy trình downstream như chuyển sang PDF. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Dưới đây là chương trình hoàn chỉnh, bao gồm các `using` directive và phương thức `Main`. Đặt nó vào một console app, chỉnh sửa đường dẫn file, và chạy. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelReportDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load the template + var workbook = new Workbook("YOUR_DIRECTORY/MasterDetailTemplate.xlsx"); + + // 2️⃣ Build master‑detail data + var masterDetailData = new + { + Orders = new[] + { + new + { + OrderId = 1, + Items = new[] + { + new { Prod = "A", Qty = 2 }, + new { Prod = "B", Qty = 1 } + } + }, + new + { + OrderId = 2, + Items = new[] + { + new { Prod = "C", Qty = 5 } + } + } + } + }; + + // 3️⃣ Enable a new sheet per order + var smartMarkerOptions = new SmartMarkerOptions + { + EnableRepeatingSheet = true + }; + + // 4️⃣ Process the template with data + workbook.Worksheets[0].SmartMarkerProcessor.Process(masterDetailData, smartMarkerOptions); + + // 5️⃣ Save the result + workbook.Save("YOUR_DIRECTORY/MasterDetailResult.xlsx"); + + Console.WriteLine("Excel report generated successfully!"); + } + } +} +``` + +### Expected Output + +Khi bạn mở `MasterDetailResult.xlsx` sẽ thấy: + +- **Sheet “Order_1”** – chứa header của Order 1 và hai dòng cho sản phẩm A và B. +- **Sheet “Order_2”** – chứa header của Order 2 và một dòng cho sản phẩm C. +- Tất cả công thức, định dạng, và biểu đồ từ mẫu gốc được giữ nguyên. + +![Báo cáo Excel với các sheet riêng cho từng đơn hàng – ví dụ workbook đã được điền dữ liệu](/images/excel-report-example.png "Báo cáo Excel đã tạo với dữ liệu master‑detail") + +*Văn bản thay thế ảnh: báo cáo Excel đã tạo với các sheet riêng cho từng đơn hàng, minh họa cách generate Excel report using C# and SmartMarker.* + +--- + +## Common Questions & Edge Cases + +### What if I need a static sheet (e.g., a summary) alongside the repeating sheets? + +Đặt `EnableRepeatingSheet = true` **chỉ** trên worksheet chứa khối master. Các sheet khác sẽ không bị thay đổi, vì vậy bạn có thể giữ một trang tổng hợp trong mẫu gốc. + +### Can I use a DataTable instead of anonymous objects? + +Chắc chắn rồi. SmartMarker hoạt động với bất kỳ đối tượng nào thực thi `IEnumerable`. Chỉ cần thay thế kiểu ẩn danh bằng một `DataTable` và đảm bảo tên cột khớp với các thẻ. + +```csharp +DataTable ordersTable = GetOrdersFromDatabase(); +var data = new { Orders = ordersTable }; +``` + +### How do I change the naming convention of the generated sheets? + +Triển khai giao diện `ISmartMarkerSheetNaming` tùy chỉnh (hoặc thao tác với `workbook.Worksheets` sau khi xử lý). Hầu hết các developer chỉ đổi tên sheet dựa trên giá trị của một ô: + +```csharp +foreach (var sheet in workbook.Worksheets) +{ + sheet.Name = $"Order_{sheet.Cells["A1"].StringValue}"; +} +``` + +### What if my template uses a different placeholder syntax? + +SmartMarker cho phép tùy chỉnh delimiter qua `SmartMarkerOptions`. Ví dụ, để dùng `<< >>` thay cho `{{ }}`: + +```csharp +smartMarkerOptions.StartTag = "<<"; +smartMarkerOptions.EndTag = ">>"; +``` + +--- + +## Tips for Scaling This Approach + +- **Cache mẫu** trong bộ nhớ nếu bạn tạo nhiều báo cáo cho mỗi yêu cầu; việc tải từ đĩa mỗi lần sẽ làm tăng độ trễ. +- **Kết hợp với chuyển đổi PDF** (`workbook.Save("report.pdf", SaveFormat.Pdf)`) để tạo ra đầu ra thân thiện với email. +- **Tham số hoá đường dẫn file** bằng các file cấu hình hoặc biến môi trường để giải pháp dễ di chuyển giữa dev, test, và prod. +- **Kiểm thử đơn vị lớp dữ liệu** riêng biệt; SmartMarker tự nó là deterministic, vì vậy bạn chỉ cần xác nhận dữ liệu đưa vào khớp với schema mong đợi. + +--- + +## Conclusion + +Chúng ta đã bao quát **cách generate Excel report** trong C# từ đầu đến cuối, từ việc tải mẫu SmartMarker tới việc lưu workbook đa sheet phản ánh mối quan hệ master‑detail. Bằng cách **populate Excel template C#** chỉ với vài dòng mã, bạn tránh được logic lặp lại từng ô và cho phép designer tự do thiết kế giao diện cuối cùng. + +Tiếp theo, bạn có thể khám phá: + +- Sử dụng **populate Excel template C#** với các biểu đồ tự động cập nhật theo sheet. +- Tích hợp **excel smartmarker c#** với ASP.NET Core để stream báo cáo trực tiếp tới trình duyệt. +- Tự động hoá quy trình **c# excel automation** lấy dữ liệu từ API hoặc cơ sở dữ liệu. + +Hãy thử, tùy chỉnh mẫu, và xem nhanh chóng bạn có thể biến dữ liệu thô thành một báo cáo Excel chuyên nghiệp. Có câu hỏi hoặc trường hợp sử dụng thú vị? Để lại bình luận bên dưới—chúc bạn coding vui! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/cells/vietnamese/net/tables-and-lists/_index.md b/cells/vietnamese/net/tables-and-lists/_index.md index aace5f09b5..7429ab176a 100644 --- a/cells/vietnamese/net/tables-and-lists/_index.md +++ b/cells/vietnamese/net/tables-and-lists/_index.md @@ -39,19 +39,28 @@ Một trong những tính năng mạnh mẽ nhất của Aspose.Cells for .NET l ## Hướng dẫn về Bảng và Danh sách ### [Tạo đối tượng danh sách trong Excel bằng Aspose.Cells](./creating-list-object/) Tạo đối tượng danh sách trong Excel bằng Aspose.Cells cho .NET với hướng dẫn chi tiết này. Làm chủ việc quản lý dữ liệu và tính toán dễ dàng. + ### [Định dạng danh sách đối tượng trong Excel với Aspose.Cells](./formatting-list-object/) Tìm hiểu cách định dạng đối tượng danh sách trong Excel bằng Aspose.Cells cho .NET. Tạo và định dạng bảng dễ dàng. + ### [Chuyển đổi Bảng sang ODS bằng Aspose.Cells](./converting-table-to-ods/) Học cách chuyển đổi bảng Excel sang ODS bằng Aspose.Cells cho .NET với hướng dẫn từng bước dễ dàng của chúng tôi. + ### [Chuyển đổi Bảng thành Phạm vi trong Excel](./converting-table-to-range/) Dễ dàng chuyển đổi bảng Excel thành phạm vi bằng Aspose.Cells cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để thao tác dữ liệu của bạn trở nên dễ dàng. + ### [Chuyển đổi Bảng thành Phạm vi với Tùy chọn](./converting-table-to-range-with-options/) Dễ dàng chuyển đổi bảng thành phạm vi trong Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước. Nâng cao kỹ năng xử lý dữ liệu Excel của bạn. + ### [Đọc và ghi bảng với nguồn dữ liệu truy vấn](./reading-and-writing-table-with-query-data-source/) Mở khóa sức mạnh của Aspose.Cells cho .NET. Học cách đọc và viết bảng với nguồn dữ liệu truy vấn trong hướng dẫn từng bước chi tiết này. + ### [Đặt chú thích cho bảng hoặc danh sách trong Excel](./setting-comment-of-table-or-list/) Tìm hiểu cách đặt chú thích cho bảng trong Excel bằng Aspose.Cells cho .NET với hướng dẫn từng bước dễ dàng của chúng tôi. +### [Tạo bảng Excel trong C# – Hướng dẫn từng bước](./create-excel-table-in-c-step-by-step-guide/) +Tạo bảng Excel trong C# bằng Aspose.Cells cho .NET với hướng dẫn chi tiết từng bước, giúp bạn quản lý dữ liệu dễ dàng. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/cells/vietnamese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md b/cells/vietnamese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md new file mode 100644 index 0000000000..43ad779f7b --- /dev/null +++ b/cells/vietnamese/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-03-22 +description: Tạo bảng Excel trong C# nhanh chóng. Tìm hiểu cách thêm bảng, xác định + phạm vi bảng, ẩn tiêu đề bảng và tắt bộ lọc bảng với ví dụ mã đầy đủ. +draft: false +keywords: +- create excel table +- how to add table +- hide table header +- define table range +- disable table filter +language: vi +og_description: Tạo bảng Excel trong C# với ví dụ rõ ràng. Học cách thêm bảng, xác + định phạm vi bảng, ẩn tiêu đề bảng và tắt bộ lọc chỉ trong vài dòng. +og_title: Tạo bảng Excel trong C# – Hướng dẫn lập trình toàn diện +tags: +- Aspose.Cells +- C# +- Excel Automation +title: Tạo bảng Excel trong C# – Hướng dẫn từng bước +url: /vi/net/tables-and-lists/create-excel-table-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo Bảng Excel trong C# – Hướng Dẫn Từng Bước + +Bạn đã bao giờ cần **create Excel table** một cách lập trình bằng C# chưa? Tạo một bảng Excel có thể rất dễ dàng khi bạn biết các bước đúng. Trong hướng dẫn này, chúng tôi sẽ đi qua một ví dụ đầy đủ, có thể chạy được, cho thấy **how to add table**, **define table range**, **hide table header**, và thậm chí **disable table filter** – tất cả mà không rời khỏi IDE của bạn. + +Nếu bạn từng gặp khó khăn với giao diện AutoFilter xuất hiện khi bạn không muốn, bạn đang ở đúng nơi. Khi kết thúc hướng dẫn này, bạn sẽ có một đoạn mã sẵn sàng chạy tạo ra một workbook sạch tên *TableNoFilter.xlsx* và bạn sẽ hiểu tại sao mỗi dòng lại quan trọng. + +## Những Điều Bạn Sẽ Học + +- Cách **create Excel table** từ đầu với Aspose.Cells. +- Cú pháp chính xác để **define table range** (A1:D5 trong trường hợp của chúng tôi). +- Cách bật hàng tiêu đề để giao diện bộ lọc tích hợp xuất hiện. +- Mẹo **hide table header** và **disable table filter** khi bạn không còn cần chúng. +- Một chương trình C# hoàn chỉnh, sẵn sàng copy‑paste mà bạn có thể chạy ngay hôm nay. + +### Yêu Cầu Trước + +- .NET 6.0 trở lên (mã cũng hoạt động với .NET Framework 4.7+). +- Aspose.Cells cho .NET được cài đặt qua NuGet (`Install-Package Aspose.Cells`). +- Hiểu biết cơ bản về C# và Visual Studio (hoặc bất kỳ IDE nào bạn thích). + +--- + +## Bước 1: Thiết Lập Dự Án và Nhập Các Namespace + +Trước khi bạn có thể **create Excel table**, bạn cần một dự án console tham chiếu Aspose.Cells. Mở terminal và chạy: + +```bash +dotnet new console -n ExcelTableDemo +cd ExcelTableDemo +dotnet add package Aspose.Cells +``` + +Bây giờ mở *Program.cs* và thêm các câu lệnh `using` cần thiết: + +```csharp +using System; +using Aspose.Cells; +``` + +Các import này cho phép bạn truy cập các lớp `Workbook`, `Worksheet`, `CellArea`, và `ListObject` hỗ trợ phần còn lại của hướng dẫn. + +## Bước 2: Khởi Tạo Workbook Mới và Lấy Worksheet Đầu Tiên + +Tạo một workbook mới là bước logic đầu tiên. Hãy nghĩ workbook như một container file Excel, và worksheet như một sheet riêng mà chúng ta sẽ đặt bảng vào. + +```csharp +// Step 2: Create a new workbook and get the first worksheet +Workbook workbook = new Workbook(); // Empty workbook +Worksheet worksheet = workbook.Worksheets[0]; // First (default) sheet +``` + +> **Tại sao điều này quan trọng:** Một `Workbook` mới hoàn toàn bắt đầu với một sheet trống duy nhất. Bằng cách lấy `Worksheets[0]` chúng ta đảm bảo đang làm việc trên sheet mặc định mà không cần tạo mới thủ công. + +## Bước 3: Xác Định Phạm Vi Bảng (A1:D5) + +Trong thuật ngữ Excel, một *bảng* tồn tại trong một khối hình chữ nhật các ô. Cấu trúc `CellArea` cho phép chúng ta xác định khối đó. Ở đây chúng ta sẽ trình bày **define table range** cho các ô A1 đến D5. + +```csharp +// Step 3: Define the cell range that will become the table (A1:D5) +CellArea tableRange = new CellArea(startRow: 0, startColumn: 0, endRow: 4, endColumn: 3); +// Row/column indices are zero‑based, so 0‑4 maps to rows 1‑5 and 0‑3 maps to columns A‑D. +``` + +> **Mẹo:** Nếu bạn cần một phạm vi động, bạn có thể tính `endRow` và `endColumn` dựa trên độ dài dữ liệu. Đánh số bắt đầu từ 0 là nguồn thường gây lỗi off‑by‑one, vì vậy hãy kiểm tra lại các số của bạn. + +## Bước 4: Thêm Bảng và Bật Hàng Tiêu Đề + +Bây giờ là phần cốt lõi của hướng dẫn: **how to add table** vào worksheet. Bộ sưu tập `ListObjects` quản lý các bảng, và việc đặt `ShowHeaders = true` tự động chèn giao diện AutoFilter. + +```csharp +// Step 4: Add a ListObject (table) to the worksheet and enable the header row +ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; +sampleTable.ShowHeaders = true; // Shows the header row and the filter dropdowns +``` + +> **Giải thích:** +> - `Add(tableRange, true)` tạo một `ListObject` mới (tức là một bảng Excel) trong phạm vi đã chỉ định. +> - Cờ `true` thông báo cho Aspose.Cells rằng hàng đầu tiên của phạm vi sẽ được coi là tiêu đề. +> - Đặt `ShowHeaders` thành `true` làm cho tiêu đề hiển thị và kích hoạt giao diện bộ lọc tích hợp. + +Tại thời điểm này, nếu bạn mở workbook đã tạo, bạn sẽ thấy một bảng được định dạng đẹp với các mũi tên lọc trên mỗi tiêu đề cột. + +## Bước 5: Ẩn Hàng Tiêu Đề và Tắt AutoFilter + +Đôi khi bạn muốn dữ liệu mà không có giao diện rối mắt. Có thể bạn đang xuất một báo cáo sạch sẽ mà không cần bộ lọc. Đây là kỹ thuật **hide table header** và **disable table filter**: + +```csharp +// Step 5: When the filter UI is no longer needed, hide the header row +// and clear the underlying AutoFilter object +sampleTable.ShowHeaders = false; // Hides the header row +sampleTable.AutoFilter = null; // Removes the filter dropdowns completely +``` + +> **Tại sao bạn sẽ làm điều này:** +> - `ShowHeaders = false` loại bỏ hàng tiêu đề hiển thị, biến bảng thành một khối dữ liệu đơn giản. +> - Đặt `AutoFilter = null` xóa đối tượng bộ lọc ẩn, đảm bảo không còn logic bộ lọc tồn tại. Đây là ý nghĩa của **disable table filter**. + +## Bước 6: Lưu Workbook vào Đĩa + +Cuối cùng, chúng ta ghi file vào vị trí bạn chọn. Thay `"YOUR_DIRECTORY"` bằng đường dẫn thực tế trên máy của bạn. + +```csharp +// Step 6: Save the workbook to a file +string outputPath = @"YOUR_DIRECTORY\TableNoFilter.xlsx"; +workbook.Save(outputPath); +Console.WriteLine($"Workbook saved to {outputPath}"); +``` + +Khi bạn chạy chương trình, bạn sẽ thấy: + +``` +Workbook saved to C:\Temp\TableNoFilter.xlsx +``` + +Mở file sẽ hiển thị một sheet với khối dữ liệu (không có tiêu đề, không có mũi tên bộ lọc). Đó là vòng tuần hoàn hoàn chỉnh — từ **create Excel table** đến **disable table filter**. + +--- + +## Ví Dụ Hoàn Chỉnh (Sẵn Sàng Copy‑Paste) + +Dưới đây là toàn bộ chương trình, sẵn sàng biên dịch. Chỉ cần thay thế thư mục placeholder bằng một đường dẫn hợp lệ. + +```csharp +using System; +using Aspose.Cells; + +namespace ExcelTableDemo +{ + class Program + { + static void Main(string[] args) + { + // Step 1: Create a new workbook and get the first worksheet + Workbook workbook = new Workbook(); + Worksheet worksheet = workbook.Worksheets[0]; + + // Step 2: Define the cell range that will become the table (A1:D5) + CellArea tableRange = new CellArea(0, 0, 4, 3); // A1:D5 + + // Step 3: Add a ListObject (table) to the worksheet and enable the header row + ListObject sampleTable = worksheet.ListObjects[worksheet.ListObjects.Add(tableRange, true)]; + sampleTable.ShowHeaders = true; // Shows header + AutoFilter UI + + // Step 4: When the filter UI is no longer needed, hide the header row + // and clear the underlying AutoFilter object + sampleTable.ShowHeaders = false; // Hide header + sampleTable.AutoFilter = null; // Disable filter + + // Step 5: Save the workbook to a file + string outputPath = @"C:\Temp\TableNoFilter.xlsx"; // Change to your folder + workbook.Save(outputPath); + Console.WriteLine($"Workbook saved to {outputPath}"); + } + } +} +``` + +**Kết quả mong đợi:** Một file tên *TableNoFilter.xlsx* chứa một phạm vi dữ liệu đơn giản A1:D5 mà không có hàng tiêu đề hiển thị và không có dropdown bộ lọc. + +--- + +## Câu Hỏi Thường Gặp & Các Trường Hợp Cạnh + +### Nếu tôi cần nhiều bảng trong cùng một worksheet thì sao? + +Chỉ cần lặp lại **Step 3** với một `CellArea` mới và một `ListObject` mới. Mỗi bảng duy trì tiêu đề và cài đặt bộ lọc riêng, vì vậy bạn có thể ẩn một bảng và giữ bảng khác hiển thị. + +### Tôi có thể định dạng bảng (dòng xen kẽ, màu sắc) trước khi ẩn tiêu đề không? + +Chắc chắn. `ListObject` cung cấp thuộc tính `TableStyleType`. Ví dụ: + +```csharp +sampleTable.TableStyleType = TableStyleType.TableStyleMedium2; +``` + +### Nếu tôi cần giữ tiêu đề nhưng chỉ ẩn các mũi tên bộ lọc thì sao? + +Đặt `ShowHeaders = true` (giữ hàng) và sau đó xóa bộ lọc: + +```csharp +sampleTable.AutoFilter = null; // Removes arrows but header stays visible +``` + +### Điều này chỉ hoạt động với file .xlsx phải không? + +Aspose.Cells tự động phát hiện định dạng dựa trên phần mở rộng file bạn truyền vào `Save`. Bạn cũng có thể xuất ra `.xls`, `.csv`, hoặc thậm chí `.pdf` với phần mở rộng khác. + +--- + +## Kết Luận + +Chúng tôi vừa trình bày mọi thứ bạn cần để **create Excel table** trong C# bằng Aspose.Cells, từ **define table range** đến **hide table header** và **disable table filter**. Mã ngắn gọn, rõ ràng và sẵn sàng cho môi trường sản xuất. + +Tiếp theo, bạn có thể khám phá **how to add table** với dữ liệu động, áp dụng kiểu tùy chỉnh, hoặc xuất cùng một workbook ra PDF. Mỗi chủ đề này dựa trên nền tảng bạn vừa nắm vững, vì vậy hãy thoải mái thử nghiệm và điều chỉnh đoạn mã cho dự án của mình. + +Có cách làm nào bạn muốn chia sẻ? Hãy để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file