私はOpenXMLを初めて使用し、行(セルデータも含む)が追加された後、A1にセルデータを含む新しい行を追加するのに苦労しています。
したがって、基本的には、「行 1」の列「A1」に「テスト」を挿入し、「行 2」の列「A1」に「テスト」を挿入します。
これが私のコードです。それは健全に見え、ファイルを作成しますが、Excelはそれを開きません。OpenOffice で開いたところ、2 行ではなく 1 行しか表示されません。シートデータにrow2を追加してコメントアウトすると、正常に機能します。だから私は2行目を間違って作成していると思っています。どんな助けでも大歓迎です。前もって感謝します。コードは次のとおりです。
using (SpreadsheetDocument spreadSheetDocument =
SpreadsheetDocument.Create("generated.xlsx", SpreadsheetDocumentType.Workbook))
{
//Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadSheetDocument.AddWorkbookPart();
//create new workbook
workbookpart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
//instantiate new worksheet with new sheetdata
worksheetPart.Worksheet = new Worksheet(new SheetData());
//Add Sheets to the Workbook.
Sheets sheets = spreadSheetDocument.WorkbookPart.Workbook.
AppendChild<Sheets>(new Sheets());
DocumentFormat.OpenXml.UInt32Value sheetId = 1;
//Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet();
sheet.Id = spreadSheetDocument.WorkbookPart.GetIdOfPart(worksheetPart);
sheet.SheetId = sheetId;
sheet.Name = new StringValue("test_" + 1);
sheets.Append(sheet);
//Get the sheetData cell table.
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
UInt32Value rowindex = 1;
UInt32Value rowindex2 = 2;
// Add a row to the cell table.
Row row = new Row() { RowIndex = rowindex };
Cell newCell = new Cell();
newCell.DataType = CellValues.InlineString;
newCell.CellReference = "A1";
InlineString inlineString = new InlineString();
Text t = new Text();
t.Text = "test";
inlineString.Append(t);
newCell.AppendChild(inlineString);
row.AppendChild(newCell);
sheetData.AppendChild(row);
rowindex++;
// Add a row to the cell table.
Row row2 = new Row() { RowIndex = rowindex2 };
Cell newCell2 = new Cell();
newCell2.DataType = CellValues.InlineString;
newCell2.CellReference = "A1";
InlineString inlineString2 = new InlineString();
Text t2 = new Text();
t2.Text = "test";
inlineString2.Append(t2);
newCell2.AppendChild(inlineString2);
row2.AppendChild(newCell2);
sheetData.AppendChild(row2);
workbookpart.Workbook.Save();
// Close the document.
spreadSheetDocument.Close();
MessageBox.Show("Success");
}