Нужно добавить Fitler в Export to excel function
У меня есть общая функция, которая принимает набор данных в качестве параметра, необходимо добавить фильтр в эту функцию.
Моя функция
public static void ExportDSToExcel(DataSet ds, string destination) { using (var workbook = SpreadsheetDocument.Create(destination, DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook)) { var workbookPart = workbook.AddWorkbookPart(); workbook.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); workbook.WorkbookPart.Workbook.Sheets = new DocumentFormat.OpenXml.Spreadsheet.Sheets(); uint sheetId = 1; foreach (DataTable table in ds.Tables) { var sheetPart = workbook.WorkbookPart.AddNewPart<WorksheetPart>(); var sheetData = new DocumentFormat.OpenXml.Spreadsheet.SheetData(); sheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData); DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = workbook.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>(); string relationshipId = workbook.WorkbookPart.GetIdOfPart(sheetPart); if (sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Count() > 0) { sheetId = sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Select(s => s.SheetId.Value).Max() + 1; } DocumentFormat.OpenXml.Spreadsheet.Sheet sheet = new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = relationshipId, SheetId = sheetId, Name = table.TableName }; sheets.Append(sheet); DocumentFormat.OpenXml.Spreadsheet.Row headerRow = new DocumentFormat.OpenXml.Spreadsheet.Row(); List<String> columns = new List<string>(); foreach (DataColumn column in table.Columns) { columns.Add(column.ColumnName); DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell(); cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String; cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName); headerRow.AppendChild(cell); } sheetData.AppendChild(headerRow); foreach (DataRow dsrow in table.Rows) { DocumentFormat.OpenXml.Spreadsheet.Row newRow = new DocumentFormat.OpenXml.Spreadsheet.Row(); foreach (String col in columns) { DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell(); cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String; cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow[col].ToString()); // newRow.AppendChild(cell); } sheetData.AppendChild(newRow); } } } }
Что я сделал для этого?
- Формат Excel Excel 2003 - AutoFitWidth не работает
- Книга Excel всегда читается только после создания с открытым xml
- Ошибка Excel «обнаружила нечитаемый контент», открыв xlsx, созданный с помощью C #
- OpenXML - созданный стиль рабочего листа влияет на другие существующие
- Открытый XML не сохраняется при добавлении данных C #
Я нашел на нем одну статью, http://www.xrmcoaches.com/2010/11/openxml-worksheet-adding-autofilter/
И попробуйте добавить код таким образом, но не сработали.
// Set the AutoFilter property to a range that is the size of the data // within the worksheet AutoFilter autoFilter1 = new AutoFilter() { Reference = "A1:Z1" }; Worksheet sheet1 = new Worksheet(); sheet1.Append(sheetData); sheet1.Append(autoFilter1);
Я проверил множество решений от SO и других сайтов, но не получал помощи нигде, поэтому попросил здесь экспертный обзор.
- Как получить информацию о диаграмме из электронной таблицы Excel с помощью Apache POI?
- Как я могу встроить некоторый код VBA в электронную таблицу, созданную с помощью ClosedXML?
- Probelms вставляет нижний колонтитул в Excel - OpenXML
- OpenXML Добавление AutoFilter для документирования с использованием SAX
- Экспорт данных в Excel с помощью макроса через Open XML
- C # и OpenXML: вставьте изображение в документ excel
- Как настроить формат xlsx и формулы с помощью OpenXmlWriter
- Как сохранить файл Excel 2007 в «OOXML» (текст xml), чтобы я мог его изменить в коде?