• WinForms C# 导入和导出 CSV 文件 Spread.NET


    使用 WinForms C# 和 VB.NET 导入和导出 CSV 文件

    2023 年 11 月 17 日
    使用 Spread.NET 直接在 .NET WinForms 应用程序中处理 CSV 文件。

    Spread.NET可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎,具有 450 多个函数以及导入和导出 Microsoft Excel 电子表格的能力。开发人员可以利用广泛的 .NET 电子表格 API 和强大的计算引擎来创建分析、预算、仪表板、数据收集和管理、科学和财务应用程序。

    在此博客中,MESCIUS 产品经理 Kevin Ashley 将带您完成使用 Spread.NET 导入和导出 CSV 文件中的数据所需的所有步骤,包括:

    • 创建/配置项目
    • 创建文件菜单
    • 创建/配置SplitContainer
    • 添加事件处理程序代码
    • ...以及更多!

    将在运行时使用 Spread Designer 工具,只需一行代码即可在运行的应用程序中编辑 Excel 电子表格实例。最后,我将展示如何创建一个简单的前端电子表格用户界面,将 FpSpread 电子表格控件与 NameBox和 FormulaTextBox 控件集成,使用分割窗格创建主用户界面,以及如何实现菜单项来处理 文件 - C# 和 VB中的“打开”、“文件 - 保存”和 “文件 - 设计” 命令 。

    以下是在 C# 和 VB.net WinForms 中导入和导出 CSV 文件的步骤:

    这些步骤需要:

    • Microsoft Visual Studio 2022(注意:虽然这些步骤适用于 VS2022 和 .NET 6,但 Spread.NET WinForms 也可以在面向 .NET 4.6.2+ 的早期版本的 Visual Studio 中工作,遵循这些相同的步骤)
    • Spread.NET for WinForms(试用版或许可版)- 在此处获取 Spread.NET WinForms 的 30 天免费试用版 
     

    第 1 步:创建项目

    创建一个新项目

    我们可以首先在Visual Studio 2022中创建一个新项目  ,选择 C#、Windows和 Desktop来筛选项目,然后选择C# 或 VB  WinForms App

    第 2 步:配置项目

    配置项目

    输入 SpreadWinformsCSVIO作为 项目名称

    第 3 步:创建文件菜单

    现在,让我们添加一个MenuStrip。在 “工具箱” 窗口 ( F4 ) 的“菜单和工具栏”类别下,双击 MenuStrip组件以 在窗体中创建一个新的 MenuStrip :

    菜单条工具箱

     

     通过使用关联的快捷键单击,创建 “文件 – 打开”、  “文件 – 保存”、  “文件 – 另存为”、  “文件 – 设计”和 “文件 – 退出”菜单项:

    文件菜单

     

    请注意, 文件 - 保存 菜单项最初应被禁用。菜单分隔符(  对菜单项文本使用“-”来创建菜单分隔符)和快捷键是可选的,但建议使用。我们将在稍后的步骤中为这些菜单项添加代码。

    步骤4:创建SplitContainer1

    注意: 使用 FpSpread 并不一定需要添加拆分器,但 SplitContainer 控件使创建友好且灵活的电子表格界面变得更加容易,因为它会自动处理电子表格、名称框和公式文本框控件的大小调整,而无需任何代码。

    在 工具箱 ( CTRL+ALT+X ) 中,展开Containers类别 ,然后双击 SplitContainer 控件以创建 splitContainer1

     

    拆分容器工具箱

    步骤5:配置SplitContainer1

    在 “属性” 窗口 ( F4 ) 中,对于 splitContainer1,将 Orientation设置 为 Horizo​​ntal,然后将 Panel1MinSize 和 SplitterDistance设置 为 23

    SplitContainer 1 属性

     

    电子表格将位于底部窗格中,编辑栏界面将位于顶部窗格中,拆分器将确定FormulaTextBox控件的高度,  以显示换行的长公式。

    第6步:创建SplitContainer2

    在 工具箱 ( CTRL+ALT+X ) 中,将新的SplitContainer拖放 到splitContainer1的  顶部窗格 ( Panel1 ) 内 以创建 splitContainer2

    拆分容器 2

    在 “属性” 窗口 ( F4 ) 中,对于 splitContainer2,将Panel1MinSize 和 SplitterDistance 设置  为 150

    SplitContainer2 属性

    第 7 步:创建 FpSpread

    在 “解决方案资源管理器”中,展开 “解决方案 SpreadNetQuickStart” 和 “项目 SpreadNetQuickStart”,然后右键单击 “依赖项” 并选择 “管理 NuGet 包...”  (或按 ALT+P+N+N+N+ENTER):

    管理 NuGet 包

     

    然后,在NuGet Package Manager中,选择  左上角的 Browse ,然后 在搜索框中 键入Spread.WinForms以查找最新的GrapeCity.Spread.WinForms,然后单击 Install

    NuGet 包管理器

     

    安装 GrapeCity.Spread.WinForms后,继续安装 GrapeCity.Spread.WinForms.Design  – 该软件包包含 fpSpreadDesigner 组件,用于在运行时显示 Spread Designer 工具。

    然后,在工具箱 ( CTRL+ALT+X ) 中,选择 FpSpread 控件:

     

    FpSpread工具箱

    最后,将FpSpread的实例绘制 到SplitContainer1的 底部窗格 ( Panel2 ) 中。当您创建控件时, Spread 设计器工具  可能会打开(这是默认行为) - 现在,  如果出现 ,请关闭Spread 设计器。

     

    Fp传播形式

    使用 属性网格 (F4),将 Dock 属性设置为 Fill:

     

    FpSpread 扩展坞

    第 8 步:创建名称框

    在 工具箱 ( CTRL+ALT+X ) 中,展开GrapeCity Spread for WinForms的类别  ,然后选择 NameBox 控件:

    名称框工具箱

     在左上角的 Panel1  ( SplitContiner2.Panel1 ) 内绘制一个新的 NameBox

    姓名框表格

    在 “属性” 窗口 ( F4 ) 中,对于 nameBox1,将Dock 设置  为 Fill

    名称框属性

    在nameBox1的右上角 ,单击指示器打开 NameBox Tasks,然后单击 AttachTo 下拉列表并选择 fpSpread1  – 这将以代码隐藏形式生成代码,以将 NameBox 控件附加到 FpSpread 控件:

     

    名称框附件

    第 9 步:创建 FormulaTextBox

    在 工具箱 ( CTRL+ALT+X ) 中,展开 容器 并选择 面板 控件:

    面板工具箱

     

    在Panel2内 ( NameBox1 右侧 ),绘制一个新的 Panel

    面板 2 表格

    在 “属性” 窗口 ( F4 ) 中,对于 panel1,将BorderStyle 设置  为 FixSingle 并将 Dock设置 为 Fill

    面板 1 属性

    在 工具箱 (CTRL+ALT+X) 中, 选择 FormulaTextBox 控件:

    公式文本框工具箱

    在panel1  (位于 splitContainer2.Panel2内部)内 ,绘制一个新的FormulaTextBox 控件:

    公式文本框表单

    在 FormulaTextBox1 的属性 窗口 ( F4 ) 中,将BorderStyle 设置  为 None 并将 Dock设置 为 Fill

    公式文本框属性

    在FormulaTextBox1的右上角 ,单击指示器打开 FormulaTextBox 任务, 然后单击 AttachTo 下拉列表并选择 fpSpread1  – 这将以代码隐藏形式生成代码,以将 FormulaTextBox 控件附加到 FpSpread控件:

    公式文本框附件

    步骤 10:创建 WinForms 电子表格设计器组件

    现在,在Toolbox 窗口 ( CTRL+ALT+X ) 的 GrapeCity Spread Design for WinForms 类别下  双击 FpSpreadDesigner组件以 在表单中 创建一个新的 FpSpreadDesigner :

    FpSpread 设计器工具箱

    刚刚添加的fpSpreadDesigner1组件  应显示在组件 menuStrip1 fpSpread1_Sheet1旁边的表单组件托盘中:

    FpSpread 设计器表单

    步骤 11:为文件菜单项创建事件处理程序

    文件菜单处理程序设计

    对于“文件”菜单中的每个菜单项  ,在设计视图中双击该菜单项,直到每个菜单项都有一个在 VB 或 C# 代码中生成的关联菜单处理程序:

    文件菜单处理程序

    第 12 步:添加事件处理程序代码

    复制以下代码来实现事件处理程序:

    [C#]

    添加事件处理程序代码 C#

    1. private string mFileName = null;
    2. private void openToolStripMenuItem_Click(object sender, EventArgs e)
    3. {
    4. OpenFileDialog ofd = new OpenFileDialog();
    5. ofd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    6. ofd.FilterIndex = 0;
    7. if (ofd.ShowDialog() == DialogResult.OK)
    8. {
    9. mFileName = ofd.FileName;
    10. fpSpread1.Sheets[0].LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
    11. saveToolStripMenuItem.Enabled = true;
    12. }
    13. }
    14. private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    15. {
    16. fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
    17. }
    18. private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
    19. {
    20. SaveFileDialog sfd = new SaveFileDialog();
    21. sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    22. sfd.FilterIndex = 0;
    23. sfd.FileName = mFileName;
    24. if (sfd.ShowDialog() == DialogResult.OK)
    25. {
    26. mFileName = sfd.FileName;
    27. fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
    28. saveToolStripMenuItem.Enabled = true;
    29. }
    30. }
    31. private void designToolStripMenuItem_Click(object sender, EventArgs e)
    32. {
    33. fpSpreadDesigner1.ShowDialog(fpSpread1);
    34. }
    35. private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    36. {
    37. DialogResult ret = MessageBox.Show("Do you want to save this file before closing?", "Save Spreadsheet", MessageBoxButtons.YesNoCancel);
    38. if (ret == DialogResult.Cancel)
    39. return;
    40. else if (ret == DialogResult.Yes)
    41. saveToolStripMenuItem_Click(null, EventArgs.Empty);
    42. Close();
    43. }
    复制

    [VB]

    添加事件处理程序代码 VB

    1. Private mFileName As String = Nothing
    2. Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
    3. Dim ofd As New OpenFileDialog
    4. ofd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    5. ofd.FilterIndex = 0
    6. If ofd.ShowDialog() = DialogResult.OK Then
    7. mFileName = ofd.FileName
    8. FpSpread1.Sheets(0).LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
    9. SaveToolStripMenuItem.Enabled = True
    10. End If
    11. End Sub
    12. Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    13. FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
    14. End Sub
    15. Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click
    16. Dim sfd As SaveFileDialog = New SaveFileDialog()
    17. sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    18. sfd.FilterIndex = 0
    19. sfd.FileName = mFileName
    20. If sfd.ShowDialog() = DialogResult.OK Then
    21. mFileName = sfd.FileName
    22. FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
    23. SaveToolStripMenuItem.Enabled = True
    24. End If
    25. End Sub
    26. Private Sub DesignToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DesignToolStripMenuItem.Click
    27. FpSpreadDesigner1.ShowDialog(FpSpread1)
    28. End Sub
    29. Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    30. Dim ret As DialogResult = MessageBox.Show("Do you want to save this file before closing?", "Closing", MessageBoxButtons.YesNoCancel)
    31. If ret = DialogResult.Cancel Then
    32. Return
    33. ElseIf ret = DialogResult.Yes Then
    34. SaveToolStripMenuItem_Click(Nothing, EventArgs.Empty)
    35. End If
    36. Close()
    37. End Sub
    复制

    文件 - 打开的代码  使用 OpenFileDialog 浏览 CSV 文件,然后使用 FpSpread.Sheets.LoadTextFile方法打开选定的 CSV 文件。文件 - 保存的代码 使用 FpSpread.Sheets.SaveTextFile将电子表格数据保存到 CSV,文件- 另存为的代码 使用 SaveFileDialog 允许用户将文件保存到另一个位置或使用另一个名称。此功能允许 C# 或 VB.NET CSV 文件导入和导出。

    File-Design 中的代码使用 FpSpreadDesigner.ShowDialog 方法在运行时显示 Spread Designer 工具,进行更改,然后将这些更改应用回表单中的电子表格实例。最后, “文件 - 退出”中的代码  提示用户是否保存文件,然后使用 Close 方法关闭窗体。

    准备好构建和运行!

    最终结果

    该项目已准备好构建和运行。文件设计菜单将  在运行时打开Spread Designer工具,如上所示,它可以将更改应用于表单中运行的电子表格实例。了解 Spread .NET 如何让您能够在应用程序中使用 C# 或 VB.NET 将电子表格导入和导出为 CSV。

  • 相关阅读:
    Java 8备受宠爱,HarmonyOS冲刺全球第三大操作系统,全民热议元宇宙|2021十大技术热词
    bean的自动装配
    实战 | 基于卷积神经网络的蘑菇识别微信小程序
    Java之IO流详解(三)——字符流
    Miniconda简单操作说明
    项目实战——匹配系统(下)
    dalle:zero-shot text-to-image generation
    Session&Cookie
    基于Web的大众汽车租赁系统设计与实现-计算机毕业设计源码+LW文档
    MyBatis获取参数值的两种方式
  • 原文地址:https://blog.csdn.net/john_dwh/article/details/134486872