在我的应用程序中,我需要读取一个 excel 文件并以表格格式显示标题(标题)。到目前为止,这工作正常。但是对于一些 excel 文件,它显示(excel 文件有 20 列)一些额外的列(column21、column22 等)。不知道为什么当我检查它只有 20 列而 21 或 22 列完全为空的 excel 文件时它显示这些额外的列。不知道为什么我会显示这些额外的列。当我尝试调试代码“myReader.FieldCount”时显示 22 列。我试图以编程方式删除那些为空的列。但它对行数据提出了一些其他问题。对于某些行,它仅显示 18 或 15 列,因为某些列缺少数据。有没有更好的处理excel的方法。这是我的代码
@@@@@@@@@@@@@@
if (sourceFile.ToUpper().IndexOf(".XLSX") >= 0) // excel 2007 or later file
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 12.0;HDR=No;\"";
else // previous excel versions
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 8.0;HDR=No;\"";
OleDbConnection conn = null;
StreamWriter wrtr = null;
OleDbCommand cmd = null;
OleDbDataReader myReader = null;
try
{
conn = new OleDbConnection(strConn);
conn.Open();
cmd = new OleDbCommand("SELECT * FROM [" + worksheetName + "]", conn);
cmd.CommandType = CommandType.Text;
myReader = cmd.ExecuteReader();
wrtr = new StreamWriter(targetFile);
while (myReader.Read())
{
List<string> builder = new List<string>();
for (int y = 0; y < myReader.FieldCount; y++)
{
if(!string.IsNullOrEmpty(myReader[y].ToString()))
builder.Add("\"" + myReader[y].ToString() + "\"");
}
wrtr.WriteLine(string.Join(",", builder));
}