强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【简介】

      在这里我用到了File的相关类,主要是Stream类。它的命名空间是System.IO,所以如果想要使用需要先引用该命名空间。在这之前我都是一个数据一个数据的向数据库去更新,导致效率非常的慢,频繁的IO操作降低了系统的性能。其实现原理是将所有的数据拼接成一个字符串,然后一次性的写入Excel中,这样提高系统的性能。流涉及到三个基本操作:读取流,是从流到数据结构的数据传输;写入,是从数据结构到流的数据传输;查找,对流内的当前位置进行查询和修改

【代码实现】

        在此用vb.net定义了一个导出到Excel的过程。先将Excel创建到桌面上,然后对桌面上新建的Excel进行写入操作。

       VB.NET版:

<span style="color:#cc33cc;">//VB.NET 版</span>
‘引用命名空间
Imports Microsoft.Office.Interop
Imports System.IO
Dim path As String   '获取桌面路径
        path = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
        Dim MyExce3 As New Microsoft.Office.Interop.Excel.Application() '定义并实例化excel工作表
        MyExce3.Application.Workbooks.Add(True) '打开excel工作簿,显示excel界面
        MyExce3.ActiveWorkbook.SaveAs(path + "\数据表" & ".xls", ReadOnlyRecommended:=False)
        Dim a As String = path + "\数据表" & ".xls"    '新创建的Excel的路径
        MyExce3.ActiveWorkbook.Close()
        MyExce3.Quit()

        Dim sw As StreamWriter = New StreamWriter(a, False, System.Text.Encoding.Default)
        Dim str As String = ""
        Try
            Dim i As Integer = 0
            '拼接datagridview控件中的表头
            While i < dataGridview1.ColumnCount
                '在拼接字符串之前先拼接一个制表符(tab)
                If i > 0 Then
                    str += "" & Microsoft.VisualBasic.Chr(9) & ""
                End If
                str += dataGridview1.Columns(i).HeaderText
                i = i + 1
            End While
            '将拼接的表头一次性写入excel
            sw.WriteLine(str)
            Dim j As Integer = 1
            '将datagridview中剩余的数据进行拼接
            While j < dataGridview1.Rows.Count
                Dim tempStr As String = ""
                Dim k As Integer = 0
                While k < dataGridview1.Columns.Count
                    If k > 0 Then
                        tempStr += "" & Microsoft.VisualBasic.Chr(9) & ""
                    End If
                    tempStr += dataGridview1.Rows(j - 1).Cells(k).Value.ToString
                    '将加密的数据进行加密
                    'tempStr += EncryptDes(dataGridview1.Rows(j - 1).Cells(k).Value, "12345678", "abcdefgh")
                    k = k + 1
                End While
                '一次性写入
                sw.WriteLine(tempStr)
                j = j + 1
            End While
            '关闭excel
            MyExce3.Quit()
            '释放excel
            MyExce3 = Nothing
            sw.Close()

            MessageBox.Show("保存成功")

    C#版:

<span style="color:#cc33cc;">//C#抽象版,将datagridview作为参数</span>

public ExportToExcel(DataGridView datagridview)
        {
            
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = false;
            saveFileDialog.Title = "导出Excel文件到";
            // saveFileDialog.FileName = text;
            DialogResult result = saveFileDialog.ShowDialog();
            //string str = "";
            if (result == DialogResult.OK)
            {
                Stream myStream;
                myStream = saveFileDialog.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                string str = "";
                try
                {
                    for (int i = 0; i < datagridview.ColumnCount; i++)
                    {
                        if (i > 0)
                        {
                            str += "\t";
                        }
                        str += datagridview.Columns[i].HeaderText;
                    }
                    sw.WriteLine(str);
                   
                    for (int j = 1; j < datagridview.Rows.Count; j++)
                    {
                        string tempStr = "";
                        for (int k = 0; k < datagridview.Columns.Count; k++)
                        {
                            if (k > 0)
                            {
                                tempStr += "\t";
                            }
                            tempStr += datagridview.Rows[j - 1].Cells[k].Value.ToString();

                        }
                        sw.WriteLine(tempStr);
                    }                    

                }

                catch (Exception)
                {

                    MessageBox.Show("导出遇到异常", "失败提示");
                }
                finally
                {
                    MessageBox.Show("成功导出到excel", "提示");
                    sw.Close();
                    myStream.Close();
                    }
            }
        }

【用处】

      大数据时代,数据库是必备的,各种数据库,性能不一,在最初对Access数据库有一个初步了解的时候是在红皮书5个小例子的时候,这次再次用到Access赶脚就是不一样,而且Access相对于Sql执行速度是较慢的,如果上千个数据需要向数据库中保存,频繁的执行IO操作,一定非常的耗费系统的资源。这种便利的方式将一分钟干完的事情缩短到一秒钟,足以看到系统性能的重要性!

【总结】

       在学习过程中自己加入的思考都非常的少,自己学习也不踏实。这次研究这些东西是因为客户有需求,自己这种懒惰的想法是不正确的,最近在看一本书,书中的一句话送给看这篇博客的所有人:稍后等于永不(Later equals never),不仅要有思想上移,重要的要和行动下移相搭配。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐