2015-01-10 6 views
8

पर पंक्ति की ऊंचाई निर्धारित करते समय अजीब व्यवहार मैं एमईसी -5 सी # अनुप्रयोग के तहत ईईप्लस के साथ एक एक्सेल फ़ाइल बना रहा हूं। जब तक मैं एक पंक्ति पर ऊंचाई निर्धारित नहीं करता तब तक सब कुछ योजनाबद्ध होता है (इसलिए एक छवि फिट हो सकती है)।ईपीप्लस

मैं डी छवियों को लोड और स्तंभ 20 पर ऊंचाई निर्धारित करते हैं, जैसे इतना:

Image cfPhoto = null; 
Bitmap cfBm = null; 
ExcelPicture pictureCf = null; 
var photoInitialColumn = 0; 
i++; 
completedFormPhotos.ForEach(delegate(CompletedFormPhoto cfP) 
{ 
    cfPhoto = Image.FromFile(HostingEnvironment.MapPath("~/Content/Images/FormPhotos/" + cfP.Id + ".jpg")); 
    cfBm = new Bitmap(cfPhoto, new Size(215, 170)); 
    pictureCf = worksheet.Drawings.AddPicture(cfP.Id.ToString(), cfBm); 
    pictureCf.SetPosition(i+1, 0, photoInitialColumn, 10); 
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Merge = true; 
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Value = cfP.comment; 
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Style.WrapText = true; 
    photoInitialColumn += 2; 
    //HERE I SET THE HEIGHT. At this point, i == 18 
    worksheet.Row(i+2).Height = 180; 
}); 

लेकिन, मुझे जो रूप में अच्छी तरह आकार दिया जाता है Excel फ़ाइल (A1 सेल) के शीर्ष पर (एक कंपनी लोगो है ऊंचाई पर)। यही कारण है कि इस तरह से परिभाषित किया गया है:

Image _keyLogo = Image.FromFile(HostingEnvironment.MapPath("~/Content/Images/key_logo.png")); 
var pictureLogo = worksheet.Drawings.AddPicture("Logo Key Quimica", _keyLogo); 
pictureLogo.SetPosition(0, 0, 0, 0); 

इस पर परिणामी:

Screenshot of the Excel File

किसी भी मदद वास्तव में सराहना की जाएगी।

Here प्रश्न में एक्सेल फ़ाइल है।

उत्तर

7

यह तस्वीर लोगो की EditAs सेटिंग पर आता है। डिफ़ॉल्ट रूप से इसे OneCell पर सेट किया जाएगा लेकिन इसे TwoCell पर सेट करना मेरा मानना ​​है कि आपकी समस्या का समाधान होगा। इस पर प्रलेखन (ईपीपी 4.0.1 को देखकर) बल्कि गूढ़ है लेकिन यह मूल रूप से कहता है कि यह सेटिंग ड्राइंग को अपनी मूल पंक्ति/कॉलम स्थिति और आकार को बनाए रखने के लिए बताएगी। हालांकि नाम थोड़ा सा अंतर्ज्ञानी प्रतीत होता है।

मैं अपने कोड की तरह दिखता है क्या अनुमान लगाना था और मैं इस समस्या आप कर रहे थे और उसके बाद पुन: पेश EditAs सेटिंग के साथ हल करने में सक्षम था (मुझे पता है कि अगर मैं गलत समझ में आ गया है):

[TestMethod] 
public void Image_Stretch_Test() 
{ 
    //http://stackoverflow.com/questions/27873762/weird-behavior-when-setting-a-rows-height-on-epplus 
    var existingFile = new FileInfo(@"c:\temp\temp.xlsx"); 
    if (existingFile.Exists) 
     existingFile.Delete(); 

    using (var package = new ExcelPackage(existingFile)) 
    { 
     var workbook = package.Workbook; 
     var worksheet = workbook.Worksheets.Add("newsheet"); 

     var _keyLogo = Image.FromFile("C:/Users/Ernie/Desktop/key_logo.png"); 
     var pictureLogo = worksheet.Drawings.AddPicture("Logo Key Quimica", _keyLogo); 
     pictureLogo.SetPosition(0, 0, 0, 0); 
     pictureLogo.EditAs = eEditAs.TwoCell; //REMOVE THIS TO SHOW THE STRETCH PROBLEM 

     var cfPhoto = Image.FromFile("C:/Users/Ernie/Desktop/Main_Pic.png"); 
     var cfBm = new Bitmap(cfPhoto, new Size(215, 170)); 

     var pictureCf = worksheet.Drawings.AddPicture("Main_Pic", cfBm); 
     pictureCf.SetPosition(10, 0, 0, 0); 

     worksheet.Row(11).Height = 280; 

     package.Save(); 
    } 
} 

अन्य चीज जो इसे ठीक करती है, लोगो को आकार बदलने के बाद लोगो जोड़ना था, लेकिन यह सुनिश्चित नहीं है कि क्या आप जो करने की कोशिश कर रहे हैं उसके लिए व्यावहारिक है।

+0

यह कॉल करते समय भी चाल है .सेटस्ज़ (डब्ल्यू, एच) - अगर एडिटएस को डिफ़ॉल्ट मान के साथ छोड़ा गया था, तो छवि को सेटसाइज़ के पैरामीटर के कम आकार के आकार में एक वर्ग तक बढ़ा दिया गया होगा। –

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