如何从存储在SharePoint文档库中的Excel工作簿中获取值?

我有一些当前存储在Excel工作簿中的数据。 Excel中的数据是有意义的(因为它很容易pipe理,易于扩展,计算等),但是一些数据是自动化过程所需要的,所以从这个angular度来看,它将是如果它在数据库中更方便。

给信息更多的可见性,工作stream程等。我正在考虑将其移到SharePoint。 实际上把它转换成SharePoint的forms将会很繁琐和耗时,然后灵活性/便利性就会丧失; 相反,我正在考虑将当前Excel文件存储在SharePoint库中。

我的问题是:自动化过程如何从现在生活在SharePoint库中的Excel工作簿中提取所需的值? 这是Excel Services可用于的吗? 或者还有其他更好的方法吗? 即使可以做到,这是明智的做法吗?

经历了类似的事情之后,我可以告诉你,从文档库中的Excel文件中获取值并不是那么糟糕。 我最终编写了一个自定义的工作stream程操作(在SharePoint Designer工作stream程中使用),该操作从Excel文件中读取值进行处理。 我最终select了NPOI来处理所有的Excel操作。

使用NPOI,你可以做这样的事情:

// get the document in the document library SPList myList = web.Lists[listGuid]; SPListItem myItem = myList.GetItemById(ListItem); SPFile file = myItem.File; using (Stream stream = file.OpenBinaryStream()) { HSSFWorkbook workbook = new HSSFWorkbook(stream); HSSFSheet sheet = workbook.GetSheet("Sheet1"); CellReference c = new CellReference("A1"); HSSFRow row = sheet.GetRow(c.Row); HSSFCell cell = row.GetCell(c.Col); string cellValue = cell.StringCellValue; // etc... } 

你可以很容易地把它放在一个控制台应用程序中。

是的,我正试图在工作簿中的几张纸上提取一系列单元格。 我能够在控制台应用程序中使用下面的一些代码,并在命令窗口中查看数据。 现在我需要将数据转储到一个SQL表,并正在寻找一些例子来说明如何实现这一点,并确保我正在走下正确的编码path。

这里是我正在使用的代码的快照。

 protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { using (SPSite site = new SPSite(SPContext.Current.Site.Url)) { using (SPWeb web = site.RootWeb) { SPList docList = web.Lists[__ListId]; SPListItem docItem = docList.GetItemById(__ListItem); SPFile docFile = docItem.File; using (Stream stream = docFile.OpenBinaryStream()) { HSSFWorkbook wb = new HSSFWorkbook(stream); //loop through each sheet in file, ignoring the first sheet for (int i = 1; i < 0; i++) { NPOI.SS.UserModel.Name name = wb.GetNameAt(i); String sheet = wb.GetSheetName(i); NPOI.SS.UserModel.Name nameRange = wb.CreateName(); nameRange.NameName = ("DispatchCells"); //start at a specific area on the sheet nameRange.RefersToFormula = (sheet + "!$A$11:$AZ$100"); } wb.Write(stream); } } } return ActivityExecutionStatus.Closed; }