Как отправить идентификатор элемента списка Sharepoint в файл Excel? - PullRequest
1 голос
/ 04 января 2011

У меня есть список Sharepoint (2007) с некоторыми элементами в нем. Когда я нажимаю на один из этих элементов, он открывает файл Excel (2003) с большим количеством макросов. Мне нужно получить идентификатор этого элемента (Sharepoint) и отправить его в ячейку моего файла Excel ... Затем будет выполнен макрос и получит все данные, необходимые для этого идентификатора.

Как я могу отправить идентификатор элемента в файл Excel?

Есть идеи? Спасибо

Ответы [ 2 ]

0 голосов
/ 05 февраля 2014

Если нет причины, по которой вы не можете связать данные списка SharePoint непосредственно в таблицу и перенести свои макросы в эту таблицу, я думаю, что приведенные ниже шаги помогут вам получить то, что вам нужно. Это кажется слишком простым ... должна быть причина, по которой это не работает для того, что вы пытаетесь сделать. В любом случае, вот шаги, чтобы сделать эту работу:

1) Убедитесь, что в списке SharePoint действительно есть индексированный столбец, который обеспечивает уникальные значения. Вы можете проверить это, посмотрев на настройки библиотеки документов. Убедитесь, что под списком столбцов есть столбец индекса. Если его нет, вы можете создать его, выбрав действие «создать новый столбец», выберите тип данных и убедитесь, что вы выбрали переключатель «принудительное применение уникальных значений».

2) Экспортируйте библиотеку в Excel, используя параметры «Экспорт в Excel» в главном меню библиотеки. Это создаст ссылку на данные по умолчанию и сохранит файл запроса Excel в расположении по умолчанию на вашем компьютере, которое вы можете найти, перейдя на вкладку данных и выбрав «соединения».

3) Скопируйте макрос в электронную таблицу, связанную с вашим источником данных, и настройте ссылки в вашем макросе, чтобы извлечь необходимую информацию из списка SharePoint.

Надеюсь, это поможет.

0 голосов
/ 04 января 2011

Я однажды записал DataTable в новый файл Excel.Поэтому вы можете изменить параметр функции с DataTable на SPList / SPLisItem и записать в существующий файл (моя текущая реализация записывает в новый файл Excel каждый раз, когда я выполняю эту функцию).Также убедитесь, что вы добавили ссылки на объекты Excel (COM), например, для библиотеки объектов Microsoft Excel 12.0 и т. Д. Если вам нужна дополнительная помощь, дайте мне знать.

  public void excelgenerate(DataSet ds)
  {

        Microsoft.Office.Interop.Excel.Application oAppln;
        //declaring work book
        Microsoft.Office.Interop.Excel.Workbook oWorkBook;
        //declaring worksheet
        Microsoft.Office.Interop.Excel.Worksheet oWorkSheet;
        oAppln = new Microsoft.Office.Interop.Excel.Application();
        oWorkBook = (Microsoft.Office.Interop.Excel.Workbook)(oAppln.Workbooks.Add(true));
        Microsoft.Office.Interop.Excel.Range wRange;
        foreach (DataTable table in ds.Tables)
        {
            oWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)(oWorkBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing));
            oWorkSheet.Name = table.TableName;
            oWorkSheet.Activate();
            DataRow dr = table.Rows[0];                
            string path = dr["Path"].ToString();
            if (path.Length > 0)
            {
                string[] mylist = path.Split('\\');
                var features = Array.FindLastIndex(mylist, str => str.Equals("Features"));
                string stringmine = "Type ---> " + mylist[4]
                   + "/" + mylist[5]
                   + "     Project Name ---> " + mylist[6]
                   + "     Feature Name ---> " + mylist[features + 1];
                oWorkSheet.Cells[1, 1] = stringmine;
                Microsoft.Office.Interop.Excel.Range colrange = oWorkSheet.get_Range(oWorkSheet.Cells[1, 1], oWorkSheet.Cells[1, 8]);
                colrange.Merge(true);

            }


            int ColumnIndex = 0;

            foreach (DataColumn col in table.Columns)
            {
                ColumnIndex++;
                oWorkSheet.Cells[2, ColumnIndex] = col.ColumnName;
                wRange = (Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[2, ColumnIndex];
                wRange.Font.Bold = true;
            }
            int rowIndex = 1;
            foreach (DataRow row in table.Rows)
            {
                rowIndex++;
                ColumnIndex = 0;
                foreach (DataColumn col in table.Columns)
                {
                    ColumnIndex++;
                    oWorkSheet.Cells[rowIndex + 1, ColumnIndex] = row[col.ColumnName].ToString();
                }
            }
            oWorkSheet.Columns.AutoFit();
            oWorkSheet.Rows.AutoFit();

        }         

        string fileName = System.Guid.NewGuid().ToString().Replace("-", "") + ".xls";
        Console.WriteLine("Number of sheets written : " + oWorkBook.Worksheets.Count);
        oWorkBook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);
        oWorkBook.Close(null, null, null);
        oAppln.Quit();

    }

Для выполнения макроса с использованием C # ASP.NET и SharePoint я бы порекомендовал вам использовать эту статью

Надеюсь, что она ответит на ваш вопрос!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...