RT
用这样的方式连接EXCEL时,可以编辑里面的数据 ,但是里面纯数字无法显示,显示为空,比如: 123 ,显示时为空
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpDExcel.FileName+';Extended Properties="Excel 8.0;Persist Security Info=False;"'
用这个连接串则可以显示所有的东西,但是无法修改数据:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpDExcel.FileName+';Extended Properties="Excel 8.0;IMEX=1;Persist Security Info=False;"' //多加了一个 IMEX=1 即以文本的方式显示
哪位有碰到过这种情况的?该怎么处理,让它即可以完整的显示内容,又可以修改数据?....谢谢!!!!
用这样的方式连接EXCEL时,可以编辑里面的数据 ,但是里面纯数字无法显示,显示为空,比如: 123 ,显示时为空
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpDExcel.FileName+';Extended Properties="Excel 8.0;Persist Security Info=False;"'
用这个连接串则可以显示所有的东西,但是无法修改数据:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpDExcel.FileName+';Extended Properties="Excel 8.0;IMEX=1;Persist Security Info=False;"' //多加了一个 IMEX=1 即以文本的方式显示
哪位有碰到过这种情况的?该怎么处理,让它即可以完整的显示内容,又可以修改数据?....谢谢!!!!
我是把EXCEL的数据显示到表格中,你说的代码在哪里写哪?
xlsFile: String;
xlsApp, Sheet: OleVariant;
begin
Result := '';
try
xlsFile := 'c:\file1.xls';
xlsApp := CreateOleObject('Excel.Application'); //需要引用 ComObj 单元
try
//打开xls文件
xlsApp.WorkBooks.Open(xlsFile);
Sheet := xlsApp.Sheets[1];
try
//光标归位到Excel档第一页第一格
if xlsApp.ActiveSheet.Index <> Sheet.Index then
Sheet.Select;
Sheet.Cells.Item[1,1].Select;
//显示第3行第5列的数据,可参考此句用循环与判断取出xls中所有数据
ShowMessage(VarToStr(Sheet.Cells.Item[3,5].Value));
end;
finally
Sheet := unassigned;
xlsApp.Quit;
xlsApp := Unassigned;
end;
except
ShowMessage('无法启动Excel程式,请检查!');
end;
end;
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpDExcel.FileName+';Extended Properties="Excel 8.0;IMEX=1;Persist Security Info=False;"' //多加了一个 IMEX=1 即以文本的方式显示
如果把连接串中的 IMEX=1 去掉,则可以修改,但是全为数字的单元格内容显示不出来,显示为空,比如 1 2 3 4 5
那在程序的表格中,显示全为空的!
哪位高人帮忙..
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := false;
ExcelApplication1.Workbooks.Open(OpDExcel.FileName, null, null, null, null, null, null,
null, null, null, null, null, null, 0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Worksheets[1] as _Worksheet);
ExcelWorkSheet1.Range[GetRepRange(x1,y1),GetRepRange(x2,y2)].Select;
ExcelApplication1.Selection.NumberFormatLocal := '@';
//最后一句出错.....哪位知道如何设置打开的EXCEL文件的单元格格式??谢谢.....
我在程序里修改单元格式后,要重新写一次单元格数据,再用ADO连接才能正常显示.....有没有办法让它修改格式后立即可以正常显示的??
用VBA(ActiveX)不行吗?(这个VB的代码到处都是)
用 DevExpress 控件组中有一个可以直接存取Excel 97格式文件的不行吗?(这个我用过)
ADO的连接只是ADO参考说可以,从来没有试过。
对不起,帮不了。
装三方控件比较麻烦....
我的程序是这样的,可以打开一个EXCEL文件,然后在表格中显示出现,让用户修改数据,最后保存()主要是显示在表格中
至于用VBA.感觉跟手动打开一个EXCEL表,修改数据没什么差别....
并且,我在程序里要取EXCEL表中的数据
这个问题已解决,绕了很多圈子....
再补充一个问题..
有一个BIN文件
/#음악
/#동영상
/#라디오
将这些字符转换成UNICODE码,比如 음악 ,则转换后的UNICODE为:C74CC545(16进制)
然后以字符的形式写入到文件中,现在要将这个文件读出来,用16进制和流的方式.可以读出 C74CC545 这些值,
但是要将这个字符串(C74CC545 )还原时就出错了,全部都显示为 ?? 的形式.中文和英文的不会出错,
就其它国的语言转换出错
请问有什么方法可以正确的转换得到我要的字符?
万分感谢!!!!!这个问题折磨很久了.....
用VBA.感觉跟手动打开一个EXCEL表,修改数据没什么差别....
这个可以通过将Excel作为窗口嵌入到我们的程序中解决你的新问题,我试验了一下似乎和平台处理能力有关。
把韩文复制到Word Excel中都不会有问题,
但是到Ultraedit就不行,
我觉得是字体问题,至少和字体有关,
这个韩文字在word中看到 是在一个叫做Batang的字库里面的
我们的宋体里面没有这个字,
我觉得似乎Ultraedit(包括 记事本)这样的软件限制了字符集的空间就显示 ??
word和操作系统的字符空间都比较大因此显示正常过剪贴板都不行,更不要说转换一下了。
举例来说,你可以把 Unicode 字符串 Hello (U+0048 U+0065 U+006C U+006C U+006F) 编码(encode)为
ASCII, 或者古老的 OEM 希腊语编码,或者希柏莱 ANSI 编码,等等。而有些字符串不能显示!
也就是说,假如你要表示一个在某个编码中没有对应的 Unicode code point, 通常会显示为一个 ? 或者一个白色的小方框。
也不知道要怎么解决这个问题....
哪位高人现身帮忙一下.........
function TFrmMenu.DecodeChinese(InputStr: string): Variant;
var
Buf:Array[0..299] of WideChar;
i:integer;
Temp:Variant;
begin
i:=0 ;
while(i<Length(InputStr))do
begin
Buf[(i div 4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[Length(InputStr)div 4]:=WideChar(0);
Temp := WideCharToString(Buf);
result:= Temp;
end;
发现韩文,希伯莱,阿拉伯语,几乎都显示为 ? 而葡萄牙,西班牙,德文,希腊语则有部分显示为?,法文,日文,俄文,意大利,荷兰语则可以正常的显示在TntStringGrid 中,.....不知道不能正常显示的要怎么解决....