[英]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.