J'importe des données dans des feuilles Excel à partir d'une base de données. Pour cela, j'utilise le lecteur de données. Le modèle de feuille Excel a quelques macros et quelques formules calculées et ce n'est pas la feuille de calcul Excel normale. donc je dois écrire les données dans la feuille Excel seulement si la cellule particulière est autorisée à écrire. Sinon, les données ne doivent pas être importées. Donc, pour cela, j'ai un fichier XML qui dit à partir de quelle colonne je devrais commencer à écrire et dans quelle ligne il devrait s'arrêter, je l'ai fait pour beaucoup de feuilles. Mais dans une feuille, la première cellule de la rangée est "en lecture seule" (verrouillée) et le reste est autorisé en écriture.Comment vérifier si une cellule est en lecture seule dans EXCEL en utilisant C#
Comme j'obtiens la ligne entière de la base de données à l'aide de Datareader, je suis obligé d'écrire dans les autres cellules, sans écrire dans la cellule verrouillée.
Je joins l'extrait de code pour référence.
Aidez-moi s'il vous plaît à le faire.
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);
S'il vous plaît me aider à résoudre ce.
Merci,
Ramm
Vous avez posté un code, mais vous n'avez pas expliqué ce qu'il fait ou pourquoi cela ne fonctionne pas pour vous? –
Désolé, j'ai oublié. Ce morceau de code lit les données de la base de données si le lecteur contient des lignes. Il ouvre ensuite un nouveau fichier de modèle Excel préchargé et affecte les données du lecteur à l'objet Valeurs. Ensuite, pour la longueur de l'en-tête (HeaderData.Length) dans le fichier XML, il écrit dans chaque cellule Excel et enfin, il enregistre le fichier et se ferme. L'emplacement où les données sont écrites est excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = valeurs [iValueIndex]; // En fait une vérification doit être effectuée b4 que ce soit pour écrire dans la cellule. Je ne suis pas capable de le faire. Pls Help – Ramm
Ok, j'ai posté une nouvelle réponse, essayez-le. –