Quantcast
Channel: ClosedXML - The easy way to OpenXML
Viewing all 1877 articles
Browse latest View live

New Post: Copy/combine multiple spreadsheets to one workbook caused exception

$
0
0
I have x number of workbooks containing sheetNamePreValidate and sheetNameDetailEntry . I want to copy and append the data from each of the workbooks to a single set of spreadsheets within a template workbook, i.e., copy wb1sheetNamePreValidate to templatesheetNamePreValidate , wb2sheetNamePreValidate to templatessheetNamePreValidate (last row + 1) etc, same for all spreadsheets in each workbook.
staticvoid Main ( string [] args )
{
  var nameOfWorkBook = @"combinedWorkbook.xlsx";
  var exportFilePath = @"C:\temp\";
  var rawFilesDirectory = @"C:\temp\input";
  var deleteRqwFiles = false;
  IEnumerable<string> filesToMerge = null;

  // The workbook and worksheets used in this application
  IXLWorksheet worksheetPreValidate = null;
  IXLWorksheet worksheetDetailEntry = null;

  // Assign the sheet names to usevar sheetNamePreValidate = Resources.Resources.PreValidateSheetName;
  var sheetNameDetailEntry = Resources.Resources.DetailEntrySheetName;

  var workbook = new XLWorkbook ( Path.Combine ( exportFilePath, "template.xlsx" ), XLEventTracking.Enabled );

  if ( workbook.Worksheet ( sheetNamePreValidate ) != null&& workbook.Worksheet ( sheetNameDetailEntry ) != null )
  {
      worksheetPreValidate = workbook.Worksheet ( sheetNamePreValidate );
      worksheetPreValidate.Columns ().Expand ();
      worksheetPreValidate.SheetView.FreezeColumns ( 0 );
      var rangePreValidate = worksheetPreValidate.Range ( worksheetPreValidate.Cell ( 1, 1 ).Address, 
          worksheetPreValidate.Cell ( 2, worksheetPreValidate.LastColumnUsed ().ColumnNumber () ).Address );

      worksheetDetailEntry = workbook.Worksheet ( sheetNameDetailEntry );
      worksheetDetailEntry.Columns ().Expand ();
      worksheetDetailEntry.SheetView.FreezeColumns ( 0 );
      var rangeDetailEntry = worksheetDetailEntry.Range ( worksheetDetailEntry.Cell ( 1, 1 ).Address, 
          worksheetDetailEntry.Cell ( 2, worksheetDetailEntry.LastColumnUsed ().ColumnNumber () ).Address );

      var dirInfo = new DirectoryInfo ( rawFilesDirectory );
      filesToMerge = dirInfo.GetFiles ( "*.xlsx", SearchOption.TopDirectoryOnly )
          .OrderBy ( f => f.CreationTimeUtc ).Select ( f => f.FullName );
          
      var numberOfFilesProcessed = 0;
      var numberOfTotalFiles = filesToMerge.Count ();

      var numberOfRowsAddedPreValidate = 1;
      var numberOfRowsAddedDetailEntry = 1;
      IXLWorksheet currentWorksheet = null;

      for ( int index = 0; index < numberOfTotalFiles; index++ )
      {
        var filePath = filesToMerge.ElementAtOrDefault ( index );
        var rowCount = 0;
        
        XLWorkbook childWorkbook = new XLWorkbook ( filePath );
        
        if ( childWorkbook.Worksheet ( sheetNamePreValidate ) != null&& 
            childWorkbook.Worksheet ( sheetNameDetailEntry ) != null )
        {
          childWorkbook.Worksheet ( sheetNamePreValidate ).Columns ().Expand ();
          
          DisplayConsoleDebugInfo ( "\tCopying PreValidate worksheet." );
          currentWorksheet = childWorkbook.Worksheet ( sheetNamePreValidate );
          
          var firstCellAddress = currentWorksheet.Cell ( 2, 1 );
          var lastRow = currentWorksheet.LastRowUsed ().RowNumber ();
          var lastColumn = currentWorksheet.LastColumnUsed ().ColumnNumber ();
          var lastCellAddress = currentWorksheet.Cell ( lastRow, lastColumn );
          
          var sheetRange = currentWorksheet.Range ( firstCellAddress, lastCellAddress );
          
          rowCount = lastRow - 1;
          var lastPreValidateRow = rangePreValidate.LastRowUsed ().RowNumber ();
          numberOfRowsAddedPreValidate = numberOfRowsAddedPreValidate + rowCount + 1;
          
          rangePreValidate.Cell ( lastPreValidateRow + 1, 1 ).Value = 
              currentWorksheet.Range ( firstCellAddress, lastCellAddress );
          
          childWorkbook.Worksheet ( sheetNameDetailEntry ).Columns ().Expand ();
          currentWorksheet = childWorkbook.Worksheet ( sheetNameDetailEntry );
          
          firstCellAddress = currentWorksheet.Cell ( 2, 1 );
          lastRow = currentWorksheet.LastRowUsed ().RowNumber ();
          lastColumn = currentWorksheet.LastColumnUsed ().ColumnNumber ();
          lastCellAddress = currentWorksheet.Cell ( lastRow, lastColumn );
          
          sheetRange = currentWorksheet.Range ( firstCellAddress, lastCellAddress );
          
          rowCount = lastRow - 1;
          numberOfRowsAddedDetailEntry = numberOfRowsAddedDetailEntry + rowCount + 1;
          var lastDetailEntryRow = rangeDetailEntry.LastRowUsed ().RowNumber ();
          
          rangeDetailEntry.Cell ( lastDetailEntryRow + 1, 1 ).Value = sheetRange;
          
          rangePreValidate = worksheetPreValidate.Range ( worksheetPreValidate.Cell ( 1, 1 ).Address, 
              worksheetPreValidate.Cell ( numberOfRowsAddedPreValidate, 
              worksheetPreValidate.LastColumnUsed ().ColumnNumber () ).Address );
              
          rangeDetailEntry = worksheetDetailEntry.Range ( worksheetDetailEntry.Cell ( 1, 1 ).Address, 
              worksheetDetailEntry.Cell ( numberOfRowsAddedDetailEntry, 
              worksheetDetailEntry.LastColumnUsed ().ColumnNumber () ).Address );
        }
        else
        {
          Console.WriteLine ( string.Format ( "{0} does not contain valid spreadsheet", filePath ) );
        }
      }

      worksheetPreValidate.RangeUsed ().AddToNamed ( "RatingsData" );
      worksheetPreValidate.Range ( worksheetPreValidate.FirstColumnUsed ().FirstCell ().Address, 
            worksheetPreValidate.LastColumnUsed ().FirstCell ().Address ).SetAutoFilter ();
      worksheetDetailEntry.Range ( worksheetDetailEntry.FirstColumnUsed ().FirstCell ().Address, 
            worksheetDetailEntry.LastColumnUsed ().FirstCell ().Address ).SetAutoFilter ();

      var outfile = Path.Combine ( exportFilePath, nameOfWorkBook );
      workbook.SaveAs ( outfile );
  }
}
I usually get the exception when the file is being saved:
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at ClosedXML.Excel.XLWorkbook.GetStyleById(Int32 id) in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLConditionalFormat.GetStyle() in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLConditionalFormat.get_Style() in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLWorkbook.AddDifferentialFormats(WorkbookStylesPart workbookStylesPart, SaveContext context) in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLWorkbook.GenerateWorkbookStylesPartContent(WorkbookStylesPart workbookStylesPart, SaveContext context) in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLWorkbook.CreateParts(SpreadsheetDocument document) in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLWorkbook.CreatePackage(String filePath) in d:\test\Program.cs:line 0
   at ClosedXML.Excel.XLWorkbook.SaveAs(String file) in d:\test\Program.cs:line 0
   at Toar.LmCat.Bezoar.Program.Main(String[] args) in d:\test\Program.cs:line 255
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
I am at a loss as I can easily generate the separate workbooks using ClosedXML (which I did :) ) but not when I am recombining them.

New Post: Suppress "... cell is formatted as text or preceded by an apostrophe..." in Excel?

$
0
0
How do you suppress the green arrow when you add the worksheet from a datatable, such as:
Workbook.Worksheets.Add(dataTable, "Some Name");

Created Unassigned: Function CHOOSE not implemented [9128]

$
0
0
Hi,

We are using your library to parse an Excel file. This file uses the "CHOOSE" function in several cells and it is not implemented.

I have implemented this function and I wonder if it is possible to include it in your source code.


```
ce.RegisterFunction("CHOOSE", 2, int.MaxValue, Choose);

...

static object Choose(List<Expression> p)
{
int index = (int)p[0];
if (p.Count > index)
return p[index];
else
return string.Empty;
}
```

New Post: Is there anyway to get worksheet name by index instead of alphabate?

$
0
0
Hi,

GetWorksheetNames() method of ExcelQueryFactory returns worksheet names by alphabate.

Is there anyway to get the worksheet name by index in case of multiple worksheets (so that I can get the first worksheet of excel)

Thanks & Regards,
Vishal

Commented Unassigned: Pivot Tables Values Problem [9088]

$
0
0
Based on the example [Pivot Tables](https://closedxml.codeplex.com/wikipage?title=Pivot%20Table%20example) , do the following steps to reproduce the problem

Excellent example . It works perfect, but if you add more than one value will have a problem . Here I leave an example to reproduce the problem . Suppose Pastry class has one more property called "Amount" int

Step 1. Add two values

```
// The values ​​in our table will come from the " NumberOfOrders " field
// The default setting is a full calculation of each row / column
pt.Values.Add ("NumberOfOrders");

// Another value ( THIS IS THE ONE THAT CAUSE THE PROBLEM )
pt.Values.Add ("Amount" ) ;

```


Step 2. Save the excel file

Step 3. Open the excel file , and throw the following message

We found a problem with Content ' Patry.xlsx ' . Do you want to try to recover as much content as possible ? If trusts origin of this book , please click yes .

Click yes, and I'll get the following message :

Removed Feature: PivotTable report from / xl / PivotTables / pivotTable.xml part ( PivotTable view)
Records removed : book Properties / xl / workbook.xml part ( Book)


Step 4. Final result , the pivot table is not generated

aTTACH project C# for reproduce problem.

Please expect your help to solve this problem .. thank you very much
Comments: ** Comment from web user: andreapoli **

Hi, I have the same problem. I performed the following test:
1. creating an excel file (A.xlsx) with a pivot with only one Values using ClosedXML;
2. opening the created excel file;
3. adding another Value to the pivot and save it;
4. creating an excel file (B.xlsx) with the same Values using ClosedXML;
After that:
5. I renamed A.xlsx and B.xlsx to A.zip and B.zip
6. I unzipped then I used DiffMerge to compare them:
6a. in A.xlsx there are data related to pivot table values written into the sheet which contains the pivot table itself.
6b. in B.xlsx the sheet which contains the pivot table hasn't that data.

New Post: Is there anyway to get worksheet name by index instead of alphabate?

$
0
0
ExcelQueryFactory is part of LinqToExcel.
If you are using LinqToExcel you should ask your question over there.

This package ClosedXML is a totally different package

Here is how you would do it in ClosedXML.
                // Open the Excel file and get first worksheet
                XLWorkbook wb = new XLWorkbook(fileLocation);
                IXLWorksheet ws = wb.Worksheet(1);

Commented Unassigned: Function CHOOSE not implemented [9128]

$
0
0
Hi,

We are using your library to parse an Excel file. This file uses the "CHOOSE" function in several cells and it is not implemented.

I have implemented this function and I wonder if it is possible to include it in your source code.


```
ce.RegisterFunction("CHOOSE", 2, int.MaxValue, Choose);

...

static object Choose(List<Expression> p)
{
int index = (int)p[0];
if (p.Count > index)
return p[index];
else
return string.Empty;
}
```
Comments: ** Comment from web user: JavierPG **

Sorry,

I forgot to evalute the expression. This is the correct code:

```
ce.RegisterFunction("CHOOSE", 2, int.MaxValue, Choose);

...

static object Choose(List<Expression> p)
{
int index = (int)p[0];
if (p.Count > index)
{
Expression value = p[index];
return value.Evaluate();
}
else
return string.Empty;
}
```

New Post: Is there anyway to get worksheet name by index instead of alphabate?

$
0
0
Thanks for pointing, it's my bad.

I will move the question to right discussion forum.

Commented Unassigned: Could not load type 'DocumentFormat.OpenXml.Spreadsheet.SmartTags' [8972]

$
0
0
Error occurs while using saveAs method:
Could not load type 'DocumentFormat.OpenXml.Spreadsheet.SmartTags' from assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
Comments: ** Comment from web user: OleK **

A WORKAROUND TO GET CLOSEDXML working for DocumentFormat.OpenXml SDK 2.5:

1. Download ClosedXML source code
2. Open ClosedXML source with Visual Studio
3. Browse to the References of "ClosedXML" project and remove the reference DocumentFormat.OpenXml
4. Use Nuget to install the latest Document.OpenXml 2.5 SDK as reference into the "ClosedXML" project
5. Open the file __XLWSContentManager.cs__ and remove the line 86
6. Compile the project

For some reason it does not work for that way for "ClosedXML_Net3.5" project.

New Post: Formula issue after worksheet copy

$
0
0
Hi.
        private static readonly Regex R1C1Regex = new Regex(
            //@"(?<=\W)([Rr]\[?-?\d{0,7}\]?[Cc]\[?-?\d{0,7}\]?)(?=\W)" // R1C1
            //+ @"|(?<=\W)([Rr]\[?-?\d{0,7}\]?:[Rr]\[?-?\d{0,7}\]?)(?=\W)" // R:R
            //+ @"|(?<=\W)([Cc]\[?-?\d{0,5}\]?:[Cc]\[?-?\d{0,5}\]?)(?=\W)"); // C:C
             @"(?<=\W)([Rr](\[-?\d{0,7}\])?[Cc](\[-?\d{0,7}\])?)(?=\W)" // R1C1
            + @"|(?<=\W)([Rr](\[-?\d{0,7}\])?:[Rr](\[-?\d{0,7}\])?)(?=\W)" // R:R
            + @"|(?<=\W)([Cc](\[-?\d{0,5}\])?:[Cc](\[-?\d{0,5}\])?)(?=\W)"); // C:C

New Post: Displaying the DataTextField of a Hyperlink in a gridview when Using ClosedXML to create Excel Spreadsheet

$
0
0
I have a Gridview that contains a Hyperlink field, and I want to display the DataTextField of the Hyperlink in the Excel spreadsheet that I create using ClosedXML. However when I use the code below the field is blank. Is there anyway of seeing this field.

Dim workbook As New XLWorkbook
    'Create table
    Dim dt As New DataTable

    'Table Name
    dt.TableName = "Table1"

    'No AllowPaging
    GridView1.AllowPaging = False

    'Add columns to DataTable

    Dim i As Integer
    'Since we are using a gridview we need to add column names.
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    If Not GridView1.HeaderRow Is Nothing Then
        For i = 0 To GridView1.HeaderRow.Cells.Count - 1
            Select Case i
                Case 0
                    dt.Columns.Add("Inspection Date")
                Case 1
                    dt.Columns.Add("Inspector")
                Case 2
                    dt.Columns.Add("InspectorLB")
                Case 3
                    dt.Columns.Add("Completed")
                Case 4
                    dt.Columns.Add("Visual")
                Case 5
                    dt.Columns.Add("Dimensional")
                Case 6
                    dt.Columns.Add("Set_Ups")
                Case 7
                    dt.Columns.Add("Floor_Checks")
                Case 8
                    dt.Columns.Add("Avg_Time")


            End Select

        Next
    End If

    'Add each data rows to table

    Dim row As GridViewRow
    Dim dr As DataRow

    For Each row In GridView1.Rows

        dr = dt.NewRow()
'here is where the text is being pulled for each row in the gridview
        For i = 0 To row.Cells.Count - 1
        If Not IsDBNull(row.Cells(i).Text) Then
                dr(i) = row.Cells(i).Text.Replace("&nbsp;", "")
            End If

        Next
        dt.Rows.Add(dr)
    Next

    'Add footer row to table

    If Not GridView1.FooterRow Is Nothing Then

        dr = dt.NewRow()

        For i = 0 To GridView1.FooterRow.Cells.Count - 1
            dr(i) = GridView1.FooterRow.Cells(i).Text.Replace("&nbsp;", "")

        Next
        dt.Rows.Add(dr)
    End If

    'Add DataTable as a worksheet but you must declare a worksheet so that you can then access the properties.
    Dim ws = workbook.Worksheets.Add(dt)

    ws.PageSetup.Header.Center.AddText("Inspector Summary Report").FontSize = 18
    ws.PageSetup.SetRowsToRepeatAtTop(1, 1)







    ws.PageSetup.Scale = 65

    ws.PageSetup.CenterHorizontally = True
    ws.Range(1, 1, 15, 9).Style.Alignment.Horizontal = XLAlignmentVerticalValues.Center
    ws.Range(1, 1, 1, 9).Style.Font.Bold = True
    ws.Range(1, 1, 1, 9).Style.Alignment.WrapText = True
    ws.Range(1, 1, 1, 9).Style.Font.FontSize = 12
    ws.Range(2, 1, 15, 9).Style.Font.FontSize = 12



    ' ws.PageSetup.FitToPages(1, 1)

    'Create Response
    Dim httpresponse = Response

    'Prepare Response
    httpresponse.Clear()
    httpresponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    httpresponse.AddHeader("content-disposition", "attachment;filename=" + fileName)

    'Flush the workbook to the Response.OutputStream
    Using memoryStream As New MemoryStream()
        workbook.SaveAs(memoryStream)
        memoryStream.WriteTo(httpresponse.OutputStream)
        memoryStream.Close()
    End Using
    httpresponse.End()
Thanks

Marc

New Post: DisplayFormat field attribute

$
0
0
Hello!

Does ClosedXML support attribute [DisplayFormat(DataFormatString = "...")]?

For example, I have the class
public class ReportItem
{   
    [Display(Name = "Variance percent")]
    [DisplayFormat(DataFormatString = "{0:p}")]
    public decimal VariancePercent
}
[Display(Name = "Variance percent")] attribute works perfectly, but DisplayFormat doesn't. Any ideas?

New Post: Formula issue after worksheet copy

$
0
0
First of all i like to appriciate for such a useful functionality.
I like to use it, My requirement is as below..
(1)Working on a wpf c#.net application with mvvm design pattern. Having the requirement to export to excel(independent of excel installation, should be compatible with 32bit and 64 bit both) the nested(master and child) datagrid data.
(2)I also have the requirement to format the header cells and also merge the cells from where child data suppose to start. as following
Image

I think i can achieve all this using closed xml with fast speed, am i right?

I have few doubts.
(1)i am not able to run the examples. While i am trying to run ClosedXML_Examples.exe it throws error of object reference and redirects to debug point "f (opCell.FormulaReference.FirstAddress.Equals(opCell.Address))". Before it, i have corrected the excel file locations as D:\drive does not exist on my machine. Can you help me how can i make it running.
(2)I read somewhere in reviews that it doesn't work properly or gives out of memory exception when no. of record is more then 1000, is this true...any correction made in the latest version?

Please help me with the above so i can start using codeplex and meet my deadlines.

New Post: Interoperability with free spreadsheets

$
0
0
ClosedXML 0.68 or better can read/write xlsx files fine for Excel 2007 or better. Free spreadsheets would be best for my needs if they could interoperate with ClosedXML. Does one exist that simply works bidirectionally with ClosedXML? My reading of the situation:

OpenOffice can't write xlsx.

Gnumeric 1.12.8:
It could open a simple file created by ClosedXML and the sheet name was correct but all cells were empty.
A simple file originally from Excel, and saved fresh from Gnumeric, then read in by ClosedXML, ended up causing an exception from ParseInt32(null).

Planmaker (v679) failed to open a simple file from ClosedXML ("unknown file format") yet it succeeded opening an Excel output file.

I wish some spreadsheet would base its code on ClosedXML.

New Post: Formula issue after worksheet copy

$
0
0
I am facing the problem with the following
            var workbook = new XLWorkbook();
            var worksheet = workbook.Worksheets.Add("Sample Sheet");
            worksheet.Cell("A1").Value = "Hello World!";
            workbook.SaveAs(@"C:\");
it throws the exception at saveas, no matter what address i have been given there, please help it is just the start?

Delay in reply is great loss at my project end, please reply my both the posts?

Commented Issue: Cannot Save() after SaveAs() on new created files [8440]

$
0
0
If a new workbook is created and saved with SaveAs(), it should be possible to use Save().

An exception is thrown at line 408 of XLWorkbook.cs

if (_loadSource == XLLoadSource.New)
throw new Exception("This is a new file, please use one of the SaveAs methods.");

When saved with SaveAs() the loadsource should change to file.
Comments: ** Comment from web user: WPFUserKMI **

I am facing the problem with the following

var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs(@"C:\");
it throws the exception at saveas, no matter what address i have been given there, please help it is just the start?

Delay in reply is great loss at my project end, please reply my both the posts?

New Post: How to display excel file without using SaveAS method

$
0
0
First of all i like to appriciate for such a useful functionality.
I like to use it, My requirement is as below..
(1)Working on a wpf c#.net application with mvvm design pattern. Having the requirement to export to excel(independent of excel installation, should be compatible with 32bit and 64 bit both) the nested(master and child) datagrid data.
(2)I also have the requirement to format the header cells and also merge the cells from where child data suppose to start. as following


I think i can achieve all this using closed xml with fast speed, am i right?

I have few doubts.
(1)i am not able to run the examples. While i am trying to run ClosedXML_Examples.exe it throws error of object reference and redirects to debug point "f (opCell.FormulaReference.FirstAddress.Equals(opCell.Address))". Before it, i have corrected the excel file locations as D:\drive does not exist on my machine. Can you help me how can i make it running.
(2)I read somewhere in reviews that it doesn't work properly or gives out of memory exception when no. of record is more then 1000, is this true...any correction made in the latest version?

Please help me with the above so i can start using codeplex and meet my deadlines.

Created Unassigned: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.0.5022.0 [9142]

$
0
0
i am getting the following error, can someone guide me what i am missing
Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.":"DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

Created Unassigned: Using IF formula with cell referenced produces invalid Excel 2010 document [9143]

$
0
0
This code will produce the file which would be impossible to open in Excel 2010 x32 (Russian) properly:

```
using (var workbook = new XLWorkbook ())
{
var worksheet = workbook.Worksheets.Add ("Report");

worksheet.Cell (1, 1).Value = 1;
worksheet.Cell (1, 2).FormulaR1C1 = "=IF(A1>0;1;0)";

workbook.SaveAs (@"c:\temp\test.xlsx");
}
```

New Post: How to display excel file without using SaveAS method

$
0
0
(1) The file that defines where the excel files get created is CreateFiles.cs in the Creating directory of the ClosedXML_Examples project.
(2) I have created Excel files with over 100,000 rows no problem.
Viewing all 1877 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>