Member 11535374 Ответов: 3

Доступ к файлу excel из общего хранилища и вставка его в таблицу с помощью веб-службы каждую неделю автоматически в C#


Привет, у меня есть один файл excel, хранящийся в общем месте, и я хочу взять данные из этого файла и вставить в таблицу in, а затем я хочу обновить старые значения таблицы значениями, которые я взял из excel, и я хочу делать это еженедельно, так что я делал это с помощью веб-службы и windows, может ли кто-нибудь помочь мне в этом?заранее спасибо

Что я уже пробовал:

я новичок в веб-сервисе, поэтому не могу его запустить

3 Ответов

Рейтинг:
2

ejazwaquif

Как уже предположил Сандип, вам нужно создать консольное приложение, которое вы можете периодически планировать с помощью планировщика задач.

Итак, вот код, который войдет в консольное приложение:

static void Main(string[] args)
 {
       ReadExcelAndPushInTable();     
 }


private void ReadExcelAndPushInTable()
{
DirectoryInfo dir = new DirectoryInfo(networkPath);

                    if (!dir.Exists) { return; }

                            DataSet dataset = new DataSet();
                            string srcFile = excelFilName;
                            string myConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";";
                            OleDbConnection conn = new OleDbConnection(myConnection);
                            string strSQL = "SELECT * FROM ['" + sheetName + "']";
                            OleDbCommand cmd = new OleDbCommand(strSQL, conn);
                            OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
                            adapter.Fill(dataset);


                            DataTable dt = new DataTable();
                            dt.Columns.Add("Column1"); //Column from db table
                            dt.Columns.Add("Column2"); //Column from db table
                            

                            if (dataset.Tables[0].Rows.Count > 0)
                            {
                              for(var i=0;i<=dataset.Tables[0].Rows.Count;i++)
                              {
                                dt.Rows.Add(dataset.Tables[0].Rows[i]["Column1"],dataset.Tables[0].Rows[i]["Column2"]);
                              }
                            }

                            //Here you have the DataTable ready with excel
                            //values, best way to dump this data into db table
                            //is to use table type parameter in stored 
                            //procedure and Update or insert into the table
                            // from stored procedure itself
}


Member 11535374

@ejazwaquif Привет, я работаю над кодом, заданным вами, каково будет значение функций thses? string srcFile = excelFilName; и string strSQL = " SELECT * FROM ['" + sheetName + "']";

ejazwaquif

networkPath: должно быть что - то вроде - //Source/ExcelFolder
srcFile : должен быть полный путь и имя excel, который присутствует в 'ExcelFolder', например - //Source/ExcelFolder/Sample.xlsx

sheetName : поскольку в вашей книге excel может присутствовать несколько листов.Вы должны указать, какой из них вы хотите использовать, например ' sheet1$'
Примечание: Вы должны добавить '$' с именем листа, например Sheet1$

Пожалуйста, дайте мне знать, если вам понадобится дополнительная помощь

Member 11535374

Привет, чувак, могу я получить твой почтовый идентификатор?

ejazwaquif

Привет, вот мой идентификатор emaid:
ejazcan@gmail.com

Рейтинг:
1

Sandeep1003

Это может быть консольное приложение,которое можно запланировать с помощью планировщика задач Windows для периодического выполнения. Консольное приложение должно иметь такой код

Читать общий файл расположение

Dim myStream As IO.FileStream = IO.File.Open("\\myserver\myshare\myfile", IO.FileMode.Open)
Dim myBytes As Byte()
myStream.Read(myBytes, 0, numberOfBytesToRead)



Тогда прочитайте данные, а потом сдать в сервис паутинки для вставки.

Все это должно быть в консольном приложении.


Рейтинг:
0

Member 11535374

разве вы не можете уточнить, показав пример?