繁体   English   中英

使用 oledb 将数据导出到 excel

[英]export data to excel using oledb

我需要通过手段(只有oldb)导出大数据。 我有一个包含大约 100k 条目的列表。 如何在 Excel 中编写它? 你会帮上大忙的!

OleDbConnection oleDbConnection = new OleDbConnection(@"provider = Microsoft.ACE.OLEDB.12.0; 
      data source = D:\5.xlsx; 
      Extended Properties = 'Excel 12.0'");
        oleDbConnection.Open();
        OleDbCommand oleDbCommand = new OleDbCommand("INSERT INTO [Rock$] " + "([Имя],[Фамилия],[Отчество]) " + "VALUES(@value1,@value2,@value3)");
        oleDbCommand.Connection = oleDbConnection;
        List<info> test = date.AsNoTracking().ToList();

        //Add list In excel use oledb


        oleDbCommand.ExecuteNonQuery();
        oleDbConnection.Close();

我知道您要求使用 OleDb,但我想分享我使用EPPlus package 的经验。 我很惊讶它有多快。 下面是我的测试示例:

列表初始化

static void Main()
{
    var random = new Random();
    var list = new List<Info>();
    for (int i = 0; i < 100000; i++)
    {
        list.Add(new Info() { prop1 = random.Next().ToString(), 
                              prop2 = random.Next().ToString(), 
                              prop3 = random.Next().ToString() });
    }
    SaveListToExcel(@"D:\5.xlsx", list);
}

保存列表

private static void SaveListToExcel(string filePath, IEnumerable<Info> list)
{
    System.IO.FileInfo f = new System.IO.FileInfo(filePath);
    if (f.Exists) f.Delete();
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
    using (ExcelPackage ep = new ExcelPackage(f))
    {
        ExcelWorksheet sheet = ep.Workbook.Worksheets.Add("Rock");
        sheet.Cells[1, 1].Value = "Имя"; ;
        sheet.Cells[1, 2].Value = "Фамилия";
        sheet.Cells[1, 3].Value = "Отчество";
        sheet.Cells[2, 1].LoadFromCollection(list);
        ep.Save();
    }
}

信息 class

public class Info
{
    public string prop1 { get; set; }
    public string prop2 { get; set; }
    public string prop3 { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM