我正在尝试直接从C#加载项,这样当我打开工作簿并执行Workbook.Calculate()时,在外部插件中定义的UDF(用户定义函数)在工作表中正确计算。目前,我正在遍历每个添加和简单设置:
AddIn.Installed = true
这不起作用。 C#根本不加载加载项,我想避免使用VBA。我想打开一个工作簿,一个excel工作簿,其中包含特定的加载,完整计算,并且应该更新工作表的所有值,包括具有UDF的单元格。
感谢您的帮助......
一些代码:
Excel.Workbook wkbk = ExcelApp.ActiveWorkbook;
Excel.XlFixedFormatType paramExportFormat = Excel.XlFixedFormatType.xlTypePDF;
Excel.XlFixedFormatQuality paramExportQuality = Excel.XlFixedFormatQuality.xlQualityStandard;
bool paramOpenAfterPublish = false;
bool paramIncludeDocProps = true;
bool paramIgnorePrintAreas = true;
object paramFromPage = Type.Missing;
object paramToPage = Type.Missing;
ExcelApp.Visible = true;
//foreach (Excel.AddIn aiTemp in ExcelApp.AddIns)
//{
// if (aiTemp.Name.Contains(""))
// {
// aiTemp.Installed = false;
// aiTemp.Installed = true;
// }
//}
while (ExcelApp.CalculationState == Microsoft.Office.Interop.Excel.XlCalculationState.xlCalculating)
{
Thread.Sleep(50);
}
ExcelApp.CalculateFull();
var wksht = wkbk.ActiveSheet;
Excel.Range rng = ((Excel.Worksheet)wksht).get_Range("B1", "B1");
rng.Calculate();
//EnsureCalcFinished();
ExcelApp.Visible = false;
wkbk.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, PathToDocument.Replace(".xlsx", ".pdf"), paramExportQuality, true, false, Type.Missing, Type.Missing, true,Type.Missing);
答案 0 :(得分:0)
更新: 我找到了一个用于注册UDF的方法的链接。
参考:http://msdn.microsoft.com/en-us/library/ms173189(v=vs.80).aspx
在Excel中,您需要转到选项 - >加载项=> Excel加载项(Go ..)=> automation =选择库并点击OK。一旦执行此操作,每次打开Excel时都会自动加载。
答案 1 :(得分:0)
以下是加载excel AddIns的算法,以便在打开excel工作簿时,计算将包含在加载项中定义的UDF:
1)初始化Excel应用程序
ExcelApp = new Excel.Application();
2)加载AddIns *
foreach (Excel.AddIn ai in ExcelApp.AddIns)
{
ai.Installed = false;
ai.Installed = true;
ExcelApp.Wait(50);
}
**密钥是在打开Excel工作簿之前加载加载项。
3)打开Excel工作簿,这将触发计算
4)将计算模式设置为手动,以便Interop中的任何更改都不会触发冗长的重新计算
ExcelApp.Calculation = Microsoft.Office.Interop.Excel.XlCalculation.xlCalculationManual;
5)执行任何操作,并执行计算
ExcelApp.CalculateFull();
6)妥善处理Excel对象
希望这可以帮助有类似问题的人。结束对简单问题的简单修复。只需记住在打开工作簿之前加载加载项。否则,打开依赖于AddIn的UDF的excel工作簿将失败。