下载并解析excel文件
本文关键字:excel 文件 下载 | 更新日期: 2023-09-27 18:13:10
我正在寻找一种方法从使用httpWebRequest的url下载excel文件并以某种方式解析它-这是否意味着将其转换为。csv文件,因此我可以简单地使用TextFieldParser
或将其作为excel文件,我不知道。
private byte[] GetExcelFile()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("url_To_Excel_File");
httpWebRequest.ContentType = "application/vnd.ms-excel";
httpWebRequest.Method = "GET";
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
try
{
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var contents = streamReader.ReadToEnd();
return contents;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
}
这是我的理解,contents
应该是字节数组?我怎样才能正确下载这个excel文件并解析响应?
如何使用WebClient类下载Excel文件,使用DownloadFile()
代替DownloadData()
(更简单)。
string destFilename = HttpContext.Current.Server.MapPath("~/YourExcelFile.xlsx");
WebClient client = new WebClient();
client.DownloadFile("http://www.blabla.com/YourExcelFile.xlsx", destFilename);
这会将文件下载到应用程序的根目录。
下一步是读取文件。根据我的经验,以编程方式读取Excel文件最简单的方法就是使用SQL/OleDB进行查询。
如何将文件的第一个表读入DataTable的示例:
string connectionString = GetExcelConnectionString(destFilename);
string sheetName = GetFirstSheet(filePath);
OleDbConnection excelCon = new OleDbConnection(connectionString);
OleDbDataAdapter adapter = new OleDbDataAdapter(String.Format("select * from [{0}]", sheetName), excelCon);
DataTable dataTable = new DataTable("ExcelDocument");
adapter.Fill(dataTable);
获取连接字符串的辅助函数:
// Currently only supports Excel 12.0 (.xlsx files), the connection string for .xls is a little different.
public string GetExcelConnectionString(string filePath)
{
return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 12.0;";
}
帮助读取文件中第一个工作表的名称:
public string GetFirstSheet(string filePath)
{
string connectionString = GetExcelConnectionString(filePath);
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
DataTable dtSheet = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
return dtSheet.Rows[0]["TABLE_NAME"].ToString();
}
return String.Empty;
}
现在,您应该在DataTable中拥有文件的内容,这使得对数据进行任何操作变得非常简单。
注意,这只是给你一个想法,可能并不完美。您可能希望在处理后进行清理-例如,从应用程序的根目录删除excel文件。