如何創建一個自定義作業來導出列表中只有2列(標題,說明)的Excel文件?我想要這個問題的編碼部分?關於SharePoint 2010中的自定義計時器作業
從Excel讀取數據和寫入SharePoint列表,這可以通過自定義編碼工作提前
謝謝... 納雷什
如何創建一個自定義作業來導出列表中只有2列(標題,說明)的Excel文件?我想要這個問題的編碼部分?關於SharePoint 2010中的自定義計時器作業
從Excel讀取數據和寫入SharePoint列表,這可以通過自定義編碼工作提前
謝謝... 納雷什
你有沒有看的Excel閱讀器.NET
完成是的,我確實看到..但我想通過自定義的文件被寫入SharePoint列表中作業 – naresh
不能使用sharepoint API嗎? http://msdn.microsoft.com/en-us/library/ms467435.aspx –
打開Excel文件
看看在Excel Services for SharePoint 2010.有一個walkthrough解釋了打開Excel文件所需的步驟。
的SharePoint自定義計時器作業
要創建一個自定義SharePoint計時器作業,你必須創建一個從SPJobDefinition繼承的類。完整的教程可以在這篇博文中找到:Creating Custom Timer Job in SharePoint 2010。
使用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!
}
}
}
}
}
}
}
我建議把這個代碼插入文檔庫的事件接收器(如上面所看到的)。
從Excel讀取數據並寫入分享點列表 – naresh
您是否在SharePoint服務器上安裝了Excel?您需要使用數據訪問方法(例如Jet或ACE OLEDB提供程序或Excel ODBC驅動程序)或Excel自動化。 http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/b95d115d-9a66-4d6d-ba78-6061c19d4a58 –