Копирование существующих файлов на сервер SharePoint - PullRequest
0 голосов
/ 01 ноября 2019

Я сталкиваюсь с трудностями, чтобы преобразовать файлы в CSV и сохранить их в локальной среде. Как мне этого добиться? Попробуйте осмотреться, но мне кажется, что это не то, что я ищу.

Я работаю в SharePoint 2010. До этого этот код только собирал данные из SharePoint, превращал их в xlsx и обновлял их в нашей сети. .

    private static void GenerateSPGroupUsersReport() //
    {
        Log("Generate Sharepoint Group Users Report");

        DataSet dsSecurityReport = new DataSet();
        string ConnectedWebURL = ConfigurationManager.AppSettings["SPGroupUsersWebURL"];
        //string[] strURL = ConnectedWebURL.Split(';');
        DataTable dTblSPGroupUser = new DataTable();
        dTblSPGroupUser.Columns.Add("SiteURL", typeof(string));
        dTblSPGroupUser.Columns.Add("SharepointGroup", typeof(string));
        dTblSPGroupUser.Columns.Add("User", typeof(string));
        // Hafees add 10/22/2019
        dTblSPGroupUser.Columns.Add("UserLanID", typeof(string));
        dTblSPGroupUser.Columns.Add("Email", typeof(string));

        SPSite site = new SPSite(ConnectedWebURL);

        SPWebApplication webApp = site.WebApplication;

        foreach (SPSite s in webApp.Sites)
        {
            SPGroupCollection groupCol = s.RootWeb.SiteGroups;

            foreach (SPGroup group in groupCol)
            {
                // Hafees include group.Users, user.Email
                foreach (SPUser user in group.Users)
                {
                    dTblSPGroupUser.Rows.Add(s.Url, group.Name, user.Name, user.LoginName, user.Email);
                }
                //bool contains = dTblSPGroupUser.AsEnumerable().Any(rowC => group.Name == rowC.Field<string>("SharepointGroup"));

                //if (!contains)
                //{
                //    foreach (SPUser user in group.Users)
                //    {
                //        dTblSPGroupUser.Rows.Add(s.Url, group.Name, user.Name);
                //    }
                //}
            }
        }

        DataSet dsSPGroup = new DataSet();
        dsSPGroup.Tables.Add(dTblSPGroupUser);

        SaveIntoSPLibrary(site, dsSPGroup, "GroupUsers_" + ConnectedWebURL.Replace("http://", "").Replace("https://", "").Replace(":", "-").Trim());

        Log("Generate Sharepoint Group Users Report Complete");
    }

// Здесь я создаю группу пользовательских отчетов.

    private static void SaveIntoSPLibrary(SPSite site, DataSet ds, string fileName)
    {
        string UIResourceServerRelativeWebURL = ConfigurationManager.AppSettings["UIResourceServerRelativeWebURL"];
        using (SPWeb web = site.OpenWeb(UIResourceServerRelativeWebURL))
        {
            byte[] byteArray = GenerateExcelFile(ds);

            string CustomReportLibrary = ConfigurationManager.AppSettings["CustomReportLibrary"];
            string strFileName = String.Format(fileName + ".{0}.xlsx", DateTime.Today.ToString("yyyyMMdd"));

            Log("Saving into SP Library. " + CustomReportLibrary + strFileName);

            web.AllowUnsafeUpdates = true;
            SPFile file = web.Files.Add(CustomReportLibrary + strFileName, byteArray, true);
            file.Item["Year"] = DateTime.Now.ToString("yyyy");
            file.Item["Month"] = string.Format("{0}. {1}", DateTime.Now.Month, DateTime.Now.ToString("MMMM"));
            file.Item.Update();
            file.Update();
            web.AllowUnsafeUpdates = false;
        }

    }

// Здесь файлы сохраняются в xlsx и обновляются в библиотеке SharePoint.

Я пытаюсь сделать копию SaveIntoLibrary с небольшим изменением, я перехожу на CSV-файлы и создаю новый ConfigurationManager, который будет указывать на мой локальный каталог. Но, кажется, я где-то не прав. Файлы все еще не попали в мой локальный каталог. Пожалуйста, совет.

1 Ответ

0 голосов
/ 01 ноября 2019

Вы должны экспортировать данные отчета DataTable в локальный CSV,

Проверьте код в этой теме , это выведет файл CSV, чтобы вы могли сохранить его в локальном.

var dataTable = GetData();
    StringBuilder builder = new StringBuilder();
    List<string> columnNames = new List<string>();
    List<string> rows = new List<string>();

    foreach (DataColumn column in dataTable.Columns)
    {
        columnNames.Add(column.ColumnName); 
    }

    builder.Append(string.Join(",", columnNames.ToArray())).Append("\n");

    foreach (DataRow row in dataTable.Rows)
    {
        List<string> currentRow = new List<string>();

        foreach (DataColumn column in dataTable.Columns)
        {
            object item = row[column];

            currentRow.Add(item.ToString());
        }

        rows.Add(string.Join(",", currentRow.ToArray()));
    }

    builder.Append(string.Join("\n", rows.ToArray()));

    Response.Clear();
    Response.ContentType = "text/csv";
    Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
    Response.Write(builder.ToString());
    Response.End();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...