Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 2010 与sharepoint 2010中的自定义计时器作业相关_Sharepoint 2010 - Fatal编程技术网

Sharepoint 2010 与sharepoint 2010中的自定义计时器作业相关

Sharepoint 2010 与sharepoint 2010中的自定义计时器作业相关,sharepoint-2010,Sharepoint 2010,如何创建自定义作业以导出sharepoint 2010中只有两列(标题、说明)的列表中的Excel文件?我想了解此问题的编码部分 从Excel读取数据并写入sharepoint列表,这必须通过自定义作业编码完成 先谢谢你。。。 Naresh您看过.NET的Excel REader了吗 打开Excel文件 请看SharePoint 2010的应用程序。下面是一个示例,解释打开excel文件所需的步骤 SharePoint自定义计时器作业 要创建自定义SharePoint计时器作业,必须创建继承自的

如何创建自定义作业以导出sharepoint 2010中只有两列(标题、说明)的列表中的Excel文件?我想了解此问题的编码部分


从Excel读取数据并写入sharepoint列表,这必须通过自定义作业编码完成

先谢谢你。。。
Naresh

您看过.NET的Excel REader了吗


打开Excel文件
请看SharePoint 2010的应用程序。下面是一个示例,解释打开excel文件所需的步骤

SharePoint自定义计时器作业

要创建自定义SharePoint计时器作业,必须创建继承自的类。在这篇博文中可以找到完整的教程:。

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


                    }
                }
            }
         }
     }
  }
}
[…]
使用DocumentFormat.OpenXml;
使用DocumentFormat.OpenXml.Packaging;
使用DocumentFormat.OpenXml.Spreadsheet;
BookAssetLibraryEventReceiver的公共类:SpiteMentReceiver
{
公共覆盖无效项已更新(SPItemEventProperties属性)
{
//此if语句用于解决此事件引发两次的sharepoint问题。
if(properties.AfterProperties[“vti\U sourcecontrolcheckedoutby”]==null和&properties.BeforeProperties[“vti\U sourcecontrolcheckedoutby”]!=null)
{
byte[]workSheetByteArray=properties.ListItem.File.OpenBinary();
Stream=新的MemoryStream(工作表字节数组);
Package spreadsheetPackage=Package.Open(stream,FileMode.Open,FileAccess.ReadWrite);
电子表格文档电子表格文档=电子表格文档.打开(电子表格包);
SharedStringTablePart shareStringTablePart=spreadsheetDocument.WorkbookPart.SharedStringTablePart;
Sheets Sheets=电子表格Document.WorkbookPart.Workbook.Sheets;
尝试
{
foreach(以页为单位)
{
var worksheetPart=(worksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id.Value);
IEnumerable rows=worksheetPart.Worksheet.GetFirstChild().Elements();
如果(rows.Count()>0)
{
int rowNumber=0;
foreach(行中的行)
{
IEnumerable cells=row.Elements();
单元格标题=空;
单元格描述=null;
title=cells.ToArray()[0];
description=cells.ToArray()[1];
//这是用于从excel中提取非内联单元格的代码(内联单元格为十进制和日期-尽管日期存储为int)
int index=int.Parse(title.CellValue.Text);
string titleString=spreadsheetDocument.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements().ElementAt(索引).InnerText;
index=int.Parse(description.CellValue.Text);
string descriptionString=spreadsheetDocument.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements().ElementAt(索引).InnerText;
//在此处插入您的sharepoint列表!
}
}
}
}
}
}
}

我建议将此代码放入文档库上的事件接收器中(如上所示)

从Excel读取数据并写入sharepoint列表sharepoint服务器上是否安装了Excel?您需要使用数据访问方法(例如Jet或ACE OLEDB提供程序或Excel ODBC驱动程序)或Excel automation。是的,我确实看到了..但是我想通过自定义作业将文件写入sharepoint列表您不能使用sharepoint API吗?