2016-12-14 25 views
1

我想在C#EPPlus.but工作表中的每個cloumn添加由Excel工作表中的新數據最後一個單元格是不同C#epplus修改Excel如何計算每列最後的節數

這個代碼顯示工作表中的最長柱

worksheet.Dimension.Columns; 

但是,怎樣才能讓每列最後一個單元格數

我的代碼:

private void btn_open_Click(object sender, EventArgs e) 
{ 
    ExcelWorksheet worksheet = p.Workbook.Worksheets[3]; 

    int colCount = worksheet.Dimension.Columns; 
    MessageBox.Show(colCount.ToString()); 
    Columnbase = IndexToColumn(worksheet.Dimension.Columns+1); 
    Columnbase = Columnbase+"2"; 
    worksheet.Cells[Columnbase].Value = "12010"; 
} 

static readonly string[] Columns = new[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH" }; 

public static string IndexToColumn(int index) 
{ 
    if (index <= 0) 
     throw new IndexOutOfRangeException("index must be a positive number"); 
    return Columns[index - 1]; 
} 
+0

你是什麼意思「希望通過Excel工作表添加新數據」? 你想通過工作表中的所有單元格? – BMaximus

+0

我想在Excel工作表單元格中寫入新數據,但每個工作表列最後一個單元格都不相同,我該如何編寫 – user7099027

+0

您的意思是說,您想要覆蓋工作表中的現有數據,並且無法爲每個工作表指定最後一列? – BMaximus

回答

1

要了解EPPlus中的Worksheet中的Cells對象,重要的一點是它只包含引用數據的單元格。所以有點LINQ你可以得到像這樣的每個「行」的地址:

using (var pck = new ExcelPackage(fileInfo)) 
{ 
    var workbook = pck.Workbook; 
    var worksheet = workbook.Worksheets.Add("Sheet1"); 

    worksheet.Cells["A1"].Value = "Test"; 
    worksheet.Cells["B1"].Value = "Test"; 
    worksheet.Cells["C1"].Value = "Test"; 
    worksheet.Cells["D1"].Value = "Test"; 

    worksheet.Cells["A2"].Value = "Test"; 
    worksheet.Cells["B2"].Value = "Test"; 
    worksheet.Cells["C2"].Value = "Test"; 
    worksheet.Cells["D2"].Value = "Test"; 
    worksheet.Cells["E2"].Value = "Test"; 

    worksheet.Cells["A3"].Value = "Test"; 

    var lastRowCell1 = worksheet.Cells.Last(c => c.Start.Row == 1); 
    Console.WriteLine(lastRowCell1.Address); //Prints "D1" 

    var lastRowCell2 = worksheet.Cells.Last(c => c.Start.Row == 2); 
    Console.WriteLine(lastRowCell2.Address); //Prints "E2" 

    var lastColCell1 = worksheet.Cells.Last(c => c.Start.Column == 1); 
    Console.WriteLine(lastColCell1.Address); //Prints "A3" 

    var lastColCell2 = worksheet.Cells.Last(c => c.Start.Column == 2); 
    Console.WriteLine(lastColCell2.Address); //Prints "B2" 
}