Пример #1
0
        public async Task <List <Content> > GetContentsByFileAsync(string filePath, Site site, Channel channel)
        {
            var contents = new List <Content>();
            var styles   = ColumnsManager.GetContentListStyles(await _databaseManager.TableStyleRepository.GetContentStylesAsync(site, channel));

            var sheet = ExcelUtils.GetDataTable(filePath);

            if (sheet != null)
            {
                var columns = new List <string>();

                for (var i = 1; i < sheet.Rows.Count; i++) //行
                {
                    var row = sheet.Rows[i];

                    if (i == 1)
                    {
                        for (var j = 0; j < sheet.Columns.Count; j++)
                        {
                            var value = row[j].ToString().Trim();
                            columns.Add(value);
                        }
                        continue;
                    }

                    var dict = new Dictionary <string, object>();

                    for (var j = 0; j < columns.Count; j++)
                    {
                        var columnName = columns[j];
                        var value      = row[j].ToString().Trim();

                        var style = styles.FirstOrDefault(x =>
                                                          StringUtils.EqualsIgnoreCase(x.AttributeName, columnName) ||
                                                          StringUtils.EqualsIgnoreCase(x.DisplayName, columnName));
                        var attributeName = style != null ? style.AttributeName : columnName;

                        if (!string.IsNullOrEmpty(attributeName))
                        {
                            dict[attributeName] = value;
                        }
                    }

                    var content = new Content();
                    content.LoadDict(dict);

                    if (!string.IsNullOrEmpty(content.Title))
                    {
                        content.SiteId    = site.Id;
                        content.ChannelId = channel.Id;

                        contents.Add(content);
                    }
                }
            }

            return(contents);
        }
Пример #2
0
        public async Task CreateExcelFileForContentsAsync(string filePath, Site site,
                                                          Channel channel, IEnumerable <int> contentIdList, List <string> displayAttributes, bool isPeriods, string startDate,
                                                          string endDate, bool?checkedState)
        {
            DirectoryUtils.CreateDirectoryIfNotExists(DirectoryUtils.GetDirectoryPath(filePath));
            FileUtils.DeleteFileIfExists(filePath);

            var head = new List <string>();
            var rows = new List <List <string> >();

            var styles = ColumnsManager.GetContentListStyles(await _databaseManager.TableStyleRepository.GetContentStylesAsync(site, channel));

            foreach (var style in styles)
            {
                if (displayAttributes.Contains(style.AttributeName))
                {
                    head.Add(style.DisplayName);
                }
            }

            if (contentIdList == null)
            {
                contentIdList = await _databaseManager.ContentRepository.GetContentIdsAsync(site, channel, isPeriods,
                                                                                            startDate, endDate, checkedState);
            }

            foreach (var contentId in contentIdList)
            {
                var contentInfo = await _databaseManager.ContentRepository.GetAsync(site, channel, contentId);

                if (contentInfo != null)
                {
                    var row = new List <string>();

                    foreach (var style in styles)
                    {
                        if (displayAttributes.Contains(style.AttributeName))
                        {
                            var value = contentInfo.Get <string>(style.AttributeName);
                            row.Add(StringUtils.StripTags(value));
                        }
                    }

                    rows.Add(row);
                }
            }

            CsvUtils.Export(filePath, head, rows);
        }