Home > Back-end >  How to write data to an existing Excel doc in C#
How to write data to an existing Excel doc in C#

Time:07-16

I have a document that I need to update on a monthly basis and I'm writing an automation to do so. This is my first time attempting to update a document with C# as opposed to simply creating a new one. I have researched and tried implementing a few libraries that I've found online and here on StackOverflow, for example, ClosedXML, but so far I've had no luck. I understand this question has been asked here before, so my actual question is: Is my implementation incorrect/am I doing something wrong?

public void WriteToReport(List<BrandData> brandData, string reportFilePath)
{            
    using (var workbook = new XLWorkbook(reportFilePath))
    {
        var worksheet = workbook(1);
        worksheet.Cell(26, 2).Value = "Hello World!";
        workbook.SaveAs(reportFilePath);                
    }
}

Above is how I've tried to test ClosedXML so far. The GitHub docs imply that it should be this simple, but I don't see any changes made to the doc when the automation is finished. I've also tried using Streamwriter. If anyone can help me with ClosedXML or suggest another library that worked for them, it would be greatly appreciated.

Edit: Following explanations on other similar questions on here, I have tried this:

public void WriteToReport(List<BrandData> brandData, string reportFilePath)
{
            var workbook = new XLWorkbook(reportFilePath);
            var worksheet = workbook.Worksheet(1);
            int numberOfLastColumn = 
            worksheet.LastColumnUsed().ColumnNumber();
            IXLCell newCell = worksheet.Cell(numberOfLastColumn   1, 1);
            newCell.SetValue("Hello World");
            workbook.SaveAs(reportFilePath);                            
}

CodePudding user response:

Here is a simple example to write a string value to the first WorkSheet.

public void WriteToCell(string fileName, int row, int col, string value)
{
    using var workbook = new XLWorkbook(fileName);
    var worksheet = workbook.Worksheets.Worksheet(1);
    worksheet.Cell(row, col).Value = value;
    workbook.SaveAs(fileName);
}
  • Related