Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/Exceltk/Exceltk_vs.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
<Compile Include="Reader\Binary\XlsBiffRow.cs" />
<Compile Include="Reader\Binary\XlsBiffSimpleValueRecord.cs" />
<Compile Include="Reader\Binary\XlsBiffSST.cs" />
<Compile Include="Reader\Binary\XlsBiffStream.cs" />
<Compile Include="Reader\Binary\XlsBiffUncalced.cs" />
<Compile Include="Reader\Binary\XlsBiffWindow1.cs" />
<Compile Include="Reader\Binary\XlsCellRangeAddress.cs" />
Expand Down
111 changes: 0 additions & 111 deletions src/Exceltk/Reader/Binary/XlsBiffStream.cs

This file was deleted.

41 changes: 24 additions & 17 deletions src/Exceltk/Reader/ExcelBinaryReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
using System.IO;
using System.Text;
using Exceltk.Reader.Binary;
using Exceltk.Reader.Package;
using Exceltk.Reader.Parser;

namespace Exceltk.Reader {
/// <summary>
Expand Down Expand Up @@ -49,7 +51,7 @@ public class ExcelBinaryReader : IExcelDataReader {
private int m_maxRow;
private bool m_noIndex;
private List<XlsWorksheet> m_sheets;
private XlsBiffStream m_stream;
private BinaryPackageParser m_stream;
private ushort m_version;
private DataSet m_workbookData;

Expand Down Expand Up @@ -128,6 +130,11 @@ public void Close() {
#endregion



private static XlsBiffRecord RecordOf(BinaryPackage package) {
return package==null ? null : package.Record;
}

#region Private methods

private int ResultsCount {
Expand All @@ -150,7 +157,7 @@ private bool Read() {

private int findFirstDataCellOffset(int startOffset) {
//seek to the first dbcell record
XlsBiffRecord record=m_stream.ReadAt(startOffset);
XlsBiffRecord record=RecordOf(m_stream.ReadAt(startOffset));
while (!(record is XlsBiffDbCell)) {
if (m_stream.Position >= m_stream.Size) {
return -1;
Expand All @@ -161,7 +168,7 @@ private int findFirstDataCellOffset(int startOffset) {
}

try {
record=m_stream.Read();
record=RecordOf(m_stream.Read());
} catch {
return -2;
}
Expand All @@ -173,7 +180,7 @@ private int findFirstDataCellOffset(int startOffset) {
int offs=startCell.RowAddress;

do {
row=m_stream.ReadAt(offs) as XlsBiffRow;
row=RecordOf(m_stream.ReadAt(offs)) as XlsBiffRow;
if (row==null){
break;
}
Expand Down Expand Up @@ -205,7 +212,7 @@ private void readWorkBookGlobals() {
return;
}

m_stream=new XlsBiffStream(m_hdr,
m_stream=new BinaryPackageParser(m_hdr,
workbookEntry.StreamFirstSector,
workbookEntry.IsEntryMiniStream,
dir,this);
Expand All @@ -214,7 +221,7 @@ private void readWorkBookGlobals() {

m_stream.Seek(0, SeekOrigin.Begin);

XlsBiffRecord rec=m_stream.Read();
XlsBiffRecord rec=RecordOf(m_stream.Read());
var bof=rec as XlsBiffBOF;

if (bof==null||bof.Type!=BIFFTYPE.WorkbookGlobals) {
Expand All @@ -227,7 +234,7 @@ private void readWorkBookGlobals() {
m_version=bof.Version;
m_sheets=new List<XlsWorksheet>();

while (null!=(rec=m_stream.Read())) {
while (null!=(rec=RecordOf(m_stream.Read()))) {
switch (rec.ID) {
case BIFFRECORDTYPE.INTERFACEHDR:
m_globals.InterfaceHdr=(XlsBiffInterfaceHdr)rec;
Expand Down Expand Up @@ -321,20 +328,20 @@ private bool readWorkSheetGlobals(XlsWorksheet sheet, out XlsBiffIndex idx, out
m_stream.Seek((int)sheet.DataOffset, SeekOrigin.Begin);

// Read BOF
var bof=m_stream.Read() as XlsBiffBOF;
var bof=RecordOf(m_stream.Read()) as XlsBiffBOF;
if (bof==null||bof.Type!=BIFFTYPE.Worksheet) {
return false;
}

// Read Index
XlsBiffRecord rec=m_stream.Read();
XlsBiffRecord rec=RecordOf(m_stream.Read());
if (rec==null)
return false;
if (rec is XlsBiffIndex) {
idx=rec as XlsBiffIndex;
} else if (rec is XlsBiffUncalced) {
// Sometimes this come before the index...
idx=m_stream.Read() as XlsBiffIndex;
idx=RecordOf(m_stream.Read()) as XlsBiffIndex;
}

if (idx!=null) {
Expand All @@ -346,7 +353,7 @@ private bool readWorkSheetGlobals(XlsWorksheet sheet, out XlsBiffIndex idx, out
XlsBiffDimensions dims=null;

do {
trec=m_stream.Read();
trec=RecordOf(m_stream.Read());
if (trec.ID==BIFFRECORDTYPE.DIMENSIONS) {
dims=(XlsBiffDimensions)trec;
break;
Expand All @@ -363,7 +370,7 @@ private bool readWorkSheetGlobals(XlsWorksheet sheet, out XlsBiffIndex idx, out
while (rowRecord==null) {
if (m_stream.Position>=m_stream.Size)
break;
XlsBiffRecord thisRec=m_stream.Read();
XlsBiffRecord thisRec=RecordOf(m_stream.Read());

if (thisRec is XlsBiffEOF)
break;
Expand Down Expand Up @@ -402,7 +409,7 @@ private bool readWorkSheetGlobals(XlsWorksheet sheet, out XlsBiffIndex idx, out
while (true) {
if (m_stream.Position>=m_stream.Size)
break;
XlsBiffRecord thisRecord=m_stream.Read();
XlsBiffRecord thisRecord=RecordOf(m_stream.Read());

if (thisRecord is XlsBiffEOF) {
break;
Expand All @@ -427,7 +434,7 @@ private void DumpBiffRecords() {
int startPos=m_stream.Position;

do {
rec=m_stream.Read();
rec=RecordOf(m_stream.Read());
} while (rec!=null&&m_stream.Position<m_stream.Size);

m_stream.Seek(startPos, SeekOrigin.Begin);
Expand All @@ -437,7 +444,7 @@ private bool readWorkSheetRow() {
m_cellsValues=new XlsCell[m_maxCol];

while (m_cellOffset<m_stream.Size) {
XlsBiffRecord rec=m_stream.ReadAt(m_cellOffset);
XlsBiffRecord rec=RecordOf(m_stream.ReadAt(m_cellOffset));

m_cellOffset+=rec.Size;

Expand Down Expand Up @@ -691,7 +698,7 @@ private bool moveToNextRecordNoIndex() {
return false;
}

XlsBiffRecord record=m_stream.Read();
XlsBiffRecord record=RecordOf(m_stream.Read());
if (record is XlsBiffEOF) {
return false;
}
Expand All @@ -709,7 +716,7 @@ private bool moveToNextRecordNoIndex() {
return false;
}

XlsBiffRecord record=m_stream.Read();
XlsBiffRecord record=RecordOf(m_stream.Read());
if (record is XlsBiffEOF) {
return false;
}
Expand Down
Loading
Loading