Web service方法返回List或者ArrayList数据类型

  我们调用web service的时候经常需要返回一些对象集合(本文章环境.net framework2.0+)。

准备工作:

//定义一个实体
public class Entity
    {
        private string _Name;

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public Entity()
        { 
        }
        public Entity(string Name)
        {
            _Name = Name;
        }
    }

1.返回List<T>:

定义web service方法

[WebMethod(Description = "测试", EnableSession = true)] 
public List<Entity> HelloWorld()
{ 
     List<Entity> list = new List<Entity>();
     list.Add(new Entity("kian"));return list;
}

客户端调用web service方法:

MyWebReference.Service1 service = new MyWebReference.Service1();
List<MyWebReference.Entity> list = new List<MyWebReference.Entity>(service.HelloWorld());

以上调用都是正常的。问题在下面。

 

2.返回ArrayList:

[WebMethod(Description = "测试", EnableSession = true)]
public ArrayList HelloWorld()
{
     ArrayList al = new ArrayList();
     al.Add(new Entity("kian"));
     return al ;
}

客户端调用web service方法:

问题就在这里,为什么会这样呢?

原来是这样,ArrayList跟List不一样,它不是强类型,生成代理服务没办法去判断创建什么类型,那么这里怎么解决呢?

可以这么想,既然没办法判断创建类型,那么我们就明确指定创建的类型。

用XMLInclude属性明确告诉web service生成的类型:

[WebMethod(Description = "测试", EnableSession = true)]
[System.Xml.Serialization.XmlInclude(typeof(Entity))]//告诉webservice,ArrayList将包含Entity的元素类型
public ArrayList HelloWorld()
{
     ArrayList al = new ArrayList();
     al.Add(new Entity("kian"));
     return al ;
}

这样就可以在调用的时候像List一样访问Entity对象。

转载于:https://www.cnblogs.com/Bay-Max/p/3605499.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 EasyPoi 导出 Excel 合并列的方法如下: 1. 首先在实体类中定义需要合并列的属性,例如: ```java import cn.afterturn.easypoi.excel.annotation.Excel; public class User { @Excel(name = "姓名", mergeVertical = true) private String name; @Excel(name = "年龄") private Integer age; // 省略 get/set 方法 } ``` 在注解中使用 `mergeVertical = true` 表示需要合并垂直方向上相同的单元格。 2. 在导出 Excel 的 Controller 中设置合并列的配置,例如: ```java import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.MergeParams; import cn.afterturn.easypoi.excel.export.styler.ExcelExportStylerDefaultImpl; import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler; import cn.afterturn.easypoi.excel.export.styler.IExcelExportTitleStyler; import cn.afterturn.easypoi.excel.export.styler.theme.AbstractTheme; import cn.afterturn.easypoi.excel.export.styler.theme.DefaultExcelExportStyler; import cn.afterturn.easypoi.excel.export.styler.theme.DefaultTheme; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.List; @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/export") @ResponseBody public void exportUser() { List<User> userList = userService.getUserList(); ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); exportParams.setStyle(IExcelExportStyler.class); exportParams.setMergeVertical(true); // 设置合并列的配置 List<MergeParams> mergeList = new ArrayList<>(); mergeList.add(new MergeParams(0, 1, 0, 0)); exportParams.setMergeParams(mergeList); Workbook workbook = userService.exportUser(userList, exportParams); // 输出 Excel 文件 // ... } // ... } ``` 在 `exportParams` 中设置 `setMergeVertical(true)` 表示需要合并垂直方向上相同的单元格,同时设置 `setMergeParams(mergeList)` 来设置合并列的配置。其中 `mergeList` 是一个 `List<MergeParams>` 类型的集合,用于存储需要合并的列信息。 3. 在服务层中使用 EasyPoi 导出 Excel,例如: ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Service; import java.io.FileOutputStream; import java.util.List; @Service public class UserServiceImpl implements UserService { @Override public List<User> getUserList() { // 获取用户列表 // ... } @Override public Workbook exportUser(List<User> userList, ExportParams exportParams) { Workbook workbook = ExcelExportUtil.exportExcel(exportParams, User.class, userList); return workbook; } } ``` 在 `ExcelExportUtil.exportExcel()` 方法中,第一个参数是 `ExportParams` 类型的导出参数,第二个参数是实体类的 Class 对象,第三个参数是需要导出的数据列表。 以上就是使用 EasyPoi 导出 Excel 合并列的方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值