OpenTable
打开指定的单元格区域,并返回 ExcelTableWriter 对象。
在PageOffice中,我们把Excel工作表上的任意一块连续的单元格区域定义为一个Table对象。如果您需要操作一个单元格区域,您就应该使用 Table 对象。
如果要输出到表格里的实际数据行数超过了 RangeAddress 指定的单元格区域行数,Table 将会自动扩展单元格行数到实际大小,并且给新的单元格数据行应用 RangeAddress 指定的单元格区域的格式。如果您不希望表格按实际数据行数自动扩展,而维持 RangeAddress 指定的大小,您需要调用 SheetWriter.OpenTable(string, bool) 方法。
语法1:
public ExcelTableWriter OpenTable(
string RangeAddress
)
参数:
RangeAddress
- Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。
注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。
返回:
返回 ExcelTableWriter 对象。
示例:
示例代码 1: 下面的示例展示了如何调用 OpenTable 方法在一个已存在格式的空表上输出数据。
PageOfficeNetCore.Excel.WorkbookWriter wb = new PageOfficeNetCore.Excel.WorkbookWriter();
PageOfficeNetCore.Excel.SheetWriter sheet1 = wb.OpenSheet("sheet1");
PageOfficeNetCore.Excel.ExcelTableWriter table1 = sheet1.OpenTable("B5:F10");
// 输出数据到表格
System.Random rd = new Random(System.DateTime.Now.Millisecond);
for (int j = 0; j < 4; j++)
{
for (int i = 0; i < table1.DataFields.Count; i++)
{
table1.DataFields[i].Value = rd.Next(1000).ToString(); // 模拟来自数据库的数据
}
table1.NextRow();
}
table1.Close(); // 必须
PageOfficeNetCore.PageOfficeCtrl POCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
POCtrl.SetWriter(wb);
POCtrl.WebOpen("doc/test.xls", PageOfficeNetCore.OpenModeType.xlsReadOnly, "张三");
示例代码 2: 下面的示例展示了如何调用 OpenTable 方法在一个空白工作表上画表及输出其数据,同时也展示了如何对超出范围的数据进行动态报警。
PageOfficeNetCore.Excel.WorkbookWriter wb = new PageOfficeNetCore.Excel.WorkbookWriter();
PageOfficeNetCore.Excel.SheetWriter sheet1 = wb.OpenSheet("sheet1");
PageOfficeNetCore.Excel.ExcelTableWriter table1 = sheet1.OpenTable("B5:F10");
// 画表格线、设置表格颜色
table1.RowHeight = 20;
table1.ColumnWidth = 14.25;
table1.Border.BorderType = PageOfficeNetCore.Excel.XlBorderType.xlFullGrid;
table1.Border.LineStyle = PageOfficeNetCore.Excel.XlBorderLineStyle.xlContinuous;
table1.Border.Weight = PageOfficeNetCore.Excel.XlBorderWeight.xlThin;
table1.Border.LineColor = System.Drawing.Color.Gray;
table1.BackColor = System.Drawing.Color.FromArgb(230, 230, 230);
// 画表头
sheet1.OpenTable("B5:F5").BackColor = System.Drawing.Color.CadetBlue;
sheet1.OpenTable("B5:F5").ForeColor = System.Drawing.Color.White;
table1.DataFields[0].Value = "字段标题1";
table1.DataFields[1].Value = "字段标题2";
table1.DataFields[2].Value = "字段标题3";
table1.DataFields[3].Value = "字段标题4";
table1.DataFields[4].Value = "字段标题5";
table1.NextRow();
// 输出数据到表格
System.Random rd = new Random(System.DateTime.Now.Millisecond);
for (int j = 0; j < 4; j++)
{
for (int i = 0; i < table1.DataFields.Count; i++)
{
int iValue = rd.Next(1000);
table1.DataFields[i].Value = iValue.ToString(); // 模拟来自数据库的数据
if (iValue > 800) // 如果单元格的值超过900,就设置当前单元格的颜色给予警示。
{
table1.DataFields[i].BackColor = System.Drawing.Color.Red;
table1.DataFields[i].ForeColor = System.Drawing.Color.Yellow;
}
}
table1.NextRow();
}
// 画表尾,并计算合计值
sheet1.OpenTable("B10:F10").BackColor = System.Drawing.Color.LightYellow;
table1.DataFields[0].Value = "合计";
// 这里的合计值可以开发者自己计算,也可以利用Excel强大的公式功能,这样会非常简便
table1.DataFields[4].Formula = "sum(F6:F9)";
table1.NextRow();
table1.Close(); // 必须
// 将 C10:E10 指定的单元格区域合并成一个单元格
sheet1.OpenTable("C10:E10").Merge();
PageOfficeNetCore.PageOfficeCtrl POCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
POCtrl.SetWriter(wb);
POCtrl.WebOpen("doc/test.xls", PageOfficeNetCore.OpenModeType.xlsReadOnly, "张三");
语法2:
public ExcelTableWriter OpenTable(
string RangeAddress,
bool AutoIncrease
)
参数:
RangeAddress
- Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。
注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。
AutoIncrease
- 可选参数。默认值为 true。如果值为false,表格不会按实际数据行数自动扩展,而是维持 RangeAddress 指定的大小,多余的数据行将被抛弃。
返回:
返回 ExcelTableWriter 对象。