转至元数据结尾
转至元数据起始

基于任务的帮助文档要求你具有使用VisualStudio.NET 进行编程的经验,完成本文档中的任务后,你就可以创建工程来展示 Excelfor.NET的特性,熟悉和了解Excelfor.NET的应用场景。
每一个基于任务的帮助话题都假定你已经创建了一个新的 .NET 项目,并且已经添加了合适的命名空间引用语句,比如
C# 中,使用 (usingC1.C1Excel;), 而 Visual Basic则使用 (ImportsC1.C1Excel)。

添加内容到工作表

按照下面的步骤将创建一个新的工作表,并且添加值到第一列的前十个单元格:

  1. 在工具箱上双击C1XLBook 组件,将会添加该组件到表单上。
  2. 添加值到第一列的前十个单元格

Visual Basic

Visual Basic

Dim sheet As XLSheet = C1XLBook1.Sheets(0)
Dim i As Integer For i = 0 To 9
sheet(i,0).Value = i + 1
Next i

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="93077bf8-1edb-4cb8-8975-98b00241aeb7"><ac:plain-text-body><![CDATA[

XLSheet sheet = c1XLBook1.Sheets[0]; for (int i = 0; i <= 9; i++) { sheet[i,0].Value = i + 1;
]]></ac:plain-text-body></ac:structured-macro>
}

  1. 保存文件,并且使用 Excel 打开该文件:

Visual Basic

Visual Basic

C1XLBook1.Save("c:\mybook.xls")
System.Diagnostics.Process.Start("C:\mybook.xls")

C#

C#

c1XLBook1.Save(@"c:\mybook.xls");
System.Diagnostics.Process.Start(@"C:\mybook.xls");

合并单元格

通过C1Excel 的 MergedCells 属性可以合并指定区域的单元格,该属性通常被用来在工作表上检测,创建以及删除合并
的单元格。每一个合并的单元格区域都会用一个C1.C1Excel.XLCellRange 对象来代表。添加删除单元格行或者单元格列,合并的单元格会被保留。
按照下面的步骤进行单元格合并:

  1. 在工具箱上双击C1XLBook 组件,将会添加该组件到表单上。
  2. 按照下面的代码,先创建两个单元格区域(_ColRange和_RowRange),然后添加这两个区域到MergedCells 中,最后给合并的单元格添加样式。你可以把这些代码写在Form1_Load的事件处理函数中,代码如下:

C#

C#

private void Form1_Load(object sender, EventArgs e)
{
//选择需要合并的单元格区域
XLCellRange _ColRange = new C1.C1Excel.XLCellRange(4, 6, 0, 8);
XLCellRange _RowRange = new C1.C1Excel.XLCellRange(9, 21, 3, 4);
// 为合并的单元格设定文本
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ceab1ed6-b583-464d-8df9-fe6ee5d4ae94"><ac:plain-text-body><![CDATA[ c1XLBook1.Sheets[0][4, 0].Value = "Merged Cells"; c1XLBook1.Sheets[0][9, 3].Value = "Merged Cells";
]]></ac:plain-text-body></ac:structured-macro>
//合并单元格
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="f644b8bb-51d8-4e91-9f94-ed8d2c71f27b"><ac:plain-text-body><![CDATA[ c1XLBook1.Sheets[0].MergedCells.Add(_ColRange);

]]></ac:plain-text-body></ac:structured-macro>


c1XLBook1.Sheets[0].MergedCells.Add(_RowRange);
<span style="color: #008000">//定义样式,并且应用样式到合并单元格</span>
XLStyle _Colstyle = new C1.C1Excel.XLStyle(c1XLBook1);
_Colstyle.BackColor = Color.Yellow;
XLStyle _Rowstyle = new XLStyle(c1XLBook1); _Rowstyle.BackColor = Color.LightBlue; c1XLBook1.Sheets[0][4, 0].Style = _Colstyle; c1XLBook1.Sheets[0][9, 3].Style = _Rowstyle;
<span style="color: #008000">//保存并且打开工作薄</span>
c1XLBook1.Save(@"c:\mybook.xls"); System.Diagnostics.Process.Start(@"C:\mybook.xls"); }


格式化单元格

完成下面步骤:

  1. 在工具箱上双击C1XLBook 组件,将会添加该组件到表单上。
  2. 创建一个新的样式,然后设定样式属性:

Visual Basic

Visual Basic

Dim style1 As New XLStyle(C1XLBook1) style1.ForeColor = Color.Gold style1.BackColor = Color.Blue style1.Format = "$ .00"

C#

C#

XLStyle style1 = new XLStyle(c1XLBook1); style1.ForeColor = Color.Gold; style1.BackColor = Color.Blue; style1.Format = "$ .00";

  1. 给工作表的第一列单元格添加内容和样式:

Visual Basic

Visual Basic

Dim sheet As XLSheet = C1XLBook1.Sheets(0)
Dim i As Integer For i = 0 To 9 sheet(i,0).Value = i + 1 sheet(i, 0).Style = style1
Next i

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e2a792f3-bcb9-4778-9c1e-b4aba3e55bca"><ac:plain-text-body><![CDATA[

C1.C1Excel.XLSheet sheet = c1XLBook1.Sheets[0]; int i; for (i = 0; i <= 9; i++) { sheet[i,0].Value = i + 1; sheet[i, 0].Style = style1;
]]></ac:plain-text-body></ac:structured-macro>
}

  1. 保存文件,然后使用 Excel 打开该文件。

Visual Basic

Visual Basic

C1XLBook1.Save("c:\mybook.xls")
System.Diagnostics.Process.Start("C:\mybook.xls")

C#

C#

c1XLBook1.Save(@"c:\mybook.xls"); System.Diagnostics.Process.Start(@"C:\mybook.xls");

在工作薄之间拷贝单元格行

按照下面的步骤可以从一个工作薄中拷贝一些单元格行到另一个工作薄:

  1. 加载一个现存的工作薄:

Visual Basic

Visual Basic

Dim wb As New C1XLBook() wb.Load("C:\test.xls")

C#

C#

C1XLBook wb = new C1XLBook(); wb.Load(@"C:\test.xls");

  1. 创建一个新的工作表(XLSheet)对象

Visual Basic

Visual Basic

Dim xb As New C1XLBook()

xb.Sheets.Add("Test")
C#

C#

C1XLBook xb = new C1XLBook(); xb.Sheets.Add("Test");

  1. 逐行从现有的工作薄中拷贝数据,然后复制到新的工作表:

Visual Basic

Visual Basic

Dim source As XLSheet = wb.Sheets(0)
Dim dest As XLSheet = xb.Sheets("Test")
Dim row As Integer, col As Integer
For row = 0 To source.Rows.Count - 1 For col = 0 To source.Columns.Count - 1 dest(row, col).Value = source(row, col).Value Next col
Next row

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="169e7fc3-8e94-4c49-9c99-a9fa6050693a"><ac:plain-text-body><![CDATA[

XLSheet source = wb.Sheets[0]; XLSheet dest = xb.Sheets("Test"); for (int row = 0; row <= source.Rows.Count - 1; row+) { for (int col = 0; col <= source.Columns.Count - 1; col+) { dest[row, col].Value = source[row, col].Value; }
]]></ac:plain-text-body></ac:structured-macro>
}

  1. 保存文件,使用 Excel 打开新创建的文件:

Visual Basic

Visual Basic

xb.Save("C:\test2.xls") System.Diagnostics.Process.Start("C:\test2.xls")

C#

C#

xb.Save(@"c:\test2.xls"); System.Diagnostics.Process.Start(@"C:\test2.xls");

添加图片到单元格

按照下面的方法可以添加图片到单元格或者工作表,点击下面的链接可以看见详细的步骤:方法方法1: 直接给单元格的直接给单元格的 Value 属性赋值一个图片对象。属性赋值一个图片对象。
按照这个方法添加到工作表的图片会保持原始尺寸,图片的左上角会对齐单元格的左上角。

  1. 加载一个现存的工作薄,创建一个新的工作表,并且添加内容。

Visual Basic

Visual Basic

Dim wb As New C1XLBook
wb.Load("C:\Project\WorkBook1.xls")

C#

C#

C1XLBook wb = new C1XLBook(); wb.Load(@"C:\Project\WorkBook1.xls");

  1. 加载图片,并且赋给单元格的Value属性。

Visual Basic

Visual Basic

Dim img As Image = Image.FromFile("C:\Project\MyImage.bmp") Dim sheet As XLSheet = wb.Sheets("Forecasting Report") sheet(0, 0).Value = img

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="edc371f0-172b-4b62-aaf2-5285cfcb2bed"><ac:plain-text-body><![CDATA[

Image img = Image.FromFile(@"C:\Project\MyImage.bmp"); XLSheet sheet = wb.Sheets("Forecasting Report"); sheet[0,0].Value = img;

]]></ac:plain-text-body></ac:structured-macro>

  1. 保存文件,然后使用 Excel 打开该文件:

Visual Basic

Visual Basic

wb.Save("C:\Project\WorkBook1.xls ") System.Diagnostics.Process.Start("C:\Project\WorkBook1.xls")

C#

C#

wb.Save(@"C:\Project\WorkBook1.xls"); System.Diagnostics.Process.Start(@"C:\Project\WorkBook1.xls");

在这个例子中图片会作为第一个单元格的值,并且保持其原有尺寸出现在单元格中。

方法方法 2: 创建一个新的创建一个新的XLPictureShape 对象,设置属性,然后将该对象设置为单元格的对象,设置属性,然后将该对象设置为单元格的 Value 属性。属性。
使用这个方法添加的图片,开发人员可以改变大小,旋转角度,透明度,对比度以及边框等等。

  1. 加载现有的工作薄,添加一个新的工作表,并且增加一些内容。

Visual Basic

Visual Basic

Dim wb As New C1XLBook
wb.Load("C:\Project\WorkBook1.xls")

C#

C#

C1XLBook wb = new C1XLBook(); wb.Load(@"C:\Project\WorkBook1.xls");

  1. 创建一个XLPictureShape对象,更改属性,然后赋给单元格的值属性。

Visual Basic

Visual Basic

Dim img As Image = Image.FromFile("C:\Project\MyImage.bmp") Dim pic As New XLPictureShape(img, 1500, 1500) pic.Rotation = 30.0F pic.LineColor = Color.DarkRed pic.LineWidth = 100
' 设定图片到工作表的第一个单元格
Dim sheet As XLSheet = wb.Sheets("Forecasting Report") sheet(0, 0).Value = pic

C#

C#

Image img = Image.FromFile(imageFileName); XLPictureShape pic = new XLPictureShape(img, 1500, 1500); pic.Rotation = 30.0f;

pic.LineColor = Color.DarkRed; pic.LineWidth = 100;
// 设定图片到工作表的第一个单元格
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a7d4a10b-9fc9-4c28-b0cc-a5b94ac35b90"><ac:plain-text-body><![CDATA[XLSheet sheet = wb.Sheets("Forecasting Report"); sheet[0,0].Value = pic;

]]></ac:plain-text-body></ac:structured-macro>

  1. 保存工作薄,然后使用 Excel 打开:

Visual Basic

Visual Basic

wb.Save("C:\Project\WorkBook1.xls ") System.Diagnostics.Process.Start("C:\Project\WorkBook1.xls")

C#

C#

wb.Save(@"C:\Project\WorkBook1.xls"); System.Diagnostics.Process.Start(@"C:\Project\WorkBook1.xls");

在这个例子中图片将会作为第一个单元格的值,然后旋转 30°,添加深红色的边框。 由于我们已经指定了这个图片的位置,它并不会出现在第一个单元格中。

方法方法3: 创建一个创建一个XLPictureShape 对象,设定其属性,然后添加该对象到工作表的对象,设定其属性,然后添加该对象到工作表的ShapeCollection 集合中。集合中。
这个方法使用XLPictureShape 对象的构造器来指定图片的边界,这个图形对象被直接添加到工作表的ShapeCollection 集合中,而不是绑定到单元格上面。

  1. 加载现有的工作薄,添加一个新的工作表,并且增加一些内容。

Visual Basic

Visual Basic

Dim wb As New C1XLBook
wb.Load("C:\Project\WorkBook1.xls")

C#

C#

C1XLBook wb = new C1XLBook(); wb.Load(@"C:\Project\WorkBook1.xls");

  1. 创建一个XLPictureShape对象,更改属性,然后添加到工作表的 ShapeCollection 集合中去

Visual Basic

Visual Basic

Dim img As Image = Image.FromFile("C:\Project\MyImage.bmp") Dim pic As New XLPictureShape(img, 3000, 3500, 2500, 900) pic.Rotation = 30.0F pic.LineColor = Color.DarkRed pic.LineWidth = 100 ' add the pic to specified sheet's ShapeCollection Dim sheet As XLSheet = wb.Sheets("Forecasting Report") sheet.Shapes.Add(pic)

C#

C#

Image img = Image.FromFile(@"C:\Project\MyImage.bmp"); XLPictureShape pic = new XLPictureShape(img, 3000, 3500, 2500, 900); pic.Rotation = 30.0f; pic.LineColor = Color.DarkRed; pic.LineWidth = 100; // add the pic to specified sheet's ShapeCollection XLSheet sheet = wb.Sheets("Forecasting Report"); sheet.Shapes.Add(pic)

  1. 保存工作薄,然后使用 Excel 打开:

Visual Basic

Visual Basic

wb.Save("C:\Project\WorkBook1.xls ") System.Diagnostics.Process.Start("C:\Project\WorkBook1.xls")

C#

C#

wb.Save(@"C:\Project\WorkBook1.xls"); System.Diagnostics.Process.Start(@"C:\Project\WorkBook1.xls");

在这个例子中创建的图形对象会被添加到工作表的ShapeCollection集合中,而第一个单元格的值并不会改变。然后我们指定图形对象的高度,宽度以及水平和竖直位置。

添加批注到单元格

完成以下步骤添加批注到单元格:

  1. 在工具箱上双击C1XLBook 组件,将会添加该组件到表单上。
  2. 按照下面的代码给指定单元格添加文本:

Visual Basic

Visual Basic

C1XLBook1.Sheets(0)(2, 3).Value = "test"

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="cc1db4dc-4b91-4a97-8b71-ccc5b13f797c"><ac:plain-text-body><![CDATA[

c1XLBook1.Sheets[0][2, 3].Value = "test";

]]></ac:plain-text-body></ac:structured-macro>

  1. 添加批注到工作表的XLCommentCollection集合,然后构造一个矩形区域来显示批注:

Visual Basic

Visual Basic

C1XLBook1.Sheets(0).Comments.Add(2, 3, "John", "Test comment")
C1XLBook1.Sheets(0).Comments(0).TextBox.Rectangle = New Rectangle(220, 210, 1900, 1200)

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3b2d5956-8d53-40c1-83fa-14fd17a2b8f3"><ac:plain-text-body><![CDATA[

c1XLBook1.Sheets[0].Comments.Add(2, 3, "John", "Test comment");
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="545865d1-a557-490b-87f3-82d125d56b55"><ac:plain-text-body><![CDATA[c1XLBook1.Sheets[0].Comments[0].TextBox.Rectangle = new Rectangle(220, 210, 1900, 1200);

]]></ac:plain-text-body></ac:structured-macro>


  1. 保存文件,然后使用 Excel 打开:

Visual Basic

Visual Basic

C1XLBook1.Save("c:\mybook.xls")
System.Diagnostics.Process.Start("C:\mybook.xls")

C#

C#

c1XLBook1.Save(@"c:\mybook.xls");
System.Diagnostics.Process.Start(@"C:\mybook.xls");

  1. 运行工程。Spreadsheet将会打开,界面如下所示:

给表添加分页符

在OpenXML(.xlsx)格式的文件使用PageBreak和PageBreak属性可以很容易地给行和列添加分页符。

  1. 双击工具箱中的C1XLBook组件把它添加到窗体中。
  2. 用下面的代码添加一些文本值和分页符:

Visual Basic

Visual Basic

C1XLBook1.Sheets(0)(2, 3).Value = "page1"
C1XLBook1.Sheets(0).Rows(2).PageBreak = True
C1XLBook1.Sheets(0)(0, 1).Value = "test1"
C1XLBook1.Sheets(0)(0, 2).Value = "test2"
C1XLBook1.Sheets(0).Columns(1).PageBreak = True
C1XLBook1.Sheets(0)(3, 3).Value = "page2"
' Save and open the .xlsx file

C1XLBook1.Save("c:\Save.xlsx")
System.Diagnostics.Process.Start("c:\Save.xlsx")
C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="98988102-5ee2-4bad-86b0-d195f70da3d6"><ac:plain-text-body><![CDATA[

c1XLBook1.Sheets[0][2, 3].Value = "page1"; c1XLBook1.Sheets[0].Rows[2].PageBreak = true; c1XLBook1.Sheets[0][0, 1].Value = "test1"; c1XLBook1.Sheets[0][0, 2].Value = "test2"; c1XLBook1.Sheets[0].Columns[1].PageBreak = true; c1XLBook1.Sheets[0][3, 3].Value = "page2";
]]></ac:plain-text-body></ac:structured-macro>
// Save and open the .xlsx file c1XLBook1.Save(@"c:\Save.xlsx");
System.Diagnostics.Process.Start(@"c:\Save.xlsx");

  1. 运行程序来打开xlsx文件。
  2. 在Excel中,选择PageLayout选项卡,并且选择在Gridlines下面的Print复选框。工作表就会显示成下图的样子:

设定工作簿的计算模式

CalculationMode 属性定义了工作簿中所有计算式的计算模式。枚举提供下面三个选项:Manual(你手动执行计算), Auto(计算自动完成),或者AutoNoTable(除了表以外,计算自动执行)。
设定计算模式,参照下面的步骤:

  1. 双击C1XLBook组件将它添加到你的窗体中。
  2. 使用下面的代码添加简单的公式:

Visual Basic

Visual Basic

Dim sheet As XLSheet = c1XLBook1.Sheets(0)
' simple formula sheet(7, 0).Value = "Formula: 5!" sheet(7, 1).Value = 122 sheet(7, 1).Formula = "1*2*3*4*5" c1XLBook1.CalculationMode = CalculationMode.Auto c1XLBook1.Save("c:\Save.xlsx")
System.Diagnostics.Process.Start("c:\Save.xlsx")

C#

C#

 


XLSheet sheet = c1XLBook1.Sheets[0];
<span style="color: #008000">// simple formula</span> sheet[7, 0].Value = "Formula: 5!"; sheet[7, 1].Value = 122; sheet[7, 1].Formula = "1*2*3*4*5"; c1XLBook1.CalculationMode = CalculationMode.Auto; c1XLBook1.Save(@"c:\Save.xlsx");
System.Diagnostics.Process.Start(@"c:\Save.xlsx");


  1. 运行程序打开Excel文件。注意单元格(7,1)的值是120,也就是说单元格(7,1)的值不是122而是1*2*3*4*5的乘积,这是因为CalculationMode设定为了Auto。

  • 无标签