Używam ClosedXML do generowania arkuszy kalkulacyjnych z C# (asp.net-mvc) i działa świetnie. Mam jedno dodatkowe wymaganie, więc chciałem uzyskać informacje zwrotne na temat tego, w jaki sposób mogę to osiągnąć.Jak mogę osadzić kod VBA w arkuszu kalkulacyjnym utworzonym przy użyciu ClosedXML?
Chcę zapisać jako skoroszyt z włączonym makrem, a kiedy po prostu nadaję mu rozszerzenie "xlsm", to nie wydaje się, aby otworzyć (w przeciwieństwie do xlsx). Tu jest mój kodu:
public ActionResult ExportExcel()
{
MemoryStream stream = nModel.GenerateSS();
return File(stream, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "MySS.xlsx");
}
ale gdy próbuję to zrobić:
public ActionResult ExportExcel()
{
MemoryStream stream = nModel.GenerateSS();
return File(stream, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "MySS.xlsm");
}
Excel narzeka podczas próby otwarcia.
Następnie, zakładając, że mogę zrobić # 1, muszę mieć możliwość wzięcia trochę VBA (zakładając tylko funkcję zakodowaną na sztywno) i wstawienia tego do modułu lub skoroszytu, więc gdy ktoś otworzy arkusz kalkulacyjny i kliknie na Makra , mogą uruchamiać makra. Z google'a to nie jest obsługiwane przez ClosedXML, więc byłem ciekawy, czy ktoś ma jakieś alternatywne sposoby, aby to osiągnąć?
To może lub nie może pomóc, ja zazwyczaj nie pracują bezpośrednio z ClosedXML, ale raczej użyć EPPlus zrobić ciężkiego unoszenie dla mnie ... Udokumentowali przykłady dodawania makra do arkusza - http://epplus.codeplex.com/ –