ComponentOne FlexGrid for WinForms 中文版快速入门(8)—保存、加载和打印

保存、加载和打印

C1FlexGrid控件具有让你保存、加载并打印表格的方法。

如果您是第一次阅读本系列文章,建议您阅读:

1.1.1 保存和载入表格到文本文件

“保存表格”方法可以将表格内容保存到一个文本文件。该方法具有可以控制使用的分隔符类型的参数(例如,逗号、制表符、自定义分隔符),可以确定是否要保存固定的单元格还是只保存滚动的单元格,和要使用的编码类型(例如,ASCII或Unicode)。生成的文本文件随后可以被装入控件,或装入到其他支持逗号或制表符分隔的文件的应用程序(例如,Microsoft Excel)。

“加载表格”方法可以从文本文件中加载数据。你可以加载用“保存表格”方法或与其他应用程序创建的文本文件。文本文件的格式是相当简单的。单元格的内容可以保存为格式化字符串(完全是因为他们在屏幕上显示)。如果单元格的文本包含引号字符或单元格分隔符,那么单元格会被引号引起来。

单元格的文本中包含的任何引用字符都增加了一倍。这也是在Microsoft Excel文本文件中所使用的惯例。

文本文件不包含图片或格式信息。

“保存表格”方法有一个标志参数,它可以使你指定是否要保存整个表格或只保存其中的某些部分(滚动的、可见的、或选中的)。

1.1.2 保存和加载Microsoft Excel文件

从版本2.5开始,你可以使用“保存表格”和“加载表格”方法来保存和加载Microsoft Excel文件(.XLS)以及文本文件。这可以使你除了保存数据之外,还可以保存格式信息。要使用“保存表格”和“加载表格”方法来保存和加载Excel文件,只需简单地设置格式参数到FileFormatEnum.Excel,并且像往常一样调用方法。你不需要在你的计算机上安装Microsoft Excel。

Excel文件中包含由“工作表”组成的“工作簿”。“保存表格”和“加载表格”方法总是用一个单一的工作表来保存工作簿,并从现有工作簿来载入第一页工作表。如果你想额外的控制工作来加载或保存,请使用SaveExcel,LoadExcel,LoadExcelSheetNames方法来代替。Excel文件保存和加载的过程将转换大多数的数据类型和格式信息,包括行和列的尺寸、字体、颜色、格式、单元格对齐方式。然而,并不是所有的格式元素可以转换。例如,表格将加载Excel单元格的值,但它不会加载其隐含的公式。其他特征,如固定和合并单元格,图片,数据映射,单元格边框等,也没有被翻译。

1.1.3 从数据库中载入表格

你也可以从数据库中加载表格数据。这不同于数据绑定,它可以保持一个或多个控件和基础数据源之间的实时连接。为了从数据库加载数据,你可以使用DataReader对象,如下所示:

· Visual Basic

Private Sub _btnData_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles _btnData.Click

'准备好DataReader。

Dim strConn As String = "data source=MYMACHINE;initial

catalog=Northwind;"

Dim myConn As New SqlClient.SqlConnection(strConn)

Dim myCMD As New SqlClient.SqlCommand("SELECT * FROM Employees",

myConn)

myConn.Open()

Dim myReader As SqlClient.SqlDataReader = myCMD.ExecuteReader()

'从DB模式来建立表格结构。

Dim dt As DataTable = myReader.GetSchemaTable()

_flex.Cols.Count = 1

Dim dr As DataRow

For Each dr In dt.Rows

Dim c As C1.Win.C1FlexGrid.Column = _flex.Cols.Add()

c.Caption =(c.Name <= CStr(dr("ColumnName")))

c.DataType = CType(dr("DataType"), Type)

Next dr

'填充表格。

_flex.Rows.Count = 1

Dim row As Integer = 1

Dim cols As Integer = dt.Columns.Count

Dim v As Object() = CType(Array.CreateInstance(GetType(Object), cols),

Object())

While myReader.Read()

myReader.GetValues(v)

_flex.AddItem(v, row + 1, 1)

End While

'清理。

_flex.AutoSizeCols()

myReader.Close()

myConn.Close()

· C#

private void _btnData_Click(object sender, System.EventArgs e)

{

//准备好DataReader。

string strConn = "data source=MYMACHINE;initial catalog=Northwind;";

System.Data.SqlClient.SqlConnection myConn = new

System.Data.SqlClient.SqlConnection(strConn);

System.Data.SqlClient.SqlCommand myCMD = new

System.Data.SqlClient.SqlCommand("SELECT * FROM Employees", myConn);

myConn.Open();

System.Data.SqlClient.SqlDataReader myReader = myCMD.ExecuteReader();

//从DB模式来建立表格结构。

DataTable dt = myReader.GetSchemaTable();

_flex.Cols.Count = 1;

foreach (DataRow dr in dt.Rows)

{

Column c = _flex.Cols.Add();

c.Caption = c.Name = (string)dr["ColumnName"];

c.DataType = (Type)dr["DataType"];

//填充表格。

_flex.Rows.Count = 1;

int row = 1;

int cols = dt.Columns.Count;

object[] v = (object[])Array.CreateInstance(typeof(object), cols);

while (myReader.Read())

{

myReader.GetValues(v);

_flex.AddItem(v, row++, 1);

}

//清理。

_flex.AutoSizeCols();

myReader.Close();

myConn.Close();

}

1.1.4 打印表格

使用“打印表格”方法来打印表格的内容。该方法具有可以让你选择缩放模式,是否显示打印/预览对话框,设置页眉和页脚,等等的参数。

“打印参数”属性可以公开额外的打印性能,如字体,使用页眉和页脚,而一个.NET Framework “打印文档”对象可以用来选择打印机,纸张大小和方向,页边距等。

下面的代码使用了“打印参数”属性来设置页面方向、页边距、页眉和页脚的字体。然后它调用“打印表格”方法来显示打印预览对话框窗口:

· Visual Basic

'获取表格的“打印文档”对象。

Dim pd As Printing.PrintDocument

pd = _flex.PrintParameters.PrintDocument()

' 设置页面(横向打印,左边页边距1.5")。

With pd.DefaultPageSettings

.Landscape = True

.Margins.Left = 150

End With

'设置页眉和页脚的字体。

_flex.PrintParameters.HeaderFont = New Font("Arial Black", 14,

FontStyle.Bold)

_flex.PrintParameters.FooterFont = New Font("Arial Narrow", 8,

FontStyle.Italic)

'预览表格。

_flex.PrintGrid("C1FlexGrid",

C1.Win.C1FlexGrid.PrintGridFlags.FitToPageWidth +

C1.Win.C1FlexGrid.PrintGridFlags.ShowPreviewDialog, "C1FlexGrid" + Chr(9) +

· C#

//获取表格的“打印文档”对象。

System.Drawing.Printing.PrintDocument pd =

_flex.PrintParameters.PrintDocument;

//设置页面(横向打印,左边页边距1.5")。

pd.DefaultPageSettings.Landscape = true;

pd.DefaultPageSettings.Margins.Left = 150;

//设置页眉和页脚的字体。

_flex.PrintParameters.HeaderFont = new Font("Arial Black", 14,

FontStyle.Bold);

_flex.PrintParameters.FooterFont = new Font("Arial Narrow", 8,

FontStyle.Italic);

//预览表格。

_flex.PrintGrid("C1FlexGrid", PrintGridFlags.FitToPageWidth |

PrintGridFlags.ShowPreviewDialog, "C1FlexGrid\t\t" +

Microsoft.VisualBasic.Strings.Format(DateTime.Now, "d"), "\t\tPage {0} of

{1}");

posted @ 2012-12-14 07:24  葡萄城开发工具  阅读(1778)  评论(2编辑  收藏  举报