2015-02-24 7 views
10

के साथ एक कॉलम स्वरूपण मैंने एक्सेल स्प्रेडशीट बनाने के लिए एक सी # प्रोग्राम लिखा था। शीट में कई कॉलम हैं। मैं कॉलम में से एक को प्रारूपित करना चाहता हूं।ईपीप्लस एक्सेल लाइब्रेरी

aFile = new FileInfo(excelDocName); // excelDocName is a string 
ExcelPackage pck = new ExcelPackage(aFile); 
var ws = pck.Workbook.Worksheets.Add("Content"); 
ws.View.ShowGridLines = true; 
ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 
ws.Cells[1, 1].Value = "AA"; 
ws.Cells[1, 2].Value = "BB"; 
ws.Cells[1, 3].Value = "CC"; 
ws.Cells[1, 4].Value = "DD"; 
for (int row = 2; row <= 10; ++row) 
    for (int col = 1; col <= 4; ++col) 
    { 
    ws.Cells[row, col].Value = row * col; 
    } 
ws.Row(1).Style.Font.Bold = true; 
pck.Save(); 

समस्या यह भी प्रारूप के साथ अन्य स्तंभों स्वरूपण है और न सिर्फ स्तंभ मैं निर्दिष्ट, है, जबकि यह कॉलम सही स्वरूपण है। मैं भी करने की कोशिश की:

ws.Column(1).Style.Numberformat.Format = "0.00"; 

यह एक बग है या मैं कुछ याद आ रही है?

+0

हम्म, मैं कुछ भी गलत नहीं देख सकते हैं चयनकर्ताओं। आप एक टेम्पलेट का उपयोग कर रहे हैं? क्या यह संभव है कि टेम्पलेट स्वयं को स्वरूपित किया गया हो? या आप जिस प्रारूप को सेट कर रहे हैं वह संख्याओं के लिए डिफ़ॉल्ट हो सकता है? क्षमा करें मैं बहुत मदद नहीं करता – astian

+0

मैं टेम्पलेट का उपयोग नहीं कर रहा हूं। पता था कि मैं एक का उपयोग कर सकता था। मैं उसमें देख सकता हूं। धन्यवाद – elbillaf

उत्तर

15

क्या आप मौजूदा फाइल खोल रहे हैं? यह आपके द्वारा खोलने से पहले अन्य कॉलम पर पहले से ही एक प्रारूप लागू हो सकता है। या अस्थिर जैसे टेम्पलेट ने कहा।

सभी साफ़ इस तरह स्वरूपण सिर्फ मामले में:

ws.Cells["A:D"].Style.Numberformat.Format = null; 
ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 

EPPlus 4.0.3 में पूर्ण इकाई परीक्षण:

[TestMethod] 
public void Format_Single_Column_Test() 
{ 
    //http://stackoverflow.com/questions/28698226/formatting-a-column-with-epplus-excel-library 
    var excelDocName = @"c:\temp\temp.xlsx"; 
    var aFile = new FileInfo(excelDocName); // excelDocName is a string 

    if (aFile.Exists) 
     aFile.Delete(); 

    ExcelPackage pck = new ExcelPackage(aFile); 
    var ws = pck.Workbook.Worksheets.Add("Content"); 
    ws.View.ShowGridLines = true; 
    ws.Cells["A:D"].Style.Numberformat.Format = null; 
    ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 
    ws.Cells[1, 1].Value = "AA"; 
    ws.Cells[1, 2].Value = "BB"; 
    ws.Cells[1, 3].Value = "CC"; 
    ws.Cells[1, 4].Value = "DD"; 
    for (int row = 2; row <= 10; ++row) 
     for (int col = 1; col <= 4; ++col) 
     { 
      ws.Cells[row, col].Value = row*col; 
     } 
    ws.Row(1).Style.Font.Bold = true; 
    pck.Save(); 
} 
+0

मैं टेम्पलेट के बिना स्क्रैच से स्प्रेडशीट बना रहा हूं। यह पता चला है कि मेरे लिए केवल कुछ स्तंभों को प्रारूपित करना पर्याप्त है। मुझे यह पसंद नहीं है, क्योंकि मुझे अभी भी समझ में नहीं आता है कि सिवाय इसके कि यह एक बग क्यों हो सकता है। मैं अब इसके साथ खेलने के लिए नहीं जा रहा हूं कि यह काम कर रहा है। फिर भी मैं इस int को ध्यान में रख रहा हूं, कि मैं प्रारूप को शून्य पर सेट कर सकता हूं। धन्यवाद – elbillaf

+0

@elbillaf आप EPPlus का कौन सा संस्करण चल रहे हैं? मैंने संस्करण 4.0.3 में ऊपर जोड़े गए यूनिट परीक्षण की कोशिश की। – Ernie

+0

संस्करण ... 4.0.3 – elbillaf

संबंधित मुद्दे