none
Propriedade de Arquivo Excel. RRS feed

  • Pergunta

  • Olá Senhores, bom dia

    Preciso de uma ajudinha, é o seguinte: Tenho uma aplicação em C# onde importo uma planilha Excel, eu preciso acessar as propriedades desse arquivo excel para descobrir quando essa planilha foi gerada, isso é essencial para o funcionamento da minha aplicação, isso é possível ?

    Desde já agradeço ...

    Elton Araujo

    terça-feira, 14 de agosto de 2012 14:41

Respostas

  • Elton,

    Através da classe FileInfo é possível ter esse informação.

    A classe possui um método Attributes, que você pode pegar o CreateTime. Abaixo tem um código com o exemplo do MSDN Library:

    using System;
    using System.IO;
    
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //  Loop through all the immediate subdirectories of C.
                foreach (string entry in Directory.GetDirectories(@"C:\"))
                {
                    DisplayFileSystemInfoAttributes(new DirectoryInfo(entry));
                }
                //  Loop through all the files in C.
                foreach (string entry in Directory.GetFiles(@"C:\"))
                {
                    DisplayFileSystemInfoAttributes(new FileInfo(entry));
                }
            }
            static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
            {
                //  Assume that this entry is a file.
                string entryType = "File";
    
                // Determine if entry is really a directory
                if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
                {
                    entryType = "Directory";
                }
                //  Show this entry's type, name, and creation date.
                Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
            }
        }
    }
    
     // Output will vary based on contents of drive C.
    
     // Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003
     // Directory entry C:\Inetpub was created on Monday, January 12, 2004
     // Directory entry C:\Program Files was created on Tuesday, November 25, 2003
     // Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003
     // Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003
     // Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003
     // File entry C:\IO.SYS was created on Tuesday, November 25, 2003
     // File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003
     // File entry C:\pagefile.sys was created on Saturday, December 27, 2003

    Caso queria mais informações pode ver nos links abaixo:

    http://msdn.microsoft.com/pt-br/library/system.io.fileinfo.aspx

    http://msdn.microsoft.com/pt-br/library/system.io.filesysteminfo.aspx

    Abs!


    Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
    E-mail: alexsandrer@gmail.com
    Twitter: @AlexRAlmeida

    terça-feira, 14 de agosto de 2012 16:04

Todas as Respostas

  • Elton,

    Através da classe FileInfo é possível ter esse informação.

    A classe possui um método Attributes, que você pode pegar o CreateTime. Abaixo tem um código com o exemplo do MSDN Library:

    using System;
    using System.IO;
    
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //  Loop through all the immediate subdirectories of C.
                foreach (string entry in Directory.GetDirectories(@"C:\"))
                {
                    DisplayFileSystemInfoAttributes(new DirectoryInfo(entry));
                }
                //  Loop through all the files in C.
                foreach (string entry in Directory.GetFiles(@"C:\"))
                {
                    DisplayFileSystemInfoAttributes(new FileInfo(entry));
                }
            }
            static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
            {
                //  Assume that this entry is a file.
                string entryType = "File";
    
                // Determine if entry is really a directory
                if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
                {
                    entryType = "Directory";
                }
                //  Show this entry's type, name, and creation date.
                Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
            }
        }
    }
    
     // Output will vary based on contents of drive C.
    
     // Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003
     // Directory entry C:\Inetpub was created on Monday, January 12, 2004
     // Directory entry C:\Program Files was created on Tuesday, November 25, 2003
     // Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003
     // Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003
     // Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003
     // File entry C:\IO.SYS was created on Tuesday, November 25, 2003
     // File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003
     // File entry C:\pagefile.sys was created on Saturday, December 27, 2003

    Caso queria mais informações pode ver nos links abaixo:

    http://msdn.microsoft.com/pt-br/library/system.io.fileinfo.aspx

    http://msdn.microsoft.com/pt-br/library/system.io.filesysteminfo.aspx

    Abs!


    Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
    E-mail: alexsandrer@gmail.com
    Twitter: @AlexRAlmeida

    terça-feira, 14 de agosto de 2012 16:04
  • Muito Obrigado Alexsandre, funcionou ...

    Sou muito grato...

    Abs ...



    Elton Araujo

    terça-feira, 14 de agosto de 2012 16:40
  • Alexsandre, boa tarde

    Vou abusar um pouco, será que poderia me dar mais uma ajuda ? É o seguinte: Essa planilha do Excel que eu importo para o sistema, é originalmente criada com uma extensão .SLK (Excel), o cliente abre esse essa planilha, manda salvar como e põe a extensão xls, a principio seria feito assim, pois estou usando WorkBook do Excel para poder abrir o arquivo e salvar em banco e só funciona com xls, mas aí que vem o problema, se eu abro o arquivo e mando salvar como, mudando a extensão, eu perco a data de criação do arquivo original e acabo fugindo da regra que eu preciso, teria como resolver isso ? 



    Elton Araujo

    terça-feira, 14 de agosto de 2012 17:59
  • Elton,

    Ao salvar como, a data de criação do documento é alterada mesmo, na verdade é gerado um novo documento, por isso nova data de criação.

    Onde é gerado o arquivo SLK? Não tem a opção de gerar em outro formato, que você possa ler sem ter que alterar o arquivo para xls? Uma forma seria o arquivo vim como CSV. E você poderia ler com OleDb. Não serviria? Se servir nesse link tem um post de como ler csv e outros tipos de arquivos com OleDb.

    Abs!


    Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
    E-mail: alexsandrer@gmail.com
    Twitter: @AlexRAlmeida

    terça-feira, 14 de agosto de 2012 19:59
  • Esse arquivo é gerado de um outro sistema bem antigo que eu não tenho acesso, e segundo o cliente só pode ser gerado nesse formato SLK infelizmente.

    Grato...


    Elton Araujo

    terça-feira, 14 de agosto de 2012 20:14