0

Excelファイルの作成にOpenXML SDK 2.5を使用しています。作成したExcelファイルのグリッド線を非表示にしたい.SheetViewsを作成しようとしましたが、シートが完全に非表示になりました. 以下のような私の純粋なコード

public static SpreadsheetDocument CreateWorkbook(MemoryStream memoryStream)
    {
        var spreadSheet = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);

        spreadSheet.AddWorkbookPart();
        spreadSheet.WorkbookPart.Workbook = new Workbook();
        spreadSheet.WorkbookPart.Workbook.Save();

        var sharedStringTablePart = spreadSheet.WorkbookPart.AddNewPart<SharedStringTablePart>();
        sharedStringTablePart.SharedStringTable = new SharedStringTable();
        sharedStringTablePart.SharedStringTable.Save();

        spreadSheet.WorkbookPart.Workbook.Sheets = new Sheets();
        spreadSheet.WorkbookPart.Workbook.Save();

        var workbookStylesPart = spreadSheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
        workbookStylesPart.Stylesheet = new Stylesheet();
        workbookStylesPart.Stylesheet.Save();

        memoryStream.Seek(0, SeekOrigin.Begin);

        return spreadSheet;
    } 

    public static bool AddWorksheet(SpreadsheetDocument spreadsheet, string name)
    {
        Sheets sheets = spreadsheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();

        var worksheetPart = spreadsheet.WorkbookPart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());

        worksheetPart.Worksheet.Save();

        var sheet = new Sheet()
        {
            Id = spreadsheet.WorkbookPart.GetIdOfPart(worksheetPart),
            SheetId = (uint)(spreadsheet.WorkbookPart.Workbook.Sheets.Count() + 1),
            Name = name
        };
        if (string.IsNullOrEmpty(name)) {
            sheet.Name = string.Format("Sheet{0}", sheet.SheetId);
        }
        sheets.Append(sheet);
        spreadsheet.WorkbookPart.Workbook.Save();

        return true;
    }

その後、メモリ内にスプレッドシートのインスタンスを作成しています

//Creating like that
        var memoryStream = new MemoryStream();
        var spreadsheet = CreateWorkbook(memoryStream);       
        AddWorksheet(spreadsheet, null);
//End Filling data

いくつかのチェックの後、列を使用すると、グリッド線を非表示にできませんでした。データを表示するためだけにセルを作成する必要があります。しかし、その時は列が存在しないため、幅のプロパティを変更できませんでした:)

4

1 に答える 1

0

わかった。最初に、pure が適切に動作し、有効なワークブックが生成されることを確認してください。その後、コードを適用できます。

 SheetViews sheetViews = new SheetViews();

 SheetView sheetView = new SheetView(){ ShowGridLines = false, TabSelected = true, ZoomScaleNormal = (UInt32Value)100U, WorkbookViewId = (UInt32Value)0U };
 Selection selection = new Selection(){ ActiveCell = "A1", SequenceOfReferences = new ListValue<StringValue>() { InnerText = "A1" } };

 sheetView.Append(selection);
 sheetViews.Append(sheetView);
 worksheet.Append(sheetViews);

sheetViews ブロックが sheetdata の前に配置されていることを確認してください。そうしないと、ドキュメントが破損します。

于 2015-08-20T09:57:24.377 に答える