【发布时间】:2012-05-16 08:54:15
【问题描述】:
我在从 xlsx 文件中读取日期时遇到了一些问题,我的意思是它没有读取单元格中的所有信息,例如我在一个单元格中有以下信息:
"4876112","3456151712","345627712","3125HPC21017500011","34131HPC210349014112","35134HPC210273008212"
当我查看 DataTable 时,我只在行中看到此信息
"4876112","3456151712","345627712",
这是我的代码:
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbook = excelApp.Workbooks.Open(input, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
string sheetname = "";
foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in workbook.Sheets)
{
sheetname = sheet.Name;
break;
}
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", input);
string query = String.Format("select * from [{0}$]", sheetname);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
tabela = ds.Tables[0];
我输入了 Excel 的单元格并将其格式化为文本,并且工作正常。我可以以编程方式将所有单元格格式更改为文本吗? 谢谢!
【问题讨论】:
-
既然已经使用Interop for Excel,为什么还要使用OleDB 来读取excel 数据?您可以从“工作表”中读取数据。
-
旁注:
sheetname = workbook.Sheets[0].Name会不会更简单(而不是foreach和break)?
标签: c# excel excel-interop