I can suggest a PyQGIS solution. It utilizes the [`openpyxl`](https://pypi.org/project/openpyxl/) Python package.

Let's assume there is an Excel file called *'testbook'* with the following data provided on the *'Sheet1'*:

[![input][1]][1]

Proceed with `Plugins > Python Console > Show Editor` ([see documentation](https://docs.qgis.org/latest/en/docs/pyqgis_developer_cookbook/intro.html#scripting-in-the-python-console)) and paste the script below:

<!-- language: pyqgis -->

    # imports
    from os.path import realpath, isfile
    from openpyxl import load_workbook
    from qgis.core import QgsVectorLayer, QgsField, QgsFeature, QgsPointXY
    from qgis.PyQt.QtCore import QVariant
    from qgis.utils import iface
    
    # providing a path to the Excel file
    path_to_excel = realpath("D:/qgis_test/testbook.xlsx")
    # loading Excel file with a coresponding sheet
    if isfile(path_to_excel):
        book = load_workbook(path_to_excel)
        sheet = book.get_sheet_by_name("Sheet1")
    
    # getting field names and data from the Excel file 
    data = [list(value) for value in sheet.values]
    attrs, records = data[0], data[1:]
    
    # creating a vector layer
    layer = QgsVectorLayer("LineString?crs=epsg:4326", "flows", "memory")
    # accessing the vector layer provider
    provider = layer.dataProvider()
    
    layer.startEditing()
    
    # adding attributes to the vector layer
    for attr in attrs:
        if attr == 'id':
            provider.addAttributes([QgsField(attr, QVariant.Int)])
        elif any(i in attr for i in 'XY'):
            provider.addAttributes([QgsField(attr, QVariant.Double)])
        else:
            provider.addAttributes([QgsField(attr, QVariant.String)])
    
    layer.updateFields()
    
    # adding data to the vector layer attributes
    for record in records:
        feat = QgsFeature() # creating a feature
        feat.setAttributes(record) # feeding feature with attribute values
        pt_from = QgsPointXY(record[4], record[3]) # starting point geometry
        pt_to = QgsPointXY(record[6], record[5]) # ending point geometry
        feat.setGeometry(QgsGeometry.fromPolylineXY([pt_from, pt_to])) # creating line geometry
        if feat.isValid():
    		# adding feature to the vector layer
            provider.addFeature(feat)
        layer.updateExtents()
    
    layer.commitChanges()
    
    if layer.isValid():
    	# adding layer to the Project
        QgsProject.instance().addMapLayer(layer)
        iface.zoomToActiveLayer()

In the code above, please do not forget to change the `"D:/qgis_test/testbook.xlsx"` and `"Sheet1"` variables before running it.

Press `Run script` [![run script][2]][2] and get the following output:

[![result][3]][3]

----------

**References:**

 - https://gis.stackexchange.com/questions/222353/reading-excel-data-using-pyqgis
 - https://gis.stackexchange.com/questions/445087/adding-linestring-from-points-using-pyqgis
 - [PyQGIS 101: Creating & editing a new vector layer](https://anitagraser.com/pyqgis-101-introduction-to-qgis-python-programming-for-non-programmers/pyqgis101-creating-editing-a-new-vector-layer/)
 - https://gis.stackexchange.com/questions/468996/joining-vector-layer-with-csv-file-that-contain-duplicates-in-qgis
 - https://gis.stackexchange.com/questions/30261/creating-new-empty-vector-layer-with-pyqgis
 - https://gis.stackexchange.com/questions/445087/adding-linestring-from-points-using-pyqgis

  [1]: https://i.sstatic.net/8MfqX2wT.png
  [2]: https://i.sstatic.net/vHkKx.png
  [3]: https://i.sstatic.net/izqrp9j8.png