12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.InteropServices;
- using Biff8Excel.Interfaces;
- namespace Biff8Excel.Records
- {
- [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
- struct RecordDBCell
- {
- public ushort opcode;
- public ushort length;
- public uint RowOffset;
- }
- public class DBCell : IRecords
- {
- RecordDBCell dbcell;
- int m_NumberOfCellOffsets;
- const int STRUCT_DBCELL_LENGTH = 8; // ushort 2 + ushort 2 + uint 4 = 8
- int[] m_CellOffset;
- //List<int> m_CellOffset;
- public DBCell()
- {
- dbcell.opcode = 0xD7;
- }
- public ushort Id
- {
- get {return dbcell.opcode ;}
- }
- public ushort RecordSize
- {
- get { return (ushort)(STRUCT_DBCELL_LENGTH + (m_NumberOfCellOffsets * 4)); }
- }
- public int[] CellOffsets
- //public List<int> CellOffsets
- {
- internal set
- {
- m_NumberOfCellOffsets = value.Length;
- //m_NumberOfCellOffsets = value.Count;
- m_CellOffset = value;
- }
- get { return m_CellOffset; }
- }
- public uint RowOffset
- {
- set {dbcell.RowOffset = value;}
- get { return dbcell.RowOffset; }
- }
- #region IRecords ³ÉÔ±
- public byte[] GetByte()
- {
- if (m_CellOffset == null)
- throw new Biff8ExcelException("ÏÈÉ趨CellOffsets");
- byte[] tmp, r;
- int ln = STRUCT_DBCELL_LENGTH + (2 * m_NumberOfCellOffsets);
- r = new byte[ln];
- dbcell.length = (ushort)(ln - 4);
- tmp = Globals.GetStructToBytes(dbcell);
- tmp.CopyTo(r, 0);
- int pos = 8;
- //for (int i = 0; i < m_CellOffset.Length; i++, pos += 2)
- for (int i = 0; i < m_CellOffset.Length ; i++, pos += 2)
- {
- tmp = BitConverter.GetBytes(m_CellOffset[i]);
- Array.Copy(tmp, 0, r, pos, 2);
- //BitConverter.GetBytes( m_CellOffset[i]).CopyTo( r,pos);
- }
- return r;
- }
- #endregion
- }
- }
|