Связано с пользовательским заданием таймера в sharepoint 2010 - PullRequest
0 голосов
/ 05 сентября 2011

Как создать пользовательское задание для экспорта файла Excel в список, который имеет только 2 столбца (заголовок, описание) в sharepoint 2010? Мне нужна часть кода этого вопроса?

Чтение данных из Excel и запись в список sharepoint, это должно быть выполнено с помощью пользовательского кодирования задания

Спасибо заранее ... Naresh

Ответы [ 3 ]

1 голос
/ 05 сентября 2011

Используйте OpenXMLSDK - бесплатная загрузка, которую необходимо установить на сервер.

    [...]
    using DocumentFormat.OpenXml;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Spreadsheet;

    public class OffBookAssetLibraryEventReceiver : SPItemEventReceiver
    {
        public override void ItemUpdated(SPItemEventProperties properties)
       {
        // This if statement is to work around the sharepoint issue of this event firing twice.
        if (properties.AfterProperties["vti_sourcecontrolcheckedoutby"] == null && properties.BeforeProperties["vti_sourcecontrolcheckedoutby"] != null)
        {

    byte[] workSheetByteArray = properties.ListItem.File.OpenBinary();

    Stream stream = new MemoryStream(workSheetByteArray);

    Package spreadsheetPackage = Package.Open(stream, FileMode.Open, FileAccess.ReadWrite);

    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(spreadsheetPackage);

    SharedStringTablePart shareStringTablePart = spreadsheetDocument.WorkbookPart.SharedStringTablePart;

    Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.Sheets;

     try
        {
            foreach (Sheet sheet in sheets)
            {
                var worksheetPart = (WorksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id.Value);

                IEnumerable<Row> rows = worksheetPart.Worksheet.GetFirstChild<SheetData>().Elements<Row>();

                if (rows.Count() > 0)
                {
                    int rowNumber = 0;

                    foreach (Row row in rows)
                    {
                        IEnumerable<Cell> cells = row.Elements<Cell>();
                        Cell title = null;
                        Cell description = null;

                        title = cells.ToArray()[0];
                        description = cells.ToArray()[1];

                        // This is the code used to extract cells from excel that are NOT inline (Inline cells are decimal and dates - although dates are stored as int)
                        int index = int.Parse(title.CellValue.Text);
                        string titleString = spreadsheetDocument.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(index).InnerText;

                        index = int.Parse(description.CellValue.Text);
                        string descriptionString = spreadsheetDocument.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(index).InnerText;

                        //Insert into your sharepoint list here!


                    }
                }
            }
         }
     }
  }
}

Я рекомендую поместить этот код в приемник событий в библиотеке документов (как показано выше).

0 голосов
/ 05 сентября 2011

Открыть файл Excel
Взгляните на Службы Excel для SharePoint 2010. Существует пошаговое руководство , объясняющее необходимые шаги для открытияфайл Excel.

Пользовательское задание таймера SharePoint
Чтобы создать настраиваемое задание таймера SharePoint, необходимо создать класс, который наследуется от SPJobDefinition .Полное руководство можно найти в этой записи блога: Создание настраиваемого задания таймера в SharePoint 2010 .

0 голосов
/ 05 сентября 2011

Вы смотрели на Excel REader для .NET

http://exceldatareader.codeplex.com/

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