Как предотвратить стирание существующих значений в Excel, при записи в файл Excel с помощью OpenXML Writer - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь записать в файл Excel, используя OpenXMl Writer.Проблема, с которой я здесь сталкиваюсь, - это запись нового значения на лист, стирание предыдущих значений в другом месте на листе, что не должно происходить.Я хочу писать только в соответствующем столбце, но не должен удалять значения в других столбцах.Пожалуйста, помогите мне с этим.Найдите код ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using System.Diagnostics;

namespace OpenXML
{
    class WRITE5
    {
        static void Main(string[] args)
        {
            Stopwatch sw = Stopwatch.StartNew();
            WriteValuesSAX(@"C:\Users\AbdulHameedM\Desktop\1.xlsx", 10);
            sw.Stop();
            Console.WriteLine("Time Taken =" + sw.ElapsedMilliseconds);
            Console.ReadKey();
        }

        static void WriteValuesSAX(string filename, int numRows)
        {
            using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true))
            {
                List<OpenXmlAttribute> oxa;

                WorkbookPart workbookPart = myDoc.WorkbookPart;
                WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();

                OpenXmlWriter writer = OpenXmlWriter.Create(worksheetPart);

                writer.WriteStartElement(new Worksheet());
                writer.WriteStartElement(new SheetData());

                for (int i = 1; i <= 500; ++i)
                {
                    oxa = new List<OpenXmlAttribute>();
                    // this is the row index
                    oxa.Add(new OpenXmlAttribute("r", null, i.ToString()));

                    writer.WriteStartElement(new Row(), oxa);


                    oxa = new List<OpenXmlAttribute>();

                    // this is the data type ("t"), with CellValues.String ("str")
                    oxa.Add(new OpenXmlAttribute("t", null, "str"));

                    // it's suggested you also have the cell reference, but
                    // you'll have to calculate the correct cell reference yourself.
                    // Here's an example:
                    oxa.Add(new OpenXmlAttribute("r", null, "A" + i));
                    //oxa.Add(new OpenXmlAttribute("r", null, "A" + i));

                    writer.WriteStartElement(new Cell(), oxa);

                    writer.WriteElement(new CellValue(string.Format("Microsoft")));

                    // this is for Cell
                    writer.WriteEndElement();


                    // this is for Row
                    writer.WriteEndElement();
                }
                writer.Close();
            }
        }
    }
}
...