Как я могу писать в файл Excel непрерывно? - PullRequest
0 голосов
/ 14 февраля 2012

Я хотел бы создавать и записывать непрерывно в файл Excel.Я должен код ниже, но я хочу добавить все данные, которые я получаю непрерывно.

КОД:

        Excel.Application xlApp ;
        Excel.Workbook xlWorkBook ;
        Excel.Worksheet xlWorkSheet ;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Add(misValue);

        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

        xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        xlWorkBook.Close(true, misValue, misValue);
        //xlApp.Quit();

        releaseObject(xlWorkSheet);
        releaseObject(xlWorkBook);
        releaseObject(xlApp);

        MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
    }

    private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            MessageBox.Show("Exception Occured while releasing object " +     ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }

В этом коде, когда запускается приложение, он всегда говорит, что сделатьВы хотите заменить его, и он всегда закрывает приложение, когда программа получает данные.

Это функциональность, которую я хочу иметь: я хочу добавить файл, как здесь.

    StreamWriter fileWriter = new StreamWriter("test.txt", true);
    fileWriter.WriteLine(jointHead.Position.X);       
    fileWriter.Close();
* 1010Что может быть решением для такого рода проблем?Спасибо ...

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

Файлы Excel являются двоичными, поэтому непрерывная запись в файл Excel не имеет смысла.

Лучшее решение, которое я могу предложить, - это создать файл CSV и непрерывно писать в него. В отличие от файлов Excel, файлы CSV можно обрабатывать как простые текстовые потоки и открывать их в Excel.

0 голосов
/ 14 февраля 2012

Кстати - я знаю, что ваш MessageBox.Show («Исключение ...») предназначен исключительно для целей отладки.постарайтесь не оставлять это в своем окончательном приложении и вместо этого подумайте о какой-либо функции ведения журнала с прикрепленным перечислением «Важность».

, кроме этого, я хотел бы спросить, почему файл Excel используется, а не другие масштабируемые носители данных.в конце концов, вы можете сохранить в БД, запросить его при необходимости и представить файл Excel с отфильтрованным содержимым.таким образом, вы не рискуете превысить максимум строки Excel, который не учитывается при обработке ошибок, за исключением общего метода releaseObject () try {} / catch {}.

только мой шотландский пояс и подтяжки:)

0 голосов
/ 14 февраля 2012

Для добавления файла используйте следующий код:

using(StreamWriter fileWriter = new StreamWriter(@"c:\test.txt", true))
{
    fileWriter.WriteLine("test");
}

В противном случае вы не будете ничего записывать в файл, потому что закрываете его до того, как он будет записан в него. Это добавит файл и закроет поток правильным способом.

Здесь - ссылка на учебник по linq to sql. Это может помочь вам найти правильное решение для сохранения и загрузки данных

...