Я импортирую данные в листы Excel из базы данных. Для этого я использую datareader. Шаблон листа excel имеет несколько макросов и вычисляется несколько формул, а не обычный рабочий лист excel. поэтому мне приходится записывать данные в лист excel только в том случае, если конкретной ячейке разрешено писать. Если нет, данные не должны импортироваться.Как проверить, действительно ли ячейка загружена только в EXCEL, используя C#
Для этого у меня есть XML-файл, в котором говорится, из какого столбца я должен начать писать и в какой строке он должен остановиться, я сделал это для многих листов. Но в одном листе первая ячейка строки является «readonly» (заблокирована), а остальные доступны для записи.
Поскольку я получаю всю строку из БД с помощью Datareader, я застрял в необходимости писать в другие ячейки, не записывая в заблокированную ячейку.
У меня есть фрагмент кода для справки.
Пожалуйста, помогите мне в этом.
Sample ::
if (reader.HasRows)
{
minRow = 0;
minCol = 0;
Excel.Workbook SelWorkBook = excelAppln.Workbooks.Open(curfile, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, false, false, false);
Excel.Sheets excelSheets = SelWorkBook.Worksheets;
Excel.Worksheet excelworksheet = (Excel.Worksheet)excelSheets.get_Item(CurSheetName);
// Process each result in the result set
while (reader.Read())
{
// Create an array big enough to hold the column values
object[] values = new object[reader.FieldCount];
// Add the array to the ArrayList
rowList.Add(values);
// Get the column values into the array
reader.GetValues(values);
int iValueIndex = 0;
// If the Reading Format is by ColumnByColumn
if (CurTaskNode.ReadFormat == "ColumnbyColumn")
{
minCol = 0;
// minRow = 0;
for (int iCol = 0; iCol < CurTaskNode.HeaderData.Length; iCol++)
{
// Checking whether the Header data exists or not
if (CurTaskNode.HeaderData[minCol] != "")
{
// Assigning the Value from reader to the particular cell in excel sheet
excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = values[iValueIndex];
iValueIndex++;
}
minCol++;
}
minRow++;
}SelWorkBook.Close(true, curfile, null);
Пожалуйста, помогите мне в решении этого.
Спасибо,
Рамм
Вы отправили код, но вы не объяснили, что он делает или почему это не работает для вас? –
Извините, я забыл. Этот фрагмент кода считывает данные из БД, если у читателя есть rows.It затем открывает новый предварительно загруженный файл шаблона excel и присваивает данные считывателя объекту Values. Затем для длины заголовка (HeaderData.Length) в XML-файле он записывается в каждую ячейку excel и, наконец, сохраняет файл и закрывается. Место, где записаны данные, является excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = значения [iValueIndex]; // Собственно, проверка должна быть выполнена b4, чтобы записать в ячейку. Я не могу этого сделать. Pls Help – Ramm
Хорошо, я опубликовал новый ответ, попробуйте. –