Я хочу экспортировать данные из набора данных или таблицы данных в файл Excel на C# без использования Gridview.Как экспортировать Excel из набора данных или datatable в C#?
ответ
Получить больше способов: 9 Solutions to Export Data to Excel for ASP.NET
У меня есть этот код, но для этого вам необходимо включить Excel COM-компонент
Добавить ссылку на Microsoft.Office.Interop.Excel.dll
в проекте будет делать задачу для вас.
using Excel = Microsoft.Office.Interop.Excel;
public static bool ExportDataTableToExcel(DataTable dt, string filepath)
{
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oSheet;
Excel.Range oRange;
try
{
// Start Excel and get Application object.
oXL = new Excel.Application();
// Set some properties
oXL.Visible = true;
oXL.DisplayAlerts = false;
// Get a new workbook.
oWB = oXL.Workbooks.Add(Missing.Value);
// Get the Active sheet
oSheet = (Excel.Worksheet)oWB.ActiveSheet;
oSheet.Name = "Data";
int rowCount = 1;
foreach (DataRow dr in dt.Rows)
{
rowCount += 1;
for (int i = 1; i < dt.Columns.Count + 1; i++)
{
// Add the header the first time through
if (rowCount == 2)
{
oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName;
}
oSheet.Cells[rowCount, i] = dr[i - 1].ToString();
}
}
// Resize the columns
oRange = oSheet.get_Range(oSheet.Cells[1, 1],
oSheet.Cells[rowCount, dt.Columns.Count]);
oRange.EntireColumn.AutoFit();
// Save the sheet and close
oSheet = null;
oRange = null;
oWB.SaveAs(filepath, Excel.XlFileFormat.xlWorkbookNormal,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Excel.XlSaveAsAccessMode.xlExclusive,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
oWB.Close(Missing.Value, Missing.Value, Missing.Value);
oWB = null;
oXL.Quit();
}
catch
{
throw;
}
finally
{
// Clean up
// NOTE: When in release mode, this does the trick
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
return true;
}
Вместо того, чтобы напрямую обращаться к GC, можем ли мы удалить объекты данных и другие объекты excel вручную? вызвав соответствующую функцию dispose? – Pankaj
Вызывая функции удаления, это отправит объекты в очередь GC, вместо того, чтобы дать GC узнать, какой объект имеет право распоряжаться. – Pankaj
Использование COM выполняется медленно и требует, чтобы на сервере был установлен Excel. Каждый раз, когда вы создаете электронную таблицу, процесс Excel должен начинаться. Вы можете завершить несколько процессов Excel, выполняемых на вашем веб-сервере. Кроме того, вам нужна лицензия. –
вы можете использовать
using Microsoft.Office.Interop.Excel;
работать с документами первенствовать "родной" ...
Использование C# для создания в Excel документа http://www.codeproject.com/Articles/20228/Using-C-to-Create-an-Excel-Document
Но большинство из общих отчет Генератор/Дизайнеры могут легко экспортировать в excel также проверить на Отчетность Услуги если вы используете SQL SERVER
Я бы порекомендовал EPPlus - это решение не требует COM Interop, ни библиотеки DLL и очень быстро. Идеально подходит для веб-сценариев.
http://nuget.org/packages/EPPlus
private void DumpExcel(DataTable tbl)
{
using (ExcelPackage pck = new ExcelPackage())
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(tbl, true);
//Format the header for column 1-3
using (ExcelRange rng = ws.Cells["A1:C1"])
{
rng.Style.Font.Bold = true;
rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
rng.Style.Font.Color.SetColor(Color.White);
}
//Example how to Format Column 1 as numeric
using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
{
col.Style.Numberformat.Format = "#,##0.00";
col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
//Write it back to the client
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
}
}
}
}
Только в случае, если кто-то использовал выбранное решение и запустить в «объект не содержит определения для get_Range» исключение. Я нашел решение здесь: Worksheet get_Range throws exception. Надеюсь, это сэкономит ваше время.
- 1. Как экспортировать DataTable в Excel
- 2. Как экспортировать из datatable в файл excel в wpf C#
- 3. Как экспортировать dataTable в формате Excel?
- 4. Как экспортировать datatable в excel в приложение C# windows
- 5. Экспортировать в файл excel или .csv из datatable сайта в C#
- 6. экспорта в Excel файл из набора данных в asp.net C#
- 7. Как удалить datatable из набора данных?
- 8. Как экспортировать SAS набора данных в .dat
- 9. Как экспортировать изображения в excel из gridview?
- 10. Как экспортировать большой набор данных в Excel из SAS?
- 11. Как экспортировать DataTable OpenFaces в формат Excel/CSV?
- 12. Вставка набора данных в DataTable
- 13. Как экспортировать сетку в Excel?
- 14. Как я могу экспортировать datatable на лист excel с пользовательской строкой no листа excel из C#?
- 15. Экспорт набора данных в Excel
- 16. Как экспортировать C# datagridview в Excel
- 17. Как экспортировать отчет в слово или excel
- 18. экспортировать данные в excel из базы данных
- 19. Как загрузить datatable с использованием набора данных в C#
- 20. сбор DataTable и набора данных
- 21. Как экспортировать данные из Gridview или базы данных в Excel с помощью LINQ в C#?
- 22. Как экспортировать критерии поиска Excel/CSV в JQuery DataTable
- 23. Как экспортировать данные в excel
- 24. Как сортировать datatable в схеме набора данных
- 25. Вставка данных в лист excel из DataTable
- 26. Экспорт данных из DataTable в Excel 2007
- 27. Как автоматически экспортировать диаграмму из Excel (или Calc) в PNG
- 28. C# .net код для извлечения данных из набора данных или объекта datatable
- 29. Преобразование набора данных в excel byte array C#
- 30. Как экспортировать данные базы данных в файл Excel
@Pankaj: При редактировании, пожалуйста, удалите «пожалуйста», «спасибо» и подобные настроения. Мы стремимся к короткому и сладкому. :) – sarnold