簡體   English   中英

與SharePoint 2010中的自定義計時器作業相關

[英]Related on Custom Timer Job in sharepoint 2010

如何在SharePoint 2010中只有2列(標題,說明)的列表中創建自定義作業以導出Excel文件?我想要此問題的編碼部分嗎?

從Excel讀取數據並寫入共享點列表,這必須通過自定義作業編碼來完成

在此先感謝... Naresh

使用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!


                    }
                }
            }
         }
     }
  }
}

我建議將此代碼放入文檔庫的事件接收器中(如上所示)。

您是否看過.NET的Excel REader

http://exceldatareader.codeplex.com/

打開Excel文件
看一下SharePoint Services 2010的Excel Services 。有一個演練介紹了打開Excel文件所需的步驟。

SharePoint自定義計時器作業
若要創建自定義SharePoint計時器作業,您必須創建一個繼承自SPJobDefinition的類。 可以在此博客文章中找到完整的教程: 在SharePoint 2010中創建自定義計時器作業

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM