Как создать файл Excel с помощью OfficeOpenXML в веб-API ASP.NET Core 7 и открыть этот файл в Excel 2016. ⇐ C#
Как создать файл Excel с помощью OfficeOpenXML в веб-API ASP.NET Core 7 и открыть этот файл в Excel 2016.
Я создал файл Excel с помощью OfficeOpenXML, файл был успешно создан, но когда я пытаюсь открыть его в Excel 2016, некоторые данные отображаются в виде черного экрана, но в WPS Office он открывается правильно. Я создаю этот файл в веб-API ASP.NET Core 7.0, используя OfficeOpenXml и C#.
public static ExcelWorksheet GetExcel (список BillingExport, BillingReportPersonalDetails persdetail, Список данных, List Сводные данные, ExcelPackage пакет, строка имя Excel) { Лист ExcelWorksheet = package.Workbook.Worksheets.Add(excelname); интервал счетчика = 1; worksheet.Cells[counter, 1].Value = "Доход в минуту отчета о возмещении (сводка)"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Cells[счетчик, 1].Style.Font.Size = 12; ++счетчик; worksheet.Cells[counter, 1].Value = "Имя клиента:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.ClientName; ++счетчик; рабочий лист.Ячейки[счетчик, 1].Значение = "Адрес:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.Адрес; ++счетчик; worksheet.Cells[counter, 1].Value = "Номер телефона:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.Phone; ++счетчик; worksheet.Cells[counter, 1].Value = "Даты активности:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Cells[counter, 2].Value = $"{list.FromDate} {list.ToDate}"; рабочий лист.Cells[счетчик, 2].Style.Font.Bold = true; worksheet.Cells[counter, 3].Value = "Использовать этот диапазон в качестве ссылки на клиента в заказе на продажу"; рабочий лист.Cells[счетчик, 3].Style.Font.Bold = true; ++счетчик; счетчик++; worksheet.Cells[counter, 8].Value = "Используйте эту информацию для создания заказа на продажу"; рабочий лист.Cells[счетчик, 8].Style.Font.Bold = true; ++счетчик; интервал colHeaderCounter = 1; рабочий лист.Cells[counter, colHeaderCounter].Value = «Пациент»; colHeaderCounter++; рабочий лист.Cells[counter, colHeaderCounter].Value = "DOB"; colHeaderCounter++; рабочий лист.Cells[counter, colHeaderCounter].Value = "MNR"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Применимые коды CPT"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Взимаемая плата"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Примечания Medicare"; colHeaderCounter++; вар firstGroupRange = рабочий лист.Cells[счетчик, 1, счетчик, colHeaderCounter]; SetCellBorders (firstGroupRange); рабочий лист.Cells[счетчик, colHeaderCounter + 1].Value = string.Empty; рабочий лист.Cells[счетчик, colHeaderCounter + 2].Value = string.Empty; интервал j = счетчик; worksheet.Cells[j, colHeaderCounter + 1].Value = "Применимые коды CPT"; рабочий лист.Cells[j, colHeaderCounter + 1].Style.Font.Bold = true; worksheet.Cells[j, colHeaderCounter + 2].Value = "Собираемая плата"; рабочий лист.Cells[j, colHeaderCounter + 2].Style.Font.Bold = true; рабочий лист.Cells[j, colHeaderCounter + 3].Value = "Count"; рабочий лист.Cells[j, colHeaderCounter + 3].Style.Font.Bold = true; worksheet.Cells[j, colHeaderCounter + 4].Value = "Примечания Medicare"; рабочий лист.Cells[j, colHeaderCounter + 4].Style.Font.Bold = true; int SecondGroupStartColumn = colHeaderCounter + 1; если (data.Count > 0) { вар SecondGroupRange = рабочий лист.Cells[j, SecondGroupStartColumn, j, colHeaderCounter + 4]; SetCellBorders (второйGroupRange); } int я = счетчик + 1; foreach (строка var в данных) { интервал colDataCounters = 1; рабочий лист.Cells[i, colDataCounters++].Value = row.PatientName; рабочий лист.Cells[i, colDataCounters++].Value = row.DOB; рабочий лист.Cells[i, colDataCounters++].Value = row.MNRNumber; рабочий лист.Cells[i, colDataCounters++].Value = row.ApplicableCPTCodes; рабочий лист.Cells[i, colDataCounters++].Value = row.Collectiblefee; рабочий лист.Cells[i, colDataCounters++].Value = row.MedicareNotes; var dataRowRange = worksheet.Cells[i, 1, i, colHeaderCounter + 2]; SetCellBorders (dataRowRange); я++; } j++; foreach (строка var в сводных данных) { интервал colDataCounters = colHeaderCounter + 1; рабочий лист.Cells[j, colDataCounters++].Value = row.ApplicableCPTCodes; рабочий лист.Cells[j, colDataCounters++].Value = row.Collectiblefee; рабочий лист.Cells[j, colDataCounters++].Value = row.Count; рабочий лист.Cells[j, colDataCounters++].Value = row.MedicareNotes; var summaryDataRowRange = worksheet.Cells[j, colHeaderCounter + 1, j, colHeaderCounter + 4]; SetCellBorders (summaryDataRowRange); j++; } используя (диапазон var = рабочий лист.Cells[j, 1, j, colHeaderCounter + 4]) { SetCellBorders (диапазон); } j++; for (int ColumnIndex = 1; ColumnIndex cell.Text.Length); рабочий лист.Column(columnIndex).Width = maxColumnWidth + 2; // Добавляем дополнительную ширину для заполнения } //worksheet.Cells[1, 1, i - 1, colHeaderCounter + 2].AutoFitColumns(0); используя (var colorrange = worksheet.Cells[counter, 1, i - 1, colHeaderCounter + 2]) { Colorrange.Style.Fill.PatternType = ExcelFillStyle.Solid; } используя (диапазон var = рабочий лист.Cells[counter, 1, counter, colHeaderCounter + 2]) { диапазон.Стиль.Фонт.Жирный = правда; } используя (диапазон var = рабочий лист.Cells[i, 1, i, colHeaderCounter + 2]) { диапазон.Стиль.Фонт.Жирный = правда; } рабочий лист.View.PageLayoutView = ложь; вернуть рабочий лист; }
Я создал файл Excel с помощью OfficeOpenXML, файл был успешно создан, но когда я пытаюсь открыть его в Excel 2016, некоторые данные отображаются в виде черного экрана, но в WPS Office он открывается правильно. Я создаю этот файл в веб-API ASP.NET Core 7.0, используя OfficeOpenXml и C#.
public static ExcelWorksheet GetExcel (список BillingExport, BillingReportPersonalDetails persdetail, Список данных, List Сводные данные, ExcelPackage пакет, строка имя Excel) { Лист ExcelWorksheet = package.Workbook.Worksheets.Add(excelname); интервал счетчика = 1; worksheet.Cells[counter, 1].Value = "Доход в минуту отчета о возмещении (сводка)"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Cells[счетчик, 1].Style.Font.Size = 12; ++счетчик; worksheet.Cells[counter, 1].Value = "Имя клиента:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.ClientName; ++счетчик; рабочий лист.Ячейки[счетчик, 1].Значение = "Адрес:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.Адрес; ++счетчик; worksheet.Cells[counter, 1].Value = "Номер телефона:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Ячейки[счетчик, 2].Значение = persdetail.Phone; ++счетчик; worksheet.Cells[counter, 1].Value = "Даты активности:"; рабочий лист.Cells[счетчик, 1].Style.Font.Bold = true; рабочий лист.Cells[counter, 2].Value = $"{list.FromDate} {list.ToDate}"; рабочий лист.Cells[счетчик, 2].Style.Font.Bold = true; worksheet.Cells[counter, 3].Value = "Использовать этот диапазон в качестве ссылки на клиента в заказе на продажу"; рабочий лист.Cells[счетчик, 3].Style.Font.Bold = true; ++счетчик; счетчик++; worksheet.Cells[counter, 8].Value = "Используйте эту информацию для создания заказа на продажу"; рабочий лист.Cells[счетчик, 8].Style.Font.Bold = true; ++счетчик; интервал colHeaderCounter = 1; рабочий лист.Cells[counter, colHeaderCounter].Value = «Пациент»; colHeaderCounter++; рабочий лист.Cells[counter, colHeaderCounter].Value = "DOB"; colHeaderCounter++; рабочий лист.Cells[counter, colHeaderCounter].Value = "MNR"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Применимые коды CPT"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Взимаемая плата"; colHeaderCounter++; worksheet.Cells[counter, colHeaderCounter].Value = "Примечания Medicare"; colHeaderCounter++; вар firstGroupRange = рабочий лист.Cells[счетчик, 1, счетчик, colHeaderCounter]; SetCellBorders (firstGroupRange); рабочий лист.Cells[счетчик, colHeaderCounter + 1].Value = string.Empty; рабочий лист.Cells[счетчик, colHeaderCounter + 2].Value = string.Empty; интервал j = счетчик; worksheet.Cells[j, colHeaderCounter + 1].Value = "Применимые коды CPT"; рабочий лист.Cells[j, colHeaderCounter + 1].Style.Font.Bold = true; worksheet.Cells[j, colHeaderCounter + 2].Value = "Собираемая плата"; рабочий лист.Cells[j, colHeaderCounter + 2].Style.Font.Bold = true; рабочий лист.Cells[j, colHeaderCounter + 3].Value = "Count"; рабочий лист.Cells[j, colHeaderCounter + 3].Style.Font.Bold = true; worksheet.Cells[j, colHeaderCounter + 4].Value = "Примечания Medicare"; рабочий лист.Cells[j, colHeaderCounter + 4].Style.Font.Bold = true; int SecondGroupStartColumn = colHeaderCounter + 1; если (data.Count > 0) { вар SecondGroupRange = рабочий лист.Cells[j, SecondGroupStartColumn, j, colHeaderCounter + 4]; SetCellBorders (второйGroupRange); } int я = счетчик + 1; foreach (строка var в данных) { интервал colDataCounters = 1; рабочий лист.Cells[i, colDataCounters++].Value = row.PatientName; рабочий лист.Cells[i, colDataCounters++].Value = row.DOB; рабочий лист.Cells[i, colDataCounters++].Value = row.MNRNumber; рабочий лист.Cells[i, colDataCounters++].Value = row.ApplicableCPTCodes; рабочий лист.Cells[i, colDataCounters++].Value = row.Collectiblefee; рабочий лист.Cells[i, colDataCounters++].Value = row.MedicareNotes; var dataRowRange = worksheet.Cells[i, 1, i, colHeaderCounter + 2]; SetCellBorders (dataRowRange); я++; } j++; foreach (строка var в сводных данных) { интервал colDataCounters = colHeaderCounter + 1; рабочий лист.Cells[j, colDataCounters++].Value = row.ApplicableCPTCodes; рабочий лист.Cells[j, colDataCounters++].Value = row.Collectiblefee; рабочий лист.Cells[j, colDataCounters++].Value = row.Count; рабочий лист.Cells[j, colDataCounters++].Value = row.MedicareNotes; var summaryDataRowRange = worksheet.Cells[j, colHeaderCounter + 1, j, colHeaderCounter + 4]; SetCellBorders (summaryDataRowRange); j++; } используя (диапазон var = рабочий лист.Cells[j, 1, j, colHeaderCounter + 4]) { SetCellBorders (диапазон); } j++; for (int ColumnIndex = 1; ColumnIndex cell.Text.Length); рабочий лист.Column(columnIndex).Width = maxColumnWidth + 2; // Добавляем дополнительную ширину для заполнения } //worksheet.Cells[1, 1, i - 1, colHeaderCounter + 2].AutoFitColumns(0); используя (var colorrange = worksheet.Cells[counter, 1, i - 1, colHeaderCounter + 2]) { Colorrange.Style.Fill.PatternType = ExcelFillStyle.Solid; } используя (диапазон var = рабочий лист.Cells[counter, 1, counter, colHeaderCounter + 2]) { диапазон.Стиль.Фонт.Жирный = правда; } используя (диапазон var = рабочий лист.Cells[i, 1, i, colHeaderCounter + 2]) { диапазон.Стиль.Фонт.Жирный = правда; } рабочий лист.View.PageLayoutView = ложь; вернуть рабочий лист; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение