在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Excel Web Services(以后简称EWS)位于整个Excel Services的前端(可以参考我之前的文章)。它提供了开发Excel的接口。从名字可以看出,EWS也属于WebService的一种,所以我们可以像使用普通的WebService那样使用它。要想调用EWS,先要知道它的地址,这取决于MOSS的设置。假如MOSS的名称为ServerName,那么对应的EWS地址就是: http://<server name>/_vti_bin/ExcelService.asmx .在浏览器中输入EWS地址后您会看到下图: 1、取值 ; 将EWS添加到工程后,可以看见ExcelWebService命名空间下出现了ExcelService类。通过操作它就可以完成与服务器端的交互。 首先将其实例化 ExcelService es=new ExcelService(); 在调用ExcelService前必须为其指定凭证(Credential),否则应用程序会抛出异常。凭证可以是默认凭证或使用指定了用户名/密码的凭证,这里我们使用默认凭证。两者的区别将在后文讨论。 es.Credentials = System.Net.CredentialCache.DefaultCredentials; string ExcelService.OpenWorkbook(string workbookPath, string cultrueInfo,string cultrueInfo,string out status) 顺利执行OpenWorkbook后就可以从Excel取值了。我们需要从文档的sheet1的第一个单元格取值,也就是从A1单元格中取值。可以使用GetCellA1方法. 实际上GetCellA1方法中的A1代表Excel的命名规则。例如您在Excel中的某个单元格内输入”=A1”或者” =Sheet1!$A$1” ,表示该单元格引用了A1单元格的值,仅此而已。 复制代码 代码如下:Es.GetCell(workbookPath,”sheet1”,0,0,true,out status); 取值完毕后还需要关闭工作薄,以便释放资源,减轻服务器负担 复制代码 代码如下:string workbookPath = @"http://vistaserver/dc/ExcelServiceTest/test.xlsx"; string cultrueInfo = "zh-cn"; Status[] status; /// <summary> /// 从服务器上的excel文档中取值 /// </summary> void GetValueFromServer() {</p> <p> ExcelService es = new ExcelService(); es.Credentials = System.Net.CredentialCache.DefaultCredentials; string sessionID = es.OpenWorkbook(workbookPath, cultrueInfo, cultrueInfo, out status); A1Field.Text = es.GetCellA1(sessionID, "sheet1", "A1", true, out status).ToString(); A2Field.Text = es.GetCellA1(sessionID, "sheet1", "A2", true, out status).ToString(); A3Field.Text = es.GetCellA1(sessionID, "sheet1", "A3", true, out status).ToString(); number1.Text = es.GetCellA1(sessionID, "sheet1", "B1", true, out status).ToString(); number2.Text = es.GetCellA1(sessionID, "sheet1", "B2", true, out status).ToString(); result.Text = es.GetCellA1(sessionID, "sheet1", "B3", true, out status).ToString(); es.CloseWorkbook(sessionID); } 2.赋值: ExcelService类中对单元格赋值的方法为SetCellA1(还有SetCell,使用方法可以参考GetCell)。该方法的函数声明如下 Status status=SetCellA1(string sessionID,string sheetName,string rangeName,object cellValue) 看一下计算部分的完整代码: 复制代码 代码如下:ExcelService es = new ExcelService(); es.Credentials = System.Net.CredentialCache.DefaultCredentials; string sessionID = es.OpenWorkbook(workbookPath, cultrueInfo, cultrueInfo, out status); es.SetCellA1(sessionID, "sheet1", "B1", number1.Text); es.SetCellA1(sessionID, "sheet1", "B2", number2.Text); result.Text = es.GetCellA1(sessionID, "sheet1", "B3", true, out status); 3.保存 复制代码 代码如下:public enum WorkbookType { FullWorkbook, FullSnapshot, PublishedItemsSnapshot, } FullWorkbook功能最强大,可以获得服务器上完整的工作薄(所有的sheet) 复制代码 代码如下:byte[] content = es.GetWorkbook(sessionID, WorkbookType.PublishedItemsSnapshot, out status); es.CloseWorkbook(sessionID); FileStream fs = new FileStream("c:\\test.xlsx", FileMode.Create); fs.Write(content, 0, content.Length); fs.Flush(); fs.Close(); 现在,程序的整体功能已经完成了。希望能对大家有所帮助。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论