none
Copier un range Excel et le coller dans une image en C#

    Pergunta

  • Bonjour,

    Je souhaite copier un range d'une feuille Excel et le coller dans une image (comme un snapshot)

    J'arrive à ouvrir mon classeurs Excel comme ceci:

          Excel.Application excel = new Excel.Application();
          Excel.Workbook wb = excel.Workbooks.Open(chemin);
          Excel.Worksheet ws = (Excel.Worksheet)excel.ActiveSheet;
          excel.Visible = true;
          excel.ScreenUpdating = false;
          excel.DisplayAlerts = false;
    


    Mais je ne vois pas comment copier un range dans le clipboard.

    Quelqu'un a-t-il une idée ?


    fred on youTube
    HTML Document Creator on codeplex
    fred
    terça-feira, 25 de outubro de 2011 09:45

Respostas

  • Bon, après quelques recherches, j'ai trouvé une classe

    http://www.codeproject.com/KB/dotnet/Exceller.aspx

    J'ai ajouté une méthode dans la classe ExcelManager:

    public void CopyRangeToClipBoard(string startCellAddress, string endCellAddress)
            {
              if (String.IsNullOrEmpty(startCellAddress))
                throw new ArgumentNullException("startCellAddress");
              if (String.IsNullOrEmpty(endCellAddress))
                throw new ArgumentNullException("endCellAddress");
              if (!AnyFileOpen)
                throw new ExcelException("No file is Open");
              try
              {
                //Range range = App.get_Range(startCellAddress, endCellAddress);
                Range range = App.get_Range(startCellAddress, endCellAddress); // copy to clipboard by default
                range.CopyPicture();
              }
              catch (Exception err)
              {
                throw new ExcelException(
                    String.Format(CultureInfo.InvariantCulture, "Can not get values of range '{0}:{1}'", startCellAddress, endCellAddress), err);
              }
            }
    


    et je copie un range dans le clipboard comme ceci:

          string cheminTest = @"C:\local\doc1.xlsx";
          ExcelManager em = new ExcelManager();
          em.Open(cheminTest);
          em.ActivateSheet("feuille1");
          em.CopyRangeToClipBoard("A1", "I21");
          // on peut coller l'image dans un mail ou une image
          em.Close();
    
    


     


    fred on youTube
    HTML Document Creator on codeplex
    fred
    • Marcado como Resposta fred75 terça-feira, 25 de outubro de 2011 13:56
    terça-feira, 25 de outubro de 2011 13:55