使用OpenXML创建的Excel文件在Excel中打开时需要修复

问题描述 投票:0回答:1

我正在尝试使用C#openXML插入Excel文件(.xlsx)单元,>

但是当我打开创建的Excel文件时,需要通过显示以下错误来修复它,

已修复的记录:/xl/worksheets/sheet1.xml部分的单元格信息

这是我的代码。

    public void InsertText(TestModelList data)
    {
        var date_time = DateTime.Now.ToString().Replace("/", "_").Replace(":", "_");
        string OutputFileDirectory = "E:\\TEST";
        string fileFullName = Path.Combine(OutputFileDirectory, "Output.xlsx");
        if (File.Exists(fileFullName))
        {
            fileFullName = Path.Combine(OutputFileDirectory, "Output_" + date_time + ".xlsx");
        }

        using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(fileFullName, SpreadsheetDocumentType.Workbook))
        {
            WorkbookPart wbp = spreadSheet.AddWorkbookPart();
            WorksheetPart wsp = wbp.AddNewPart<WorksheetPart>();
            Workbook wb = new Workbook();
            Worksheet ws = new Worksheet();
            SheetData sd = new SheetData();
            InsertToCell(1, "C", "1C", sd);
            ws.Append(sd);
            wsp.Worksheet = ws;
            wsp.Worksheet.Save();
            Sheets sheets = new Sheets();
            Sheet sheet = new Sheet()
            {
                Id = wbp.GetIdOfPart(wsp),
                Name  = "test",
                SheetId = 1
            };

            sheets.Append(sheet);
            wb.Append(sheets);
            spreadSheet.WorkbookPart.Workbook = wb;
            spreadSheet.WorkbookPart.Workbook.Save();
        }
    }

    private void InsertToCell(uint rowIndex, string col, string value, SheetData sd)
    {
        var row = new Row() { RowIndex = rowIndex };

        var cellReference = col + rowIndex;

        Cell newCell = new Cell
        {
            StyleIndex = (UInt32Value)1U,
            CellValue = new CellValue(value),
            DataType = CellValues.SharedString,
            CellReference = cellReference
        };
        row.InsertBefore(newCell, null);
        sd.Append(row);
    }

任何人都可以帮助我解决此问题吗?

我正在尝试使用C#openXML插入Excel文件(.xlsx)单元格,但是当我打开创建的Excel文件时,需要通过显示以下错误来修复它,即已修复的记录:单元格信息...

excel cell openxml
1个回答
0
投票
您正在创建的新单元格存在一些问题。首先,将StyleIndex属性(ssml:s属性)设置为1U的值,而没有WorkbookStylesPart包含可引用的单元格样式。其次,您将DataType属性(ssml:t属性)设置为CellValues.SharedString(即"s")的值而没有SharedStringTablePartCellValue属性(ssml:v元素)应该是SharedStringItemssml:si元素)内SharedStringTablessml:sst元素)的从零开始的索引,而不是"1C"
© www.soinside.com 2019 - 2024. All rights reserved.