我的读取excel文件的代码适用于许多行,但它不会在文件中显示某些内容,例如(#######)和日期(例如,2009年8月11日),但是显示日期,其中包含2位数的日期(例如,2011年11月11日)。
DataTable dtExcel = new DataTable();
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HafizwalaFile + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
string strSQL = "SELECT * FROM [qe$] ";
OleDbConnection excelConnection = new OleDbConnection(connectionString);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(strSQL, excelConnection);
dataAdapter.Fill(dtExcel);
for (int i = 0; i < dtExcel.Rows.Count; i++)
{
for (int j = 0; j < dtExcel.Columns.Count;j++ )
{
System.Console.WriteLine(dtExcel.Rows[i][j]);
count_records++;
}
}
答案 0 :(得分:1)
在将数据传输到表之前,您必须输入fileexcel并调整此列的工作表宽度如下
//using Microsoft.Office.Interop.Excel;
Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
// excelapp.Visible = true;
string filename_Path = @"D:\exmp1.xls";
_Workbook workbook = (_Workbook)(excelapp.Workbooks.Open(filename_Path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing));
excelapp .Cells .Columns .AutoFit ();
workbook.Save();
// workbook.Close();
excelapp.Quit();
答案 1 :(得分:0)
我建议将excel的该列格式化为日期格式,以强制它填充0或保持直文。我不认为你可以在c#方面做些什么
答案 2 :(得分:0)
这是因为您将列格式化为日期,并且您输入的数据不是有效日期。您可以使用以下方式从C#中查看此内容:
MessageBox.Show(dtExcel.Columns[0].DataType.ToString());
Excel将日期和时间存储为表示自1900年1月1日以来的天数的数字,加上24小时工作日的小数部分:ddddd.tttttt Read this我试了很多次,发现以下代码工作正常,(请测试一下):
String cellValue = "41577.333333"; // 30/10/2013 8:00:00 AM
int days = 0 ;
int hours = 0;
string[] arr = cellValue.Split('.');
days = int.Parse(arr[0]);
if(arr.Length == 2)
{
decimal d_hours = decimal.Parse("0." + arr[1]);
hours =(int) ( d_hours * 24 );
}
TimeSpan dateFromExcel = new TimeSpan(days ,hours ,0,0,0);
DateTime resultingDate = new DateTime(1900,1,1 ,0,0,0).Add(dateFromExcel).AddDays(-2);
MessageBox.Show(resultingDate.ToString());
尝试使用ACE代替JET,一些网站提到了这一点:
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;;Data Source=" + HafizwalaFile + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";