You should start with the fact that the font style, color, inserted images or shapes are not information suitable for processing for Calc - it works with numbers, text and formulas.
In other words, such a task cannot be solved by the built-in Calc tools.
However, this can be done with a macro:
Sub delBold()
Rem Call subroutine to process current selection:
EnumerateSingleSelection(ThisComponent.getCurrentSelection())
End Sub
The current selection can be a single cell, a range, a multiple selection (a set of subranges), or anything else (such as a chart or picture):
Sub EnumerateSingleSelection(oSelection As Variant)
Dim oCurrentSelection As Variant
Dim i As Long, j As Long
Dim oCell As Variant
Rem Is it single cell? Delete bold text and other from it:
If oSelection.supportsService("com.sun.star.sheet.SheetCell") Then
delBoldAndOtherFromText(oSelection.getText())
Exit Sub
EndIf
Rem Is it range? Recursive call this subroutine for each cell
If oSelection.supportsService("com.sun.star.sheet.SheetCellRange") Then
For j = 0 To oSelection.getRows().getCount()-1
For i = 0 To oSelection.getColumns().getCount()-1
EnumerateSingleSelection(oSelection.getCellByPosition(i, j))
Next i
Next j
Exit Sub
EndIf
Rem Is it multiple selection? Call this subroutine for each of the subranges:
If oSelection.supportsService("com.sun.star.sheet.SheetCellRanges") Then
For i = 0 To oSelection.getCount()-1
EnumerateSingleSelection(oSelection.getByIndex(i))
Next i
Endif
End Sub
Processing the text of a single cell is not very complicated - just two nested loops (for details on text processing, see Pitonyak in the chapter 7.16.3. What does it mean to enumerate text content?)
Sub delBoldAndOtherFromText(oText As Variant)
Dim oParEnum As Variant, oPar As Variant, oSectionEnum As Variant, oSection As Variant, oCursor As Variant
oParEnum = oText.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
oSectionEnum = oPar.createEnumeration()
Do While oSectionEnum.hasMoreElements()
oSection = oSectionEnum.nextElement()
If oSection.CharWeight <> com.sun.star.awt.FontWeight.NORMAL Then
Rem or oSection.CharWeight = com.sun.star.awt.FontWeight.BOLD?
oCursor = oText.createTextCursorByRange(oSection)
oCursor.gotoEnd(True)
oCursor.setString("")
Exit Sub
EndIf
Loop
EndIf
Loop
End Sub