Добавить новый лист Excel в C #
Я использовал плагин NPOI для экспорта содержимого в виде файла Excel. Дело в том, что, когда файл экспорта достигает минимального размера экспорта (например, 65535), тогда он предает превышение предела размера. Поэтому я решил пойти на создание еще одного рабочего листа динамически, чтобы изменить записи после 65535. Но я не знаю, как написать логику для этого. Пожалуйста, расскажите мне, как я могу сделать логику для этого.
Код
GridModel model = GetItems().AsQueryable().ToGridModel(page, int.MaxValue, orderBy, string.Empty, filter); var orders = model.Data.Cast<ViewModel>(); //Create new Excel workbook var workbook = new HSSFWorkbook(); //Create new Excel sheet var sheet = workbook.CreateSheet(); //int index = workbook.AddPicture(@"D:\Temp\2\autocomplete tables", HSS); // HSSFPicture signaturePicture = patriarch.CreatePicture(anchor, index); ////(Optional) set the width of the columns sheet.SetColumnWidth(0, 10 * 256); sheet.SetColumnWidth(1, 20 * 256); sheet.SetColumnWidth(2, 110 * 256); sheet.SetColumnWidth(3, 30 * 256); //Create a header row var headerRow = sheet.CreateRow(0); //Set the column names in the header row headerRow.CreateCell(0).SetCellValue("Itemid"); headerRow.CreateCell(1).SetCellValue("ItemNo"); headerRow.CreateCell(2).SetCellValue("Title"); headerRow.CreateCell(3).SetCellValue("Status"); //(Optional) freeze the header row so it is not scrolled sheet.CreateFreezePane(0, 1, 0, 1); int rowNumber = 1; //Populate the sheet with values from the grid data foreach (ViewModel order in orders) { //Create a new row if (rowNumber < 65535) { var row = sheet.CreateRow(rowNumber++); //Set values for the cells row.CreateCell(0).SetCellValue(order.Itemid); row.CreateCell(1).SetCellValue(order.INo); row.CreateCell(2).SetCellValue(order.BTags); row.CreateCell(3).SetCellValue(order.Sid); } else { } } //Write the workbook to a memory stream MemoryStream output = new MemoryStream(); workbook.Write(output); //Return the result to the end user return File(output.ToArray(), //The binary data of the XLS file "application/vnd.ms-excel", //MIME type of Excel files "Items.xls"); //Suggested file name in the "Save as" dialog which will be displayed to the end user }
благодаря
- Как мы можем создавать диаграммы в excel с помощью closedxml
- C # - создавать обработчики событий рабочей среды excel во время выполнения из массива экземпляров excel
- Отключить жирную кнопку
- Как удалить время из столбца datetime в листе excel?
- Источник данных сводной таблицы продолжает ссылаться на ранее вставленный источник данных таблицы сводных таблиц
- Каков наилучший способ взаимодействия с Excel с помощью c # 4.0?
- Обеспечьте уникальную вкладку «Лента» для надстройки Excel
- Как добавить цвет в ячейку на листе Excel с помощью C # COM Interop
- Как мы можем изменить тип данных ячейки Excel на CellValues.String из c #
- C #: вкладка ленты Excel не добавлена
- как получить n-ю букву английского алфавита
- Чтобы отсортировать несколько столбцов в Excel с помощью C #
- Как найти максимальное значение из колонки excel?
object[,] objectrange; Excel.Range ExcelRangeNotFoundArticle; Excel.Application ActiveExelAplication = Globals.ThisAddIn.Application as Excel.Application; Excel.Worksheet ExNewWorksheet = ActiveExelAplication.Sheets.Add() as Excel.Worksheet;/*add new sheet here*/ ExNewWorksheet.Name = ("sheetName"); Excel.Worksheet ExWorksheet = ActiveExelAplication.ActiveSheet as Excel.Worksheet; ExcelRangeNotFoundArticle = ExWorksheet.get_Range("a1", "am12") as Excel.Range; objectrange= (object[,])ExcelRangeNotFoundArticle.Value;
Надеюсь, что ниже будет работать для вас:
foreach (ViewModel order in orders) { if (rowNumber % 65535 == 0 ) { sheet = workbook.CreateSheet(); sheet.SetColumnWidth(0, 10 * 256); sheet.SetColumnWidth(1, 20 * 256); sheet.SetColumnWidth(2, 110 * 256); sheet.SetColumnWidth(3, 30 * 256); headerRow.CreateCell(0).SetCellValue("Itemid"); headerRow.CreateCell(1).SetCellValue("ItemNo"); headerRow.CreateCell(2).SetCellValue("Title"); headerRow.CreateCell(3).SetCellValue("Status"); sheet.CreateFreezePane(0, 1, 0, 1); //If you want row number should start from 1. Otherwise comment it rowNumber = 1; } //Create a new row if (rowNumber < 65535) { var row = sheet.CreateRow(rowNumber++); //Set values for the cells row.CreateCell(0).SetCellValue(order.Itemid); row.CreateCell(1).SetCellValue(order.INo); row.CreateCell(2).SetCellValue(order.BTags); row.CreateCell(3).SetCellValue(order.Sid); }