最近有个项目,要求用Silverlight在服务器端修改和读取Excel文件,于是用到了SharePoint中的2个Web Service来实现这个功能,它们分别是http://url/_vti_bin/lists.asmx和http://url/_vti_bin/ExcelService.asmx。
基本原理很简单,就是先用http://url/_vti_bin/lists.asmx将要修改的Excel文件迁出,然后再用http://url/_vti_bin/ExcelService.asmx往Excel中写内容。
原理清楚了,剩下的步骤就很简单了。添加2个Service的引用,然后调用,迁出文件修改,再保存,迁入。
string targetWorkbookPath = "http://url/Documents/ben.xlsx";
//迁出要修改的文件
finwebuat.Lists listsServcie = new finwebuat.Lists();
listsServcie.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
listsServcie.CheckOutFile(targetWorkbookPath, "false", DateTime.Now.ToString());
ExcelService.ExcelService excelService = new ExcelService.ExcelService();
excelService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
Status[] outStatus;
string sheetName = "Sheet1";//要修改哪一个工作薄
//生成一个SessionID。
string sessionId = excelService.OpenWorkbookForEditing(targetWorkbookPath, "en-US", "en-US", out outStatus);
////给Excel文件赋值。A10表示向A10表格中写内容。
excelService.SetCellA1(sessionId, sheetName, "A10", "你要写入的内容");
//保存修改
excelService.SaveWorkbook(sessionId);
//Check In 文件
listsServcie.CheckInFile(targetWorkbookPath, "", "1");
excelService.CloseWorkbook(sessionId);
代码中加入了比较详细的注释,所以在此不再哆嗦。读取更简单,MSDN中有直接解释。