2015-10-30 3 views
0

У меня есть основной каталог, который содержит много подкаталогов. В каждом подкаталоге будут изображения. Мне удалось экспортировать изображения из каждого подкаталога в каждую таблицу Excel в книге Excel. Например, если у меня есть 10 подкаталогов, будет 1 рабочая тетрадь excel с 10 электронными таблицами Excel, в каждой таблице будут изображения каждого подкаталога.Добавить текст в Excel с помощью EPplus

То, что я хочу сделать сейчас, - это отсутствие изображения в любом подкаталоге, подкаталог, экспортированный в таблицу Excel, будет пустым. Я хочу, чтобы добавить «Ничего не найдено» в эту чистую таблицу Excel как текст.

Это то, что я пробовал:

foreach (string subdir in filesindirectory) 
     { 
      string[] splitter = subdir.Split('\\'); 
      string folderName = splitter[splitter.Length - 1]; 
      ExcelWorksheet ws = package.Workbook.Worksheets.Add("Worksheet-" + folderName); //create new worksheet 
      ImageCount = 0; 

      if (Directory.GetFiles(subdir).Length == 0) 
       { 
        ws.Cells["J9:L10"].Merge = true; 
        ws.Cells["J9:L10"].Style.VerticalAlignment = ExcelVerticalAlignment.Top; 
        ws.Cells["J9:L10"].Value = "No chart to display"; 
        ws.Cells["J9:L10"].Style.Font.Size = 16; 
       } 

      foreach (string img in Directory.GetFiles(subdir)) 
      { 
        ImageCount++; 
        System.Drawing.Image Image1 = System.Drawing.Image.FromFile(img); 
        var AddImage = ws.Drawings.AddPicture("Image" + ImageCount.ToString(), Image1); 
        Image1 .Dispose(); 
        // Row, RowoffsetPixel, Column, ColumnOffSetPixel 
        if (ImageCount > 1) 
        { 
         AddImage .SetPosition(ImageFinalPosition, 0, 2, 0); 
         AddImage .SetSize(770, 450); 
         ImageFinalPosition += (ImagePosition + 1); // Add 1 to have 1 row of empty row 
        } 
        else 
        { 
         AddImage.SetPosition(ImageCount, 0, 2, 0); 
         AddImage.SetSize(770, 450); 
         ImageFinalPosition = (ImageCount + ImagePosition) + 1; // Add 1 to have 1 row of empty row 
        } 

Проблема я столкнулся сейчас, когда я добавить текст к конкретным слившихся клеток, если просмотреть таблицу с различным размером экрана, меньший размер экрана будет отображаться текст в центре электронной таблицы, в то время как больший размер экрана отобразит текст слева от таблицы.

Это пример того, что я вижу:

Меньший Размер экрана (ноутбук): enter image description here Larger Размер экрана (рабочий стол): enter image description here Это выход я хочу добиться (все Размер экрана): enter image description here Пожалуйста, помогите мне в этом, спасибо!

ответ

2

Вы должны понимать, как работает foreach цикл ..
Если ваш count является 0 ваш код в foreach не работает на всех
Вы должны поставить проверку перед циклом foreach писать внутри листа

Поместите свой код перед циклом foreach согласно ниже

if (Directory.GetFiles(subdir).Length == 0) //if no image in that sub directory 
{ 
    ws.Cells["A1:A3"].Merge = true; 
    ws.Cells["A1:A3"].Style.VerticalAlignment = ExcelVerticalAlignment.Top; 
    ws.Cells["A1:A3"].Style.Border.Top.Style = ExcelBorderStyle.Thin; 
    ws.Cells["A1:A3"].Style.Border.Left.Style = ExcelBorderStyle.Thin; 
    ws.Cells["A1:A3"].Style.Border.Right.Style = ExcelBorderStyle.Thin; 
    ws.Cells["A1:A3"].Style.Border.Bottom.Style = ExcelBorderStyle.Thin; 
    ws.Cells["A1:A3"].Style.Fill.PatternType = ExcelFillStyle.Solid; 
    ws.Cells["A1:A3"].Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml("#f0f3f5")); 
    ws.Cells["A1:A3"].Value = "content not found"; 
} 

foreach (string img in Directory.GetFiles(subdir)) 
{ 
    // Your else code 
} 
+0

hi @Nic, спасибо за вашу помощь! Мне удалось добавить текст успешно, чтобы преуспеть. Но есть проблема, с которой я столкнулся здесь, если я помещаю текст в определенные объединенные ячейки, если я просмотрю лист Excel с использованием другого размера экрана, меньший размер экрана будет иметь текст, появляющийся в центре листа, в то время как больший размер sceen будет иметь текст появится слева. Знаете ли вы об этом? Пожалуйста, посмотрите мой обновленный пост, спасибо большое! :) –

+0

@FeliciaSoh Очень сложно удовлетворить все Разрешение, которое ваш образ посередине .... Если это CSS, то проще, но, к сожалению, это Excel .... Я считаю, что я вам помогу. – Nic

+0

привет @ Ник, о, я вижу .. понял спасибо за вашу помощь! :) –