Beispiel #1
0
        public static byte[] Format(object[] format, object[] args)
        {
            MemoryStream stream1;
            int          num1 = 0;

            using (MemoryStream stream2 = (stream1 = new MemoryStream()))
            {
                using (BinaryWriter writer1 = new BinaryWriter(stream1, new UnicodeEncoding()))
                {
                    XLSDescriptors.FormatHelper(writer1, format, args, ref num1);
                    stream1.Capacity = (int)stream1.Length;
                }
            }
            return(stream1.GetBuffer());
        }
Beispiel #2
0
        private static void FormatHelper(BinaryWriter bw, object[] format, object[] args, ref int currentArgIndex)
        {
            object[] objArray2 = format;
            for (int num2 = 0; num2 < objArray2.Length; num2++)
            {
                object obj1 = objArray2[num2];
                if (obj1 is string)
                {
                    bw.Write(Utilities.HexStr2ByteArr((string)obj1));
                }
                else if (obj1 is Type)
                {
                    object obj2  = args[currentArgIndex];
                    Type   type1 = (Type)obj1;
                    if (type1.IsEnum)
                    {
                        type1 = Enum.GetUnderlyingType(type1);
                    }
                    switch (type1.FullName)
                    {
                    case "System.Int16":
                    {
                        bw.Write((short)obj2);
                        break;
                    }

                    case "System.UInt16":
                    {
                        bw.Write((ushort)obj2);
                        break;
                    }

                    case "System.UInt32":
                    {
                        bw.Write(UInt32.Parse(obj2.ToString()));
                        break;
                    }

                    case "System.UInt64":
                    {
                        bw.Write((ulong)obj2);
                        break;
                    }

                    case "System.Byte":
                    {
                        bw.Write((byte)obj2);
                        break;
                    }

                    case "System.Char":
                    {
                        bw.Write((char)obj2);
                        break;
                    }

                    case "System.Single":
                    {
                        bw.Write((float)obj2);
                        break;
                    }

                    case "System.Double":
                    {
                        bw.Write((double)obj2);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.ExcelShortString":
                    {
                        ((ExcelShortString)obj2).Write(bw);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.ExcelLongString":
                    {
                        ((ExcelLongString)obj2).Write(bw);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.ExcelStringWithoutLength":
                    {
                        ((ExcelStringWithoutLength)obj2).Write(bw);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.ExcelLongStrings":
                    {
                        ((ExcelLongStrings)obj2).Write(bw);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.CellRecordHeader":
                    {
                        ((CellRecordHeader)obj2).Write(bw);
                        break;
                    }

                    case "MB.WinEIDrive.Excel.SheetIndexes":
                    {
                        ((SheetIndexes)obj2).Write(bw);
                        break;
                    }

                    default:
                    {
                        throw new Exception("Internal error: unsupported type in format.");
                    }
                    }
                    currentArgIndex += 1;
                }
                else
                {
                    if (!(obj1 is object[]))
                    {
                        throw new Exception("Internal error: wrong format in descriptor.");
                    }
                    object[] objArray1 = args[currentArgIndex] as object[];
                    int      num1      = 0;
                    while (num1 < objArray1.Length)
                    {
                        XLSDescriptors.FormatHelper(bw, (object[])obj1, objArray1, ref num1);
                    }
                    currentArgIndex += 1;
                }
            }
        }