1
我正在將數據從數據庫導入Excel工作表。爲此,我正在使用datareader。 Excel工作表模板有一些宏和幾個公式計算,它不是正常的Excel工作表。所以只有在允許特定單元格寫入的情況下,我才能將數據寫入Excel表格。如果不是,則不應導入數據。如何使用C#檢查單元格是否在EXCEL中只讀?
所以,爲此,我有一個XML文件,說哪一列我應該開始寫,並在哪一行它應該停止,我已經做了很多工作表。但在一張表中,該行的第一個單元格是「只讀」(鎖定),其餘的是允許寫入訪問。
由於我使用Datareader從數據庫中獲取整行,因此無法寫入鎖定的單元格,我無法寫入其他單元格。
我附上代碼片段以供參考。
請幫我做這件事。
樣品::
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);
請幫我解決這個。
謝謝你,
拉姆
您已經發布了一些代碼,但是你沒有解釋它做了什麼或者爲什麼它不適合你? – 2009-08-03 12:53:57
對不起,我忘了。 這段代碼從數據庫讀取數據,如果讀者有行。然後打開一個新的預先加載的excel模板文件,並將讀者數據分配給Values對象。然後,將XML文件中的頭部長度(HeaderData.Length)寫入每個excel單元,最後保存文件並關閉。 數據寫入的位置是excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow,CurTaskNode.DATA_MIN_COL + minCol] = values [iValueIndex]; //實際上是否需要執行檢查b4是否寫入單元格。我無法做到。請幫助 – Ramm 2009-08-03 14:04:25