Rumah pembangunan bahagian belakang Tutorial C#.Net C#如何导入导出与处理Excel文件

C#如何导入导出与处理Excel文件

Nov 21, 2016 am 11:28 AM

OleDB是微软的战略性的通向不同的数据源的低级应用程序接口。支持很多种数据库,此客户端中DBF文件的输入输出也是使用了此数据库API。使用OleDB记得添加上命名空间:

using System.Data.OleDb;
Salin selepas log masuk

xlsx文件的输入:

private void inputXlsx()
{
    string strConn2;
    string filePath = inPath;
    FileInfo fileInfo = new FileInfo(filePath);
    string directory = fileInfo.DirectoryName;

    strConn2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;';";
    string strConnection = string.Format(strConn2, inPath);
    OleDbConnection conn = new OleDbConnection(strConnection);
    try
    {
        conn.Open();
        String tableName = null;
        DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        tableName = dt.Rows[0][2].ToString().Trim();
        OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + tableName + "]", strConnection);
        oada.Fill(dtOld);
        conn.Close();   
    }
    catch (Exception ex)
    {
        conn.Close();
    }
}
Salin selepas log masuk

xlsx文件的中间处理过程因需求而异,在此不再赘述处理方式。在输入过程中,将文件中的数据转化成了Datatable数据类型的格式,它是一个临时保存数据的网格虚拟表,处理非常方便。

xlsx文件的输出:xlsx文件的输出过程并不是很顺利,先后使用了三种方式。

第一种方式自然就是OleDB了,有始有终嘛。但是真正使用的过程中发现此方式不仅要求程序运行本机必须安装Excel,而且对Excel版本要求非常高,如果删注册表很容易弄巧成拙,我改注册表就直接玩坏了Excel。事实上我们并不能保证客户的机器上一定安装了对应版本的Excel,所以如果使用OleDB输出文件,此客户端的兼容性将非常的低劣。

经过一番沟通和挣扎决定还是换一种方式,决定改用第三方组件。由于JAVA方使用的是POI,所以这边直接使用POI项目的.NET版本,NPOI。网上教程很多,很好实现,但是经过测试之后,此种方式对大文件的输入输出支持的不是很好,处理DEMO文件没有问题,但是换成了真正客户提供的十万行级甚至百万行级的文件,客户端直接在输出的过程中崩掉。

查询资料后,网友们对于大文件都建议使用EPPlus。教程也是一抓一大把,我没有继续加大文件大小测试,不过客户给我们提供的十来个文件全部测试通过,基本上都是百万级以下的。

上代码吧:

private void outputXlsx()
{
    FileInfo newFile = new FileInfo(dtNew.TableName + ".xlsx");
    if (newFile.Exists)
    {
        newFile.Delete();
        newFile = new FileInfo(dtNew.TableName + ".xlsx");
    }
    using (ExcelPackage package = new ExcelPackage(newFile))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dtNew.TableName);//创建worksheet

        for (int m = 0; m < dtNew.Columns.Count; m++)
        {
            worksheet.Cells[1, m + 1].Value = dtNew.Columns[m];
        }
        int i = 1;
        foreach (DataRow dr in dtNew.Rows)
        {
            for (int j = 0; j < dtNew.Columns.Count; j++)
            {
                worksheet.Cells[i + 1, j + 1].Value = dr[j];
            }
            i++;
        }
        package.Save();//保存excel
    }
}
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1266
29
Tutorial C#
1239
24
Direktori Aktif dengan C# Direktori Aktif dengan C# Sep 03, 2024 pm 03:33 PM

Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

Penjana Nombor Rawak dalam C# Penjana Nombor Rawak dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Paparan Grid Data C# Paparan Grid Data C# Sep 03, 2024 pm 03:32 PM

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Faktorial dalam C# Faktorial dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Perbezaan antara multithreading dan asynchronous C# Perbezaan antara multithreading dan asynchronous C# Apr 03, 2025 pm 02:57 PM

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

Corak dalam C# Corak dalam C# Sep 03, 2024 pm 03:33 PM

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Nombor Perdana dalam C# Nombor Perdana dalam C# Sep 03, 2024 pm 03:35 PM

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Cara menukar format XML Cara menukar format XML Apr 03, 2025 am 08:42 AM

Terdapat beberapa cara untuk mengubah format XML: mengedit secara manual dengan editor teks seperti Notepad; Memformat secara automatik dengan alat pemformatan XML dalam talian atau desktop seperti XMLBeAutifier; Tentukan peraturan penukaran menggunakan alat penukaran XML seperti XSLT; atau menghuraikan dan beroperasi menggunakan bahasa pengaturcaraan seperti Python. Berhati -hati apabila mengubahsuai dan membuat sandaran fail asal.

See all articles