Author |
Topic |
|
sorgy
1 Posts |
Posted - 02/22/2005 : 11:03:42
|
Я хотел бы импортировать данные из Exchange используя ORGANIZATION CHART WIZARD и указывая свой набор полей для импортирования и отображения внутри shapes диаграммы. По этому вопросу я нашел статьи в MSDN и в Office Online Assistance. Статья называется - "Create an organization chart from a data file using the command line or Run method" http://office.microsoft.com/en-us/assistance/HP010384221033.aspx.
Помимо этого в Microsoft Office Visio Code Librarian есть пример как написать программу для автоматизации загрузки данных из Exchange с помощью С#. Я использовал этот пример и параметры из выше указанной статьи.
Но, результат меня не устраивает, т.к. Visio не желает воспринимать my custome fields в параметре DISPLAY-FIELDS, даже если я использую корректный синтаксис. Если я указываю параметр LAUNCHGUI при запуске ORGANIZATION CHART WIZARD AddOn и вручную выбираю поля для отображения внутри прямоугольников орг. диаграммы, то все работает как надо. Если же я указываю в параметре DISPLAY-FIELDS поля с названиями Department Name или Company Name вместе с полем Name, то диаграмма рисуется только со значениями поля Name и игнорирует остальные.
Help me? Я не могу понять разницы в моих действиях между импортированием данных с использованием wizard-а при ручном определении параметров из Visio и передачи параметров для wizard-а из приложения на C#.
Более того, я пробовал запустить свое приложение на C# и обращаться к wizard-у Visio 2002, изменив только название полей в параметре DISPLAY-FIELDS и создание объекта Visio Application, и все сработало как надо. Все поля которые я хотел увидеть в организационной диаграмме отобразились. И даже для Visio 2003 приложение на C# импортирует все заданные мной поля в CUSTOM-PROPERTY-FIELDS совершенно нормально, но отказывается загружать эти же поля в DISPLAY-FIELDS. Есть идеи?
Вот код приложения:
const string ORGANIZATION_CHART_WIZARD = "OrgCWiz"; Microsoft.Office.Interop.Visio.Addon chartWizard; string command; string commandPart; bool returnValue; try { // Get a reference to the Organization Chart Wizard add-on. chartWizard = theApplication.Addons.get_ItemU(ORGANIZATION_CHART_WIZARD);
// Initialize the wizard and prepare it to accept a series of // arguments. command = @"/S-INIT"; chartWizard.Run(command);
// Tell the wizard that the following string contains arguments. command = @" /S-ARGSTR ";
// Specify that the organization chart information is from // Microsoft Exchange. commandPart = @"/MICROSOFT-EXCHANGE"; chartWizard.Run (command + commandPart);
// Specify which field represents the name. // /NAME-FIELD="Name" commandPart = @"/NAME-FIELD=" + @StringToFormulaForString("Name"); chartWizard.Run (command + commandPart);
// Specify which field represents the manager. // /MANAGER-FIELD="Manager" commandPart = @"/MANAGER-FIELD=" + @StringToFormulaForString("Manager"); chartWizard.Run (command + commandPart);
// Specify which fields to display on the organization chart. // DISPLAY-FIELDS="Name","Title" commandPart = @"/DISPLAY-FIELDS=" + @StringToFormulaForString("Department Name") + "," + @StringToFormulaForString("Name"); chartWizard.Run (command + commandPart);
// Specify which custom properties are to be created. // /CUSTOM-PROPERTY-FIELDS= commandPart = @"/CUSTOM-PROPERTY-FIELDS=" + @StringToFormulaForString("UniqueID") + "HIDDEN," + @StringToFormulaForString("Name") + "," + @StringToFormulaForString("Manager") + "HIDDEN," + @StringToFormulaForString("Title") + "," + @StringToFormulaForString("Department Name") + "," + @StringToFormulaForString("Company Name") + "," + @StringToFormulaForString("Telephone") + "," + @StringToFormulaForString("Address"); chartWizard.Run (command + commandPart);
// Specify which field represents the Unique ID. // /UNIQUEID-FIELD="UniqueID" commandPart = @"/UNIQUEID-FIELD=" + @StringToFormulaForString("UniqueID"); chartWizard.Run (command + commandPart);
// Specify which field represents the manager. // /FIRSTNAME-FIELD="givenName" commandPart = @"/FIRSTNAME-FIELD=" + @StringToFormulaForString("Name"); chartWizard.Run (command + commandPart);
// commandPart = @"/HYPERLINK-ACROSS-PAGES"; command = command + commandPart;
// commandPart = @" /SYNC-ACROSS-PAGES"; command = command + commandPart; chartWizard.Run (command);
// Show dialog wizard //commandPart = @"/LAUNCHGUI"; //command = command + commandPart; //chartWizard.Run (command);
// Specify the name or entry id of the manager to display at // the top of organization chart on the first page. commandPart = @"/PAGES="; command = command + commandPart; commandPart = @StringToFormulaForString( exchangeIdOfManager); command = command + commandPart;
// If the caller of the method does not want to include // all the subordinates on the organization chart, specify // number of levels to include. if (allSubordinates == false) { commandPart = @Convert.ToString(numAdditionalLevels, System.Globalization.CultureInfo.InvariantCulture); command = command + " " + commandPart; }
// If the caller of the method passed in a page name, then // that name will be displayed as the page name for this // organization chart. if (pageName.Length > 0) { commandPart = @StringToFormulaForString(pageName); command = command + " PAGENAME=" + commandPart; }
chartWizard.Run (command);
// Begin creating the organization chart. command = @"/S-RUN"; chartWizard.Run (command); } catch (Exception err) { returnValue = false; }
|
|
|
Topic |
|
|
|