1

私は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");
}
4

0 に答える 0