там быстрый путь состоит в том, чтобы экспортировать массив в файл Excel с помощью C#?

Вам все еще может понадобиться использовать блокировку так же, как вам может потребоваться транзакция в базе данных. «Параллельная» часть означает, что словарь будет продолжать правильно работать в нескольких потоках.

В параллельную коллекцию встроены TryGetValue и TryRemove, которые подтверждают, что кто-то может удалить элемент первым. Блокировка на уровне детализации встроена, но вам все еще нужно подумать о том, что делать в этих ситуациях. Для кэширования это часто не имеет значения - то есть это идемпотентная операция.

re: кэширование. Я чувствую , что это зависит от того, что вы храните в кеше + что вы делаете с ним. Существуют затраты на кастинг, связанные с использованием объекта. Вероятно, для большинства веб-приложений лучше всего подходит MemCache, как указано выше.

6
задан Jon Limjap 22 June 2009 в 08:01
поделиться

5 ответов

Вывести данные в файл, разделив элементы массива запятыми. Затем сохраните файл как name.csv

Используйте FileWriter для вывода файла.

9
ответ дан 8 December 2019 в 04:31
поделиться

Если CSV вас не устраивает, вы можете использовать Microsoft.Office.Interop.Excel. Пример находится на Как:

4
ответ дан 8 December 2019 в 04:31
поделиться

Я бы использовал сторонний компонент экспорта xsl. Это избавит вас от хлопот, связанных с автоматизацией Excel, и вам не придется связывать сборки взаимодействия Excel с вашим приложением.

MyXls - это простой компонент с открытым исходным кодом, который действительно экспортирует в Excel. Он должен полностью удовлетворить ваши потребности.

2
ответ дан 8 December 2019 в 04:31
поделиться

Вы можете сделать это с помощью Ado.net. В приведенном ниже коде предполагается, что существует электронная таблица Excel под названием Book1. xls в папке C: \ Stuff \ и что таблица имеет заголовки ID, Name, Site, уже присутствующие на листе Sheet1.

private void button1_Click(object sender, EventArgs e)
    {
        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source=C:\Stuff\Book1.xls;Extended Properties=
                    ""Excel 8.0;HDR=YES;""";

        using (OleDbConnection conn = new OleDbConnection(connectionString))
        {

            using (OleDbCommand command = conn.CreateCommand())
            {
                command.CommandText = @"INSERT INTO [Sheet1$] (ID, Name, Site) VALUES(1, ""Phil"", ""StackOverflow.com"")";
                conn.Open();
                command.ExecuteNonQuery();
            }
        }

    }
2
ответ дан 8 December 2019 в 04:31
поделиться

Одна из замечательных особенностей объекта range заключается в том, что вы можете назначить двумерный массив непосредственно свойству value. важно, чтобы в диапазоне было такое же количество ячеек, сколько элементов в массиве.

        //using Excel = Microsoft.Office.Interop.Excel;
        String[,] myArr = new string[10, 10];
        for (int x = 0; x < 10; x++)
        {
            for (int y = 0; y < 10; y++)
            {
                myArr[x, y] = "Test " + y.ToString() + x.ToString();
            }
        }
        Excel.Application xlApp = new Excel.Application();
        xlApp.Visible = true;
        Excel.Workbook wb = xlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
        Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1);
        Excel.Range rng = ws.Cells.get_Resize(myArr.GetLength(0), myArr.GetLength(1));
        rng.Value2 = myArr;
8
ответ дан 8 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: