У меня есть файл, который создает файл *.csv на сервере по пути C:\backup. Файл создается с помощью SQL-запроса к базе данных. Я хотел бы прикрепить кнопку, которая позволит мне одновременно создать файл и загрузить его.
Метод, создающий файл на сервере:
public void erxporttoExcelMO(int mg, string mag)
{
using (SqlConnection connection = new SqlConnection(con))
{
connection.Open();
DateTime today = DateTime.Now;
string exportPath = @"C:\backup\magazyn_okuc\";
string exportCsv = "MagazynOkuc.csv";
string filepath = exportPath + exportCsv;
if (File.Exists(filepath))
{
File.Delete(filepath);
}
// string exportCsv = "MagazynOkuc"+mag+ "-" + today.Date.ToString("dd/MM/yyyy") +".csv";
StreamWriter csvFile = null;
var sql = "SELECT ROW_NUMBER()OVER( ORDER BY om.indeks ) as row_number, om.indeks,om.nazwa,p.jednostka,om.data_zalozenia,om.data_lastmodf,(p.ilosc - CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) as ilosc,(CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) as ilosc_zarez,r.opis as regal,p.polka,p.stan, p.uwagi,CASE WHEN (SUM(t.TwZ_Ilosc) IS NULL) THEN 0 ELSE ROUND(SUM(t.TwZ_Ilosc),2) END AS ERPXL, CASE WHEN p.minimal IS NULL THEN 0 ELSE p.minimal END AS minimal, CASE WHEN p.Przydas IS NULL THEN 0 ELSE p.Przydas END AS przydas, CASE WHEN p.opty_wykluczenie IS NULL THEN 0 ELSE p.opty_wykluczenie END AS opty_wykluczenie, ((SELECT SUM(pp.ilosc) FROM CompositeApps.dbo.mg_okucia_polozenie pp WHERE pp.gid_numer = p.gid_numer AND p.Magazyn = "+mg+")- (CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) ) AS suma_ilosci, m.skrot FROM okucia_magazyn om JOIN mg_okucia_polozenie p ON p.gid_numer = om.gid_numer JOIN mg_regaly r on r.id = p.regal LEFT JOIN [ERPXL_VIKKING].[CDN].[TwrZasoby] t on om.gid_numer = t.TwZ_TwrNumer LEFT JOIN CompositeApps.dbo.rezerwacje rr ON rr.gid_numer = om.gid_numer JOIN CompositeApps.dbo.MagazynyID m ON m.id= p.magazyn WHERE p.magazyn = "+mg +" GROUP BY om.gid_numer,om.indeks,om.nazwa,om.id,p.jednostka,om.data_zalozenia,om.data_lastmodf,p.ilosc,r.opis,p.polka,p.stan,p.uwagi ,rr.ilosc, p.gid_numer, p.minimal,p.Przydas ,p.opty_wykluczenie, r.id, p.magazyn,m.skrot ORDER BY om.indeks ASC";
var cmd = new SqlCommand(sql, connection);
SqlDataReader reader = cmd.ExecuteReader();
csvFile = new StreamWriter(@exportPath + exportCsv,true, System.Text.Encoding.UTF8);
csvFile.WriteLine(String.Format("\"{0}\",\"{1}\",\"{2}\"," +
"\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\",\"{11}\",\"{12}\",\"{13}\",\"{14}\",\"{15}\",\"{16}\",\"{17}\"",
reader.GetName(0), reader.GetName(1), reader.GetName(2),
reader.GetName(3), reader.GetName(4), reader.GetName(5), reader.GetName(6), reader.GetName(7), reader.GetName(8), reader.GetName(9), reader.GetName(10), reader.GetName(11), reader.GetName(12), reader.GetName(13), reader.GetName(14), reader.GetName(15), reader.GetName(16), reader.GetName(17)));
while (reader.Read())
{
csvFile.WriteLine(String.Format("\"{0}\",\"{1}\",\"{2}\"," +
"\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\",\"{11}\",\"{12}\",\"{13}\",\"{14}\",\"{15}\",\"{16}\",\"{17}\"",
reader[0], reader[1], reader[2], reader[3], reader[4], reader[5], reader[6], reader[7], reader[8], reader[9], reader[10], reader[11], reader[12], reader[13], reader[14], reader[15], reader[16], reader[17]));
}
csvFile.Close();
}
Теперь я не знаю, что с ним делать дальше. Кроме того, добавляется дата, и лучше всего загрузить последнюю версию файла.
Какие советы?
У меня есть файл, который создает файл *.csv на сервере по пути C:\backup. Файл создается с помощью SQL-запроса к базе данных. Я хотел бы прикрепить кнопку, которая позволит мне одновременно создать файл и загрузить его. Метод, создающий файл на сервере: [code] public void erxporttoExcelMO(int mg, string mag) { using (SqlConnection connection = new SqlConnection(con)) {
connection.Open();
DateTime today = DateTime.Now; string exportPath = @"C:\backup\magazyn_okuc\"; string exportCsv = "MagazynOkuc.csv"; string filepath = exportPath + exportCsv; if (File.Exists(filepath)) { File.Delete(filepath); } // string exportCsv = "MagazynOkuc"+mag+ "-" + today.Date.ToString("dd/MM/yyyy") +".csv"; StreamWriter csvFile = null; var sql = "SELECT ROW_NUMBER()OVER( ORDER BY om.indeks ) as row_number, om.indeks,om.nazwa,p.jednostka,om.data_zalozenia,om.data_lastmodf,(p.ilosc - CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) as ilosc,(CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) as ilosc_zarez,r.opis as regal,p.polka,p.stan, p.uwagi,CASE WHEN (SUM(t.TwZ_Ilosc) IS NULL) THEN 0 ELSE ROUND(SUM(t.TwZ_Ilosc),2) END AS ERPXL, CASE WHEN p.minimal IS NULL THEN 0 ELSE p.minimal END AS minimal, CASE WHEN p.Przydas IS NULL THEN 0 ELSE p.Przydas END AS przydas, CASE WHEN p.opty_wykluczenie IS NULL THEN 0 ELSE p.opty_wykluczenie END AS opty_wykluczenie, ((SELECT SUM(pp.ilosc) FROM CompositeApps.dbo.mg_okucia_polozenie pp WHERE pp.gid_numer = p.gid_numer AND p.Magazyn = "+mg+")- (CASE WHEN(SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer ) IS NULL THEN 0 ELSE (SELECT SUM(r1.ilosc) FROM CompositeApps.dbo.rezerwacje r1 WHERE r1.gid_numer =p.gid_numer )END) ) AS suma_ilosci, m.skrot FROM okucia_magazyn om JOIN mg_okucia_polozenie p ON p.gid_numer = om.gid_numer JOIN mg_regaly r on r.id = p.regal LEFT JOIN [ERPXL_VIKKING].[CDN].[TwrZasoby] t on om.gid_numer = t.TwZ_TwrNumer LEFT JOIN CompositeApps.dbo.rezerwacje rr ON rr.gid_numer = om.gid_numer JOIN CompositeApps.dbo.MagazynyID m ON m.id= p.magazyn WHERE p.magazyn = "+mg +" GROUP BY om.gid_numer,om.indeks,om.nazwa,om.id,p.jednostka,om.data_zalozenia,om.data_lastmodf,p.ilosc,r.opis,p.polka,p.stan,p.uwagi ,rr.ilosc, p.gid_numer, p.minimal,p.Przydas ,p.opty_wykluczenie, r.id, p.magazyn,m.skrot ORDER BY om.indeks ASC"; var cmd = new SqlCommand(sql, connection); SqlDataReader reader = cmd.ExecuteReader(); csvFile = new StreamWriter(@exportPath + exportCsv,true, System.Text.Encoding.UTF8); csvFile.WriteLine(String.Format("\"{0}\",\"{1}\",\"{2}\"," + "\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\",\"{11}\",\"{12}\",\"{13}\",\"{14}\",\"{15}\",\"{16}\",\"{17}\"", reader.GetName(0), reader.GetName(1), reader.GetName(2), reader.GetName(3), reader.GetName(4), reader.GetName(5), reader.GetName(6), reader.GetName(7), reader.GetName(8), reader.GetName(9), reader.GetName(10), reader.GetName(11), reader.GetName(12), reader.GetName(13), reader.GetName(14), reader.GetName(15), reader.GetName(16), reader.GetName(17))); while (reader.Read()) { csvFile.WriteLine(String.Format("\"{0}\",\"{1}\",\"{2}\"," + "\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\",\"{11}\",\"{12}\",\"{13}\",\"{14}\",\"{15}\",\"{16}\",\"{17}\"", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5], reader[6], reader[7], reader[8], reader[9], reader[10], reader[11], reader[12], reader[13], reader[14], reader[15], reader[16], reader[17]));
} csvFile.Close(); } [/code] Теперь я не знаю, что с ним делать дальше. Кроме того, добавляется дата, и лучше всего загрузить последнюю версию файла. Какие советы?