first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
package jxl.read.biff;
import common.Assert;
import common.Logger;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import jxl.CellFeatures;
import jxl.CellType;
import jxl.DateCell;
import jxl.NumberCell;
import jxl.biff.FormattingRecords;
import jxl.format.CellFormat;
class DateRecord implements DateCell, CellFeaturesAccessor {
private static Logger logger = Logger.getLogger(DateRecord.class);
private Date date;
private int row;
private int column;
private boolean time;
private DateFormat format;
private CellFormat cellFormat;
private int xfIndex;
private FormattingRecords formattingRecords;
private SheetImpl sheet;
private CellFeatures features;
private boolean initialized;
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy");
private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
private static final int nonLeapDay = 61;
private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT");
private static final int utcOffsetDays = 25569;
private static final int utcOffsetDays1904 = 24107;
private static final long secondsInADay = 86400L;
private static final long msInASecond = 1000L;
private static final long msInADay = 86400000L;
public DateRecord(NumberCell num, int xfi, FormattingRecords fr, boolean nf, SheetImpl si) {
this.row = num.getRow();
this.column = num.getColumn();
this.xfIndex = xfi;
this.formattingRecords = fr;
this.sheet = si;
this.initialized = false;
this.format = this.formattingRecords.getDateFormat(this.xfIndex);
double numValue = num.getValue();
if (Math.abs(numValue) < 1.0D) {
if (this.format == null)
this.format = timeFormat;
this.time = true;
} else {
if (this.format == null)
this.format = dateFormat;
this.time = false;
}
if (!nf && !this.time && numValue < 61.0D)
numValue++;
this.format.setTimeZone(gmtZone);
int offsetDays = nf ? 24107 : 25569;
double utcDays = numValue - offsetDays;
long utcValue = Math.round(utcDays * 86400.0D) * 1000L;
this.date = new Date(utcValue);
}
public final int getRow() {
return this.row;
}
public final int getColumn() {
return this.column;
}
public Date getDate() {
return this.date;
}
public String getContents() {
return this.format.format(this.date);
}
public CellType getType() {
return CellType.DATE;
}
public boolean isTime() {
return this.time;
}
public DateFormat getDateFormat() {
Assert.verify((this.format != null));
return this.format;
}
public CellFormat getCellFormat() {
if (!this.initialized) {
this.cellFormat = (CellFormat)this.formattingRecords.getXFRecord(this.xfIndex);
this.initialized = true;
}
return this.cellFormat;
}
public boolean isHidden() {
ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column);
if (cir != null && cir.getWidth() == 0)
return true;
RowRecord rr = this.sheet.getRowInfo(this.row);
if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed()))
return true;
return false;
}
protected final SheetImpl getSheet() {
return this.sheet;
}
public CellFeatures getCellFeatures() {
return this.features;
}
public void setCellFeatures(CellFeatures cf) {
this.features = cf;
}
}