esempio: scrivo ciao nelle celle dell'intervallo indicato
cella = xlWorkSheet.get_Range("B1:B10");
foreach (Excel.Range ciao in cella)
{
ciao.Value = "ciao";}
esempio: dalla cella A2 alla cella J5 (J é la colonna 10)
Excel.Range celle = (Excel.Range)xlSchedaExcel.Range[xlSchedaExcel.Cells[2, 1], xlSchedaExcel.Cells[5, 10]];
trucco per trovare in automatico la cella in basso a destra
si usa il metodo di direzione .XlDirection.xlDown e quello di estrazione .Row
Excel.Range tabelladati;
tabelladati = (Excel.Range)xlSchedaExcel.Range[xlSchedaExcel.Cells[1, 1], xlSchedaExcel.Cells[xlSchedaExcel.Cells[1, 1].End[Excel.XlDirection.xlDown].Row, (ultima colonna)]];
esempio: per ciascuna cella usata nel foglio se é una formula sovrascrivi con il valore
Excel.Worksheet scheda = xlFileExcel.Sheets["NOMESCHEDA"];
Excel.Range celleusate = scheda.UsedRange;
foreach (Excel.Range cellausate in celleusate)
{
// verifica se é una formula ed in caso mettici il valore}
if (cellausate.Formula.ToString().StartsWith("="))
{Excel.Range cellarange = scheda.get_Range(cellausate.Address);}
cellarange.Value = cellausate.Value.ToString();
si pososno limitare le celle usate a seconda di certe condizioni
si usa SpecialCells(Excel.XlCellType...)
Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.tipo);
occorre inserire il tutto in try .. catch perché se non trova le celle da errore
tipi
- xlCellTypeAllFormatConditions celle con qualunque formato
- xlCellTypeAllValidation celle con criteri di validazione
- xlCellTypeBlanks celle vuote
- xlCellTypeComments celle contenenti note
- xlCellTypeConstants celle contenenti costanti
- xlCellTypeFormulas celle contenenti formule
- xlCellTypeLastCell ultima cella del foglio di lavoro
- xlCellTypeVisible tutte le celle visibili
é possibile anche limitare ulteriormente le selezioni di xlCellTypeConstants e xlCellTypeFormulas
Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeConstants, parametro);
Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeFormulas, parametro);
- xlErrors → 16 celle con errori
- xlLogical → 4 celle con valori logici (true e false)
- xlTextValues → 2 celle con testo
- xlNumbers → 1 celle con numeri
esempio: per ogni cella della scheda con validazione cancella la validazione
Excel.Worksheet scheda = xlFileExcel.Sheets["NOMESCHEDA"];
try
{Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeAllValidation);}
foreach (Excel.Range celleusata in celleusate)
{celleusata.Validation.Delete();}
catch { }
esempio: per ogni cella della scheda con una formula solo copiaci il valore (toglie le formule)
Excel.Worksheet scheda = xlFileExcel.Sheets["scheda"];
Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeFormulas);
foreach (Excel.Range cellaformula in celleusate)
{Excel.Range cellarange = scheda.get_Range(cellaformula.Address);}
cellarange.Value = cellaformula.Value.ToString();
esempio: seleziono solo le celle con valori fissi solo numeri e rimuovo quelli 0 anche quelli con 0 e decimali
Excel.Range celleusate = scheda.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeConstants, 1);
foreach (Excel.Range callavalore in celleusate)
{if (cellavalore.Value.ToString("0") == "0")}
{cellavalore.ClearContents();}