我有一张自己编制的EXCEL表格(非标准的.就是经过很多合并单元格之类的操作的)
我自己把这个EXCEL文件的内容读到数据库了
我用
Provider=Microsoft.Jet.OLEDB.4.0;...Extended Properties=Excel 8.0;
连接我的EXCEL文件 可是有很多单元格的内容都读不出来
请问各位有什么好办法吗?
(我不想用EXCEL 组件)再问一下各位 如果我用ASP程序读一个EXCEL文件.能不能不把这个文件上传到服务器里 直接在客户端读文件内容.
我自己把这个EXCEL文件的内容读到数据库了
我用
Provider=Microsoft.Jet.OLEDB.4.0;...Extended Properties=Excel 8.0;
连接我的EXCEL文件 可是有很多单元格的内容都读不出来
请问各位有什么好办法吗?
(我不想用EXCEL 组件)再问一下各位 如果我用ASP程序读一个EXCEL文件.能不能不把这个文件上传到服务器里 直接在客户端读文件内容.
解决方案 »
- 如何通过反射的方式取得属性标签,比如:Browsable
- 1 摄像头如果不是免驱动的,那么用WIN API是不是也调不同摄像头? 2 视频会议类似的开发视频用什么方法传输会好一些?
- 请教用户自定义textbox问题
- C#日期计算的问题
- 关于winform usercontrol的使用
- 关于WebBrowser的DocumentCompleted 事件委托问题;
- 初学者请教一个问题,谢谢,站内搜了,没找到答案
- WPF 焦点是否在编辑框内
- c#.net 加密问题
- C# 读取word表格
- 请问如何实现当鼠标移动到PictureBox上时显示图片2,当鼠标离开时显示图片1,当鼠标移动到PictureBox上按下鼠标时显示图片3,按着鼠标离
- 我在Form1_Load中加载一个线程,如果使用了thread.Join()窗口半天才出来
我现在是用 http://vwdhosting.net/ 上提供的免费空间 在调试读 EXCEL 时提示
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154我应该怎么解决呢?
你看看意思可以, 要用的话不能直接 Copy, 这段代码对我所用的表格有特殊的处理(自动分析表头). 你得修改一下. public static void FillTable(string xmlFilePath, DataTable dt) {
if (string.IsNullOrEmpty(xmlFilePath) || dt == null) {
return;
} XPathDocument doc = new XPathDocument(xmlFilePath);
XPathNavigator nav = doc.CreateNavigator();
string ns = "urn:schemas-microsoft-com:office:spreadsheet";
string ss = "urn:schemas-microsoft-com:office:spreadsheet";
XmlNamespaceManager mgr = new XmlNamespaceManager(nav.NameTable);
mgr.AddNamespace("ns", ns);
mgr.AddNamespace("ss", ss); bool dataSectionStart = false;
NameValueCollection cols = new NameValueCollection(); XPathNavigator vTbl = nav.SelectSingleNode("/ns:Workbook/ns:Worksheet/ns:Table", mgr);
if (vTbl == null) {
throw new TException(TException.Error, "Unable to locate 'Workbook/Worksheet/Table' element in source file.");
} XPathNodeIterator iRows = vTbl.SelectChildren("Row", ns);
if (iRows == null) { return; } while (iRows.MoveNext()) {
NameValueCollection row = new NameValueCollection();
XPathNodeIterator iCells = iRows.Current.SelectChildren("Cell", ns);
if (iCells == null) { continue; } for (int index = 1; iCells.MoveNext(); index++){
XPathNavigator vCell = iCells.Current;
XPathNavigator vData = vCell.SelectSingleNode("ns:Data", mgr);
if (vData == null) { continue; }
int idx = TUtil.ToInt(vCell.GetAttribute("Index", ss));
if (idx > 0) { index = idx; }
if (!dataSectionStart) {
if (Regex.IsMatch(vData.Value, @"\A[a-z]+\Z", RegexOptions.IgnoreCase)) {
cols[index.ToString()] = vData.Value;
continue;
} else {
cols.Clear();
break;
}
} else {
row[index.ToString()] = vData.Value;
}
} if (dataSectionStart && row.Count > 0) {
DataRow dr = dt.NewRow();
dr[cstv["KEY_ROW_ID"]] = dt.Rows.Count.ToString();
foreach (string key in cols) {
string colName = cols[key];
dr[colName] = row[key];
}
dt.Rows.Add(dr);
} else if (cols.Count > 0 && dt.Columns.Count <= 0) {
dataSectionStart = true;
DataColumn dc = new DataColumn();
dc.ColumnName = cstv["KEY_ROW_ID"];
dc.DataType = typeof(string);
dt.Columns.Add(dc);
foreach (string key in cols) {
dc = new DataColumn();
dc.ColumnName = cols[key].ToString();
dc.DefaultValue = "";
dc.DataType = typeof(string);
dt.Columns.Add(dc);
}
} else {
continue;
}
}
}