public void DoTest2() { var gdt = new GenerateDataTable(); var table = gdt.GetNewTable(1000000); Stopwatch sw = new Stopwatch(); sw.Start(); var filename = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".xlsx"); LargeExport(filename, table); sw.Stop(); Console.WriteLine($"Save used {sw.ElapsedMilliseconds} ms"); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); }
public void DoTest() { var gdt = new GenerateDataTable(); var dt = gdt.GetNewTable(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var filename = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".xlsx"); //创建文件 FileStream file = new FileStream(filename, FileMode.CreateNew, FileAccess.Write); //以指定的字符编码向指定的流写入字符 StreamWriter sw = new StreamWriter(file, Encoding.UTF8); //写入标题 for (int i = 0; i < dt.Columns.Count; i++) { sw.Write(dt.Columns[i].ColumnName.ToString() + "\t"); } //加入换行字符串 sw.Write(Environment.NewLine); //写入内容 for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { sw.Write(dt.Rows[i][j].ToString() + "\t"); } sw.Write(Environment.NewLine); } sw.Flush(); file.Flush(); sw.Close(); sw.Dispose(); file.Close(); file.Dispose(); stopwatch.Stop(); Console.WriteLine($"Save used {stopwatch.ElapsedMilliseconds} ms"); }
public void DoTest_GenerateThenAttach() { var gdt = new GenerateDataTable(); var table = gdt.GetNewTable(1); Stopwatch sw = new Stopwatch(); sw.Start(); var filePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".xlsx"); int looRowCount = 8000; using (var workbook = new XLWorkbook()) { workbook.Worksheets.Add(gdt.GetTableWithNRows(table, looRowCount), table.TableName); workbook.SaveAs(filePath); } int i = 2; int loop = 300000 / looRowCount; while (i <= loop) { using (var workbook = new XLWorkbook(filePath)) { IXLWorksheet Worksheet = workbook.Worksheet(table.TableName); int NumberOfLastRow = Worksheet.LastRowUsed().RowNumber(); IXLCell CellForNewData = Worksheet.Cell(NumberOfLastRow + 1, 1); CellForNewData.InsertTable(gdt.GetTableWithNRows(table, looRowCount)); if (i == loop) { Worksheet.Columns().AdjustToContents(); } workbook.Save(); Console.WriteLine($"Loop {i} work done..."); i++; } GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } sw.Stop(); Console.WriteLine($"Save all rows used {sw.ElapsedMilliseconds} ms"); }
public void DoTest_GenerateDirectly() { var gdt = new GenerateDataTable(); var table = gdt.GetNewTable(); Stopwatch sw = new Stopwatch(); sw.Start(); using (var workbook = new XLWorkbook()) { var filePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".xlsx"); var worksheet = workbook.Worksheets.Add(table, table.TableName); sw.Stop(); Console.WriteLine($"Add workbook used {sw.ElapsedMilliseconds} ms"); sw.Restart(); workbook.SaveAs(filePath); } sw.Stop(); Console.WriteLine($"Save used {sw.ElapsedMilliseconds} ms"); }