Реализация динамического/соответствующего гиперссылки Win Excel с EpplusC#

Место общения программистов C#
Ответить
Anonymous
 Реализация динамического/соответствующего гиперссылки Win Excel с Epplus

Сообщение Anonymous »

ОК, поэтому, прежде чем мы начнем: у меня уже есть форма, которая работает на 95%.
Моя проблема просто заключается в том, что когда Excel открывается впервые после генерации, формулы должны работать вручную для ссылок на «рендеринг», что скорее ... раздражает.
для простых. Версия C#, с которой мы работаем, составляет 9.0 и Epplus 4.5.3.3 (поскольку компания не хочет покупать лицензию, обновление невозможно) < /p>
Таким образом, в основной реализации цель: у нас есть 2 семинара. У обоих есть идентификационное поле. Поле ID во втором листе, как предполагается, следит за полем гиперссылки.
Что за поле гиперссылки «предполагается найти первую строку в первом листе с соответствующим идентификатором, а затем отображает поле названия этого ряда (1 -й лист) в поле Link (2 -й лист) < /p>
Я надеюсь, что это было достаточно точно, что я могу объяснить. Более глубокий.
В этом мы будем работать с одним листом. /> Здесь у вас есть нужный дисплей

Теперь, как указано раньше, я уже получил формула для этого
= hyperink ("#" Индекс ($ C $ 2: $ C $ 10; MATCH ($ E2; $ A 2: $ 10; 0))); src = "https://i.sstatic.net/tpizqfuj.png"/>
И я должен щелкнуть в ячейке и нажмите Enter для рендеринга. /> < /p>
Здесь у вас есть реализация epplus c# (она не автоматизирована, потому что опять же, это небольшая витрина < /p>

Код: Выделить всё

string excelPath = "Result.xlsx"; // Path to my Excel file

using (ExcelPackage package = new ExcelPackage())
{
ExcelWorkbook wb = package.Workbook;

ExcelWorksheet ws = wb.Worksheets.Add("Sheet");

#region Fill Cells

ws.Cells[1, 1].Value = "Seller";
ws.Cells[1, 2].Value = "Month";
ws.Cells[1, 3].Value = "Product";

ws.Cells[2, 1].Value = "Robert";
ws.Cells[2, 2].Value = "Mar";
ws.Cells[2, 3].Value = "Bananas";

ws.Cells[3, 1].Value = "Tom";
ws.Cells[3, 2].Value = "Feb";
ws.Cells[3, 3].Value = "Oranges";

ws.Cells[4, 1].Value = "Adam";
ws.Cells[4, 2].Value = "Jan";
ws.Cells[4, 3].Value = "Lemons";

ws.Cells[1, 5].Value = "Lookup value";
ws.Cells[2, 5].Value = "Adam";
ws.Cells[3, 5].Value = "Tom";

ws.Cells[1, 6].Value = "First match";
ws.Cells[2, 6].Value = "=HYPERLINK(\"#\"&CELL(\"address\"; INDEX($C$2:$C$10; MATCH($E2;$A$2:$A$10;0))); INDEX($C$2:$C$10; MATCH($E2;$A$2:$A$10;0)))";
ws.Cells[3, 6].Value = "=HYPERLINK(\"#\"&CELL(\"address\"; INDEX($C$2:$C$10; MATCH($E3;$A$2:$A$10;0))); INDEX($C$2:$C$10; MATCH($E3;$A$2:$A$10;0)))";

wb.CalcMode = ExcelCalcMode.Automatic;
wb.FullCalcOnLoad = true;
wb.Calculate(new ExcelCalculationOption(){ AllowCirculareReferences = true});

#endregion

package.SaveAs(new FileInfo(excelPath));
}
< /code>
Я много экспериментировал. Я пробовал вещи, такие как размещение функции не как cell.value, но Cell.formular (Ofc I затем удалил = в начале)
Я также попытался выполнить команду расчетов на самих клетках, прежде чем я ее сохраню. row.
Я надеюсь, что смог правильно объяснить свою проблему. В то же время я, однако, смог определить причину моей проблемы. с ",". < /p>
ws.Cells[4, 6].Formula = "HYPERLINK(\"#\"&CELL(\"address\", INDEX($C$2:$C$4, MATCH($E4,$A$2:$A$4,0))), INDEX($C$2:$C$4, MATCH($E4,$A$2:$A$4,0)))";
Мой исходный конец расчетов запуска/настройка.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ith-epplus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»