这是一个使用 RDLC Expression 的解决方案,您只能使用 16 个字符的字符串:
=Mid(Left(Fields!YourField.Value, 10), 1, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 2, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 3, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 4, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 5, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 6, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 7, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 8, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 9, 1) +
Space(1) +
Mid(Left(Fields!YourField.Value, 10), 10, 1) +
System.Environment.NewLine +
Mid(Right(Fields!YourField.Value, 6), 1, 1) +
Space(1) +
Mid(Right(Fields!YourField.Value, 6), 2, 1) +
Space(1) +
Mid(Right(Fields!YourField.Value, 6), 3, 1) +
Space(1) +
Mid(Right(Fields!YourField.Value, 6), 4, 1) +
Space(1) +
Mid(Right(Fields!YourField.Value, 6), 5, 1) +
Space(1) +
Mid(Right(Fields!YourField.Value, 6), 6, 1)
这是使用VB.NET 的更清洁的解决方案;您可以在 C# 中翻译它并在您的 ReportDataSource 上使用它,然后将数据传递给 ReportViewer。
Dim strYourString As String = "IN20102029382818"
Dim strYourStringFormatted As String = String.Join(Space(1), Array.ConvertAll(Strings.Left(strYourString, 10).ToCharArray, Function(strInput) strInput.ToString)) _
& System.Environment.NewLine _
& String.Join(Space(1), Array.ConvertAll(Strings.Right(strYourString, 6).ToCharArray, Function(strInput) strInput.ToString))
MsgBox(strYourStringFormatted)
您还可以对任何其他字符串使用第二种解决方案的变体;即:
Dim strYourString As String = "Test1 Test2 Test3"
Dim strYourStringFormatted As String = Strings.Replace( _
String.Join(Space(1), Array.ConvertAll(strYourString.ToCharArray, Function(strInput) strInput.ToString)), _
Space(3), System.Environment.NewLine)
MsgBox(strYourStringFormatted)