While playing with Excel 2016 I came across strange behavior while trying to get the data from remote OData service. It seems like the OData query created by excel is not well constructed.
the query looks like this:
http://[host]/[odataroot]/[entitysetname]?$filter=id eq null and ' 1bd07c16-d344-4d87-8622-0211710c2ad1 ' eq null
To provide you with some more info I created a simplest edml as possible, the metadata xml looks like this:
<?xml version="1.0" encoding="utf-8"?>
<Edmx Version="4.0" xmlns="http://docs.oasis-open.org/odata/ns/edmx">
<DataServices>
<Schema Namespace="MyNamespace" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<ComplexType Name="Reference">
<Property Name="target" Type="Edm.String" />
<Property Name="name" Type="Edm.String" />
</ComplexType>
<EntityType Name="MyEntity">
<Key>
<PropertyRef Name="id" />
</Key>
<Property Name="id" Type="Edm.Guid" />
<Property Name="lookup" Type="MyNamespace.Reference" />
</EntityType>
<EntityContainer Name="DefaultContainer">
<EntitySet Name="MyEntity" EntityType="MyNamespace.MyEntity" />
</EntityContainer>
</Schema>
</DataServices>
</Edmx>
As you can see there is one single entity that contains one primary key. the type of the id property is
Guid. (this seems to be a problem, if the type of id is string, the query is constructed as requested)
If I connect from excel 2016 to the remote server (provider of the odata) the entity collection is displayed and by clicking on the sample EntitySet the single row of data is displayed:

Clicking on the MyEntity brings the content of that entity:

Until now everything was fine. If user clicks on the
Record link, excel sends request to OData server that seems broken. $filter clause looks like this:
$filter=id eq null and '1bd07c16-d344-4d87-8622-0211710c2ad1' eq null
I think that expected query looks like this:
$filter=id eq ' 1bd07c16-d344-4d87-8622-0211710c2ad1 '
One more note: If the type of the id property is string the filter query is constructed as expected.
Can you confirm this strange behavior?
The data sent from server to excel are in JSON format:
{ "@odata.context":"http://localhost:6738/odata/v4/rohel/$metadata#MyEntity", "value": [{"@odata.id":"http://localhost:6738/odata/v4/rohel/MyEntity(1bd07c16-d344-4d87-8622-0211710c2ad1)", "id":"1bd07c16-d344-4d87-8622-0211710c2ad1",
"lookup": { "target":"targetValue", "name":"nameValue" } }] }