Spread常用属性

Spread 常用属性

1 取得当前行号、列号。

int row=e.Row;
int count=e.Count;
或者:
int rowindex = fpSpread1.ActiveSheet.ActiveRowIndex;
int columnindex = fpSpread1.ActiveSheet.ActiveColumnIndex;

2 单击一行变颜色。

private void spdResult_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
{
//单击Spread列头时,什么也不处理

if(!e.ColumnHeader)
{
if(spdResult.Sheets[0].Rows.Count!=0)
{
for(int i=0;i<spdResult.Sheets[0].Rows.Count;i++)
{
spdResult.Sheets[0].Rows[i].BackColor=System.Drawing.Color.White;
}
int row=e.Row;
spdResult.Sheets[0].Rows[row].BackColor=System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(255)), ((System.Byte)(255)));
}
}
}

3 将Spread的单元格内容付值给一控件的Text

txtItemCD.Text = spdResult.Sheets[0].Cells[row,count].Text;

4 给Spread的指定单元格付值。

spdResult.Sheets[0].Cells[row,count].Text = txtItemCD.Text;

5 通过上下光标键改变选中行颜色

private void spdResult_LeaveCell(object sender, FarPoint.Win.Spread.LeaveCellEventArgs e)
{
//首先检查spread行数是否为0
if(spdResult.Sheets[0].Rows.Count==0)
{
return;
}
else
{
for(int i=0;i<spdResult.Sheets[0].Rows.Count;i++)
{
spdResult.Sheets[0].Rows[i].BackColor=System.Drawing.Color.White;
}
int row=e.NewRow;
spdResult.Sheets[0].Rows[row].BackColor=System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(255)), ((System.Byte)(255)));
}
}

6 下拉列表加载数据(ComBobox)
・ 列表追加(适合于数据量少的情况)

FarPoint.Win.Spread.CellType.ComboBoxCellType cb4 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
cb4.ListWidth = 96;
cb4.Editable = true;
cb4.MaxDrop = 10;
cb4.MaxLength = 1;
string[] priceTagList = new string[]{" 0 无"," 1 有"};
cb4.Items = priceTagList;
this.spdSetList.ActiveSheet.Columns[4].CellType = cb4;

・ 从数据库追加

FarPoint.Win.Spread.CellType.ComboBoxCellType cb12 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
cb12.ListWidth = 150;
cb12.Editable = true;
cb12.MaxDrop = 10;
cb12.MaxLength = 8;

//dsEmployee:数据集Dataset,已经加载好数据的Dataset
string[] employeeList = DataSetToArray(dsEmployee, 8);
cb12.Items = employeeList;
this.spdSetList.ActiveSheet.Columns[12].CellType = cb12;

private string[] DataSetToArray(DataSet ds, int BlankNum)
{
int i = 0;
int NumLength = 0;
string[] returnArray = new string[ds.Tables[0].Rows.Count];

DataRow foundRows = ds.Tables[0].Rows[ds.Tables[0].Rows.Count -1];
NumLength = foundRows[0].ToString().Length;

foreach(DataRow dr in ds.Tables[0].Rows)
{
returnArray[i] = dr[0].ToString().PadLeft(BlankNum, ' ') + " " + dr[1].ToString();
i++;
}
return returnArray;
}

7 Focus移动(跨列)

public frmProdSetDetail()
{
InitializeComponent();
IsMod = flag;

FarPoint.Win.Spread.InputMap im;
im = spdResult.GetInputMap(InputMapMode.WhenFocused);
im.Put(new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
im.Put(new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);

im = spdResult.GetInputMap(InputMapMode.WhenAncestorOfFocused);
im.Put(new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
im.Put(new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);
}

指定单元格获得焦点

this.fpSpread1.ActiveSheet.SetActiveCell(row,column);

8 事件触发顺序

_Enter _EnterCell _EditModeOn _EditChange _EditModeOff _LeaveCell

9 用隐藏列保存原始数据

10 设定列类型

private void SpreadSetting()
{
string[] ProductHandleTypeList = new string[]{" ","1 販売/仕入","2 販売","3 仕入"};

FarPoint.Win.Spread.CellType.ComboBoxCellType cb3 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
cb3.ListWidth = 100;
cb3.Editable = true;
cb3.MaxDrop = 5;
cb3.MaxLength = 1;
cb3.Items = ProductHandleTypeList;

this.spdResult.ActiveSheet.Columns[5].CellType = cb3;

//设置一般数据型

FarPoint.Win.Spread.CellType.NumberCellType nmbrcell = new FarPoint.Win.Spread.CellType.NumberCellType();
nmbrcell.ShowSeparator = false;
nmbrcell.DecimalPlaces = 0;
nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
nmbrcell.MaximumValue = 9999;
nmbrcell.MinimumValue = 1;
this.spdResult.ActiveSheet.Columns[13].CellType = nmbrcell;

//设置JAN

FarPoint.Win.Spread.CellType.NumberCellType nmbrcellJan = new FarPoint.Win.Spread.CellType.NumberCellType();
nmbrcellJan.ShowSeparator = false;
nmbrcellJan.DecimalPlaces = 0;
nmbrcellJan.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
nmbrcellJan.MaximumValue = 9999999999999;
nmbrcellJan.MinimumValue = 0;
this.fpSpread1.ActiveSheet.Columns[0].CellType = nmbrcellJan;
this.fpSpread1.ActiveSheet.Columns[0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;

//

FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType();
numberCellType1.ShowSeparator = true;
numberCellType1.DecimalPlaces = 0;
numberCellType1.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
numberCellType1.MaximumValue = 99999999;
numberCellType1.MinimumValue = 0;
this.spdResult.ActiveSheet.Columns[20].CellType = numberCellType1;

//%数的设定

FarPoint.Win.Spread.CellType.PercentCellType prctcell = new FarPoint.Win.Spread.CellType.PercentCellType();
prctcell.PercentSign = "%";
this.spdResult.ActiveSheet.Columns[33].CellType = prctcell;

//日期的设定

FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType();
datecell.MaximumDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
datecell.MinimumDate = new System.DateTime(2001, 1, 1, 0, 0, 0, 0);

this.spdResult.ActiveSheet.Columns[27,30].CellType = datecell;
}

11 列、单元格锁定

//锁定

this.fpSpread1.ActiveSheet.Columns[0,4].Locked = true;//锁定列范围

this.fpSpread1.ActiveSheet.Columns[0].Locked = true;//锁定单列


//解锁

this.fpSpread1.ActiveSheet.Columns[0,4].Locked = false;//解锁列范围

this.fpSpread1.ActiveSheet.Columns[0].Locked = false;

12 Spread追加行、列

//追加行

int rowindex = this.fpSpread1.ActiveSheet.Rows.Count;
this.fpSpread1.ActiveSheet.Rows.Add(rowindex,1);

//追加列

int columnindex = this.fpSpread1.ActiveSheet.Columns.Count;
this.fpSpread1.ActiveSheet.Columns.Add(columnindex,1);

13 行、列删除

//删除行

this.fpSpread1.ActiveSheet.Rows.Remove(startindex,count);

//追加列

this.fpSpread1.ActiveSheet.Columns.Remove(startindex,count);

14 button事件

private void spdSetList_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
{
int rowCount = e.Row;
int columnCount = e.Column;

if (e.Column == 16)
{
if (message.ShowMessage("ConfirmDelete", "選択したライン") == DialogResult.Yes)
{
string DeleteTag = this.spdSetList.ActiveSheet.Cells[rowCount, columnCount+1].Text.Trim();
if (DeleteTag == "0" || DeleteTag == "2")
{
this.spdSetList.ActiveSheet.Cells[rowCount, columnCount+1].Text = "3";
this.spdSetList.ActiveSheet.Cells[rowCount,columnCount+1].BackColor = clrWater;
this.spdSetList.ActiveSheet.Rows[rowCount].Visible = false;
}
else if (DeleteTag == "1")
{
this.spdSetList.ActiveSheet.Rows[rowCount].Remove();
}
}
}
}

关于Spread打印的一些属性用法__页眉页脚的使用
分类: VB Spread 2007-11-19 14:01 357人阅读 评论(0) 收藏 举报
页眉页脚的使用

使用属性
p_SpreadPrint.PrintHeader = headerstring
p_SpreadPrint.PrintFooter = headerstring

其中HeaderString是一个字符串,有一些预定义格式,如

/fn"MS Sans Serif"/fz"8.25"/fb0/fi0/fu0/fk0/c中
/fn"MS Sans Serif"/fz"8.25"/fb0/fi0/fu0/fk0/l左
/fn"MS Sans Serif"/fz"18"/fb0/fi0/fu0/fk0/r右

显然有:

/fn"字体"
/fz"字体大小点数"
/c 意为中间部分 类似的 /l /r就不用说了
如果标题有两行以上,则在一行的最后加上 /n ,注意前面要有空格,否则似乎会出错。

主要代码可用调试模式在以下范例窗口中看到
frmPrnHeaderFoolter,这个是我自己改过名了,原来的名字自己去找一找吧,就是Demo Overview中设置页眉页的部分。

spread.CellType = CellTypeStaticText
'自动折行
spread.TypeTextWordWrap = True

原文地址:https://www.cnblogs.com/renfeng/p/3652661.html