ุฃุญูุงููุง ุฃุดุนุฑ ุจุงูู
ูู ูุงูุชุณูุญ ุจุงุณุชุฎุฏุงู
ู
ุตุญุญ ุฃุฎุทุงุก ุ ุฃุจุฏุฃ ูู ุงูุจุญุซ ูู ุจุฑุงู
ุฌ ู
ุฎุชููุฉ. ูุฐู ุงูู
ุฑุฉ ุ ููุน ุงุฎุชูุงุฑู ุนูู Excel ููุงูุช ููุงู ุฑุบุจุฉ ูู ู
ุนุฑูุฉ ููููุฉ ุชุนุงู
ูู ู
ุน ุงุฑุชูุงุน ุงูุตููู ุ ูู
ุง ุงูุฐู ูุฎุฒูู ุ ูููู ูุฃุฎุฐ ูู ุงูุงุนุชุจุงุฑ ุงุฑุชูุงุน ู
ุฌู
ูุนุฉ ู
ู ุงูุฎูุงูุง ุ ุฅูุฎ. ูู
ุช ุจุชุญููู Excel 2010 (excel.exe ุ 32bit ุ ุงูุฅุตุฏุงุฑ 14.0.4756.1000 ุ SHA1 a805cf60a5542f21001b0ea5d142d1cd0ee00b28).
ููุจุฏุฃ ุจุงููุธุฑูุฉ
ุฅุฐุง ุงูุชููุช ุฅูู ูุซุงุฆู VBA ูู Microsoft Office ุ ูู
ููู ุฃู ุชุฑู ุฃูู ูู
ูู ุงูุญุตูู ุนูู ุงุฑุชูุงุน ุงูุตู ุจุทุฑููุฉ ุฃู ุจุฃุฎุฑู ู
ู ุฎูุงู ุฎุงุตูุชูู:
- RowHeight - ุฅุฑุฌุงุน ุฃู ุชุนููู ุงุฑุชูุงุน ุงูุตู ุงูุฃูู ูู ุงููุทุงู ุงูู
ุญุฏุฏ ุ ู
ูุงุณุฉ ุจุงูููุงุท. ูุฑุงุกุฉ / ูุชุงุจุฉ ู
ุฒุฏูุฌุฉ ุ
- Height - ุฅุฑุฌุงุน ููู
ุฉ ู
ุฒุฏูุฌุฉ ุชู
ุซู ุงุฑุชูุงุน ุงููุทุงู ุจุงูููุงุท. ูููุฑุงุกุฉ ููุท.
ูุฅุฐุง ูุธุฑุชู
ููุง ุฃูุถูุง: ู
ูุงุตูุงุช ุฅูุณู ูุญุฏูุฏูุง . ูู
ููู ุฃู ุชุฌุฏ ุฃู ุงูุญุฏ ุงูุฃูุตู ูุงุฑุชูุงุน ุงูุตู ูู 409 ููุทุฉ. ูุฐุง ุ ููุฃุณู ุ ุฃุจุนุฏ ู
ุง ูููู ุนู ุงูุญุงูุฉ ุงููุญูุฏุฉ ุนูุฏู
ุง ุชููู ู
ุณุชูุฏุงุช Microsoft ุงูุฑุณู
ูุฉ ู
ุถููุฉ ุจุนุถ ุงูุดูุก. ูู ุงููุงูุน ุ ูู ุฑู
ุฒ Excel ุ ูุชู
ุชุนููู ุงูุญุฏ ุงูุฃูุตู ูุงุฑุชูุงุน ุงูุตู ุฅูู 2047 ุจูุณู ุ ูุงูุชู ุณุชููู 1535.25 ููุทุฉ. ูุงูุญุฏ ุงูุฃูุตู ูุญุฌู
ุงูุฎุท ูู 409.55 ููุทุฉ. ู
ู ุงูู
ุณุชุญูู ุงูุญุตูู ุนูู ุตู ู
ู ูุฐุง ุงูุงุฑุชูุงุน ุงูุถุฎู
ู
ู ุฎูุงู ุชุนูููู ุจุจุณุงุทุฉ ูู VBA / Interop ุ ูููู ูู
ููู ุฃู ุชุฃุฎุฐ ุตููุง ูุชุนููู ุฎุท Cambria Math ูู ุฎููุชูุง ุงูุฃููู ูุชุนููู ุญุฌู
ุงูุฎุท ุนูู 409.55 ููุทุฉ. ุซู
ุณูููู
Excel ุจุงุณุชุฎุฏุงู
ุฎูุงุฑุฒู
ูุฉ ุงูู
ุงูุฑุฉ ุงูุฎุงุตุฉ ุจู ุจุญุณุงุจ ุงุฑุชูุงุน ุงูุตู ุจูุงุกู ุนูู ุชูุณูู ุงูุฎููุฉ ุ ูุงูุญุตูู ุนูู ุฑูู
ูุฒูุฏ ุนู 2047 ุจูุณู (ุตุฏู ุงูููู
ุฉ) ุ ูุชุนููู ุงูุตู ุนูู ุฃูุตู ุงุฑุชูุงุน ู
ู
ูู. ุฅุฐุง ุทูุจุช ุงุฑุชูุงุน ูุฐู ุงูุณูุณูุฉ ู
ู ุฎูุงู ูุงุฌูุฉ ุงูู
ุณุชุฎุฏู
ุ ูุณูููู
Excel ุจุฃู ุงูุงุฑุชูุงุน ูู 409.5 ููุทุฉ ุ ูููู ุฅุฐุง ุทูุจุช ุงุฑุชูุงุน ุงูุณูุณูุฉ ู
ู ุฎูุงู VBA ุ ูุณุชุญุตู ุนูู 1535.25 ููุทุฉ ุตุงุฏูุฉ ุ ุฃู ู
ุง ูุนุงุฏู 2047 ุจูุณู. ุตุญูุญ ุ ุจุนุฏ ุญูุธ ุงูู
ุณุชูุฏ ุ ุณูุธู ุงูุงุฑุชูุงุน ููุฎูุถ โโุฅูู 409.5 ููุทุฉ. ูู
ูู ู
ูุงุญุธุฉ ูุฐุง ุงูุชูุงุนุจ ููุง ูู ูุฐุง ุงูููุฏูู: http://recordit.co/ivnFEsELLI
ุฐูุฑุช ุงูุจูุณู ูู ุงูููุฑุฉ ุงูุณุงุจูุฉ ูุณุจุจ ู
ุง. ูููู
Excel ุจุงููุนู ุจุชุฎุฒูู ูุญุณุงุจ ุญุฌู
ุงูุฎูุงูุง ูู ุงูุฃุนุฏุงุฏ ุงูุตุญูุญุฉ (ุจุดูู ุนุงู
ูููู
ุจูู ุดูุก ูุฏุฑ ุงูุฅู
ูุงู ูู ุงูุฃุนุฏุงุฏ ุงูุตุญูุญุฉ). ุบุงูุจูุง ู
ุง ุชููู ูุฐู ุงูุจูุณู ู
ุถุฑูุจุฉ ูู ุนุงู
ู ู
ุง. ูู
ู ุงูู
ุซูุฑ ููุงูุชู
ุงู
ุ ุฃู Excel ูุฎุฒู ู
ููุงุณ ุงูู
ุธูุฑ ูู ุดูู ูุณุฑ ุนุงุฏู ุ ุนูู ุณุจูู ุงูู
ุซุงู ุ ุณูุชู
ุชุฎุฒูู ู
ููุงุณ 75 ูช ูุฑูู
ูู 3 ู 4. ูุนูุฏู
ุง ูููู ู
ู ุงูุถุฑูุฑู ุนุฑุถ ุงูุตู ุ ุณูู ูุฃุฎุฐ Excel ุงุฑุชูุงุน ุงูุตู ูุฑูู
ุนุฏุฏ ุตุญูุญ ููุจูุณู ุ ููุถุฑุจ ูู 3 ูููุณู
ุจุญููู ุนุงู
4. ูููู ุณูุฌุฑู ูุฐู ุงูุนู
ููุฉ ุจุงููุนู ูู ุงูููุงูุฉ ุ ูู
ู ูุฐุง ุงูู
ูุทูู ุ ูุชู
ุฅูุดุงุก ุงูุชุฃุซูุฑ ุงูุฐู ูุนุชุจุฑ ูู ุดูุก ุจุฃุนุฏุงุฏ ูุณุฑูุฉ. ููุชุญูู ู
ู ุฐูู ุ ุงูุชุจ ุงูููุฏ ุงูุชุงูู ูู VBA:
w.Rows(1).RowHeight = 75.375 Debug.Print w.Rows(1).Height
ุณูู VBA ูุนุทูู 75 ู ุณูููู 75.375 ุจูุณู 100.5 ุจูุณู ุ ููุง ูุณุชุทูุน Excel ุชุญู
ูู ูุณูููู
ุจุฅุณูุงุท ุงูุฌุฒุก ุงููุณุฑู ุญุชู 100 ุจูุณู. ุนูุฏู
ุง ูุทูุจ VBA ุงุฑุชูุงุน ุงูุตู ูู ุงูููุงุท ุ ูููู
Excel ุจุตุฏู ุจุชุฑุฌู
ุฉ 100 ุจูุณู ุฅูู ููุงุท ูุฅุฑุฌุงุน 75.
ู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ููุฏ ูุตููุง ุจุงููุนู ุฅูู ูุชุงุจุฉ ูุตู ุฏุฑุงุณู ูู C # ูุตู ู
ุนููู
ุงุช ุญูู ุงุฑุชูุงุน ุงูุตู:
class RowHeightInfo { public ushort Value { get; set; }
ุณูุชุนูู ุนููู ุฃุฎุฐ ููุงู
ู ุงูุขู ุ ูููู ูู Excel ุ ูุชู
ุชุฎุฒูู ุงุฑุชูุงุน ุงูุตู ุจูุฐู ุงูุทุฑููุฉ. ุฃู ุฅุฐุง ุชู
ุชุญุฏูุฏ ุฃู ุงุฑุชูุงุน ุงูุตู ูู 75 ููุทุฉ ุ ูุณูููู 100 ุจูุณู ุ ูุณูุชู
ุชุฎุฒูู 400 ุจุงูููู
ุฉ. ูู
ุฃูู ูุฏ ุงูุชุดูุช ุชู
ุงู
ูุง ู
ุง ุชุนููู ุฌู
ูุน ุงูุจุชุงุช ูู ุงูุฅุดุงุฑุงุช (ู
ู ุงูุตุนุจ ูุทูููุฉ ู
ุนุฑูุฉ ููู
ุงูุฅุดุงุฑุงุช) ุ ููููู ุฃุนูู
ุนูู ูุฌู ุงููููู ูุชู
ุชุนููู 0x4000 ููุตููู ุงูุชู ูุชู
ุชุนููู ุงุฑุชูุงุนูุง ูุฏูููุง ุ ููุชู
ุชุนููู 0x2000 - ููุตููู ุงูู
ุฎููุฉ. ุจุดูู ุนุงู
ุ ุจุงููุณุจุฉ ููุตููู ุงูู
ุฑุฆูุฉ ุฐุงุช ุงูุงุฑุชูุงุน ุงูู
ุถุจูุท ูุฏูููุง ุ ุชุณุงูู ุงูุฃุนูุงู
ุบุงูุจูุง 0x4005 ุ ูุจุงููุณุจุฉ ููุตููู ุงูุชู ูุชู
ุญุณุงุจ ุงูุงุฑุชูุงุน ููููุง ูุชูุณูู ุงูุฅุดุงุฑุงุช ุ ุชููู ุฅู
ุง 0xA ุฃู 0x800E.
ูุณุฃู ุงุฑุชูุงุน ุงูุตู
ุงูุขู ุ ู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ูู
ููู ุฅููุงุก ูุธุฑุฉ ุนูู ุงูุทุฑููุฉ ู
ู excel.exe ุ ูุงูุชู ุชูุฑุฌุน ุงุฑุชูุงุน ุงูุตู ุจูุงุณุทุฉ ููุฑุณูุง (ุจูุถู HexRays ููุฑู
ุฒ ุงูุฌู
ูู):
int __userpurge GetRowHeight@<eax>(signed int rowIndex@<edx>, SheetLayoutInfo *sheetLayoutInfo@<esi>, bool flag) { RowHeightInfo *rowHeightInfo;
ู
ุง ูู dword1A0 ุ ู
ุง ุฒูุช ูู
ุฃุญุณุจ. ูุง ูู
ูู ุงูุนุซูุฑ ุนูู ู
ูุงู ุญูุซ ุชู
ุชุนููู ูุฐู ุงูุนูุงู
ุฉ :(
ู
ุง ูู defaultRowDelta2 ุจุงููุณุจุฉ ูู ุ ุฃูุถุง ุ ูุง ูุฒุงู ูุบุฒุง. ุนูุฏู
ุง ูุญุณุจ excel ุงุฑุชูุงุน ุงูุตู ุจูุงุกู ุนูู ุงูุชูุณูู ุ ูุฅูู ูู
ุซูู ูู
ุฌู
ูุน ุฑูู
ูู. defaultRowDelta2 ูู ุงูุฑูู
ุงูุซุงูู ู
ู ูุฐุง ุงูู
ุจูุบ ูุงุฑุชูุงุน ุงูุตู ุงูููุงุณู. ููู
ุฉ ุงูู
ุนูู
ุฉ ุงูุนูู
ูู ุฃูุถุง ุบุงู
ุถุฉ ุ ูุฃู ุฃููู
ุง ุฑุฃูุช ุฏุนูุฉ ููุฐู ุงูุทุฑููุฉ ูู ุงูุนูู
ู
ุฑุช ูุงุฐุจุฉ.
ุชุธูุฑ ูุฆุฉ SheetLayoutInfo ุฃูุถูุง ูู ูุฐู ุงูุทุฑููุฉ. ูู
ุช ุจุชุณู
ูุชู ุจูุฐู ุงูุทุฑููุฉ ุ ูุฃูู ูุฎุฒู ุงููุซูุฑ ู
ู ุงูู
ุนููู
ุงุช ุญูู ู
ุธูุฑ ุงููุฑูุฉ. ูู SheetLayoutInfo ููุงู ู
ุฌุงูุงุช ู
ุซู:
- DefaultFullRowHeightMul4 - ุงุฑุชูุงุน ุงูุตู ุงูููุงุณู ุ
- MinRowIndexNonDefault - ููุฑุณ ุงูุตู ุงูุฃูู ุ ุญูุซ ูุฎุชูู ุงูุงุฑุชูุงุน ุนู ุงูู
ุนูุงุฑ ุ
- MaxRowIndexNonDefault - ููุฑุณ ุงูุณูุณูุฉ ุจุนุฏ ุขุฎุฑูุง ุ ุญูุซ ูุฎุชูู ุงูุงุฑุชูุงุน ุนู ุงูู
ุนูุงุฑ ุ
- DefaultRowDelta2 ูู ููุณ ุงูุฌุฒุก ู
ู ู
ุฌู
ูุน ุงุฑุชูุงุน ุงูุตู ุงูููุงุณู.
- GroupIndexDelta - ุงูู
ุฒูุฏ ุญูู ูุฐุง ุงูุฃู
ุฑ ูุงุญููุง
ู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ู
ูุทู ูุฐู ุงูุทุฑููุฉ ู
ูููู
:
- ุฅุฐุง ูุงู ููุฑุณ ุงูุณูุณูุฉ ุฃูู ู
ู ุงูุฃูู ู
ุน ุงุฑุชูุงุน ุบูุฑ ููุงุณู ุ ููู
ุจุฅุฑุฌุงุน ุงูู
ุนูุงุฑ ุ
- ุฅุฐุง ูุงู ููุฑุณ ุงูุณูุณูุฉ ุฃูุจุฑ ู
ู ุงูุฃุฎูุฑ ู
ุน ุงุฑุชูุงุน ุบูุฑ ููุงุณู ุ ููู
ุจุฅุฑุฌุงุน ุงูู
ุนูุงุฑ ุ
- ุฎูุงู ุฐูู ุ ูุญุตู ุนูู ูุงุฆู rowHeightInfo ููุณูุณูุฉ ู
ู ุฃุณููุจ GetRowHeightCore ุ
- ุฅุฐุง ูุงู
rowHeightInfo == null ุจุฅุฑุฌุงุน ุงุฑุชูุงุน ุงูุตู ุงูููุงุณู ุ
- ููุงู ุณุญุฑ ู
ุน ุงูุฃุนูุงู
ุ ูููู ุจุดูู ุนุงู
ุ ูุฑุฌุน ู
ุง ูู ูู ุตูHeightInfo.Value ููุถุน ุงูุจุช ุงูุณุงุฏุณ ุนุดุฑ ูู ุงูุงุณุชุฌุงุจุฉ ุฅุฐุง ูู
ูุชู
ุถุจุท ุงุฑุชูุงุน ุงูุตู ูุฏูููุง.
ุฅุฐุง ูู
ุช ุจุฅุนุงุฏุฉ ูุชุงุจุฉ ูุฐุง ุงูุฑู
ุฒ ูู C # ุ ูุณุชุญุตู ุนูู ุดูุก ู
ุซู ุงูุชุงูู:
const ulong HiddenRowMask = 0x2000; const ulong CustomHeightMask = 0x4000; const ushort DefaultHeightMask = 0x8000; public static ushort GetRowHeight(int rowIndex, SheetLayoutInfo sheetLayoutInfo) { ushort defaultHeight = (ushort) (sheetLayoutInfo.DefaultFullRowHeightMul4 | (~(sheetLayoutInfo.DefaultRowDelta2 >> 14 << 15) & DefaultHeightMask)); if (rowIndex < sheetLayoutInfo.MinRowIndexNonDefault) return defaultHeight; if (rowIndex >= sheetLayoutInfo.MaxRowIndexNonDefault) return defaultHeight; RowHeightInfo rowHeightInfo = GetRowHeightCore(sheetLayoutInfo, rowIndex); if (rowHeightInfo == null) return defaultHeight; ushort result = 0; if ((rowHeightInfo.Flags & HiddenRowMask) == 0) result = rowHeightInfo.Value; if ((rowHeightInfo.Flags & CustomHeightMask) == 0) result |= DefaultHeightMask; return result; }
ูู
ููู ุงูุขู ุฅููุงุก ูุธุฑุฉ ุนูู ู
ุง ูุญุฏุซ ุฏุงุฎู GetRowHeightCore:
RowHeightInfo *__fastcall GetRowHeightCore(SheetLayoutInfo *sheetLayoutInfo, signed int rowIndex) { RowHeightInfo *result;
- ู
ุฑุฉ ุฃุฎุฑู ุ ูู ุงูุจุฏุงูุฉ ุ ูุชุญูู Excel ูู
ุนุฑูุฉ ู
ุง ุฅุฐุง ูุงู ููุฑุณ ุงูุณูุณูุฉ ู
ู ุจูู ุงูุตููู ุฐุงุช ุงูุงุฑุชูุงุน ุงูู
ุนุฏู ุ ูุฅุฐุง ูู
ููู ุงูุฃู
ุฑ ูุฐูู ุ ูุณูุชู
ุฅุฑุฌุงุน ููู
ุฉ ุฎุงููุฉ.
- ูุนุซุฑ ุนูู ู
ุฌู
ูุนุฉ ุงูุตููู ุงูู
ุฑุบูุจุฉ ุ ูุฅุฐุง ูู
ููู ููุงู ู
ุซู ูุฐู ุงูู
ุฌู
ูุนุฉ ุ ูุฅููุง ุชูุฑุฌุน ุฎุงููุฉ.
- ุงูุญุตูู ุนูู ููุฑุณ ุงูุณูุณูุฉ ูู ุงูู
ุฌู
ูุนุฉ.
- ุนูุงูุฉ ุนูู ุฐูู ุ ู
ู ุฎูุงู ููุฑุณ ุงูุณูุณูุฉ ุ ูุฅูู ูุนุซุฑ ุนูู ุงููุงุฆู ุงูู
ุทููุจ ู
ู ูุฆุฉ RowHeightInfo. wordBA ุ wordBC ุ wordB8 - ุจุนุถ ุงูุซูุงุจุช. ุฃููุง ุชุชุบูุฑ ููุท ู
ุน ุงูุชุงุฑูุฎ. ู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ูุฅููุง ูุง ุชุคุซุฑ ุนูู ููู
ุงูุฎูุงุฑุฒู
ูุฉ.
ููุง ูุฌุฏุฑ ุงูุงูุญุฑุงู ุนู ุงูู
ูุถูุน ูุฅุฎุจุงุฑูุง ุฃูุซุฑ ุนู RowsGroupInfo. ูููู
Excel ุจุชุฎุฒูู RowHeightInfo ูู ู
ุฌู
ูุนุงุช ู
ูููุฉ ู
ู 16 ูุทุนุฉ ุ ุญูุซ ุชููู
ุงูู
ุฌู
ูุนุฉ i ุ ุงูู
ู
ุซูุฉ ูู ูุฆุฉ RowsGroupInfo ุ ุจุชุฎุฒูู ู
ุนููู
ุงุช ุญูู ุงูุตููู ู
ู i ร 16 ุฅูู i ร 16 + 15 ุดุงู
ูุฉ.
ููู ูุชู
ุชุฎุฒูู ู
ุนููู
ุงุช ุงุฑุชูุงุน ุงูุตู ูู RowsGroupInfo ุจุทุฑููุฉ ุบูุฑ ุนุงุฏูุฉ ุฅูู ุญุฏ ู
ุง. ุนูู ุงูุฃุฑุฌุญ ุจุณุจุจ ุงูุญุงุฌุฉ ุฅูู ุงูุญูุงุธ ุนูู ุงูุชุงุฑูุฎ ูู Excel.
ููุงู ุซูุงุซุฉ ุญููู ู
ูู
ุฉ ูู RowsGroupInfo: ุงูู
ุคุดุฑุงุช ู HeightInfos ู RowsCount ุ ูุงูุซุงูู ุบูุฑ ู
ุฑุฆู ูู ุงูุชุนููู
ุฉ ุงูุจุฑู
ุฌูุฉ ุฃุนูุงู (ูุฌุจ ุฃู ูููู ูู ูุฐุง ุงูุณุทุฑ: (rowsGroupInfo + 8 ร (...)) ุ ูุฃู rowInfoIndex ูู
ูู ุฃู ูุฃุฎุฐ ููู
ูุง ู
ุฎุชููุฉ ุฌุฏูุง ุ ููุฏ ุฑุฃูุช ุฃูุซุฑ ู
ู 1000 ูููุณ ูุฏู ุฃู ููุฑุฉ ุนู ููููุฉ ุชุนููู ู
ุซู ูุฐุง ุงููููู ูู ุงูู
ุคุณุณุฉ ุงูุฏูููุฉ ููุชูู
ูุฉ. ูุง ูุธูุฑ ุญูู RowsCount ูู ุงูููุฏ ุฃุนูุงู ุ ูููู ูุฐุง ูู ุนุฏุฏ ุงูุตููู ุบูุฑ ุงูููุงุณูุฉ ุงูู
ุฎุฒููุฉ ุญููุง ูู ุงูู
ุฌู
ูุนุฉ.
ุจุงูุฅุถุงูุฉ ุฅูู ุฐูู ุ ูู SheetLayoutInfo ููุงู GroupIndexDelta - ุงููุฑู ุจูู ุงูููุฑุณ ุงูุญูููู ููู
ุฌู
ูุนุฉ ูููุฑุณ ุงูู
ุฌู
ูุนุฉ ุงูุฃููู ู
ุน ุงุฑุชูุงุน ุงูุตู ุงูู
ุนุฏู.
ูุฎุฒู ุญูู ุงูู
ุคุดุฑุงุช ู
ุคุดุฑุงุช ุฅุฒุงุญุฉ RowHeightInfo ููู ููุฑุณ ู
ู ุงูุณูุณูุฉ ุฏุงุฎู ุงูู
ุฌู
ูุนุฉ. ูุชู
ุชุฎุฒูููุง ููุงู ุจุงูุชุฑุชูุจ ุ ูููู ูู HeightInfos ูุชู
ุชุฎุฒูู RowHeightInfo ุจุงููุนู ุจุชุฑุชูุจ ุงูุชุบููุฑ.
ูููุชุฑุถ ุฃู ูุฏููุง ูุฑูุฉ ูุงุฑุบุฉ ุฌุฏูุฏุฉ ูุจุทุฑููุฉ ู
ุง ูู
ูุง ุจุชุบููุฑ ุงุฑุชูุงุน ุฑูู
ุงูุตู 23. ููุน ูุฐุง ุงูุตู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ ุงูู
ูููุฉ ู
ู 16 ุตููุง ุ ุซู
:
- ุณูุญุฏุฏ Excel ููุฑุณ ุงูู
ุฌู
ูุนุฉ ููุฐู ุงูุณูุณูุฉ. ูู ุงูุญุงูุฉ ุงูุญุงููุฉ ุ ุณูููู ุงูููุฑุณ 1 ูุณูุบูุฑ GroupIndexDelta = -1.
- ููุดุฆ ูุงุฆููุง ู
ู ูุฆุฉ RowsGroupInfo ูุณูุณูุฉ ู
ู ุงูุตููู ููุถุนูุง ูู sheetLayoutInfo-> RowsGroups ุชุญุช ุงูููุฑุณ 0 (sheetLayoutInfo-> GroupIndexDelta + 1)ุ
- ูู RowsGroupInfo ุ ุณูุฎุตุต Excel ุงูุฐุงูุฑุฉ ูู 16 ู
ุคุดุฑุงุช 4 ุจุงูุช ุ ู RowsCount ุ ู wordBA ุ ู wordBC ุ ู wordB8 ุ ูู
ุง ุฅูู ุฐูู ุ
- ุซู
ูููู
Excel ุจุญุณุงุจ ููุฑุณ ุงูุณูุณูุฉ ูู ุงูู
ุฌู
ูุนุฉ ู
ู ุฎูุงู ุนู
ููุฉ AND ุงูุจุทูุฆุฉ (ูุฐุง ุฃุณุฑุน ุจูุซูุฑ ู
ู ุฃุฎุฐ ุจุงูู ุงููุณู
): rowIndex & 0xF. ุณูููู ุงูููุฑุณ ุงูู
ุทููุจ ูู ุงูู
ุฌู
ูุนุฉ: 23 & 0xF = 7ุ
- ุจุนุฏ ุฐูู ุ ูุญุตู Excel ุนูู ุงูุฅุฒุงุญุฉ ููููุฑุณ 7: ุฅุฒุงุญุฉ = ู
ุคุดุฑุงุช [7]. ุฅุฐุง ุชู
ุงูุฅุฒุงุญุฉ = 0 ุ ูุณูุฎุตุต Excel 8 ุจุงูุช ูู ููุงูุฉ RowsGroupInto ุ ููุฒูุฏ RowsCount ุจูุงุญุฏ ุ ูููุชุจ ุงูุฅุฒุงุญุฉ ุงูุฌุฏูุฏุฉ ููู
ุคุดุฑุงุช [7]. ูู ุฃู ุญุงู ุ ูู ุงูููุงูุฉ ุ ููุชุจ Excel ู
ุนููู
ุงุช ุญูู ุงุฑุชูุงุน ุงูุตู ุงูุฌุฏูุฏ ูุงูุฃุนูุงู
ุนูุฏ ุงูุฅุฒุงุญุฉ ูู RowsGroupInfo.
ุชุจุฏู ุงููุฆุฉ RowsGroupInfo ูู C # ููุณูุง ูู
ุง ููู:
class RowsGroupInfo { public int[] Indices { get; } public List<RowHeightInfo> HeightInfos { get; } public RowsGroupInfo() { Indices = new int[SheetLayoutInfo.MaxRowsCountInGroup]; HeightInfos = new List<RowHeightInfo>(); for (int i = 0; i < SheetLayoutInfo.MaxRowsCountInGroup; i++) { Indices[i] = -1; } } }
ุณุชุจุฏู ุทุฑููุฉ GetRowHeightCore ุจุงูุดูู ุงูุชุงูู:
static RowHeightInfo GetRowHeightCore(SheetLayoutInfo sheetLayoutInfo, int rowIndex) { if (rowIndex < sheetLayoutInfo.MinRowIndexNonDefault || rowIndex >= sheetLayoutInfo.MaxRowIndexNonDefault) return null; RowsGroupInfo rowsGroupInfo = sheetLayoutInfo.RowsGroups[sheetLayoutInfo.GroupIndexDelta + (rowIndex >> 4)]; if (rowsGroupInfo == null) return null; int rowInfoIndex = rowsGroupInfo.Indices[rowIndex & 0xF]; return rowInfoIndex != -1 ? rowsGroupInfo.HeightInfos[rowInfoIndex] : null; }
ููุฐุง ู
ุง ุณูุจุฏู ุนููู SetRowHeight (ูู
ุฃุฐูุฑ ุงูููุฏ ุงูุฎุงุต ุจู ู
ู excel.exe):
public static void SetRowHeight(int rowIndex, ushort newRowHeight, ushort flags, SheetLayoutInfo sheetLayoutInfo) { sheetLayoutInfo.MaxRowIndexNonDefault = Math.Max(sheetLayoutInfo.MaxRowIndexNonDefault, rowIndex + 1); sheetLayoutInfo.MinRowIndexNonDefault = Math.Min(sheetLayoutInfo.MinRowIndexNonDefault, rowIndex); int realGroupIndex = rowIndex >> 4; if (sheetLayoutInfo.RowsGroups.Count == 0) { sheetLayoutInfo.RowsGroups.Add(null); sheetLayoutInfo.GroupIndexDelta = -realGroupIndex; } else if (sheetLayoutInfo.GroupIndexDelta + realGroupIndex < 0) { int bucketSize = -(sheetLayoutInfo.GroupIndexDelta + realGroupIndex); sheetLayoutInfo.RowsGroups.InsertRange(0, new RowsGroupInfo[bucketSize]); sheetLayoutInfo.GroupIndexDelta = -realGroupIndex; } else if (sheetLayoutInfo.GroupIndexDelta + realGroupIndex >= sheetLayoutInfo.RowsGroups.Count) { int bucketSize = sheetLayoutInfo.GroupIndexDelta + realGroupIndex - sheetLayoutInfo.RowsGroups.Count + 1; sheetLayoutInfo.RowsGroups.AddRange(new RowsGroupInfo[bucketSize]); } RowsGroupInfo rowsGroupInfo = sheetLayoutInfo.RowsGroups[sheetLayoutInfo.GroupIndexDelta + realGroupIndex]; if (rowsGroupInfo == null) { rowsGroupInfo = new RowsGroupInfo(); sheetLayoutInfo.RowsGroups[sheetLayoutInfo.GroupIndexDelta + realGroupIndex] = rowsGroupInfo; } int rowInfoIndex = rowsGroupInfo.Indices[rowIndex & 0xF]; RowHeightInfo rowHeightInfo; if (rowInfoIndex == -1) { rowHeightInfo = new RowHeightInfo(); rowsGroupInfo.HeightInfos.Add(rowHeightInfo); rowsGroupInfo.Indices[rowIndex & 0xF] = rowsGroupInfo.HeightInfos.Count - 1; } else { rowHeightInfo = rowsGroupInfo.HeightInfos[rowInfoIndex]; } rowHeightInfo.Value = newRowHeight; rowHeightInfo.Flags = flags; }
ููููุง ู
ู ุงูู
ู
ุงุฑุณุฉ
ุจุนุฏ ุงูู
ุซุงู ุฃุนูุงู ุ ู
ุน ุญุฏูุซ ุชุบููุฑ ูู ุงุฑุชูุงุน ุงูุตู 23 ุ ุณูุจุฏู Excel ู
ุซู ูุฐุง (ููุฏ ูู
ุช ุจุชุนููู ุงูุตู 23 ุนูู ุงุฑุชูุงุน 75 ููุทุฉ):
sheetLayoutInfo- DefaultFullRowHeightMul4 = 80
- DefaultRowDelta2 = 5
- MaxRowIndexNonDefault = 24
- MinRowIndexNonDefault = 23
- GroupIndexDelta = -1
- ุนุฏุฏ ู
ุฌู
ูุนุงุช Rows = 1
- [0] RowsGroupInfo
- ุงุฑุชูุงุน HeightInfos = 1
- [0] RowHeightInfo
- ุงูุฃุนูุงู
= 0x4005
- ุงูููู
ุฉ = 100
- ุงูู
ุคุดุฑุงุช
- [0] = -1
- [1] = -1
- [2] = -1
- [3] = -1
- [4] = -1
- [5] = -1
- [6] = -1
- [7] = 0
- [8] = -1
- [9] = -1
- [10] = -1
- [11] = -1
- [12] = -1
- [13] = -1
- [14] = -1
- [15] = -1
ููุง ููู ุงูู
ุซุงู ุงูุชุงูู ุ ุณุฃุถุน ุนุฑุถูุง ุชุฎุทูุทููุง ูููููุฉ ุธููุฑ ุงูุจูุงูุงุช ูู ุฐุงูุฑุฉ Excel ุ ุงูุชู ุชู
ุฅุฌุฑุงุคูุง ูู Visual Studio ู
ู ุงููุตูู ุงูู
ูุชูุจุฉ ุฐุงุชูุง ุ ูุฃู ุงูุชูุฑูุบ ุงูู
ุจุงุดุฑ ู
ู ุงูุฐุงูุฑุฉ ููุณ ุบูู ุจุงูู
ุนููู
ุงุช.
ุงูุขู ุฏุนููุง ูุญุงูู ุฅุฎูุงุก ุงูุตู 23. ููููุงู
ุจุฐูู ุ ูู
ุจุชุนููู 0x2000 ุจุช ู
ู ุงูุฅุดุงุฑุงุช. ุณูู ูุบูุฑ ุงูุฐุงูุฑุฉ ููุนูุด. ูู
ูู ุฑุคูุฉ ุงููุชูุฌุฉ ูู ูุฐุง ุงูููุฏูู:
http://recordit.co/79vYIbwbzB .
ููู
ุง ูู
ุช ุจุฅุฎูุงุก ุงูุตููู ุ ูููู
Excel ุจููุณ ุงูุดูุก.
ุงูุขู ูููู
ุจุชุนููู ุงุฑุชูุงุน ุงูุตู ุจุดูู ุบูุฑ ุตุฑูุญ ุ ูููู ู
ู ุฎูุงู ุชูุณูู ุงูุฎููุฉ. ุงุณู
ุญ ููุฎุท ุงูู
ูุฌูุฏ ูู ุงูุฎููุฉ A20 ุฃู ูุตู ุฅูู 40 ููุทุฉ ุ ุซู
ุณูููู ุงุฑุชูุงุน ุงูุฎููุฉ ูู ุงูููุงุท 45.75 ููู ุฐุงูุฑุฉ Excel ุณูููู ู
ุซู ูุฐุง:
sheetLayoutInfo- DefaultFullRowHeightMul4 = 80
- DefaultRowDelta2 = 5
- MaxRowIndexNonDefault = 24
- MinRowIndexNonDefault = 20
- GroupIndexDelta = -1
- ุนุฏุฏ ู
ุฌู
ูุนุงุช Rows = 1
- [0] RowsGroupInfo
- ุงุฑุชูุงุน HeinInfos = 2
- [0] RowHeightInfo
- ุงูุฃุนูุงู
= 0x4005
- ุงูููู
ุฉ = 100
- [1] RowHeightInfo
- ุงูุฃุนูุงู
= 0x800E
- ุงูููู
ุฉ = 244
- ุงูู
ุคุดุฑุงุช
- [0] = -1
- [1] = -1
- [2] = -1
- [3] = -1
- [4] = 1
- [5] = -1
- [6] = -1
- [7] = 0
- [8] = -1
- [9] = -1
- [10] = -1
- [11] = -1
- [12] = -1
- [13] = -1
- [14] = -1
- [15] = -1
ูุฏ ุชูุงุญุธ ุฃู Excel ูุฎุฒู ุฏุงุฆู
ูุง ุงุฑุชูุงุน ุงูุตู ุฅุฐุง ูู
ููู ููุงุณููุง. ุญุชู ุฅุฐุง ูู
ูุชู
ุชุนููู ุงูุงุฑุชูุงุน ุจุดูู ุตุฑูุญ ุ ูููู ุชู
ุญุณุงุจู ุงุณุชูุงุฏูุง ุฅูู ู
ุญุชููุงุช ุงูุฎูุงูุง ุฃู ุงูุชูุณูู ุ ูุณูุธู Excel ูุญุณุจูุง ู
ุฑุฉ ูุงุญุฏุฉ ููุถุน ุงููุชูุฌุฉ ูู ุงูู
ุฌู
ูุนุฉ ุงูู
ูุงุณุจุฉ.
ูุญู ูุชุนุงู
ู ู
ุน ุงูุฅุฏุฑุงุฌ / ุญุฐู ุงูุตููู
ุณูููู ู
ู ุงูู
ุซูุฑ ููุงูุชู
ุงู
ุชุญููู ู
ุง ูุญุฏุซ ุนูุฏ ุฅุฏุฑุงุฌ / ุญุฐู ุงูุตููู. ููุณ ู
ู ุงูุตุนุจ ุงูุนุซูุฑ ุนูู ุงูููุฏ ุงูู
ูุงุจู ูู excel.exe ุ ูููู ูู
ุชูู ููุงู ุฑุบุจุฉ ูู ุชููููู ุ ูู
ููู ุฅููุงุก ูุธุฑุฉ ุนูู ุฌุฒุก ู
ูู:
sub_305EC930ูุญุฏุฏ ุงูุนูู
a5 ุงูุนู
ููุฉ ุงูุชู ุชุฌุฑู ุญุงูููุง.
int __userpurge sub_305EC930@<eax>(int a1@<eax>, int a2@<edx>, int a3@<ecx>, int a4, int a5, int a6) { int v6;
ุจุงูุฅุถุงูุฉ ุฅูู ุฐูู ุ ูู ุงูู
ุธูุฑ ุ ูู
ููู ุฃู ุชููู
ุชูุฑูุจูุง ู
ุง ูุญุฏุซ ููุงู ุ ูุงูุจุงูู ููุชูู ุจุนูุงู
ุงุช ุบูุฑ ู
ุจุงุดุฑุฉ.
ูุญู ูุญุงูู ุชุญุฏูุฏ ูุฐู ุงูู
ูุฒุงุช ุบูุฑ ุงูู
ุจุงุดุฑุฉ. ุฃููุงู ุ ูู
ุจุชุนููู ุงุฑุชูุงุน ุงูุตููู ู
ู 16 ุฅูู 64 ุดุงู
ูุงู ุจุชุฑุชูุจ ุนุดูุงุฆู. ุซู
ุ ุฃู
ุงู
ุงูุตู ุชุญุช ุงูููุฑุณ 39 ุ ุฃุฏุฎู ุตููุง ุฌุฏูุฏูุง. ุณูููู
ุงูุตู ุงูุฌุฏูุฏ ุจูุณุฎ ุงุฑุชูุงุน ุงูุตู 38.
ุฏุนููุง ูููู ูุธุฑุฉ ุนูู ุงูู
ุนููู
ุงุช ูู ู
ุฌู
ูุนุงุช ุงูู
ุณูุณู ูุจู ูุจุนุฏ ุฅุถุงูุฉ ุณูุณูุฉ ุ ุณูุทุช ุงูุถูุก ุนูู ุงูุงุฎุชูุงูุงุช ุงูุฌุฑูุฆุฉ:
ูุจู ุฅุถุงูุฉ ุตู | ุจุนุฏ ุฅุถุงูุฉ ุตู |
---|
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: |
0E ุ 04 ุ 07 ุ 00 ุ 05 ุ 0A ุ 09 ุ 0F ุ 03 ุ 06 ุ 08 ุ 0D ุ 01 ุ 0B ุ 0C ุ 02 | 0E ุ 04 ุ 07 ุ 00 ุ 05 ุ 0A ุ 09 ุ 0F ุ 03 ุ 06 ุ 08 ุ 0D ุ 01 ุ 0B ุ 0C ุ 02 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: |
05 ุ 2B ุ 35 ุ 45 ุ 4B ุ 50 ุ 5B ุ 6B ุ 7B ุ 8B ุ A5 ุ AB ุ B0 ุ B5 ุ E0 ุ 100 | 05 ุ 2B ุ 35 ุ 45 ุ 4B ุ 50 ุ 5B ุ 6B ุ 7B ุ 8B ุ A5 ุ AB ุ B0 ุ B5 ุ E0 ุ 100 |
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: |
06ุ 02ุ 0Eุ 09ุ 01ุ 07ุ 0Fุ 0C ุ 00ุ 0Aุ 04ุ 0Bุ 03ุ 08ุ 0Dุ 05 | 06ุ 02ุ 0Eุ 09ุ 01ุ 07ุ 0Fุ 05ุ 0C ุ 00ุ 0Aุ 04ุ 0Bุ 03ุ 08ุ 0D |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: |
10 ุ 15 ุ 20 ุ 25 ุ 30 ุ 75 ุ 85 ุ 90 ุ 9B ุ A0 ุ C5 ุ CB ุ D0 ุ D5 ุ E5 ุ F0 | 10 ุ 15 ุ 20 ุ 25 ุ 30 ุ F0 ุ 85 ุ 90 ุ 9B ุ A0 ุ C5 ุ CB ุ D0 ุ D5 ุ E5 ุ F0 |
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: |
0C ุ 08 ุ 0E ุ 07 ุ 0A ุ 01 ุ 06 ุ 0F ุ 09 ุ 0D ุ 00 ุ 05 ุ 0B ุ 02 ุ 04 ุ 03 | 03 ุ 0Cุ 08ุ 0Eุ 07ุ 0Aุ 01ุ 06ุ 0Fุ 09ุ 0Dุ 00ุ 05ุ 0Bุ 02ุ 04 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: |
0B ุ 1B ุ 3B ุ 40 ุ 55 ุ 60 ุ 65 ุ 70 ุ 80 ุ 95 ุ BB ุ C0 ุ DB ุ EB ุ F5 ุ FB | 0B ุ 1B ุ 3B ุ 75 ุ 55 ุ 60 ุ 65 ุ 70 ุ 80 ุ 95 ุ BB ุ C0 ุ DB ุ EB ุ F5 ุ FB |
ุงูุฅุฒุงุญุฉ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: | ุงูุฅุฒุงุญุฉ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: |
_ | 00 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: |
_ | 40 |
ูุฐุง ู
ุง ูุงู ู
ุชููุนูุง: ูุฏุฑุฌ Excel ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ ุตููุง ุฌุฏูุฏูุง ุจู ุงูููุฑุณ 7 (39 & 0xF) ุ ุงูุฐู ูููู ุฅุฒุงุญุชู 0x05 ุ ุจูุณุฎ ุงุฑุชูุงุน ุงูุตู ูู ุงูููุฑุณ 6 ุ ุจููู
ุง ูุชู
ุฏูุน ุงูุตู ุงูุฃุฎูุฑ ุ ุงูุฐู ุชู
ุฅุฒุงุญุชู 05 ุ ุฅูู ุงูุชุงูู ุงูู
ุฌู
ูุนุฉ ุ ูู
ู ููุงู ูุชู
ุฏูุน ุงูุตู ุงูุฃุฎูุฑ ูู ุงูุตู ุงูุฑุงุจุน ุ ุงูุฎ
ุงูุขู ุฏุนููุง ูุฑู ู
ุง ูุญุฏุซ ุฅุฐุง ูู
ุช ุจุญุฐู ุงูุตู 29.
ูุจู ุฅุฒุงูุฉ ุงูุตู | ุจุนุฏ ุฅุฒุงูุฉ ุงูุตู |
---|
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: |
0E ุ 04 ุ 07 ุ 00 ุ 05 ุ 0A ุ 09 ุ 0F ุ 03 ุ 06 ุ 08 ุ 0D ุ 01 ุ 0B ุ 0C ุ 02 | 0E ุ 04 ุ 07 ุ 00 ุ 05 ุ 0A ุ 09 ุ 0F ุ 03 ุ 06 ุ 08 ุ 0D ุ 01 ุ 0C ุ 02 ุ 0B |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฃููู: |
05 ุ 2B ุ 35 ุ 45 ุ 4B ุ 50 ุ 5B ุ 6B ุ 7B ุ 8B ุ A5 ุ AB ุ B0 ุ B5 ุ E0 ุ 100 | 05 ุ 2B ุ 35 ุ 45 ุ 4B ุ 50 ุ 5B ุ 6B ุ 7B ุ 8B ุ A5 ุ 85 ุ B0 ุ B5 ุ E0 ุ 100 |
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: |
06 ุ 02ุ 0Eุ 09ุ 01ุ 07ุ 0Fุ 05ุ 0Cุ 00ุ 0Aุ 04ุ 0Bุ 03ุ 08ุ 0D | 02ุ 0Eุ 09ุ 01ุ 07ุ 0Fุ 05ุ 0Cุ 00ุ 0Aุ 04ุ 0Bุ 03ุ 08ุ 0Dุ 06 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงููุฉ: |
10 ุ 15 ุ 20 ุ 25 ุ 30 ุ F0 ุ 85 ุ 90 ุ 9B ุ A0 ุ C5 ุ CB ุ D0 ุ D5 ุ E5 ุ F0 | 10 ุ 15 ุ 20 ุ 25 ุ 30 ุ F0 ุ 75 ุ 90 ุ 9B ุ A0 ุ C5 ุ CB ุ D0 ุ D5 ุ E5 ุ F0 |
ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: | ุงููุฒูุญ ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: |
03 ุ 0Cุ 08ุ 0Eุ 07ุ 0Aุ 01ุ 06ุ 0Fุ 09ุ 0Dุ 00ุ 05ุ 0Bุ 02ุ 04 | 0C ุ 08 ุ 0E ุ 07 ุ 0A ุ 01 ุ 06 ุ 0F ุ 09 ุ 0D ุ 00 ุ 05 ุ 0B ุ 02 ุ 04 ุ 03 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุซุงูุซุฉ: |
0B ุ 1B ุ 3B ุ 75 ุ 55 ุ 60 ุ 65 ุ 70 ุ 80 ุ 95 ุ BB ุ C0 ุ DB ุ EB ุ F5 ุ FB | 0B ุ 1B ุ 3B ุ 40 ุ 55 ุ 60 ุ 65 ุ 70 ุ 80 ุ 95 ุ BB ุ C0 ุ DB ุ EB ุ F5 ุ FB |
ุงูุฅุฒุงุญุฉ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: | ุงูุฅุฒุงุญุฉ ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: |
00 | 00 |
ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: | ููู
ุงุฑุชูุงุนุงุช ุงูุตููู ูู ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ: |
40 | 50 |
ู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ุนูุฏ ุญุฐู ุตู ุ ุชุญุฏุซ ุนู
ููุงุช ุนูุณูุฉ. ูู ูุฐู ุงูุญุงูุฉ ุ ุชุณุชู
ุฑ ุงูู
ุฌู
ูุนุฉ ุงูุฑุงุจุนุฉ ูู ุงููุฌูุฏ ูุชู
ูุฃ ููู
ุฉ ุงุฑุชูุงุน ุงูุตู ููุงู ุจุงูุงุฑุชูุงุน ุงูููุงุณู ู
ุน ุงูุนูุงู
ุฉ ุงูู
ูุงุจูุฉ - 0x8005.
ูุฐู ุงูุจูุงูุงุช ูุงููุฉ ูุฅูุชุงุฌ ูุฐู ุงูุฎูุงุฑุฒู
ูุฉ ูู C #:
ุงูุฏุฑู public static void InsertRow(SheetLayoutInfo sheetLayoutInfo, int rowIndex) { if (rowIndex >= sheetLayoutInfo.MaxRowIndexNonDefault) return; RowHeightInfo etalonRowHeightInfo = GetRowHeightCore(sheetLayoutInfo, rowIndex); RowHeightInfo newRowHeightInfo = etalonRowHeightInfo != null ? etalonRowHeightInfo.Clone() : CreateDefaultRowHeight(sheetLayoutInfo); int realGroupIndex = (rowIndex + 1) >> 4; int newRowInGroupIndex = (rowIndex + 1) & 0xF; int groupIndex; for (groupIndex = realGroupIndex + sheetLayoutInfo.GroupIndexDelta; groupIndex < sheetLayoutInfo.RowsGroups.Count; groupIndex++, newRowInGroupIndex = 0) { if (groupIndex < 0) continue; if (groupIndex == SheetLayoutInfo.MaxGroupsCount) break; RowsGroupInfo rowsGroupInfo = sheetLayoutInfo.RowsGroups[groupIndex]; if (rowsGroupInfo == null) { if ((newRowHeightInfo.Flags & CustomHeightMask) == 0) continue; rowsGroupInfo = new RowsGroupInfo(); sheetLayoutInfo.RowsGroups[groupIndex] = rowsGroupInfo; } int rowInfoIndex = rowsGroupInfo.Indices[newRowInGroupIndex]; RowHeightInfo lastRowHeightInGroup; if (rowInfoIndex == -1 || rowsGroupInfo.HeightInfos.Count < SheetLayoutInfo.MaxRowsCountInGroup) { lastRowHeightInGroup = GetRowHeightCore(sheetLayoutInfo, ((groupIndex - sheetLayoutInfo.GroupIndexDelta) << 4) + SheetLayoutInfo.MaxRowsCountInGroup - 1); Array.Copy(rowsGroupInfo.Indices, newRowInGroupIndex, rowsGroupInfo.Indices, newRowInGroupIndex + 1, SheetLayoutInfo.MaxRowsCountInGroup - 1 - newRowInGroupIndex); rowsGroupInfo.HeightInfos.Add(newRowHeightInfo); rowsGroupInfo.Indices[newRowInGroupIndex] = rowsGroupInfo.HeightInfos.Count - 1; } else { int lastIndex = rowsGroupInfo.Indices[SheetLayoutInfo.MaxRowsCountInGroup - 1]; lastRowHeightInGroup = rowsGroupInfo.HeightInfos[lastIndex]; Array.Copy(rowsGroupInfo.Indices, newRowInGroupIndex, rowsGroupInfo.Indices, newRowInGroupIndex + 1, SheetLayoutInfo.MaxRowsCountInGroup - 1 - newRowInGroupIndex); rowsGroupInfo.HeightInfos[lastIndex] = newRowHeightInfo; rowsGroupInfo.Indices[newRowInGroupIndex] = lastIndex; } newRowHeightInfo = lastRowHeightInGroup ?? CreateDefaultRowHeight(sheetLayoutInfo); } if ((newRowHeightInfo.Flags & CustomHeightMask) != 0 && groupIndex != SheetLayoutInfo.MaxGroupsCount) { SetRowHeight(((groupIndex - sheetLayoutInfo.GroupIndexDelta) << 4) + newRowInGroupIndex, newRowHeightInfo.Value, newRowHeightInfo.Flags, sheetLayoutInfo); } else { sheetLayoutInfo.MaxRowIndexNonDefault = Math.Min(sheetLayoutInfo.MaxRowIndexNonDefault + 1, SheetLayoutInfo.MaxRowsCount); } }
ู
ุฒูู public static void RemoveRow(SheetLayoutInfo sheetLayoutInfo, int rowIndex) { if (rowIndex >= sheetLayoutInfo.MaxRowIndexNonDefault) return; int realGroupIndex = rowIndex >> 4; int newRowInGroupIndex = rowIndex & 0xF; int groupIndex; for (groupIndex = realGroupIndex + sheetLayoutInfo.GroupIndexDelta; groupIndex < sheetLayoutInfo.RowsGroups.Count; groupIndex++, newRowInGroupIndex = 0) { if (groupIndex < -1) continue; if (groupIndex == -1) { sheetLayoutInfo.RowsGroups.Insert(0, null); sheetLayoutInfo.GroupIndexDelta++; groupIndex = 0; } if (groupIndex == SheetLayoutInfo.MaxGroupsCount) break; var newRowHeightInfo = groupIndex == SheetLayoutInfo.MaxGroupsCount - 1 ? null : GetRowHeightCore(sheetLayoutInfo, (groupIndex - sheetLayoutInfo.GroupIndexDelta + 1) << 4); RowsGroupInfo rowsGroupInfo = sheetLayoutInfo.RowsGroups[groupIndex]; if (rowsGroupInfo == null) { if (newRowHeightInfo == null || (newRowHeightInfo.Flags & CustomHeightMask) == 0) continue; rowsGroupInfo = new RowsGroupInfo(); sheetLayoutInfo.RowsGroups[groupIndex] = rowsGroupInfo; } if (newRowHeightInfo == null) { newRowHeightInfo = CreateDefaultRowHeight(sheetLayoutInfo); } int rowInfoIndex = rowsGroupInfo.Indices[newRowInGroupIndex]; if (rowInfoIndex == -1) { for (int i = newRowInGroupIndex; i < SheetLayoutInfo.MaxRowsCountInGroup - 1; i++) { rowsGroupInfo.Indices[i] = rowsGroupInfo.Indices[i + 1]; } rowsGroupInfo.HeightInfos.Add(newRowHeightInfo); rowsGroupInfo.Indices[SheetLayoutInfo.MaxRowsCountInGroup - 1] = rowsGroupInfo.HeightInfos.Count - 1; } else { for(int i = newRowInGroupIndex; i < rowsGroupInfo.HeightInfos.Count - 1; i++) { rowsGroupInfo.Indices[i] = rowsGroupInfo.Indices[i + 1]; } rowsGroupInfo.Indices[rowsGroupInfo.HeightInfos.Count - 1] = rowInfoIndex; rowsGroupInfo.HeightInfos[rowInfoIndex] = newRowHeightInfo; } } if(rowIndex <= sheetLayoutInfo.MinRowIndexNonDefault) { sheetLayoutInfo.MinRowIndexNonDefault = Math.Max(sheetLayoutInfo.MinRowIndexNonDefault - 1, 0); } }
ูู
ููู ุงูุนุซูุฑ ุนูู ุฌู
ูุน ุงูุชุนููู
ุงุช ุงูุจุฑู
ุฌูุฉ ุฃุนูุงู ุนูู ุฌูุซุจ
ุงูุงุณุชูุชุงุฌุงุช
ููุณุช ูุฐู ูู ุงูู
ุฑุฉ ุงูุฃููู ุงูุชู ููุงุฌุฆ ูููุง ุฑู
ุฒ Excel ุจุงูุญูู ุงูู
ุซูุฑุฉ ููุงูุชู
ุงู
. ูุฐู ุงูู
ุฑุฉ ุงูุชุดูุช ููู ูุฎุฒู ู
ุนููู
ุงุช ุญูู ู
ุฑุชูุนุงุช ุงูุตููู. ุฅุฐุง ูุงู ุงูู
ุฌุชู
ุน ู
ูุชู
ูุง ุ ูุนูุฏุฆุฐู ูู ุงูู
ูุงูุฉ ุงูุชุงููุฉ ุณุฃูุถุญ ููู ููุธุฑ Excel ุฅูู ุงุฑุชูุงุน ูุทุงู ุงูุฎูุงูุง (ุงูู
ูุณุฏ: ููุฌุฏ ุดูุก ู
ุดุงุจู ูุชุญูู SQRT ุ ููู ูุณุจุจ ู
ุง ุฏูู ุชุฎุฒูู ุงูู
ุจุงูุบ ู
ุคูุชูุง) ุ ูู
ููู ุฃู ุชุฑู ููู ููุทุจู ุฐูู ุนูู ุชุบููุฑ ุญุฌู
ุงูุฃุนุฏุงุฏ ุงูุตุญูุญุฉ. .