【发布时间】:2017-08-16 09:51:57
【问题描述】:
我正在尝试抓取 XLS 电子表格中的单元格,将它们分配给字符串数组,然后处理数据并导出到多个 CVS 文件。
问题是 XLS 电子表格包含不相关的信息,可用数据直到第 17 行才开始,并且列没有标题,只有默认的 Sheet1。
我查看了相关问题并尝试自己解决,但没有成功。以下用于读取 XLS 的代码有点工作,但使用起来很麻烦,因为行长度因一个 XLS 文件而异,并且它会自动拉出空列和行。
代码
public static void xlsReader()
{
string fileName = string.Format("{0}\\LoadsAvailable.xls", Directory.GetCurrentDirectory());
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";" + @"Extended Properties='Excel 8.0;HDR=Yes;'";
string queryString = "SELECT * FROM [Sheet1$]";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
int counter = 0;
while (reader.Read())
{
Console.WriteLine("Line " + counter + ":" + reader[28].ToString()); // Just for testing
counter++;
}
}
}
我可以用循环做一堆诡计来获取所需的数据,但必须有一个查询字符串可以从第 17 行获取数据,只有 8 列(不是 26 列,18 列为空)?
我已经尝试了许多查询字符串示例,但无法缝合以使用起始行索引或过滤掉空数据。
【问题讨论】:
标签: c# database xls data-conversion