Impossible de convertir le type 'double' de 'string' pour les valeurs Excel
Je suis le chargement d'un fichier Excel comme indiqué dans de nombreux endroits sur le web.
OpenFileDialog chooseFile = new OpenFileDialog();
chooseFile.Filter = "Excel files (*.xls,*.xlsl)|*.xls;*.xlsx";
if (chooseFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
selectedFileName = chooseFile.FileName;
textBox1.Text = selectedFileName;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Workbook wb = excel.Workbooks.Open(selectedFileName);
Sheets excelSheets = wb.Worksheets;
string currentSheet = "Sheet 1";
excelWorksheet = (Worksheet)excelSheets.get_Item(currentSheet);
Range usedRange = excelWorksheet.UsedRange;
Range lastCell = usedRange.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
lastRow = lastCell.Row;
lastColumn = lastCell.Column;
//release com object you won't need.
Marshal.ReleaseComObject(excel);
Marshal.ReleaseComObject(wb);
}
Des ennuis quand j'essaie d'obtenir la valeur unique à partir d'une cellule avec cette fonction:
private string getCellValue(Worksheet Sheet, int Row, int Column)
{
var cellValue = (string)(Sheet.Cells[Row, Column] as Range).Value;
return cellValue;
}
Ce code fonctionne pour un grand nombre de cellules, mais soudainement coincé à une cellule de soulever cette exception:
Ne peut pas convertir de type 'double' de 'string'
C'est bizarre parce que il fonctionne parfaitement avec toutes les autres cellules et les convertit tout à chaîne. Il ne semble pas même à donner de la difficulté avec des cellules vides. J'ai également précisé que chaque cellule à partir du fichier excel à être "texte", mais n'a vraiment aucune idée de ce comportement.
Aussi essayé une conversion explicite de cette façon.
private string getCellValue(Worksheet Sheet, int Row, int Column)
{
string cellValue = Sheet.Cells[Row, Column].Value.ToString();
return cellValue;
}
Et maintenant, l'exception soulevée est:
Ne peut pas effectuer la liaison de runtime sur une référence null
- Avez-vous essayé d'utiliser le Texte de la propriété au lieu de la Valeur?
- OMG. Que de travail. Je me sens vraiment stupide, mais si vous organisez la réponse, je vais le marquer comme réponse. Merci beaucoup. 🙂
Vous devez vous connecter pour publier un commentaire.
Le Texte de la propriété peut être utilisée pour récupérer le contenu texte à partir d'une Cellule. Donc, vous pouvez essayer d'utiliser la propriété comme suit:
var cellValue = (string)(Sheet.Cells[Row, Column] as Range).Text;
essayer cette
Essayez d'utiliser ce code ci-dessous:
Espère que ça fonctionne!
Essayer avec:
Cela fonctionne pour moi.