Hopefully this is what you're looking for.
For this example, I'm using the following Document Library. There are currently two files that will expire in 7 days.

See full flow below. I'll go into each of the actions.

Recurrence is set to run daily so the flow runs once a day. You can set actual time you want the flow to run.

Get files uses the following expression for the Filter Query so it only returns files where the Expiry Date is 7 days from today.
//Note that the internal name of my Expiry Date is ExpiryDate
ExpiryDate eq '@{addDays(utcNow(), 7, 'yyyy-MM-dd')}'

Condition uses the following expression in the filter which checks if any files are returned. We will only send the email if at least one file is expiring in 7 days. If at least one file is returned, we will go into the Yes branch.
length(outputs('Get_files_(properties_only)')?['body/value'])

Create HTML table uses the output from Get files and maps the fields we want to display in our HTML table.

Style HTML table is a Compose action (I just renamed it) that contains some CSS to style the HTML table so it looks nicer in the email.
<style>
table {
border-collapse: collapse;
}
table td,
table th {
border: 1px solid #ddd;
padding: 6px 20px;
text-align: left;
}
table th {
background-color: #1C6EA4;
color: white;
}
</style>

Send an email will send an email to whoever you put in the To field. It uses the output from Style HTML table and Create HTML table.

If we ran the flow now, we would get the following email.
