江湖救急啊。。。C#读取Excel文件,有的字符串只能读一半。。。无解啊

zhyinty 2012-10-29 03:11:33
Language[1701].sString = "[textBorder='type:border weight:1 colour:B0000000'][colour='FFFFD200']Độ hoàn thành Tế Đàn: [colour='FFFFFFFF']không\n[colour='FFFFD200']Thọ Mệnh Tế Đàn: [colour='FFFFFFFF']không\n[colour='FFFFD200']Mỗi ngày khấu trừ tuổi thọ Tế Đàn: [colour='FFFFFFFF']không"

这是用Excel打开看到的字符串
Language[1701].sString = \"[textBorder='type:border weight:1 colour:B0000000'][colour='FFFFD200']Độ hoàn thành Tế Đàn: [colour='FFFFFFFF']không\\n[colour='FFFFD200']Thọ Mệnh Tế Đàn: [colour='FFFFFFFF']không\\n[colour='FFFFD200']Mỗi ngày khấu trừ

这是我程序读出来的。。。

连接字符串:"provider=Microsoft.ACE.OLEDB.12.0;data source=" + FileFullPath + "; Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'";
 public DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName) 
{
//string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
string strConn = "provider=Microsoft.ACE.OLEDB.12.0;data source=" + FileFullPath + "; Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn); //("select * from [Sheet1$]", conn);
int count = odda.Fill(ds, SheetName);
conn.Close();
return ds.Tables[0];

}
...全文
220 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2012-10-29
  • 打赏
  • 举报
回复
字符编码问题 遇到无法识别的了 ,好好看看 你自己的EXCEL 单元格 吧。
快溜 2012-10-29
  • 打赏
  • 举报
回复
int count = odda.Fill(ds, SheetName); 加断点调试,看看ds里是否也是截取后的值
wuyq11 2012-10-29
  • 打赏
  • 举报
回复
应该是字符集编码问题
熙风 2012-10-29
  • 打赏
  • 举报
回复
可能和字符集有关,,
换种方式读的看下


 /// <summary>
/// 解析Excel,返回DataTable
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static System.Data.DataTable ImpExcel(string fileName)
{
System.Data.DataTable dt = new System.Data.DataTable();
try
{
Microsoft.Office.Interop.Excel.Application app;
Workbooks wbs;
Worksheet ws;
app = new Microsoft.Office.Interop.Excel.Application();
wbs = app.Workbooks;
wbs.Add(fileName);
ws = (Worksheet)app.Worksheets.get_Item(1);
int a = ws.Rows.Count;
int b = ws.Columns.Count;
string name = ws.Name;

for (int i = 1; i <RowCount; i++)
{
DataRow dr = dt.NewRow();
for (int j = 1; j <= ColumnsCount; j++)
{
Range range = ws.get_Range(app.Cells[i, j], app.Cells[i, j]);
range.Select();
dr[j - 1] = app.ActiveCell.Text.ToString();
}
dt.Rows.Add(dr);
}
KillProcess(app);
return dt;
}
catch (Exception ex)
{
MessageBox.Show("数据绑定Excel失败! 失败原因:Excel格式不正确!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return dt;
}
}
stonespace 2012-10-29
  • 打赏
  • 举报
回复
可能是字符集的问题,
bdmh 2012-10-29
  • 打赏
  • 举报
回复
你看看那行字里面是不是有一些特殊符号,比如结束符啥的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧