求C#高手::如何用c#程序将pdf文件转换成excel文件
小弟面临困境,,急需用c#程序将pdf文件l里面的数据导出成excel文件的程序,请各位大侠帮忙..谢谢拉...
小弟面临困境,,急需用c#程序将pdf文件l里面的数据导出成excel文件的程序,请各位大侠帮忙..谢谢拉
展开
2个回答
展开全部
这么难的问题,悬赏10分也太少了。pdf是很难读的.下面给出一个读pdf的方法
读出来以后,往excel里面写还是很简单的,哥们这个应该会吧,不会的话给你个连接 http://blog.csdn.net/gisfarmer/archive/2009/01/09/3738959.aspx
private void button1_Click(object sender, EventArgs e)
{
string pdfStr = readPDF(文件名);
System.IO.File.WriteAllText(文件名, pdfStr);
}
private string readPDF(string fn)
{
PdfReader p = new PdfReader(fn);
//从每一页读出的字符串
string str = String.Empty;
//"[......]"内部字符串
string subStr = String.Empty;
//函数返回的字符串
string rtStr = String.Empty;
//从每一页读出的8位字节数组
byte[] b = new byte[0];
//"[","]","(",")"在字符串中的位置
Int32 bg = 0, ed = 0, subbg = 0, subed = 0;
//取得文档总页数
int pg = p.NumberOfPages;
for (int i = 1; i <= pg; i++)
{
bg = 0;
ed = 0;
Array.Resize(ref b, 0);
//取得第i页的内容
b = p.GetPageContent(i);
//下一行是把每一页的取得的字节数据写入一个txt的文件,仅供研究时用
//System.IO.File.WriteAllBytes(Application.StartupPath + "\\P" + i.ToString() + ".txt", b);
StringBuilder sb = new StringBuilder();
//取得每一页的字节数组,将每一个字节转换为字符,并将数组转换为字符串
for (int j = 0; j < b.Length; j++) sb.Append(Convert.ToChar(b[j]));
str = sb.ToString();
//循环寻找"["和"]",直到找不到"["为止
while (bg > -1)
{
//取得下一个"["和"]"的位置
bg = str.IndexOf("[", ed);
ed = str.IndexOf("]", bg + 1);
//如果没有下一个"["就跳出循环
if (bg == -1) break;
//取得一个"[]"里的内容,将开始寻找"("和")"的位置初始为0
subStr = str.Substring(bg + 1, ed - bg - 1);
subbg = 0;
subed = 0;
//循环寻找下一个"("和")",直到没有下一个"("就跳出循环
while (subbg > -1)
{
//取得下一对"()"的位置
subbg = subStr.IndexOf("(", subed);
subed = subStr.IndexOf(")", subbg + 1);
//如找不到下一对就跳出
if (subbg == -1) break;
//在返回字符串后面加上新找到的字符串
rtStr += subStr.Substring(subbg + 1, subed - subbg - 1);
}
}
}
//PDF文档中读出来的数据没有换行符,可以根据需要把2个或3个连续的空格改成换行符
rtStr = rtStr.Replace(" ", "\r\n");
return rtStr;
}
读出来以后,往excel里面写还是很简单的,哥们这个应该会吧,不会的话给你个连接 http://blog.csdn.net/gisfarmer/archive/2009/01/09/3738959.aspx
private void button1_Click(object sender, EventArgs e)
{
string pdfStr = readPDF(文件名);
System.IO.File.WriteAllText(文件名, pdfStr);
}
private string readPDF(string fn)
{
PdfReader p = new PdfReader(fn);
//从每一页读出的字符串
string str = String.Empty;
//"[......]"内部字符串
string subStr = String.Empty;
//函数返回的字符串
string rtStr = String.Empty;
//从每一页读出的8位字节数组
byte[] b = new byte[0];
//"[","]","(",")"在字符串中的位置
Int32 bg = 0, ed = 0, subbg = 0, subed = 0;
//取得文档总页数
int pg = p.NumberOfPages;
for (int i = 1; i <= pg; i++)
{
bg = 0;
ed = 0;
Array.Resize(ref b, 0);
//取得第i页的内容
b = p.GetPageContent(i);
//下一行是把每一页的取得的字节数据写入一个txt的文件,仅供研究时用
//System.IO.File.WriteAllBytes(Application.StartupPath + "\\P" + i.ToString() + ".txt", b);
StringBuilder sb = new StringBuilder();
//取得每一页的字节数组,将每一个字节转换为字符,并将数组转换为字符串
for (int j = 0; j < b.Length; j++) sb.Append(Convert.ToChar(b[j]));
str = sb.ToString();
//循环寻找"["和"]",直到找不到"["为止
while (bg > -1)
{
//取得下一个"["和"]"的位置
bg = str.IndexOf("[", ed);
ed = str.IndexOf("]", bg + 1);
//如果没有下一个"["就跳出循环
if (bg == -1) break;
//取得一个"[]"里的内容,将开始寻找"("和")"的位置初始为0
subStr = str.Substring(bg + 1, ed - bg - 1);
subbg = 0;
subed = 0;
//循环寻找下一个"("和")",直到没有下一个"("就跳出循环
while (subbg > -1)
{
//取得下一对"()"的位置
subbg = subStr.IndexOf("(", subed);
subed = subStr.IndexOf(")", subbg + 1);
//如找不到下一对就跳出
if (subbg == -1) break;
//在返回字符串后面加上新找到的字符串
rtStr += subStr.Substring(subbg + 1, subed - subbg - 1);
}
}
}
//PDF文档中读出来的数据没有换行符,可以根据需要把2个或3个连续的空格改成换行符
rtStr = rtStr.Replace(" ", "\r\n");
return rtStr;
}
展开全部
PDF文件读取出来内容顺序容易混乱,再插入到Excel很难保持原格式,我用的Spire.PDF库转换,基本上能保持格式
using Spire.Pdf;
namespace ConvertPDFToExcel
{
class Program
{
static void Main(string[] args)
{
PdfDocument pdf = new PdfDocument();
//加载PDF
pdf.LoadFromFile("测试.pdf");
//保存为Excel
pdf.SaveToFile("PDFToExcel.xlsx", FileFormat.XLSX);
}
}
}
using Spire.Pdf;
namespace ConvertPDFToExcel
{
class Program
{
static void Main(string[] args)
{
PdfDocument pdf = new PdfDocument();
//加载PDF
pdf.LoadFromFile("测试.pdf");
//保存为Excel
pdf.SaveToFile("PDFToExcel.xlsx", FileFormat.XLSX);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询