2017-02-24 7 views
1

私はOpenXMLを使用してExcelファイルを操作しています。Excelスプレッドシートをプログラムでソート

私はExcelファイルをメモリストリームとして送信し、編集してからブラウザに送り返し、クライアントのオフィスプログラムで開くようにしています。私はこのコードを使用して、新しいスプレッドシートを作成します。

public static void InsertWorksheet(string docName) 
{ 

using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) 
{ 
    // Add a blank WorksheetPart. 
    WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); 
    newWorksheetPart.Worksheet = new Worksheet(new SheetData()); 

    Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>(); 
    string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart); 

    // Get a unique ID for the new worksheet. 
    uint sheetId = 1; 
    if (sheets.Elements<Sheet>().Count() > 0) 
    { 
     sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1; 
    } 

    // Give the new worksheet a name. 
    string sheetName = "Sheet" + sheetId; 

    // Append the new worksheet and associate it with the workbook. 
    Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName }; 
    sheets.Append(sheet); 
} 
} 

私の問題は、このシートは、ブック内のシートの間で最後に追加されていることです。私はそれがシートnr 1であることを望んでいます。私はシートnrに私の新しく作成されたシートをどのように設定できるかに関するヒントを探しています。 1.

答えて

2

sheets.Appendの代わりに、最初に挿入するものを呼び出しますか? InsertまたはPrependの方法がありますか?

+0

はい、実際はそうです。ヒントをありがとう。これはトリックでした: sheets.InsertAt(sheet、0); – Ilyas

関連する問題