C# 获取通过读取Excel文件C创建的列表#

C# 获取通过读取Excel文件C创建的列表#,c#,asp.net,excel,C#,Asp.net,Excel,在我的WebAPI项目中,我有一个读取excel文件的方法,并将一些值设置为列表,这部分工作正常,但当我想通过HTTP get方法获取该列表时,只会返回一个类似于[{},{},{},{}]的空列表,我必须说的是,这些{}正是我在.xlsx文件中拥有的用户数。我不知道问题是因为返回了那个列表,还是因为我编写了一个错误的Get方法 HTTP获取方法 [HttpGet] public List<User> GetUsersList() { List<U

在我的WebAPI项目中,我有一个读取excel文件的方法,并将一些值设置为列表,这部分工作正常,但当我想通过HTTP get方法获取该列表时,只会返回一个类似于[{},{},{},{}]的空列表,我必须说的是,这些{}正是我在.xlsx文件中拥有的用户数。我不知道问题是因为返回了那个列表,还是因为我编写了一个错误的Get方法

HTTP获取方法

[HttpGet]
    public List<User> GetUsersList()
    {
        List<User> userList = new List<User>();

        Excel.Application xlApp = new Excel.Application();
        Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\Username\UploadFile\Base.xlsx");
        Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
        Excel.Range xlRange = xlWorksheet.UsedRange;
        int rowCount = xlRange.Rows.Count;
        int colCount = xlRange.Columns.Count;
        string code = "";
        string rolename = "";
        int count = 2;
        for (int i = 3; i <= rowCount; i++)
        {
            count += 1;
            for (int j = 1; j <= colCount; j++)
            {
                if (count == i & j == 1)
                {
                    code = xlRange.Cells[i, j].Value2.ToString();
                }
                else
                {
                    if (count == i & j == 2)
                    {
                        rolename = xlRange.Cells[i, j].Value2.ToString();
                        User user = new User(code, rolename);
                        userList.Add(user);
                    }
                }

            }
        }


        return userList;
    }

作为一个试图在服务器上使用Microsoft Excel互操作性库的人,我建议您不要使用它

使用它时最大的问题之一是,它需要在服务器上安装正确版本的MS Excel

有很多其他图书馆,免费和付费,你可以用来阅读Excel文件。如果需要建议,请使用ClosedXML


它有足够的文档让你开始。当你发布一个问题时,也请发布你遇到的错误。否则社区将无法帮助您。

有例外吗?您的服务器计算机中有ms excel吗?您需要向我们提供更多关于“它不工作”的详细信息。您的用户类没有公共属性,因此也没有序列化的内容。您真正的问题是
\u code
\u rolename
是私有的,因此没有序列化。改为将它们标记为公共。谢谢@dbc!成功了!
public class User
    {
        private string _code;
        private string _rolename;

        public User(string code, string rolename)
        {
            _code = code;
            _rolename = rolename;
        }
    }