我想這是你所追求的ACE work around
不幸的是,你不能設置在連接字符串ImportMixedTypes或TypeGuessRows因爲這些設置都在註冊表中定義。對於ACE OLEDB驅動程序,它們存儲在
HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\辦公室\ 14.0 \ Access連接 發動機\發動機\ Excel中
在註冊表中。所以,你可以簡化你的連接字符串來擺脫一些擴展屬性。
將TypeGuessRows
設置爲0並將ImportMixedTypes
設置爲註冊表中的文本後,您應該看到您期望的行爲。可以使用Microsoft.Office.Interop.Excel
來讀取文件。示例代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelTut
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/C.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
MessageBox.Show(xlRange.Cells[i, j].Value2.ToString());
}
}
}
}
}
代碼read excel file via interop
所以你的連接工作多久?你遇到的問題是閱讀數據?如果是這樣,你可以發佈一些代碼,但你要從Excel文件中提取數據的代碼 –
@astroboy:是的連接字符串工作並且數據被加載到數據表中。但對於某些價值而言爲空。有一列有數字值。如果我在該列中的任何單元格中放置文本值,則將其視爲空值。 –