Я пытаюсь записать в файл 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();
}
}
}
}