我在用c#编程来取得excel单元格中的文本时,如果单元格中的文本过长,就会发生读取截断,即只有一部分内容被取出来了。望大虾帮助解决啊,小弟在这先谢谢了。
读取excel的代码如下:
private static string ReadCell(Excel.Worksheet Sheet, object RowIndex, object ColumnIndex)
{
Excel.Range rang;
rang = (Excel.Range)Sheet.Cells[RowIndex, ColumnIndex]; return rang.Text.ToString();
}PS:上网去查,有一个修改注册表的方法,我试验了一下,不好用,并且我也不想去修改注册表,大虾们还有别的什么好方法没?小弟雪地里裸求
读取excel的代码如下:
private static string ReadCell(Excel.Worksheet Sheet, object RowIndex, object ColumnIndex)
{
Excel.Range rang;
rang = (Excel.Range)Sheet.Cells[RowIndex, ColumnIndex]; return rang.Text.ToString();
}PS:上网去查,有一个修改注册表的方法,我试验了一下,不好用,并且我也不想去修改注册表,大虾们还有别的什么好方法没?小弟雪地里裸求
解决方案 »
- 用outlook发送邮件
- C# 怎么修改文件夹或文件的所有权
- 紧急求助:TreeView(Winform)怎么用非递归的算法实现一棵树的加载?
- VS2005启动时提示加载包问题
- 大家帮帮忙:想实现用鼠标移动来改变datagrid的列的宽度,而不是拖动列的位置。每天都请教一次!
- SQLSERVER的1433端口怎么开放
- 水晶报表和数据库连接不上
- 字符串adfkjajaj;jjkjbadfdabcbaajkdj,moiu ,其中bcb、abcba都属于对等字符串,写个程序查找一个字符串中的 全部对等字符串
- 在这样的环境下,如何学习C#
- 如何调用"Internet选项"属性框?
- 封装问题
- 我想做一个每月25号操作,请问有什么好的方法么?求赐教
{
//去处
this.dataGridView1.Rows.Clear();
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.ShowDialog();
string Path = openFileDialog1.FileName;
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
string strExcel = "";
strExcel = "select * from [sheet1$]";
OleDbCommand cmd = new OleDbCommand(strExcel, conn);
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string schoolName = reader[0].ToString().Trim();//读取Excel单元格文本
string schoolUrl = reader[1].ToString().Trim();
if (!string.IsNullOrEmpty(schoolName) && !string.IsNullOrEmpty(schoolUrl))
{
int index2 = dataGridView1.Rows.Add();
DataGridViewRow newrow1 = dataGridView1.Rows[index2];
newrow1.Cells[0].Value = schoolName;//院校名称
newrow1.Cells[1].Value = schoolUrl;
newrow1.Cells[2].Value = "就绪";//采集状
}
}
MessageBox.Show("excel 导入成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{ MessageBox.Show("导入excel出错."+"\n"+ex.Message);
}
finally
{
conn.Close();
}
conn.Close();
}
}
如果不会说明就是Excel设置问题.
在注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel中把TypeGuessRows设为0
看看是否还有这问题.
将读取excel单元格的代码修改如下:
private static string ReadCell(Excel.Worksheet Sheet, object RowIndex, object ColumnIndex)
{
Excel.Range rang;
string temp;
try
{
rang = (Excel.Range)Sheet.Cells[RowIndex, ColumnIndex];
temp = rang.Value2.ToString();
}
catch
{
return "";
} return temp; //return rang.Text.ToString();
}
以上代码测试在单元格文本不超过255行的时候,读取正常;
我的excel不能写文本超过255行,所以在文本超过255行的情况没有进行测试。To;fuqiang19871117 和rollng
谢谢详细解答,你们的方法我没有试,但是仍然感谢
C10; C11; C12; C13; C14; C144; C15; C150; C151; C153; C154; C155; C158; C159; C16; C161; C162; C164; C165; C167; C168; C17; C170; C18; C190; C191; C193; C194; C195; C196; C197; C198; C199; C200; C201; C204; C205; C207; C208; C209; C21; C210; C211; C212; C213; C214; C218; C219; C22; C221; C222; C223; C224; C225; C226; C227; C234; C235; C237; C238; C239; C24; C240; C241; C242; C246; C248; C249; C25; C250; C251; C252; C253; C256; C257; C258; C259; C26; C260; C27; C28; C29; C30; C31; C327; C333; C334; C336; C337; C338; C341; C342; C344; C345; C347; C348; C35; C350; C351; C353; C36; C38; C39; C40; C41; C42; C43; C44; C506; C507; C508; C509; C51; C510; C52; C522; C523; C54; C55; C56; C57; C58; C588; C589; C59; C590; C591; C63; C65; C66; C67; C68; C69; C7; C70; C73; C74; C75; C76; C77; C8; C84; C865; C866; C867; C868; C869; C870; C871; C874; C882; C883; C884; C885; C886; C887; C888; C889; C890; C891; C892; C893; C894; C895; C896; C897; C898; C899; C900; C901; CATE4
被截断成
C10; C11; C12; C13; C14; C144; C15; C150; C151; C153; C154; C155; C158; C159; C16; C161; C162; C164; C165; C167; C168; C17; C170; C18; C190; C191; C193; C194; C195; C196; C197; C198; C199; C200; C201; C204; C205; C207; C208; C209; C21; C210; C211; C212; C
代码
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\303-171.xlsx;Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
OleDbConnection myConn = new OleDbConnection(strCon);
OleDbDataAdapter myCommand1 = new OleDbDataAdapter(strCom, myConn);
myConn.Open();
OleDbDataAdapter myCommand1 = new OleDbDataAdapter(strCom, myConn);
ds1 = new DataSet();
myCommand1.Fill(ds1, "[HcmServlet5419475b_LCC 2nd sour$]");