使用微软自带的Microsoft.Office.Interop.Excel保存数据到excel,能达到目的,但是很慢,要600到700多毫秒

  1. NUGET添加Microsoft.Office.Interop.Excel动态库
  2. 引用的命名空间
    using System.Reflection;
    using Excel = Microsoft.Office.Interop.Excel;
    using System.IO;
    using System.Runtime.InteropServices;

     

  3. 核心代码(没有文件,就创建一个文件,有的话直接在最后追加)
     Excel.Application excelApp = new Excel.Application();
                excelApp.AlertBeforeOverwriting = false;
                Excel.Workbook excelDoc = null;
    
                object Nothing = Missing.Value;
                Excel.Worksheet ws = null;
    
                string FileName = "";
    
                try
                {
    
                    string strFilePath = @"D:\111111";
    
                    if (index == 1)
                    {
                        strFilePath += @"\1\";
                    }
                    else
                    {
                        strFilePath += @"\2\";
                    }
                   // strFilePath += @"\";
                    strFilePath += System.DateTime.Now.ToString("yyyy");
                    strFilePath += @"\";
                    strFilePath += System.DateTime.Now.ToString("MM");
    
                    if (System.IO.Directory.Exists(strFilePath) == false)
                    {
                        System.IO.Directory.CreateDirectory(strFilePath);
                    }
    
                    FileName = strFilePath + @"\" + System.DateTime.Now.ToString("dd") + @".xlsx";
    
                    if (System.IO.File.Exists(FileName) == false)
                    {
                        excelDoc = excelApp.Workbooks.Add(Nothing);
                        ws = (Excel.Worksheet)excelDoc.Sheets[1];
                        ws.Cells.Columns.AutoFit();
                        ws.Cells[1, "A"] = "时间";
                        ws.Cells[1, "B"] = "xxxx";
                        ws.Cells[1, "C"] = "yyyy";
    
                        ws.Cells[2, "A"] = System.DateTime.Now.ToString("HH:mm:ss");
                        ws.Cells[2, "B"] = 121111;
                        ws.Cells[2, "C"] = 123123123;
    
                        excelDoc.SaveAs(FileName, Nothing, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlNoChange, Nothing, Nothing, Nothing, Nothing, Nothing);
                    }
                    else
                    {
                        excelDoc = excelApp.Workbooks.Open(FileName,false, false, Excel.XlPlatform.xlWindows, true, false, true, true, Missing.Value);
                        ws = (Excel.Worksheet)excelDoc.Worksheets.get_Item(1);
                        ws.Cells.Columns.AutoFit();
                        Excel.Range range = ws.UsedRange;
                        int usedRowCount = range.Rows.Count;
    
                        ws.Cells[usedRowCount + 1, "A"] = System.DateTime.Now.ToString("HH:mm:ss");
                        ws.Cells[usedRowCount + 1, "B"] = 11111;
                        ws.Cells[usedRowCount + 1, "C"] = 123123123;
    
                        excelDoc.Save();
                    }
                }
                catch (Exception exp)
                {
    
                }
                finally
                {
                    excelDoc.Close(true, Nothing, Nothing);
                    excelApp.Quit();
    
                    IntPtr t = new IntPtr(excelApp.Hwnd);          //杀死进程的好方法,很有效
                    int k = 0;
                    GetWindowThreadProcessId(t, out k);
                    System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
                    p.Kill();
                }

     

  4. 要引用这个函数,杀进程的,不然程序退出了,任务管理器里面还有excel程序未关闭
 [DllImport("User32.dll", CharSet = CharSet.Auto)]
 public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);

 

### 回答1: 使用C#Microsoft.Office.Interop.Excel库可以方便地读取和操作Excel文件。下面是一个示例代码,展示如何打开Excel文件并将其内容加载到DataGridView: ```csharp using System; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; namespace ExcelToDataGridView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // 创建Excel应用程序对象 Application excelApp = new Application(); // 打开Excel文件 Workbook workbook = excelApp.Workbooks.Open(@"D:\test.xlsx"); // 获取第一个工作表 Worksheet worksheet = (Worksheet)workbook.Sheets[1]; // 获取工作表中使用的范围 Range range = worksheet.UsedRange; // 将Excel数据加载到DataGridView中 object[,] values = range.Value; for (int row = 1; row <= values.GetLength(0); row++) { dataGridView1.Rows.Add(); for (int col = 1; col <= values.GetLength(1); col++) { dataGridView1.Rows[row - 1].Cells[col - 1].Value = values[row, col]; } } // 关闭Excel文件和应用程序对象 workbook.Close(); excelApp.Quit(); } } } ``` 在上述代码中,我们首先创建了一个Excel应用程序对象,然后使用`Open`方法打开指定的Excel文件。接着,我们获取Excel文件中第一个工作表,并使用`UsedRange`属性获取工作表中实际使用的范围。最后,我们将Excel数据加载到DataGridView中,关闭Excel文件和应用程序对象。 ### 回答2: C是一种广泛使用的计算机编程语言,它的设计目标是能够提供高效、可移植、可编译的代码。C语言具有简洁、高效的特点,这使得它被广泛用于系统软件开发、嵌入式系统和设备驱动程序的编写。 C语言是由美国贝尔实验室的Dennis Ritchie开发的,于1972年首次发布。C语言在之后几年中迅速发展并得到了广泛应用,尤其是在UNIX操作系统的开发中。C语言的成功主要归功于其简洁的语法和强大的功能。 C语言的语法规范简单明了,易于理解和学习。它包含了基本的数据类型(如整数、浮点数、字符等)和控制结构(如循环、条件判断等),可以方便地表达各种算法和逻辑。C语言还提供了丰富的标准库函数,这使得开发者不需要从底层开始编写所有的功能,而是能够直接调用已有的函数进行开发。这也是C语言能够快速编写出高效程序的重要原因之一。 C语言的可移植性也是其受欢迎的重要原因之一。由于C语言的底层特性相对较少,很多操作系统和硬件平台都提供了C语言的编译器和解释器。这意味着用C语言编写的程序可以在各种平台上运行,而不需要做太多的修改。这种可移植性使得C语言成为了开发跨平台软件的重要工具。 总而言之,C语言是一种简洁、高效、可移植的计算机编程语言。它的设计目标是提供一种能够编写高效、可移植代码的工具。C语言的成功在很大程度上归功于其简洁的语法、丰富的标准库函数以及强大的可移植性。因此,C语言广泛应用于系统软件和嵌入式系统的开发,为计算机行业做出了重要的贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值