C#中操作Excel(3)—— Excel中操作文本、图片和批注

一 引言

       本文主要介绍向Excel中插入文本和图片的方法。相信大家对Excel的模型对象都有了一定的了解,和Word相似,Excel中插入文本和图片也需要依靠Range对象。但是与Word对象不同,Excel的Range对象实际上指的是Excel单元格的范围,而非Word的一段字符的范围。在实验之前,我们还是在D盘新建一个名叫Test.xlsx的Excel文件作为本次试验的对象,下面就向Excel中插入文本和图片分别进行介绍。

二 插入文本

1.1 获取Range对象

       参照上一文的内容我们打开D:\\Test.xlsx文档,然后获取sheet对象:
Application app = new.Application();
app.Visible = true;
Workbook book = app.Workbooks.Add("D:\\Test.xlsx");
Worksheet sheet = book.Worksheets[1];

       通过sheet对象的get_Range()方法,我们可以获取需要插入文本的Range对象:
Range range = sheet.get_Range("B2", "C4");
       get_Range()接收两个参数,分别是起始单元格的位置和结束单元格的位置,上述语句我们获得了一个从B2到C5的4行2列的Range

1.2 写入文本

        在写入文本之前,我们需要先准备一个要插入的数据源:
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
DataRow row1 = dt.NewRow();
row1["Name"] = "Tom";
row1["Marks"] = "96";
dt.Rows.Add(row1);
DataRow row2 = dt.NewRow();
row2["Name"] = "Jerry";
row2["Marks"] = "91";
dt.Rows.Add(row2);
DataRow row3 = dt.NewRow();
row3["Name"] = "Pooly";
row3["Marks"] = "100";
dt.Rows.Add(row3);

        接下来我们利用二层循环向Range中插入数据:
for (int i = 0; i < dt.Rows.Count;i++ )
{
for (int j = 0; j < dt.Columns.Count;j++ )
{
range[j+1][i+1] = dt.Rows[i][j];
}
}

        这里需要特别注意的是range对象利用[]操作符来取每个单元格,但是range[][]的顺序是range[列号][行号],如果不出意外,在表格中会出现以下数据:


1.3 设置文本格式


        下面介绍下设置Excel中文本格式的方法,由于格式的种类很多但是基本的设置方法是一样的,这里只列举几种常用的格式。

设置文本字体。

        把字体设置成微软雅黑并加粗。
range.Font.Name = "微软雅黑";
range.Font.Bold = true;

设置单元格合并

        合并B1到C1的单元格,并填写文本“成绩单”:
Range range1 = sheet.get_Range("B1", "C1");
range1.Merge();
range1[1][1] = "成¨¦绩¡§单Ì£¤";

设置表格框线

range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash;

设置居中

range.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//垂直居中
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//水平居中

经过上面的设置之后,excel变成下面的样子:


三、插入图片


        利用WorkSheet的Shapes属性可以插入图片,该属性和Word中的InnerShapes类似,我们也可以利用它来插入图表等等。在插入图片之前,我们还是需要使用range的Select()方法定位当前的鼠标位置。
range1.Select();
sheet.Shapes.AddPicture("D:\\Test.jpg", MsoTriState.msoFalse,MsoTriState.msoTrue, 10, 10, 150, 150); 
        执行过后,效果如下:


四、操作批注

4.1 获取所有批注:

Excel.Comments comments = sheet.Comments

4.2 获取批注的内容:

string content = comment.Text();
或者

content = comment.Shape.AlternativeText;

4.3 获取被批注的单元格

Excel.Range range = comment.Parent.Cells[1];



Github位置:
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本项目:
git clone git@github.com:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L12



  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值