zoukankan      html  css  js  c++  java
  • 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}");

  • 相关阅读:
    getopt for windows
    开源代码学习之Tinyhttpd
    GCC 中的编译器堆栈保护技术
    读《程序员的思维修炼》有感
    main之前初始化流程
    平均速度
    显示图案
    圆的面积和周长
    C#(Winform) Http 发送数据
    Android BaseAdapter的使用
  • 原文地址:https://www.cnblogs.com/C1SupportTeam/p/2817407.html
Copyright © 2011-2022 走看看