• Как таблицу из docx без боли перенести в DataSet?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    Без гемора вряд ли.
    Однако, разбор docx - не такая уж и сложная задача. Распаковываем zip-архив (т.е. docx) вызовом 7-zip-а, берем оттуда xml и разбираем его с помощью XDocument, либо XmlDocument - что больше нравится.
    Ответ написан
    Комментировать
  • Можно ли считать профиль в Windows как отдельную среду для работы?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    Хорошо бы убрать права чтения для этого пользователя с корневых папок всех дисков, открыть ему чтение только папок Windows и Program Files. Еще у него останется (по умолчанию) полный доступ к своей папке. Пусть там и хозяйничает.
    Ответ написан
    Комментировать
  • Инструмент в wpf для быстрого вывода большой текстовой информации?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    От скуки нарисовал более простое решение - custom panel, которая отображает сетку с ячейками фиксированного размера. Border-ы, Background-ы ячеек - на ваше усмотрение в методах CreateCell и BindCell.

    Пробовал 1 млн х 1 млн ячеек - никаких тормозов. Отображается только то, что видно на экране.

    59e9ec8d02f32162485723.png
    <Window x:Class="GridTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:GridTest"
            Title="Square Grid Test" Height="350" Width="525">
        <ScrollViewer CanContentScroll="True" 
                    HorizontalScrollBarVisibility="Visible"
                    VerticalScrollBarVisibility="Visible">
            <local:SquareGrid x:Name="Grid">
            </local:SquareGrid>
        </ScrollViewer>
    </Window>


    using System;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Media;
    
    namespace GridTest
    {
        public partial class MainWindow : Window, SquareGrid.ICellGenerator
        {
            public MainWindow()
            {
                InitializeComponent();
    
                Grid.RowCount = 1000;
                Grid.ColumnCount = 1000;
                Grid.CellWidth = 36;
                Grid.CellGenerator = this;
            }
    
            public UIElement CreateCell()
            {
                return new Border
                {
                    Child = new TextBlock
                    {
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment = VerticalAlignment.Center,
                        FontSize = 10
                    },
                    BorderBrush = Brushes.LightGray,
                    BorderThickness = new Thickness(0, 0, 1, 1)
                };
            }
    
            public void BindCell(UIElement view, int x, int y)
            {
                var border = (Border)view;
                var textBlock = (TextBlock)border.Child;
                textBlock.Text = "" + x + ":" + y;
            }
        }
    }


    public sealed class SquareGrid : Panel, IScrollInfo
    {
        // Подробности сюда не влезли,
        // см. SquareGrid.cs
    }

    SquareGrid.cs

    Проект целиком: SquareGrid.zip
    Ответ написан
    2 комментария