VSTO---excel编程 [待续] [12月5日更新,详见文档下面]
最近比较闲了,考试也快要到了。但是编程技术方面还是不能掉啊.
现在开始VSTO编程之旅了。这个话题是连Blog的。所以有兴趣的Blog之友,技术之士,可以匿名或者非匿名的评论,交流。
对了,下面的代码都是本人写的,和积累的,每一个功能都是以Method的形式进行粘贴的,一般只有你懂的话,就可以直接调用的,当然一般都是从基础开始。
如果想和本人进行交流的话,我的首页上有我的MSN。。。。
正在话归正题----
VSTO[Excel]
//新建Sheet
private void CreditSheet()
{
Excel.Workbook newWorkbook = this.Application.Workbooks.Add(missing);
}
//打开Sheet
private void OpenSheet()
{
this.Application.Workbooks.Open(this.ImputFolderName.Text.ToString(), missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
}
//连续在多个单元格中显示文字,并调整各自单元格的宽度
private void AimatA1RangeUsingNameRange()
{
//设定一个NamedRange
NamedRange textInCell;
textInCell = this.Controls.AddNamedRange(this.get_Range("A8", missing), "EvaluateDemo");
//重新规定 NameRange [A8-D8]
textInCell.RefersTo = "=Sheet1!$A$8:$D$8";
//evaluate
textInCell.Value2 = "Hello world!";
//自动调整单元格
textInCell.Columns.AutoFit();
}
**此Value2 属性与 Value 属性的唯一区别在于,Value2 不是参数化属性。
private void FindMarthaInTheRange()
{
this.Range["H1", missing].Value2 = "Martha jone ";
NamedRange auto_HR =
this.Controls.AddNamedRange(this.Range["H2", missing],
"auto_HR");
//根据H1中的字符串自动从头查找并复制同样的值
auto_HR.Value2 = auto_HR.AutoComplete("Ma");
//自动调整单元格
auto_HR.Columns.AutoFit();
}
*在这里Martha jone 不能任意查找,意思就是AutoComplete(参数值),只能从头匹配,不能任意匹配。
//合并单元格
private void MergeRange()
{
NamedRange rangeOne = this.Controls.AddNamedRange(this.Range["A12", "D27"], "rangeOne");
rangeOne.Select();
rangeOne.Merge(false);
}
//设置Cells边框
private void setBordersAndInterior()
{
//第一种写法
NamedRange bordersRange = this.Controls.AddNamedRange(this.Range["E12","F12"], "borderRange");
bordersRange.Borders.LineStyle = Excel.XlLineStyle.xlSlantDashDot;
//Set Color
bordersRange.Interior.Color = 0xFF00;
//第二种写法
for (int i = 1; i <= 7; i++)
{
base.Range[base.Cells[i, 7], base.Cells[i, 8]].Borders.LineStyle = i;
}
}
AutoCalculate
现在开始VSTO编程之旅了。这个话题是连Blog的。所以有兴趣的Blog之友,技术之士,可以匿名或者非匿名的评论,交流。
对了,下面的代码都是本人写的,和积累的,每一个功能都是以Method的形式进行粘贴的,一般只有你懂的话,就可以直接调用的,当然一般都是从基础开始。
如果想和本人进行交流的话,我的首页上有我的MSN。。。。
正在话归正题----
VSTO[Excel]
//新建Sheet
private void CreditSheet()
{
Excel.Workbook newWorkbook = this.Application.Workbooks.Add(missing);
}
//打开Sheet
private void OpenSheet()
{
this.Application.Workbooks.Open(this.ImputFolderName.Text.ToString(), missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
}
//连续在多个单元格中显示文字,并调整各自单元格的宽度
private void AimatA1RangeUsingNameRange()
{
//设定一个NamedRange
NamedRange textInCell;
textInCell = this.Controls.AddNamedRange(this.get_Range("A8", missing), "EvaluateDemo");
//重新规定 NameRange [A8-D8]
textInCell.RefersTo = "=Sheet1!$A$8:$D$8";
//evaluate
textInCell.Value2 = "Hello world!";
//自动调整单元格
textInCell.Columns.AutoFit();
}
**此Value2 属性与 Value 属性的唯一区别在于,Value2 不是参数化属性。
private void FindMarthaInTheRange()
{
this.Range["H1", missing].Value2 = "Martha jone ";
NamedRange auto_HR =
this.Controls.AddNamedRange(this.Range["H2", missing],
"auto_HR");
//根据H1中的字符串自动从头查找并复制同样的值
auto_HR.Value2 = auto_HR.AutoComplete("Ma");
//自动调整单元格
auto_HR.Columns.AutoFit();
}
*在这里Martha jone 不能任意查找,意思就是AutoComplete(参数值),只能从头匹配,不能任意匹配。
//合并单元格
private void MergeRange()
{
NamedRange rangeOne = this.Controls.AddNamedRange(this.Range["A12", "D27"], "rangeOne");
rangeOne.Select();
rangeOne.Merge(false);
}
//设置Cells边框
private void setBordersAndInterior()
{
//第一种写法
NamedRange bordersRange = this.Controls.AddNamedRange(this.Range["E12","F12"], "borderRange");
bordersRange.Borders.LineStyle = Excel.XlLineStyle.xlSlantDashDot;
//Set Color
bordersRange.Interior.Color = 0xFF00;
//第二种写法
for (int i = 1; i <= 7; i++)
{
base.Range[base.Cells[i, 7], base.Cells[i, 8]].Borders.LineStyle = i;
}
}
AutoCalculate
12月5日更新(快考试,要加油了)
问题1:为什么在单元格中输入一个19位或者更多位的数字,显示时数字不会以16进制的形式显示,如:1111E+9。想实现“以文本形式显示数字”?
答:只要设置一下此单元格NumberFormatLocal ="@" 即可
ex:
this.Range["A35", missing].NumberFormatLocal = "@";
this.Range["A35", missing].Value2 = "111111111111111111111111111111111111111111”;
问题2:想把当前活动窗口网格线去掉?
答:设置DisplayGridlines 为False即可。this.Application.ActiveWindow.DisplayGridlines = false;
问题1:为什么在单元格中输入一个19位或者更多位的数字,显示时数字不会以16进制的形式显示,如:1111E+9。想实现“以文本形式显示数字”?
答:只要设置一下此单元格NumberFormatLocal ="@" 即可
ex:
this.Range["A35", missing].NumberFormatLocal = "@";
this.Range["A35", missing].Value2 = "111111111111111111111111111111111111111111”;
问题2:想把当前活动窗口网格线去掉?
答:设置DisplayGridlines 为False即可。this.Application.ActiveWindow.DisplayGridlines = false;